ROS_LIB

Для работы с различной периферией (микроконтроллеры) в составе ROS существует специальный пакет rosserial. Он позволяет просто подключить к ядру roscore микроконтроллер через Serial порт и взаимодействовать с ним как с полноценной нодой ROS.

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

Установка пакета rosserial происходи командой apt

sudo apt install ros-noetic-rosserial-arduino

Для начала работы с ROS, вам необходимо "собрать" библиотеку ros_lib для Ардуино.

Сборку библиотеки необходимо производить самостоятельно, потому что файлы попадающие в библиотеку сильно зависят от того, какие пакеты ROS установлены на компьютере. "Сборщик" просматривает пакеты, находит в них все сообщения которые могут использоваться в вашей программе и собирает эти файлы в единую библиотеку. Только в этом случае и со стороны клиента и со стороны сервера мы получим одинаковые версии сообщений для топиков и сервисов. Использование "чужих" библиотек может привести к ошибкам.

Генерация библиотеки ros_lib для Arduino (обратите внимание на точку в конце, она обозначает то библиотека сгенерируется в папке из которой вы запускаете программу):

rosrun rosserial_arduino make_libraries.py .

После работы скрипта, мы получим папку ros_lib в которой находимся - это и есть библиотека.

Чтобы Arduino IDE смогла работать с библиотекой, перепишем ее в директорию библиотек Ардуино.

cp -r ros_lib ~/Arduino/libraries

Так же это можно сделать средствами Ubuntu - файловым менеджером. У вас с домашней директории после инсталляции появилась папка Arduino содержащая папку libraries - тут место для пользовательских библиотек ардуино.

Если вы все сделали правильно то в примерах Arduino появится раздел ros_lib. Выберите в нем пример HelloWorld

Скомпилируйте и загрузите на микроконтроллер VBCore. Если пример не открывается, то нужно поменять его расширение .pde на .ino Для этого зайдите в директорию, в которой лежит скетч: Arduino/libraries/ros_lib/examples/HelloWorld. Дальше переименуйте скетч, заменив расширение .pde на .ino Все, можно возращаться в среду Arduino и загружать скетч.

Если у вас возникли какие-то ошибки, попробуйте найти описание своей оброблемы в главе с ошибками или загуглить самостоятельно.

Запуск rosserial

Поскольку вы используете один порт и для загрузки скетчей и для коммуникации через rosserial, то запуск rosserial надо осуществлять после загрузки скетча. Не забудьте в Arduino IDE закрыть serial port.

При запущенном rosserial Arduino IDE будет ругаться на занятость порта. Каждый раз когда вы захотите залить новый скетч вам необходимо остановить rosserial.

Запустите roscore (если не запущен). В отдельном окне терминала запустите rosserial:

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0

Обратите внимание, что имя порта надо подставить правильное. Подсмотреть его можно в среде Arduino:

Last updated