Мой опыт по настройке и установке The Robot Operating System (ROS) на Xubuntu 20.04 и Lubuntu 18.04.
ROS мне нужен для управления роботом Moveo, поэтому поддержка Arduino нужна обязательно. И в ней, как оказалось, вся загвоздка ...
Скажу сразу, что последний релиз ros - Noetic Ninjemys, выпущенный для Ubuntu 20.04 мне не подошел: сам ros устанавливается без проблем, но пакет для поддержки arduino - rosserial еще не выпущен для этого релиза :((( - об этом говорит отсутствие статуса "released" в описании. Пакет можно собрать из исходников, но проблема в том, что в Noetic используется Python3, а в предыдущей версии - Melodic - Python2 и библиотека написана на нем. Посидев немного и попытавшись вручную поправить ошибки при запуске модулей (здесь часть из них поправлена) в итоге понял, что проще использовать предыдущий релиз - Melodic Morenia.
Установил Lubuntu 18.04 и далее все пошло уже без проблем: ros melodic ставится из пакетов, надо только добавить репозитории. Для доступа к ros в командной строке необходимо каждый раз выполнять команду:
$ source /opt/ros/melodic/setup.bash
чтобы этого не делать, достаточно добавить эту команду в файл ~/.bashrc:
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
После этого можно переходить к установке rosserial - процедура подробно описана в tutorial - Arduino IDE Setup. Для этого нужно установить два пакета:
$ sudo apt-get install ros-indigo-rosserial-arduino
$ sudo apt-get install ros-indigo-rosserial
и библиотеку ros_lib:
$ cd <sketchbook>/libraries
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py
Где находится папка sketchbook можно посмотреть в настройках Arduino IDE (Файл -> Настройки):
Теперь библиотека становится доступна среди прочих в Arduino IDE и можно загрузить пример Hello World для проверки связи с ros:
Если возникают ошибки с загрузкой в плату типа
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
нужно добавить текущего пользователя в группу dialuot и настроить права на запись в порт Arduino:
$ sudo usermod -a -G dialout <username>
$ sudo chmod a+rw /dev/ttyACM0
где <username> - имя пользователя Ubuntu, /dev/ttyACM0 - порт платы Arduino.
Для того, чтобы посмотреть то, что Arduino посылает в ros следует запустить три терминала:
- в первом запустить процесс roscore:
$ roscore
- во втором процесс, принимающий сообщения и передающий их в ros:
$ rosrun rosserial_python serial_node.py /dev/ttyACM0
- в третьем команду на то, чтобы вывести сообщения:
$ rostopic echo chatter
И вуяля, сообщения становятся видны:
Немного изменил сообщение :) Let's go design!
Комментарии
Отправить комментарий