⛄
new_Базовый курс по ROS
  • Обложка
  • Урок 1. Введение в ROS
    • Что такое ROS ?
    • Знакомство с роботом TurtleBro
    • Настройка ПК
    • Установка ROS
    • Настройка робота TurtleBro
    • Настройка VSCode
    • Практические задания
  • Урок 2. Базовый понятия ROS
    • Основы теории управления
    • Сущности ROS как элементы ТАУ
    • Базовые утилиты ROS
    • Практические задания
  • Урок 3. Издатель
    • Издатель (Publisher)
    • Издатель команд для робота
    • Практические задания
  • Урок 4. Подписчик
    • Подписчик (Subscriber)
    • Подписчик на данные робота
    • Практические задания
  • Урок 5. Подписчик и Издатель
    • Взаимодействие Подписчика и Издателя в рамках одной ноды. Часть 1
    • Практические задания
    • Взаимодействие Подписчика и Издателя в рамках одной ноды. Часть 2
    • Практические задания
      • Решение
  • Урок 6. Работа с Arduino
    • Работа с Arduino
    • Создание Издателя
    • Создание Подписчика
    • Практические задания
  • Курсовая работа
    • Задание
  • Итог
    • Заключение
Powered by GitBook
On this page
  • Подключение платы TurtleBro
  • Настройка среды Arduino IDE
  • Работа с rosserial

Was this helpful?

  1. Урок 6. Работа с Arduino

Работа с Arduino

PreviousРешениеNextСоздание Издателя

Last updated 2 years ago

Was this helpful?

На системной плате TurtleBro находится два микроконтроллера. Первый это STM32F4, на котором работает внутренняя прошивка, обеспечивающая все системные потребности платы (управление моторами, контроль питания, одометрию и т.п.)

И второй это МК Atmega 2560, функционально полностью совместимый с платами Arduino Mega. Для этого микроконтроллера вы можете самостоятельно разрабатывать скетчи, и загружать их на плату TurtleBro при помощи Arduino IDE.

Работа вашей программы (скетча) никаким образом не повлияет на функционирование системной платы.

Подключение платы TurtleBro

Для работы 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 мигает.

Работа с 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, в которой будет находится библиотека для нашего микроконтроллера.

scp -r pi@turtlebroXX.local:ros_lib /home/<username>/Arduino/libraries/

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

Для коммуникации по Serial, со стороны Raspberry должна быть запущена специальная нода arduino_serial_node. Эта нода на роботе TurtleBro стартует автоматически. По умолчанию скорость соединения 115200. Изменить параметры запуска вы можете в файле rosserial.launch

Со стороны Arduino Mega подключение к Raspberry Pi происходит по порту Serial1.

Одна из самых удобных сред программирования для ардуино считается Arduino IDE. Инструкцию по установке вы можете найти или .

Далее ее необходимо переписать в папку Arduino Library на нашем компьютере. Проще всего это сделать при помощи команды (команда копирования, позволяющая использовать ssh соединения для копирования файлов с удаленного компьютера на локальный). Команду надо запускать в локальном терминале вашего компьютера. Вместо turtlebtoXX.local подставьте имя вашего робота. Проверьте куда именно установлена Arduino IDE и скопируйте ros_libв папку библиотек Arduino.

scp
здесь
здесь