EMC2 LinuxCNC и Joystick

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

EMC2 LinuxCNC и Joystick

Сообщение Nick » 07 фев 2011, 11:04

Откопал джойстик и решил подключить его к станку посредством EMC2.

Но, в следствии тяжелого похмелья после вечера встреч с одноклассниками, меня хватило только на подключение джойстика к компьютеру и беглый обзор проблемы :mrgreen:.

Джойстик у меня такой: Logitech Freedom 2.4 Cordless Joystick.

Для подключения к Linux ничего особенного делать не пришлось. Включил его в USB и он вроде заработал. Но как проверить, что он действительно работает? Для этого используем утилиту jstest из пакета joystick (sudo apt-get install joystick), итак запускаем jstest /dev/input/js0 и видим, что все отлично работает. В нашем распоряжении есть 4 аналоговых оси, две оси с дискретным пределом и 10 кнопок. На что все это использовать :roll:? Ну предположим две оси на X и Y, одна на Z. Три кнопки для переключения режимов, кнопка на старт и кнопка на остановку программы. Ось throtle можно использовать для feed override. Когда доделаю свой чпу раскладчик можно будет использовать четвертую ось для поворота по оси A.

Итак, что удалось накопать по подключению джойстика к EMC2:

Первый вариант, подмена событий нажатия на кнопки джойстика нажатиями на соответствующие хоткеи средствами xorg. Для этого редактируем /etc/X11/xorg.conf, и добавляем примерно следующее:
Код: Выделить всёРазвернуть
   Identifier      "joystick"
   Driver      "joystick"
# proper path to your joypad could be found by looking into '/dev/input/by-id' directory
   Option "Device"      "/dev/input/event2"
# axis -X
   Option "MapButton1"   "key=Left"
# axis -Y
   Option "MapButton2"   "key=Down"
# axis +X
        Option "MapButton3"   "key=Right"
# axis +Y
   Option "MapButton4"   "key=Up"
# axis "step program"
   Option "MapButton5"   "key=t"
# axis "continus program"
   Option "MapButton7"   "key=s"
# axis -Z
   Option "MapButton6"   "key=Prior"
# axis +Z
   Option "MapButton8"   "key=Next"
# axis "continuos jogging"
   Option "MapButton9"   "key=c"
# axis "zero G54 offset on selected axis"
   Option "MapButton10"   "key=Shift_L,Home"
# axis "change jogging speed"
   Option "MapAxis1"   "mode=accelerated keylow=comma keyhigh=period"
# axis "change jogging step"
   Option "MapAxis2"   "mode=accelerated keylow=i, keyhigh=Shift_L,i"
EndSection

Но в этом варианте есть много недостатков. Джойстик будет выдавать ложные события не только в EMC2. Все перемещения будут дискретными и не получится плавно перемещаться.

Второй вариант, настроить джойстик через hal. Для этого в hal есть специальная штука simulated encoder. При помощи нее будем обрабатывать команды с джойстика. Таким образом можно будет контролировать скорость перемещения и осуществлять плавные передвижения на любой скорости. Но подробнее об этом позже - когда разберусь и все настрою у себя :hehehe: (хотя все выглядит просто и логично). Пока дам ссылку на английскую статью по этому поводу: http://wiki.linuxcnc.org/emcinfo.pl?Usi ... NC_Machine.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Nick » 04 мар 2011, 15:46

Эх... все никак не найду времени, чтобы засесть за настройку джойстика плотняком. Но постоянно думаю об этой настройке.
Что надумал:
1. Я хочу, чтобы сам джойстик управлял осью в режиме скорости, а не положения. Т.е. чтобы была прямая связь джойстика и станка.
2. Для точного позиционирования нужно вывести на кнопки перемещения на заданный отступ.


1. По идее, нужно подключить оси джойстика к пинам jog_counts и поставить jog-vel-mode в true для всех осей.
Поэтому нужно будет вывести включение выключение джойстика на отдельную кнопку. Я думаю гашетка для этого самое то.

Код: Выделить всёРазвернуть
# включаем управление от джойстика
net joystick_enable <= input0.button.0 => axis.0.jog-enable
net joystick_enable => axis.1.jog-enable
net joystick_enable => axis.2.jog-enable

# устанавливаем режим скорости
setp axis.0.jog-vel-mode  true
setp axis.1.jog-vel-mode  true
setp axis.2.jog-vel-mode  true

# подсоединяем оси джойстика к осям станка
net X_jog_count <= input0.axis.0 => axis.0.jog-counts
net Y_jog_count <= input0.axis.1 => axis.1.jog-counts
net Z_jog_count <= input0.axis.2 => axis.2.jog-counts

# подсоединяем четвертую ось к дополнительному контролю скорости
net jog_sped <= input0.axis.4 => axis.0.jog-scale
net jog_sped => axis.1.jog-scale
net jog_sped => axis.2.jog-scale


Теперь осталось подключить остальные кнопки джойстика.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Nick » 06 мар 2011, 00:48

Ура наконец-то появилось немного времени!

В общем сделал так:

Код: Выделить всёРазвернуть
loadusr hal_input -W -KRAL +Logitech Dual Action

# включаем управление от джойстика
net joystick_enable <= input.0.btn-trigger => axis.0.jog-enable
net joystick_enable => axis.1.jog-enable
net joystick_enable => axis.2.jog-enable

# устанавливаем режим скорости
setp axis.0.jog-vel-mode 1
setp axis.1.jog-vel-mode 1
setp axis.2.jog-vel-mode 1

# подсоединяем оси джойстика к осям станка
net X_jog_count <= input.0.abs-x-counts => axis.0.jog-counts
net Y_jog_count <= input.0.abs-y-counts => axis.1.jog-counts
net Z_jog_count <= input.0.abs-rz-counts => axis.2.jog-counts

# устанавливаем скорость
net jog_scale <= input.0.abs-throttle-position => axis.0.jog-scale
net jog_scale => axis.1.jog-scale
net jog_scale => axis.2.jog-scale



И все практически заработало :cheesy: !
Практически, потому, что jogging похоже все равно работает в режиме положения, а не скорости, несмотря на: setp axis.0.jog-vel-mode 1
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Гость » 13 мар 2011, 15:36

/etc/X11/xorg.conf не нашел этот файл( и вообще как открыть разрешение файла ( conf )
Гость
 

Re: EMC2 и Joystick

Сообщение Nick » 13 мар 2011, 15:42

Это обычные текстовые файлы. В Linux все файлы настройки - это обычные текстовые файлы, это сделано для того, чтобы настройки можно было менять без спец программ.

В новых версиях файл xorg.conf не используется. Но его можно создать самостоятельно, взяв за пример старую версию.

Для подключения джойстика к EMC2 лучше использовать специальный компонент hal - hal_input, как описано сообщением выше.

ЗЫ а какой у тебя joystick и для каких функций ты хочешь его использовать?
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Гость » 04 апр 2011, 10:36

Джостик джениюс, хотелось бы управлять осями станка)
Гость
 

Re: EMC2 и Joystick

Сообщение Nick » 04 апр 2011, 11:16

Наверное все будет примерно также только нужно будет поменять строку:
loadusr -W hal_input -KRAL Logitech
Вместо Logitech нужно будет вставить id твоего джойстика. Дома гляну, как его можно определить.

Кстати, проверь, как он у тебя работает:
Сначала устанавливаем joystick (sudo apt-get install joystick), и потом
jstest /dev/input/js0
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Виталий » 28 май 2012, 21:04

Ник а можете написать порядок действий для тупых.джой у меня logitech в терминале смог поигратся кнопками а вот даьше не понятно с etc/X11/xorg.conf
-редактированию не поддается(может не туда лезу)
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Nick » 28 май 2012, 22:21

Виталий писал(а):-редактированию не поддается(может не туда лезу)

Это потому, что для этого нужны права администратора. Но лучше выполнить все вот таким образом - через hal_input
EMC2 и Joystick #3

Т.е. открываешь свой hal файл и дописываешь все, что в сообщении выше и пробуешь запустить.
Кстати, а чем ты хочешь с джойстика управлять? (осями, шпинделем или чем-то еще?)
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Виталий » 28 май 2012, 22:59

да я пробывал так .но емс тогда не запукается появляется окно с ошибкой. вкладываю свой hal и ошибку
Вложения
hal файл.tar.gz
(2.5 Кб) Скачиваний: 337
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Виталий » 28 май 2012, 23:01

да и джойстик другой genius
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Lexxa » 28 май 2012, 23:09

Nick писал(а):Практически, потому, что jogging похоже все равно работает в режиме положения, а не скорости

а если производную взять?
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2289
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 214
Медальки:
Настоящее имя: Алексей

Re: EMC2 и Joystick

Сообщение Nick » 29 май 2012, 00:09

По ошибке:
No input device matching 'Genius' was found (1 devices checked)

выполни в консоле
cat /proc/bus/input/devices
И вывод давай сюда.
Если будет очень много вывода, так, что не поместится в консоле сделай cat /proc/bus/input/devices >1.txt и содержимое файла сюда.
Там можно будет найти имя твоего джойстика.

Да, текст ошибок и прочую текстовую информацию лучше просто пихай в тэг [code], так проще смотреть и не надо файлы скачивать.

Lexxa писал(а):а если производную взять?

Это давно было, я тогда в emc2 плохо разбирался, добился того, что приблизительно работает и бросил :freak:
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 19:40

Код: Выделить всёРазвернуть
vitaliy@vitaliy-desktop:~$ cat /proc/bus/input/devices 
I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=PNP0C0C/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
U: Uniq=
H: Handlers=kbd event0
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0019 Vendor=0000 Product=0003 Version=0000
N: Name="Sleep Button"
P: Phys=PNP0C0E/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1
U: Uniq=
H: Handlers=kbd event1
B: EV=3
B: KEY=4000 0 0 0 0

I: Bus=0019 Vendor=0000 Product=0001 Version=0000
N: Name="Power Button"
P: Phys=LNXPWRBN/button/input0
S: Sysfs=/devices/LNXSYSTM:00/LNXPWRBN:00/input/input2
U: Uniq=
H: Handlers=kbd event2
B: EV=3
B: KEY=100000 0 0 0

I: Bus=0017 Vendor=0001 Product=0001 Version=0100
N: Name="Macintosh mouse button emulation"
P: Phys=
S: Sysfs=/devices/virtual/input/input3
U: Uniq=
H: Handlers=mouse0 event3
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=3

I: Bus=0003 Vendor=1a2c Product=0002 Version=0110
N: Name="USB USB Keykoard"
P: Phys=usb-0000:00:02.0-1/input0
S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/input/input4
U: Uniq=
H: Handlers=kbd event4
B: EV=120013
B: KEY=10000 7 ff800000 7ff febeffdf f3cfffff ffffffff fffffffe
B: MSC=10
B: LED=7

I: Bus=0003 Vendor=1a2c Product=0002 Version=0110
N: Name="USB USB Keykoard"
P: Phys=usb-0000:00:02.0-1/input1
S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.1/input/input5
U: Uniq=
H: Handlers=kbd event5
B: EV=1f
B: KEY=837fff 2c3027 bf004444 0 0 1 c04 a27c000 267bfa d941dfed 9e0000 0 0 0
B: REL=40
B: ABS=1 0
B: MSC=10

I: Bus=0003 Vendor=0583 Product=a000 Version=0110
N: Name="2-Axis,8-Button  "
P: Phys=usb-0000:00:02.0-8/input0
S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb2/2-8/2-8:1.0/input/input6
U: Uniq=
H: Handlers=event6 js0
B: EV=1b
B: KEY=ff 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

I: Bus=0011 Vendor=0002 Product=0005 Version=0055
N: Name="ImPS/2 Logitech Wheel Mouse"
P: Phys=isa0060/serio1/input0
S: Sysfs=/devices/platform/i8042/serio1/input/input7
U: Uniq=
H: Handlers=mouse1 event7
B: EV=7
B: KEY=70000 0 0 0 0 0 0 0 0
B: REL=103
Последний раз редактировалось Виталий 29 май 2012, 19:43, всего редактировалось 2 раз(а).
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 19:44

с 3 раза вставил :thinking:
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Nick » 29 май 2012, 20:13

Похоже вот это твой джойстик:
I: Bus=0003 Vendor=0583 Product=a000 Version=0110
N: Name="2-Axis,8-Button "
P: Phys=usb-0000:00:02.0-8/input0
S: Sysfs=/devices/pci0000:00/0000:00:02.0/usb2/2-8/2-8:1.0/input/input6
U: Uniq=
H: Handlers=event6 js0
B: EV=1b
B: KEY=ff 0 0 0 0 0 0 0 0 0
B: ABS=3
B: MSC=10

хмм... теперь по строке, которой его определить.

По идее вот так дожно сработать:
loadusr -W hal_input -KRAL "2-Axis,8-Button"

но не уверен...
если не выйдет попробуй
loadusr -W hal_input -KRAL 2-Axis,8-Button
или
loadusr -W hal_input -KRAL Bus=0003 Vendor=0583 Product=a000 Version=0110

Виталий писал(а):с 3 раза вставил

А в чем проблема была?
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1328
Заслуга: Developer
Медальки:

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 20:17

не с одним с вариантов emc не стартовал
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 20:31

loadusr -W hal_input -KRAL 2-Axis,8-Button
Вложения
EMC2 LinuxCNC и Joystick Снимок.png
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 20:33

loadusr -W hal_input -KRAL "2-Axis,8-Button"
похоже что устройство не определяется
Вложения
EMC2 LinuxCNC и Joystick Снимок-1.png
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

Re: EMC2 и Joystick

Сообщение Виталий » 29 май 2012, 20:35

loadusr -W hal_input -KRAL Bus=0003 Vendor=0583 Product=a000 Version=0110
тоже самое
Вложения
EMC2 LinuxCNC и Joystick Снимок-2.png
Виталий
Мастер
 
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Откуда: Полтава
Репутация: 1

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: aldemm, Alexf2a, alexx.bit, Argon-11, avalter, Bing [Bot], Сергей Саныч, Darxton, Dimka_almighty, Dirk Diggler, evdroniy, frezeryga, Gerter, Google [Bot], Hanter, Lafayette, Lexxa, Majestic-12 [Bot], Malyarka74, MGG, nevkon, NickSon, Nonstopich, R6MF49T2, rage, Rd24, Redmn, scout, shatrovmaxim, Shkryab, sig, solo, spawoon, spivakov, texnocentr, Tigra73, toxakorzh, ultrus, Umnik, verser, Vetal, Yahoo [Bot], Yandex [bot], zerg32

Поделиться

Reputation System ©'