EMC2 LinuxCNC и Joystick

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

EMC2 LinuxCNC и Joystick

Сообщение Nick »

Откопал джойстик и решил подключить его к станку посредством 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.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

Эх... все никак не найду времени, чтобы засесть за настройку джойстика плотняком. Но постоянно думаю об этой настройке.
Что надумал:
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
Теперь осталось подключить остальные кнопки джойстика.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

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

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

Код: Выделить всё

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
Гость

Re: EMC2 и Joystick

Сообщение Гость »

/etc/X11/xorg.conf не нашел этот файл( и вообще как открыть разрешение файла ( conf )
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

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

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

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

ЗЫ а какой у тебя joystick и для каких функций ты хочешь его использовать?
Гость

Re: EMC2 и Joystick

Сообщение Гость »

Джостик джениюс, хотелось бы управлять осями станка)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

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

Кстати, проверь, как он у тебя работает:
Сначала устанавливаем joystick (sudo apt-get install joystick), и потом
jstest /dev/input/js0
Виталий
Мастер
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Репутация: 1
Откуда: Полтава
Контактная информация:

Re: EMC2 и Joystick

Сообщение Виталий »

Ник а можете написать порядок действий для тупых.джой у меня logitech в терминале смог поигратся кнопками а вот даьше не понятно с etc/X11/xorg.conf
-редактированию не поддается(может не туда лезу)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

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

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

Re: EMC2 и Joystick

Сообщение Виталий »

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

Re: EMC2 и Joystick

Сообщение Виталий »

да и джойстик другой genius
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: EMC2 и Joystick

Сообщение Lexxa »

Nick писал(а):Практически, потому, что jogging похоже все равно работает в режиме положения, а не скорости
а если производную взять?
:bender:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

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

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

Да, текст ошибок и прочую текстовую информацию лучше просто пихай в тэг

Код: Выделить всё

, так проще смотреть и не надо файлы скачивать.

[quote="Lexxa"]а если производную взять?[/quote]
Это давно было, я тогда в emc2 плохо разбирался, добился того, что приблизительно работает и бросил :freak:
Виталий
Мастер
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Репутация: 1
Откуда: Полтава
Контактная информация:

Re: EMC2 и Joystick

Сообщение Виталий »

Код: Выделить всё

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

Сообщение Виталий »

с 3 раза вставил :thinking:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: EMC2 и Joystick

Сообщение Nick »

Похоже вот это твой джойстик:
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 раза вставил
А в чем проблема была?
Виталий
Мастер
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Репутация: 1
Откуда: Полтава
Контактная информация:

Re: EMC2 и Joystick

Сообщение Виталий »

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

Re: EMC2 и Joystick

Сообщение Виталий »

loadusr -W hal_input -KRAL 2-Axis,8-Button
Вложения
Снимок.png (13338 просмотров) <a class='original' href='./download/file.php?id=5584&sid=462a9fddab93bc25e22757fb22fbfb63&mode=view' target=_blank>Загрузить оригинал (67.04 КБ)</a>
Виталий
Мастер
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Репутация: 1
Откуда: Полтава
Контактная информация:

Re: EMC2 и Joystick

Сообщение Виталий »

loadusr -W hal_input -KRAL "2-Axis,8-Button"
похоже что устройство не определяется
Вложения
Снимок-1.png (13338 просмотров) <a class='original' href='./download/file.php?id=5585&sid=462a9fddab93bc25e22757fb22fbfb63&mode=view' target=_blank>Загрузить оригинал (51.84 КБ)</a>
Виталий
Мастер
Сообщения: 223
Зарегистрирован: 26 янв 2012, 20:30
Репутация: 1
Откуда: Полтава
Контактная информация:

Re: EMC2 и Joystick

Сообщение Виталий »

loadusr -W hal_input -KRAL Bus=0003 Vendor=0583 Product=a000 Version=0110
тоже самое
Вложения
Снимок-2.png (13338 просмотров) <a class='original' href='./download/file.php?id=5586&sid=462a9fddab93bc25e22757fb22fbfb63&mode=view' target=_blank>Загрузить оригинал (47.13 КБ)</a>
Ответить

Вернуться в «LinuxCNC»