ROS + Arduino - установка и настройка

 

Мой опыт по настройке и установке 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!

 


 

Комментарии