Работа с Arduino
На системной плате TurtleBro находится два микроконтроллера. Первый это STM32F4
, на котором работает внутренняя прошивка, обеспечивающая все системные потребности платы (управление моторами, контроль питания, одометрию и т.п.)
И второй это МК Atmega 2560
, функционально полностью совместимый с платами Arduino Mega. Для этого микроконтроллера вы можете самостоятельно разрабатывать скетчи, и загружать их на плату TurtleBro при помощи Arduino IDE.
Работа вашей программы (скетча) никаким образом не повлияет на функционирование системной платы.
Подключение платы TurtleBro
Для работы Arduino, нам как и в случае с любым другим МК семейства Arduino, понадобится программа Arduino IDE и USB кабель.
Подключим плату через разъём к компьютеру:

Настройка среды Arduino IDE
Одна из самых удобных сред программирования для ардуино считается Arduino IDE. Инструкцию по установке вы можете найти здесь или здесь.
Для корректной загрузки скетчей на робота необходимо в Arduino IDE выставить следующие настройки:
Вкладка Tools (Инструменты) -> Board (Плата) -> Arduino Mega or Mega 2560
Вкладка Tools (Инструменты) -> Processor (Процессор) -> ATmega 2560 (Mega 2560)
Вкладка Tools (Инструменты) -> Port (Порт) -> /dev/ttyUSB0 (возможен и другой вариант порта)
Загрузим тестовый скетч Blink (File(Файлы)->Examples(Примеры)->01.Basic->Blink) из примеров в Arduino IDE на плату, и удостоверимся что светодиод D13 мигает.
Работа с rosserial
Для работы с различной периферией (микроконтроллеры) в составе ROS существует специальный пакет rosserial
. Он позволяет просто подключить к ядру roscore
микроконтроллер через Serial порт и взаимодействовать с ним как с полноценной нодой ROS.
Пакет rosserial
состоит из двух основных частей: одна работает на стороне компьютера, и взаимодействует с ядром ROS, вторая - это набор библиотек для микроконтроллера, которые позволяют используя все сущности ROS разрабатывать программы, взаимодействующие с ROS.
Установка пакета rosserial
происходи командой apt
:
sudo apt install ros-noetic-rosserial-arduino
Для начала работы с ROS, нам необходимо "собрать" библиотеку ros_lib
для Ардуино
.
Сборку библиотеки необходимо производить самостоятельно, потому что файлы попадающие в библиотеку сильно зависят от того, какие пакеты ROS установлены на компьютере. "Сборщик" просматривает пакеты, находит в них все сообщения которые могут использоваться в вашей программе и собирает эти файлы в единую библиотеку. Только в этом случае и со стороны клиента и со стороны сервера мы получим одинаковые версии сообщений для топиков и сервисов. Использование "чужих" библиотек может привести к ошибкам.
Сборка библиотеки происходит командой (ее необходимо выполнить на Raspberry). Обратите внимание на точку в конце, она обозначает то библиотека сгенерируется в папке из которой вы запускаете программу:
rosrun rosserial_arduino make_libraries.py .
После окончания работы скрипта, мы получим папку ros_lib
, в которой будет находится библиотека для нашего микроконтроллера.
Далее ее необходимо переписать в папку Arduino Library
на нашем компьютере. Проще всего это сделать при помощи команды scp
(команда копирования, позволяющая использовать ssh
соединения для копирования файлов с удаленного компьютера на локальный). Команду надо запускать в локальном терминале вашего компьютера. Вместо turtlebtoXX.local
подставьте имя вашего робота. Проверьте куда именно установлена Arduino IDE и скопируйте ros_lib
в папку библиотек Arduino.
scp -r pi@turtlebroXX.local:ros_lib /home/<username>/Arduino/libraries/
Если вы все сделали правильно то в примерах Arduino появится раздел ros_lib:

Last updated
Was this helpful?