📖
Arduino + ROS
  • О методичке
  • 1 Введение в ROS
    • Проблемы современной робототехники
    • История ROS
    • Что такое ROS, основные задачи
    • Устройство мобильного робота
    • Почему Linux для роботов?
    • Подготовка рабочего места
  • 2 Linux. Основы командной строки.
    • Команды терминала Linux
    • Протокол SSH
    • Пользователи и их права
  • 3 Основы ROS
    • Введение
    • Базовые понятия ROS
    • Сообщения
    • Topic
    • Service
    • Action
    • Стандарты ROS
    • Установка и запуск ROS
    • Практика с Turtlesim
  • 4 Работа с Arduino
    • Arduino и ROS
    • Создание издателя
    • Создание подписчика
Powered by GitBook
On this page
  • Установка Arduino IDE
  • Установка ROS пакета rosserial
  • Запуск rosserial
  • Дополнительная информация
  1. 4 Работа с Arduino

Arduino и ROS

PreviousПрактика с TurtlesimNextСоздание издателя

Last updated 1 year ago

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

Для работы рекомендуется использовать МК Arduino Mega или аналоги. С прочими могут возникнуть проблемы с нехваткой памяти, иногда из можно решить с помощью Google и знания английского языка.

Установка Arduino IDE

Скачать с сайта

Разархивировать скачанный архив, для удобства в директорию /home через проводник

Для удобства переименуйте папку в ArduinoIDE

Откройте терминал (CTRL+ALT+T) и выполните следующие действия

cd ArduinoIDE - зайдет в папку ArduinoIDE

sudo ./install.sh запустит скрипт инсталяции

После завершения установки уставновите права записи в Serial порт:

./arduino-linux-setup.sh $USER

Запуск и проверка Arduino IDE

После установки Arduino IDE убедитесь что вы можете заливать на ардуино тестовый скетч, например Blink. Вы можете не сразу обнаружить порт в виртуальной машине, в этом случае его необходимо подключить:

В нижнем правом углу окна виртуальной машины нажмите на значок USB и отметьте нужный порт. Убедитесь что все работает.

Установка ROS пакета rosserial

Для работы с различной периферией (микроконтроллеры) в составе 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

Скомпилируйте и загрузите на Arduino.

Запуск rosserial

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

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

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

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

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

Дополнительная информация

Документация модуля и примеры Arduino

Видео работы с ROS и АrduinoIDE

http://wiki.ros.org/rosserial_arduino/Tutorials
https://www.arduino.cc/en/software