Работа с Arduino
Last updated
Last updated
На системной плате TurtleBro находится два микроконтроллера. Первый это STM32F4
, на котором работает внутренняя прошивка, обеспечивающая все системные потребности платы (управление моторами, контроль питания, одометрию и т.п.)
И второй это МК Atmega 2560
, функционально полностью совместимый с платами Arduino Mega. Для этого микроконтроллера вы можете самостоятельно разрабатывать скетчи, и загружать их на плату TurtleBro при помощи Arduino IDE.
Работа вашей программы (скетча) никаким образом не повлияет на функционирование системной платы.
Для работы Arduino, нам как и в случае с любым другим МК семейства Arduino, понадобится программа Arduino IDE и USB кабель.
Подключим плату через разъём к компьютеру:
Одна из самых удобных сред программирования для ардуино считается Arduino IDE. Инструкцию по установке вы можете найти здесь или здесь.
В случае, если после установки Arduino IDE не определяет порт подключение МК к компьютеру попробуйте в терминале выполнить следующую команду и перезагрузите компьютер:
sudo usermod -a -G dialout <username>
где <username> - это имя пользователя
Для корректной загрузки скетчей на робота необходимо в 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 мигает.
Для работы с различной периферией (микроконтроллеры) в составе ROS существует специальный пакет rosserial
. Он позволяет просто подключить к ядру roscore
микроконтроллер через Serial порт и взаимодействовать с ним как с полноценной нодой ROS.
Пакет rosserial
состоит из двух основных частей: одна работает на стороне компьютера, и взаимодействует с ядром ROS, вторая - это набор библиотек для микроконтроллера, которые позволяют используя все сущности ROS разрабатывать программы, взаимодействующие с ROS.
Установка пакета rosserial
происходи командой apt
:
Для начала работы с ROS, нам необходимо "собрать" библиотеку ros_lib
для Ардуино
.
Сборку библиотеки необходимо производить самостоятельно, потому что файлы попадающие в библиотеку сильно зависят от того, какие пакеты ROS установлены на компьютере. "Сборщик" просматривает пакеты, находит в них все сообщения которые могут использоваться в вашей программе и собирает эти файлы в единую библиотеку. Только в этом случае и со стороны клиента и со стороны сервера мы получим одинаковые версии сообщений для топиков и сервисов. Использование "чужих" библиотек может привести к ошибкам.
Сборка библиотеки происходит командой (ее необходимо выполнить на Raspberry). Обратите внимание на точку в конце, она обозначает то библиотека сгенерируется в папке из которой вы запускаете программу:
После окончания работы скрипта, мы получим папку ros_lib
, в которой будет находится библиотека для нашего микроконтроллера.
Далее ее необходимо переписать в папку Arduino Library
на нашем компьютере. Проще всего это сделать при помощи команды scp
(команда копирования, позволяющая использовать ssh
соединения для копирования файлов с удаленного компьютера на локальный). Команду надо запускать в локальном терминале вашего компьютера. Вместо turtlebtoXX.local
подставьте имя вашего робота. Проверьте куда именно установлена Arduino IDE и скопируйте ros_lib
в папку библиотек Arduino.
Если вы все сделали правильно то в примерах Arduino появится раздел ros_lib:
Для коммуникации по Serial, со стороны Raspberry должна быть запущена специальная нода arduino_serial_node
. Эта нода на роботе TurtleBro
стартует автоматически. По умолчанию скорость соединения 115200. Изменить параметры запуска вы можете в файле rosserial.launch
Со стороны Arduino Mega
подключение к Raspberry Pi происходит по порту Serial1.