Micro-ROS
Micro-ROS (Micro Robot Operating System) — это адаптация фреймворка ROS 2 (Robot Operating System) для микроконтроллеров.
Особенности и назначение micro-ROS:
Micro-ROS полезен, когда нужно встроить микроконтроллеры в ROS 2-систему, сохранив преимущества стандартных ROS-инструментов. Он упрощает разработку сложных робототехнических систем, где часть логики выполняется на embedded-устройствах.
Micro-ROS работает на микроконтроллерах (STM32, ESP32, Teensy, Raspberry Pi Pico и др.) и поддерживает стандартных концепций ROS 2 (ноды, топики, сервисы, actions).
Например, мы можем создать программу подписчика на микроконтроллере, которая будет управлять серво приводом. При этом, созданный топик будет виден в общей сети ROS.
Для подключения micro-ROS к ROS 2-сети необходимо на компьютере запустить специальную программу-агент (micro-ROS Agent).
Официальный сайт проекта micro-ROS
Установка micro_ros_arduino
micro_ros_arduino это специально подготовленная библиотека, для разработки под microROS в среде Arduino. Она содержит уже подготовленные .a файлы для различных платформ.
Для установки библиотеки необходимо:
- В разделе releases скачать необходимую версию для вашего дистрибутива ROS (для jazzy можно скачать версию 2.0.7-iron).
- В ArduinoIDE добавить библиотеку через раздел
Sketch -> Include library -> Add .ZIP Library...
Особенности работы с micro-ROS на плате TurtleBro
Плата Arduino через порт Serial1 подключена в общий USB-hub, который подключен к компьютеру RaspberryPi.
Данное подключение на Raspberry видно в устройстве:
Для настройки работы через Serial1, необходимо подключить собственный файл, реализующий новый transport
Пример файла [default_transport.cpp](https://github.com/voltbro/turtlebro2-examples/blob/master/arduino/microros_publisher/default_transport.cpp)
Пример простого micro-ros publisher для Arduino
[microros_publisher](https://github.com/voltbro/turtlebro2-examples/tree/master/arduino/microros_publisher)
Если вы загрузите скетч до запуска micro-ros агента, то вам нужно перезапустить Arduino, нажав на кнопку reset. Так как скетч подключается к агенту только в момент запуска.
Пример программы, реализующий переподключение к ROS агенту. В этом примере microros сразу подключается к агенту, как только он будет запущен.
[microros_reconnection](https://github.com/voltbro/turtlebro2-examples/tree/master/arduino/microros_reconnection)
### Запуск micro-ROS агента
Micro-ROS агент нужен для того, чтобы данные из микроконтроллера попали в общую ROS сеть.
Работу Micro-ROS агента можно пояснить схемой

Вы можете запустить micro-ROS агент из консоли, командой
```bash
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_0010-if00-port0 -b 115200
Или использовать .launch файл
Полезные ссылки
https://micro.ros.org Официальный сайт micro-ROS https://github.com/micro-ROS/micro_ros_arduino Библиотека micro-ROS для Arduino https://github.com/voltbro/turtlebro2-examples/tree/master/arduino Примеры micro-ROS для платы TurtleBro