Робот импортирован, пока работу с ним можно поставить на паузу. В этом посте я буду разбираться с тем, как управлять роботами в ROS и MoveIt с помощью контроллера PS3 SixAxis.
Убедиться, что джойстик появился в системе можно с помощью утилит lsusb или usb-devices. При этом в выдаче lsusb мой китайский девайс отображается как Sony :) Usb-devices обмануть не удалось.
Проверить работоспособность джойстика можно с помощью утилиты jstest:
# jstest /dev/input/js0
Она позволяет отследить координаты 6 осей и нажатие всех кнопок (их должно быть 17). Проверить калибровку осей, и при необходимости поправить ее можно утилитой jscal:
# jscal -c /dev/input/js0
Я планирую работать с джойстиком из python, поэтому посмотрим, что есть из библиотек и модулей, позволяющих это сделать.
Первой нашлась библиотека - pygame, в которой присутствует модуль joystick. Тестовая программа с использованием pygame определяет джойстик, находит все 6 осей, но только 13 кнопок - без реакции остаются четыре кнопки слева.
Вторая библиотека, которую хотел бы рассмотреть - python-evdev, использующую модуль ядра linux - evdev.
Вывести список устройств и проверить функционирование джойстка с помощью evdev можно утилитой evtest (чтобы получить полный список устройств, лучше запускать от root):
# sudo evtest
Если при выполнении теста нет реакции на манипуляции с джойстиком, то после нажатия кнопки PS (c лого) все должно заработать.
А что-же для джойстиков есть в ROS? Да в общем-то, все что нужно - целый набор драйверов на разные случаи жизни. Среди них есть два, поддерживающих PS3: драйвер joy для джойстиков, подключенных по USB и отдельный драйвер ps3joy, использующийся в случае, если джойстик подключен по bluetooth.Так как по bluetooth подключиться у меня не получилось - я буду использовать драйвер joy.
С драйверами идет несколько руководств, позволяющих правильно настроить доступ к джойстику, проверить его работоспособность и написать узел управления для turtlesim. У меня такой узел заработал без проблем, только в файле turtle_joy.launch пришлось поменять пару параметров для того, чтобы управлять черепашкой двумя разными рукоятками: левая для движения вперед/назад и правая для поворота влево/вправо:
Параметры scale_linear и scale_angular позволяют менять скорость движения черепашки: сигнал от осей находится в диапазоне 0 ... 1, итоговая скорость движения получается его умножением на эти параметры.
Движение черепашки задается в топике turtle1/cmd_vel (geometry_msgs/Twist), чтобы увидеть сообщения в нем, можно воспользоваться командой
# rostopic echo /turtle1/cmd_vel
которую нужно запустить в новом окне терминала. При полностью сдвинутых рукоятках должно получиться что-то подобное:
---
linear:
x: 3.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: -3.0
---
Оказалось, что водить черепашку по экрану джойстиком довольно увлекательное занятие :)
Let's go design!
Комментарии
Отправить комментарий