/joybro

ROS joybro package with Arduino samples

Primary LanguageC++

Пакет ROS для джойстика JoyBro

Пакет предназначен для работы джойстика JoyBro. С помощью данного джойстика можно управлять роботами TurtleBro и Rover-E.

Первое включение джойстика

Создание рабочего пространства

Для работы с джойстиком вам понадобится установленный ROS Noetic и сконфигурированное рабочее пространство. Подробнее об этом читайте в разделе "Создание рабочего пространства" по ссылке.

Установка пакета на компьютер

Для установки пакета, необходимо склонировать репозиторий в вашу папку catkin_ws/src:

cd ~/catkin_ws/src
git clone https://github.com/voltbro/joybro

Далее необходимо запустить процесс сборки пакета:

cd ~/catkin_ws
catkin_make --pkg=joybro

Для работы, может понадобиться пакет rosserial. Если пакет не установлен, то его нужно установить командой:

sudo apt install ros-noetic-rosserial-arduino && sudo apt install ros-noetic-rosserial

Загрузка скетча (прошивки) на джойстик

Для загрузки необходимой прошивки на джойстик потребуется наличие библиотеки ros_lib в Arduino IDE. Информацию по установке данной библиотеке можно найти здесь.

В дистрибутиве пакета находится прошивка Arduino/ros_joybro/ros_joybro.ino необходимая для работы джойстика. Загрузите ее на джойстик через Arduino IDE:

https://github.com/voltbro/joybro/blob/master/Arduino/ros_joybro/ros_joybro.ino

Данная прошивка публикует все данные о состоянии кнопок, слайдеров и стиков с JoyBro в ROS в топик /joybro с частотой 20 Герц.

Тип передаваемого сообщения msg/JoyBro.msg

Выдача прав пользователя

Для того, чтобы пакет JoyBro мог общаться с джойстиком, надо выдать джойстику соответствующие права в Linux выполнив команду:

sudo chmod 777 /dev/ttyACM0

Для того, чтобы данные из джойстика передавались в ROS, необходимо на компьютере подключенному к джойстику запустить процесс rosserial, который подключается к Arduino и пробрасывает все сообщения в ROS.

Для этого сначала необходимо запустить мастер-ноду на компьютере командой:

roscore

Далее, не останавливая работы мастер-ноды и не закрывая терминал, в новом окне запустить готовый .launch файл командой:

roslaunch joybro joy_serial.launch

После запуска joy_serial.launch, можно проверить правильность работы, выполнив команду в новом окне:

rostopic echo /joybro

Управление роботом turtlebro/rover-E

Python-скрипт /src/joy_teleop.py пакета JoyBro предназначен для управления роботами через топик /cmd_vel

Для того, чтобы на компьютере появились топики с роботов необходимо указать по какому адресу находится мастер-нода (мастер-нода робота) командами:

export ROS_MASTER_URI=http://<IP-адрес робота>:11311/
export ROS_HOSTNAME=<IP-адрес компьютера>

Для запуска и настройки параметров скрипта есть .launch файл joy_teleop.launch, запускать его необходимо в том же терминале, в котором указан адрес мастер-нода робота:

roslaunch joybro joy_teleop.launch

Файл joy_teleop.launch запускает собственный процесс rosserial, поэтому необходимо остановить все запущенные ранее процессы rosserial.

Управление перемещенияем робота, происходит при перемещении левого "стика" на джойстике, только при нажатой кнопке btn3 (правая верхняя кнопки)

Управление полезной нагрузкой с Arduino Mega платы turtleboard

Для управления полезной нагрузкой, необходимо создать собсвенный подписчик на топик /joybro и в зависимости от полученных данных производить необходимые операции.

Пример подписчика, управляющий сервоприводами на пинах 44,45,46

Arduino/ros_joybro_subscriber/ros_joybro_subscriber.ino

Созданение библиотеки ros_lib

Для работы с Arduinо, необходимо произвести "сборку" библиотеки ROS для Arduino !!!на роботе!!!

cd 
rosrun rosserial_arduino make_libraries.py .

Команда создаст директорию ros_lib на RaspberyPi робота, которую необходимо переписать в папку библиотек Arduino на том компьютере на котором вы будете заливать скетчи Arduino в контроллер Arduino Mega. Обычно это папка ~/Arduino/libraries

Необходимо выполнить пересборку библиотек Arduino, после установки пакета joybro, для того чтобы в библиотеке появился .h файл для работы с сообщением джойстика JoyBro.msg

Более подробно о настройке Arduino http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup