Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Робот TurtleBro 2

Робот TurtleBro2

Образовательный робот TurtleBro разработан для изучения основ современной робототехники на примере мета-операционной системы Robot Operating System (ROS), работающей в среде Linux.

Данная документация описывает устройство робота, основы работы с ним.

Робот TurtleBro2 является обновлением робота TurtleBro и ориентирован на работу с ROS2

TurtleBro — это удобная и современная платформа для обучения и разработки в ROS2. Он помогает быстро освоить ключевые концепции робототехники и применяется в образовательных и исследовательских проектах.

Основные задачи робота TurtleBro:

  1. Обучение ROS 2
    • TurtleBro 2 создан для работы с ROS2 (современной версией Robot Operating System), что позволяет студентам и разработчикам изучать актуальные технологии в робототехнике.
    • На нём можно осваивать:
      • Базовые принципы построения роботов на основе ROS2
      • Программирование на python/c++
      • Работа с микроконтроллерами
      • Управление двигателями и датчиками
      • Навигацию (SLAM, картографирование, планирование пути)
      • Компьютерное зрение (OpenCV, YOLO и др.)
      • Машинное обучение для роботов
  2. Быстрый старт в робототехнике
    • Робот поставляется в готовом виде, что позволяет сразу приступить к программированию, не тратя время на сборку и наладку.
    • Подходит для среднего профессионального образования, университетов, курсов и самостоятельного изучения.
  3. Исследования и прототипирование
    • TurtleBro можно использовать для тестирования алгоритмов автономного движения, взаимодействия с IoT-устройствами, разработки новых методов ИИ.
    • Его модульность позволяет добавлять новые датчики и компоненты (лидары, камеры, манипуляторы).

Ключевые особенности робота TurtleBro

  • Интегрированная плата Платформа создана в формате единой платы, содержащей все необходимые компоненты.
  • Датчики: Лидар (RPLidar A1), широкоугольная камера (GlobalShutter), датчик IMU (bno055), датчики скорости вращения колес.
  • Мобильность: дифференциальный привод, встроенный аккумулятор
  • Вычислительная мощность: Raspberry Pi 5.
  • Дополнительный микроконтроллер Совместимый с ArduinoDUE для "пользовательских" задач
  • Совместимость с другими платформами Аппаратная платформа робота совместима с аналогичными ROS роботами, например такими как TurtleBot 3/4
  • Встроенная аудио-карта и усилитель Позволяет воспроизводить аудио файлы и использовать синтезатор речи.

Для кого предназначен робот TurtleBro?

  • Студенты и преподаватели — для курсов по робототехнике и ИИ.
  • Разработчики — для тестирования алгоритмов перед внедрением в промышленные системы.
  • Энтузиасты — для экспериментов с автономными роботами.

Робот разработан и поддерживается проектом "Братья Вольт" http://www.voltbro.ru

Купить робота http://www.turtlebro.ru

Быстрый старт

Раздел содержит самую необходимую информацию по работе с роботом и рассчитан на опытных пользователей, знакомых с ROS и linux.

Робот поставляется в собранном и полностью настроенном состоянии.

Подготовка к первому включению

Перед первым включением, вам необходимо установить аккумулятор.

  • Подключите аккумулятор к 5 жильному кабелю (кабель необходим для зарядки аккумулятора)

Подключение аккумулятора шаг 1

  • Установите аккумулятор в заднюю нишу (подключите его к разъему XT-90)

Подключение аккумулятора шаг 2

  • Включите робота тумблером на плате (расположен с права от Raspberry)

Сетевые настройки

По умолчанию при старте Raspberry Pi попытается подключиться к Wi-Fi точке доступа с параметрами:

SSID: TurtleBro
Pass: turtlew001
или
SSID: TurtleBro5G
Pass: turtlew001

Также робот можно подключить сетевым кабелем к роутеру с настроенным DHCP сервером.

Доступ к роботу по SSH

Данные доступа к роботу

user: pi
password: brobro

Вы можете подключиться к роботу если у вас работает служба mDNS

pi@turtlebroNN.local

Где NN — номер на сетевом разъеме RaspberryPI.

Удаленное подключение к ROS

Робот настроен для работы c FastDDS в режиме Discovery-Server.

Настройки FastDDS находятся в файле /home/pi/.ros/fastdds_superclient.xml

Аналогично вы можете настроить удаленное подключение с любого компьютера сети.

wget https://raw.githubusercontent.com/voltbro/turtlebro2/refs/heads/jazzy/extra/fastdds_superclient.xml

export FASTRTPS_DEFAULT_PROFILES_FILE=./fastdds_superclient.xml

Более подробно, про подключение к сети ROS в разделе инструкции Настройка сети ROS

Безопасность

Перед использованием робота необходимо внимательно изучить данный раздел. В случае использования робота в учебном классе преподаватель должен ознакомить учеников с основными частями раздела.

Работа с Li-Po аккумулятором

В комплекте с роботом идет литий-полимерный аккумулятор. Данный тип аккумулятора может выдавать очень большие токи, что в случае короткого замыкания или механического повреждения может привести к его возгоранию.

Необходимо максимально аккуратно производить любые операции с аккумулятором, избегая его ударов, падений и других механических воздействий. Не допускается использование поврежденных (в том числе вздутых) аккумуляторов.

Аккумулятор оснащен разъемом T-Plug, который не позволит перепутать полярность при подключении к роботу.

На плате функционирует блок контроля напряжения аккумулятора, отключающий большинство систем робота при разряде батареи. В состоянии с разряженным аккумулятором робот прекращает работу и начинает издавать звуковой сигнал с интервалом 30 с. Для продолжения работы необходимо выключить тумблер питания и произвести зарядку батареи.

INFO Хранение робота должно происходить без установленного в робот аккумулятора.

Раз в 6 месяцев необходимо производить контроль состояния аккумуляторных батарей и в случае необходимости произвести балансировку блоков 18650.

Работа c блоком питания

WARNING Подключайте робот только комплектным блоком питания.

Напряжение блока питания должно быть: 18-24 В. Блок питания от TurtleBro 1 не подходит для работы с роботом TurtleBro 2.

Робот TurtleBro 2 имеет собственную систему зарядки аккумулятора. При подключении робота к блоку питания, происходит зарядка установленного в робот аккумулятора.

Запрещается оставлять подключенный робот к блоку питания без присмотра, даже если робот выключен.

Подключение выносных датчиков

Запрещается подключать к роботу датчики, которые каким либо образом будут зафиксированы на теле человека:

  • Медицинские датчики (ЭКГ и т.п.)
  • Датчики интегрированные в одежду (перчатки с датчиками положения пальцев и т.п.)

Первое включение робота

Вид собранного робота

Робот поставляется в собранном виде.

Внешний вид робота

Перед первым включением, вам необходимо установить аккумулятор.

Подключите аккумулятор к 5 жильному кабелю (кабель необходим для зарядки аккумулятора)

Подключение аккумулятора шаг 1

Установите аккумулятор в заднюю нишу (подключите его к разъему XT-90)

Подключение аккумулятора шаг 2

Для включения робота необходимо подать питание на разъем "DC IN" или подключить заряженный аккумулятор, а затем перевести переключатель питания в положение ON.

Аккумуляторный блок

Блок аккумуляторов состоит из 4 аккумуляторов типа 18650. Установку аккумуляторов необходимо производить согласно полюсов, изображенных на плате блока.

При выборе аккумуляторов необходимо проверить, что напряжение каждого аккумулятора не должно отличаться более чем на 0.2 вольта относительно друг друга. Если аккумулятор превышает заданное отклонение, необходимо провести перебалансировку всего блока.

При этом минимальное и максимальное напряжение должно быть в интервале от 2.6В до 4.2В.

Настройки сети и SSH

Настройка сети

Мы рекомендуем использовать единую сеть для всех устройств входящих в учебный класс. Желательно наличие интернета в этой сети.

Все роботы по умолчанию настроены для работы в WiFi и Ethernet в режиме клиента с получением настроек по DHCP.

Подключение к Wi-Fi

По умолчанию при старте Raspberry Pi попытается подключиться к Wi-Fi точке доступа с параметрами:

SSID: TurtleBro
Pass: turtlew001

или

SSID: TurtleBro5G
Pass: turtlew001

Поэтому мы рекомендуем использовать именно такие настройки Wi-Fi роутера для работы с роботом TurtleBro

Подключения к Ethernet

При подключении робота сетевым кабелем к вашей сети робот подключится, используя данные вашего DHCP сервера.

Настройка подключения робота к другой WiFi сети

Файл настройки подключения к сети /etc/netplan/20-network-wifi.yaml

Пример конфигурации

network:
  version: 2
  wifis:
    renderer: networkd
    wlan0:
      dhcp4: true
      optional: true
      access-points:
        Aespen_2:
          password: 541a6d0759e7bebc027240dbfdb09b6a40a5781d4411dfcbef877695abd8ac7d

Подключение по SSH

По умолчанию на Raspberry Pi запущен SSH сервис на стандартном порту

SUCCESS Имя пользователя ssh: pi Пароль для ssh: brobro

Каждый робот имеет уникальное имя вида turtlebroNN.local, где NN — это номер. При правильной настройке сети и вашего роутера вы сможете сразу подключиться к Raspberry по его имени.

ssh pi@turtlebro20.local

Если подключение не происходит, вам необходимо определить IP-адрес робота. Это можно сделать, подключившись к роутеру и найдя имя робота в списке подключенных устройств. Далее подключиться к роботу можно по IP, где 192.168.0.11 — это адрес робота.

ssh pi@192.168.0.11

Для доступа по SSH из Windows можно использовать программу PuTTY или воспользоваться встроенным терминалом.

Смена пароля пользователя

Для смены пароля вам необходимо знать ваш текущий пароль или быть пользователем с возможностью запускать программы через sudo.

Для смены пароля текущего пользователя просто запустите программу passwd. Далее необходимо указать ваш текущий пароль и установить новый. В разных дистрибутивах могут быть свои ограничения на длину и "сложность" пароля. Поэтому поставить очень простой пароль вы не сможете.

Для смены пароля другому пользователю выполните команду sudo passwd user_name, где user_name — это имя пользователя, которому вы хотите сменить пароль. Так как вы запустили программу с привилегиями sudo, то для смены пароля не нужно знать его текущий пароль. Также перестают работать ограничения на сложность пароля.

Веб-интерфейс

Для начала работы и проверки робота вы можете зайти на веб-сервер http://<IP-адрес робота>:8080 (указав IP-адрес вашего робота).

На этой странице будут доступны основные данные и изображение, получаемое от камеры:

Роботом можно управлять кнопками WSAD.

Выключение робота

Безопасное выключение (сохранение файлов на microSD карту)

Если вы редактировали файлы на роботе и хотите действительно убедиться, что при выключении робота они не потеряются, то прежде чем выключить робота, необходимо выполнить команду:

sudo sync

Данная команда запишет все "закешированные" файлы на microSD карту. Только после этого возможно выключить робота тумблером выключения питания или перезагрузить его.

Образ Raspberry Pi

Базовые параметры

Компьютеры Raspberry, идущие в комплекте с роботами, поставляются с предустановленными ОС Ubuntu Server и ROS Jazzy и всеми необходимыми системными пакетами.

На базовом образе Ubuntu Server отключены настройки cloud-init, для того чтобы работа с компьютером была более похожа на работу Ubuntu desktop.

Образ RaspberryPi

Обновление образа ОС возможно через скачивание и полную перезапись microSD карты. Необходимый размер карты не менее 16 Gb.

Образ можно использовать для следующей модели Raspberry:

  • Raspberry 5

Последний актуальный образ можно скачать в Яндекс.Диске Latest

Все доступные образы можно найти Яндекс.Диске Archive

Рекомендуем выбирать самую последнюю версию!

Загрузка образа ОС на SD-карту без настроек

Проще всего загрузить образ на SD карту с помощью программы balenaEtcher https://www.balena.io/etcher/ Программа обладает поддержкой всех основных операционных систем.

По умолчанию, имя робота установлено turtlebro01.

Рекомендуется сразу изменить его на имя согласно номеру платы turtlebroNN. Для этого необходимо отредактировать файлы /etc/hosts и /etc/hostname, расположенные на роботе, и переименовать turtlebro01->turtlebroNN.

Настройки сети ROS

Удалённое подключение к ROS

Архитектура ROS позволяет подключать множество сетевых устройств в одну ROS-сеть. В этом режиме любое устройство имеет доступ к данным других устройств. Например, вы можете объединить настольный компьютер и робот в одну сеть и работать с ними удалённо.

В таком режиме удобно на компьютере запускать программы визуализации, такие как rviz, или ресурсоёмкие процессы.

Что такое DDS

В ROS 2 обмен данными между узлами (нодами) построен на технологии DDS (Data Distribution Service) — промышленном стандарте передачи данных в распределённых системах. DDS отвечает за то, чтобы топики, сервисы и экшены работали «из коробки» без необходимости вручную настраивать транспорт. Когда один узел публикует сообщение, DDS автоматически находит всех подписчиков в сети и доставляет им данные, обеспечивая надёжную и предсказуемую связь.

ROS 2 поддерживает несколько реализаций DDS от разных производителей: FastDDS, CycloneDDS и другие. Каждая из них имеет свои особенности по производительности и настройке. На роботе TurtleBro 2 используется FastDDS — реализация с открытым исходным кодом от компании eProsima, которая является DDS по умолчанию в ROS 2 Jazzy и совместима с microROS.

Режимы работы FastDDS

FastDDS поддерживает два основных режима обнаружения участников сети: Simple Discovery и Discovery Server. Они определяют, каким образом узлы ROS 2 находят друг друга при запуске. Выбор режима напрямую влияет на стабильность работы, объём служебного трафика и удобство настройки, особенно когда робот работает по WiFi или в одной сети с другими роботами.

Simple Discovery — режим по умолчанию в ROS 2. В этом режиме каждый узел периодически рассылает широковещательные (multicast) пакеты в локальную сеть, сообщая о своём существовании. Все остальные узлы принимают эти объявления и автоматически устанавливают связь. Режим не требует никакой дополнительной настройки — достаточно, чтобы все устройства находились в одной подсети и имели одинаковое значение ROS_DOMAIN_ID. Это удобно для быстрого старта и отладки на одном компьютере.

Однако у Simple Discovery есть существенные ограничения. Multicast-трафик плохо работает через WiFi-маршрутизаторы — пакеты могут теряться или блокироваться. В учебном классе, где одновременно работают несколько роботов, широковещательные объявления от всех устройств создают лишнюю нагрузку на сеть и приводят к тому, что узлы одного робота могут «видеть» узлы другого, если значение ROS_DOMAIN_ID совпадает.

Discovery Server решает эти проблемы. В этом режиме один из участников сети назначается сервером обнаружения — остальные узлы подключаются к нему напрямую по заданному IP-адресу и порту. Multicast-рассылка не используется, весь обмен служебной информацией идёт через сервер. Это делает работу по WiFi стабильной и предсказуемой, а узлы разных роботов полностью изолированными друг от друга, поскольку каждый робот использует свой собственный Discovery Server.

На роботе TurtleBro 2 по умолчанию используется режим Discovery Server. Бортовой компьютер робота выступает сервером обнаружения, а все ROS-узлы (включая microROS на контроллере) подключаются к нему как клиенты. Для подключения удалённого компьютера к роботу достаточно указать IP-адрес робота в конфигурационном файле FastDDS и задать переменную окружения.

Настройка робота для работы с Discovery Server

Основные настройки находятся в файле /home/pi/.ros_params. К настройке работы по сети относятся несколько переменных окружения.

# Установка ROS_DOMAIN_ID для режима Simple Discovery
export ROS_DOMAIN_ID=1 

# Определение типа DDS
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
# Подключение файла конфигурации для режима Discovery Server
export FASTRTPS_DEFAULT_PROFILES_FILE=/home/pi/.ros/fastdds_superclient.xml

Если установлено значение FASTRTPS_DEFAULT_PROFILES_FILE, то робот работает в режиме Discovery Server. Если эту строчку закомментировать, робот будет работать в режиме Simple Discovery.

Настройка рабочего места для подключения к сети ROS

Чтобы ваш компьютер мог видеть топики, сервисы и узлы робота, его необходимо подключить к Discovery Server, который работает на бортовом компьютере робота. Существует два способа это сделать: через XML-файл конфигурации FastDDS или через переменные окружения ROS 2.

Способ 1: XML-файл конфигурации (рекомендуемый)

Скачайте готовый файл конфигурации с настройками Super Client:

wget https://raw.githubusercontent.com/voltbro/turtlebro2/refs/heads/jazzy/extra/fastdds_superclient.xml

Откройте скачанный файл fastdds_superclient.xml в текстовом редакторе. Ключевые параметры, которые нужно понимать:

  • Тег <discovery_protocol>SUPER_CLIENT</discovery_protocol> — определяет роль вашего компьютера в сети. Значение SUPER_CLIENT означает, что ваш компьютер будет подключаться к Discovery Server как привилегированный клиент, который видит все топики и сервисы. Обычный CLIENT видит только те узлы, с которыми он обменивается данными напрямую.
  • Тег <leaseDuration> — задаёт время аренды (в секундах и наносекундах), в течение которого сервер считает клиента активным. По умолчанию установлено 60 секунд. Если клиент не отправляет сигналы в течение этого времени, сервер считает его отключённым.
  • Блок <RemoteServer> — содержит адрес и порт Discovery Server, к которому нужно подключиться.

Найдите в файле строку с адресом сервера и замените 127.0.0.1 на IP-адрес вашего робота в сети:

<address>192.168.1.10</address>
<port>11811</port>

Порт 11811 является стандартным портом FastDDS Discovery Server и обычно не требует изменения.

Примените конфигурацию, задав переменную окружения в терминале:

export FASTRTPS_DEFAULT_PROFILES_FILE=./fastdds_superclient.xml

INFO Чтобы не вводить эту команду каждый раз при открытии нового терминала, добавьте её в файл ~/.bashrc, указав полный путь до XML-файла:

echo 'export FASTRTPS_DEFAULT_PROFILES_FILE=/полный/путь/до/fastdds_superclient.xml' >> ~/.bashrc

Способ 2: Переменные окружения (быстрый)

Если вам не нужна тонкая настройка параметров DDS, можно подключиться к Discovery Server без XML-файла, используя только переменные окружения ROS 2:

export ROS_DISCOVERY_SERVER="192.168.1.10:11811"
export ROS_SUPER_CLIENT=TRUE

Переменная ROS_DISCOVERY_SERVER указывает адрес и порт Discovery Server (бортового компьютера робота). Переменная ROS_SUPER_CLIENT со значением TRUE переводит узел в режим Super Client, что позволяет видеть все топики и сервисы в сети, аналогично настройке через XML.

Этот способ удобен для быстрой проверки связи или временной работы с роботом, когда не требуется изменять параметры аренды, таймауты и другие расширенные настройки FastDDS.

Проверка подключения

Независимо от выбранного способа, выполните тестовую команду:

ros2 topic list

Если подключение настроено правильно, вы увидите список топиков робота. Если список пуст, попробуйте перезапустить ROS-демон, который может хранить устаревший кеш обнаружения:

ros2 daemon stop

Также для режима отладки вы можете откдючить использование кеширования списка топиков, и увеличть время на полечение данных до 5 секунд.

ros2 topic list --no-daemon --spin-time 5

После этого повторите команду ros2 topic list.

Работа без Discovery Server

При необходимости вы можете переключить робота в режим Simple Discovery — например, для отладки на одном компьютере без сети или для работы в среде, где multicast работает стабильно.

Отключение на роботе

Откройте файл настроек окружения на роботе:

nano /home/pi/.ros_params

Закомментируйте или удалите строку, подключающую XML-конфигурацию:

# export FASTRTPS_DEFAULT_PROFILES_FILE=/home/pi/.ros/fastdds_superclient.xml

Остальные переменные (ROS_DOMAIN_ID, RMW_IMPLEMENTATION) оставьте без изменений. После сохранения файла перезапустите робота, чтобы изменения вступили в силу:

sudo reboot

Отключение на рабочем компьютере

Если вы ранее настраивали подключение к Discovery Server на своём компьютере, эти настройки также необходимо убрать.

Если вы использовали XML-файл — удалите переменную окружения из текущей сессии и из ~/.bashrc:

unset FASTRTPS_DEFAULT_PROFILES_FILE

Если вы использовали переменные окружения — сбросьте их:

unset ROS_DISCOVERY_SERVER
unset ROS_SUPER_CLIENT

Настройка ROS_DOMAIN_ID

WARNING В режиме Simple Discovery все устройства в одной сети с одинаковым ROS_DOMAIN_ID будут видеть друг друга. Это означает, что если в классе работает несколько роботов и на всех установлен одинаковый ROS_DOMAIN_ID, их узлы будут пересекаться.

По умолчанию значение ROS_DOMAIN_ID на роботе устанавливается согласно номеру на наклейке, расположенной на Ethernet-разъёме Raspberry Pi. Чтобы роботы не мешали друг другу в режиме Simple Discovery, каждому роботу нужно назначить уникальный идентификатор домена. При необходимости вы можете изменить значение в файле /home/pi/.ros_params:

export ROS_DOMAIN_ID=5

На рабочем компьютере установите такое же значение:

export ROS_DOMAIN_ID=5

INFO Допустимые значения ROS_DOMAIN_ID — от 0 до 101. Значение 0 используется по умолчанию в ROS 2, поэтому рекомендуется выбирать значения от 1 и выше, чтобы избежать конфликтов с другими ROS-устройствами в сети.

Если вы работаете в режиме Simple Discovery, то важно, чтобы ROS_DOMAIN_ID также был верно установлен на системной плате с microROS. Для этого существует ROS-сервис /domain_id:

ros2 service call /domain_id turtlebro/srv/DomainIDService "set_domain_id:
  data: 5"

В ответ вы получите подтверждение с установленным значением:

response:
turtlebro.srv.DomainIDService_Response(have_domain_id=std_msgs.msg.UInt16(data=5))

После установки ROS_DOMAIN_ID на системной плате её необходимо перезагрузить.

Настройки и управление роботом

Настройки параметров ROS

Все переменные, связанные с роботом и ROS, находятся в файле /home/pi/.ros_params

export ROS_DOMAIN_ID=1
export ROBOT_IP=$(hostname  -I | cut -f1 -d' ')
export ROBOT_MODEL=turtlebro2
export ROBOT_WHEEL_PARAM=12280
export FASTRTPS_DEFAULT_PROFILES_FILE=/home/pi/.ros/fastdds_superclient.xml

Systemd сервисы робота

Сервисы автоматически стартуют при старте робота.

Сервис fastdds

Сервис управления FastDDS Discovery сервером, для работы ROS

sudo systemctl stop fastdds
sudo systemctl start fastdds

Изменить параметры /home/pi/.ros/fastdds-start

Сервис microROS

Сервис для подключения агента microROS для управления платой робота

sudo systemctl stop microros
sudo systemctl start microros

Изменить параметры запуска /home/pi/.ros/microros-start и .launch файл /home/pi/turtlebro_ws/src/turtlebro/launch/micro_ros_stm.xml

Сервис turtlebro

Основной сервис робота, запускает .launch файл /home/pi/turtlebro_ws/src/turtlebro/launch/turtlebro.launch

sudo systemctl stop turtlebro
sudo systemctl start turtlebro

Сервисы и топики ROS

Доступные топики робота TurtleBro2

/backlight/all (std_msgs/msg/ColorRGBA)

Управление всеми светодиодами нижней подсветки, один цвет устанавливается всем светодиодам. Данные поступают из microROS.

/backlight/array (turtlebro/msg/ColorRGBAArray)

Управление светодиодами нижней подсветки, возможно установить отдельно цвет каждому светодиоду. Данные поступают из microROS.

/bat (sensor_msgs/msg/BatteryState)

Данные батарейки робота. Данные поступают из microROS.

voltage: 16.808950424194336 

Напряжение на батарее.

current: -0.061119794845581055

Ток на батарее. Если значение положительное, батарея заряжается, если отрицательное -- разряжается.

/cmd_vel (geometry_msgs/msg/Twist)

Управление скоростью (моторами) для передвижения робота. Данные из microROS.

/front_camera/image_raw (sensor_msgs/msg/Image)

Данные (изображение) передней камеры без компрессии

/front_camera/image_raw/compressed (sensor_msgs/msg/CompressedImage)

Данные (изображение) передней камеры с компрессией JPEG

/imu (sensor_msgs/msg/Imu)

Данные датчика IMU, расположенного на плате. Доступны данные orientation, angular_velocity, linear_acceleration. Данные поступают из microROS.

/odom (nav_msgs/msg/Odometry)

Данные одометрии (положение робота на основе скорости вращения колес). Данные публикуются нодой odom_publisher на основе данных /pose и /imu.

/pose (geometry_msgs/msg/Pose)

Упрощенные данные о положении робота. Данные из microROS.

/scan (sensor_msgs/msg/LaserScan)

Данные лидара.

Полный список топиков робота

/backlight/all
/backlight/array
/bat
/client_count
/cmd_vel
/connected_clients
/front_camera/camera_info
/front_camera/image_raw
/front_camera/image_raw/compressed
/front_camera/image_raw/compressedDepth
/front_camera/image_raw/zstd
/heartbeat
/imu
/joint_states
/leds_lifecycle/transition_event
/odom
/parameter_events
/pose
/pose2d
/robot_description
/rosout
/scan
/tf
/tf_static

Доступные сервисы робота TurtleBro2

/board_info (turtlebro/srv/BoardInfo)

Сервис получения информации о системной плате turtlebro.

/domain_id (turtlebro/srv/DomainIDService)

Сервис установки переменной ROS_DOMAIN_ID для microROS.

/power/off (std_srvs/srv/Empty)

Выключение питания платы.

/power/reset (std_srvs/srv/Empty)

Перезагрузка робота (плата и RaspberryPi).

/reset (std_srvs/srv/Empty)

Сброс (обнуление) одометрии робота.

/start_motor (std_srvs/srv/Empty)

Сервис запуска мотора лидара.

/stop_motor (std_srvs/srv/Empty)

Сервис остановки мотора лидара.

Установленные пакеты

Установка базового ROS происходит с использованием стандартных пакетов ОС Linux Ubuntu. https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html

Для удобства использования пакеты, установленные из исходного кода, распределены по разным рабочим окружениям (Work Space) ROS.

microros_ws

Рабочее окружение для установки и настройки microrROS

ros_extra_ws

Папка для рабочего окружения стандартных пакетов, но требующих сборку из исходников.

В этом окружении установлены пакеты rplidar_ros, необходимый для работы с RpLidar, и пакеты async_web_server_cpp, web_video_server, необходимые для трансляции видео через web-сервер робота.

turtlebro_ws

Основное окружение пользователя для пакетов робота. В этом окружении установлены пакеты:

turtlebro https://github.com/voltbro/turtlebro2

Стандартный пакет робота, содержит основные программы, настройки и модели роботов.

turtlebro_navigation https://github.com/voltbro/turtlebro2_navigation

Пакет для автономной навигации робота на основе стека NAV2 https://nav2.org.

turtlebro_web https://github.com/voltbro/turtlebro2_web

Пакет для работы web-сервера на роботе.

Обзор платы TurtleBro

Внешний вид платы

Передняя сторона платы Передняя сторона платы

Задняя сторона платы Задняя сторона платы

Назначение кнопок на плате

restart Нажатие кнопки перезапускает microros на плате со чтением и инициализацией всех переменных. Перезапуск идет около 30 секунд.

stop При нажатии сбрасывается значение /cmd_vel (робот останавливается), обнуляются значения одометрии и датчика IMU. Удобно пользоваться этой кнопкой для установки нулевого положения робота на полигоне.

hw_reset Кнопка сброса МК STM32. Осуществляет полный перезапуск робота, включая Raspberry.

reset Кнопка сброса Arduino. Осуществляет полный перезапуск Arduino.

EMRG Выходы для подключения чеки экстренной остановки моторов. Для работы в нормальном режиме контакты должны быть замкнуты.

Разъемы на плате

Arduino

USB-C DUE Подключение кабеля для программирования Arduino DUE. Также на плате расположены разъемы для подключения Arduino-совместимых "шилдов".

Servo D7-D2 Штекеры для подключения сервоприводов. С дополнительным питанием 5V.

5V power Штекеры для подключения к питанию 5V дополнительных потребителей.

I2C+GPIO Дополнительные разъемы для подключения датчиков по протоколу I2C

Робот

DCIN 18-24V Разъем для подключения внешнего питания робота. Напряжение 18-24В. Внимание! Блоки питания от платы TurtleBro1 не подходят для платы TurtleBro2.

4SLiPo Разъем для подключения основного разъема питания от аккумулятора.

Balance Подключение кабеля балансировки зарядки аккумулятора

USB-C Hub Подключение USB-хаба робота к компьютеру. В USB-хаб робота подключены:

  • Audio карта
  • Lidar
  • Arduino Due Serial1
  • STM32 Serial

USB-C PWR Подключение питания RaspberryPi. Максимальный допустимый ток 2 Ампера (подходит для подключения RaspberryPi 5).

Lidar Разъем для подключения лидара RP-Lidar A1 или RP-Lidar S1. Переходник UART-USB на основе cp1251 расположен на плате и подключен в USB-hub.

Speakers Подключение динамиков для встроенной аудиокарты робота. Колонки 5Вт.

Конфигурация DIP-switch

DIP1: default_domain_mode = 0

Настройка работы с DOMAIN_ID ROS. Если переключатель в положении 1, то micro-ros STM32 устанавливает значение 0. Если положение 0, то значение, которое хранится в EPROM. Значение EPROM можно перезаписать, вызвав сервис /domain_id.

DIP2: Motor inversion

Для разных моторов есть возможность задать направление "правильного" вращения.

DIP3: Odom inversion

Для разных моторов есть возможность задать "правильное" направление вращения шпинделя энкодера.

DIP8: UART update

Включение режима для загрузки прошивки STM32 через UART порт

Обновление микропрограммы платы

Актуальные прошивки можно скачать из Яндекс.Диска.

Последняя доступная версия: latest

Архив старых версий: archive

Для обновления микропрограммы системной платы TurtleBro можно использовать USB-UART переходник или программатор ST-LINK V2

Обновление микропрограммы с помощью USB-UART переходника

USB-UART

Перейти к инструкции обновления

ST-LINK

Перейти к инструкции обновления

Обновление прошивки платы

WARNING Перед началом обновления внимательно прочтите эту страницу до конца и убедитесь, что понимаете все описанные операции.

Обновление микропрограммы с помощью USB-UART переходника

USB-UART

Для обновления микропрограммы системной платы TurtleBoard необходимо использовать программу STM32 Flash loader demonstrator.

Придерживайтесь следующей инструкции:

  • Выключите питание робота и извлеките из него батарею.
  • Подсоедините USB-UART переходник к разъему ST-UPDT голубого цвета на системной плате. Обратите внимание на то, что ножка TX переходника должна быть соединена с ножкой RX разъема ST-UPDT, а ножка RX - к TX.

DANGER Ножка 3V3 разъема ST-UPDT может быть подключена только к источнику напряжения 3.3В! Подключение ее к 5В может привести к повреждению платы!

  • Переведите DIP-переключатель №4 в положение "ON"
  • Подключите USB-UART к компьютеру, он должен определиться системой как COM порт.
  • Нажмите кнопку HW_RESET на плате, это должно привести к тому, что все светодиоды погаснут (если ранее были включены) и плата перейдет в режим ожидания прошивки.
  • Запустите программу STM32 Flash loader demonstrator, выберите COM порт своего UART преобразователя. Нажмите кнопку Next.

Вы должны увидеть сообщение:

Target is readable. Please click "Next" to proceed

WARNING Если этого не произошло, проверьте правильность выполнения предыдущих шагов и попробуйте еще раз

  • В следующем окне вы должны увидеть приблизительно следующее:

Обратите внимание на поле Target: его содержимое должно точно совпадать с картинкой выше.

  • В следующем окне необходимо выставить настройки точно так же, как на картинке внизу:

INFO В графе Download from file необходимо указать на файл прошивки, скачанный с нашего сайта. Обратите внимание на то, что по умолчанию всплывающее окно не отображает необходимые нам файлы с расширением .hex, поэтому в правом нижнем углу окошка необходимо выбрать тип файла hex Files (*.hex).

  • После нажатия кнопки Next должен начаться процесс обновления микропрограммы. Он может занять несколько минут, пожалуйста, дождитесь его окончания. После окончания загрузки вы должны увидеть сообщение:
Download operation finished successfully
  • Закройте программу
  • Отключите USB-UART переходник от компьютера
  • Отключите USB-UART переходник от платы TurtleBoard
  • Переведите DIP-переключатель №4 в положение Off

SUCCESS При следующем запуске робот будет использовать обновленную микропрограмму.

WARNING Перед началом обновления внимательно прочтите эту страницу до конца и убедитесь, что понимаете все описанные операции.

Обновление микропрограммы с помощью программатора ST-LINK V2

ST-LINK

Для обновления микропрограммы системной платы TurtleBoard необходимо использовать программу STM32 ST-LINK Utility.

Придерживайтесь следующей инструкции:

  • Выключите питание робота и извлеките из него батарею.
  • Подсоедините программатор ST-LINK V2 к разъему ST-LINK чёрного цвета на системной плате. Обратите внимание на то, что ножка SWDIO программатора должна быть соединена с ножкой DIO разъема ST-LINK, а ножка SWCLK программатора - к CLK разъема ST-LINK.

DANGER Ножка 3V3 разъема ST-LINK может быть подключена только к источнику напряжения 3.3В! Подключение ее к 5В может привести к повреждению платы!

  • Подключите ST-LINK V2 к компьютеру, он должен определиться системой как Устройство USB: STM32 STLink.
  • Запустите программу STM32 ST-LINK Utility. Нажмите кнопку Connect to the target.

  • После соединения вы должны увидеть приблизительно следующее:

WARNING Если вы этого не увидели — проверьте правильность выполнения предыдущих шагов и попробуйте еще раз.

  • Далее необходимо перейти в меню Target и выбрать пункт Program & Verify...:

  • Выберите необходимый файл прошивки с расширением .hex, скачанный с нашего сайта:

  • Произведите необходимые настройки согласно изображению ниже и нажмите кнопку Start:

  • После нажатия кнопки Start должен начаться процесс обновления микропрограммы. Он может занять несколько минут, пожалуйста, дождитесь его окончания. После окончания загрузки вы должны увидеть следующее сообщение:

  • Нажмите кнопку Disconnect from the target:

  • Закройте программу
  • Отключите программатор ST-LINK V2 от компьютера
  • Отсоедините программатор ST-LINK V2 от платы TurtleBoard

SUCCESS При следующем запуске робот будет использовать обновленную микропрограмму.

Audio карта

Робот имеет встроенную Audio карту, усилитель и стерео колонки.

Вы можете для тестирования проиграть аудио файл

aplay ~/extra/audio/demo.wav

Настройки Audio системы

Файл настройки

/var/lib/alsa/asound.state

Изменение звуковой карты по умолчанию:

/etc/pulse/default.pa

строка set-default-sink 0

Text2Speech

Сервисы озвучки текста с использованием библиотеки rhvoice.

Примеры использования:

~/extra/tts/tts_test_cli.sh
~/extra/tts/tts_test_spd.sh
python3 ~/extra/tts/tts_test.py

Установленные языки и голоса:

Alan: en
Aleksandr: ru
Aleksandr-hq: ru
Anna: ru
Arina: ru
Artemiy: ru
Bdl: en
Clb: en
Elena: ru
Evgeniy-Eng: en
Evgeniy-Rus: ru
Irina: ru
Lyubov: en
Mikhail: ru
Pavel: ru
Slt: en
Tatiana: ru
Victoria: ru
Vitaliy: ru
Vitaliy-ng: ru
Yuriy: ru

Полезные команды

Настройки громкости:

alsamixer

Получить список доступных Audio устройств:

aplay -l

Проиграть аудиофайл через устройство 2:

aplay -Dhw:2,0 extra/audio/demo.wav

Камера робота

Робот TurtleBro2 оснащен цветной широкоугольной камерой, имеющей глобальный затвор (Global shutter). Угол захвата изображения камерой около 170 градусов. Параметры камеры оптимизированы для работы с задачами CV при движении робота по полигону (дороге, распознавании дорожных знаков).

Камера подключается через USB порт RaspberryPI

Сравнение затворов

Камера и ROS

На роботе установлены пакеты, необходимые для работы камеры:

    - ros-jazzy-v4l2-camera
    - ros-jazzy-image-transport-plugins
    - ros-jazzy-usb-cam

.launch файл для запуска ноды usb_cam находится в файле ~/turtlebro_ws/src/turtlebro/launch/usb_camera.xml.

По умолчанию камера работает с частотой 5fps и разрешением 640x480.

Камера откалибрована, данные калибровки в файле: turtlebro_ws/src/turtlebro/camera/global_shutter_640.yaml

Для просмотра изображения из камеры вы можете воспользоваться web-интерфейсом http://ip_вашего_робота:8080.

Вид веб интерфейса камеры

ROS топики камеры

/front_camera/camera_info: sensor_msgs/msg/CameraInfo
/front_camera/image_raw: sensor_msgs/msg/Image
/front_camera/image_raw/compressed: sensor_msgs/msg/CompressedImage
/front_camera/image_raw/compressedDepth: sensor_msgs/msg/CompressedImage
/front_camera/image_raw/zstd: sensor_msgs/msg/CompressedImage

Полезные команды

Получить список видео устройств робота

v4l2-ctl --list-devices

Получить информацию о камере video0

v4l2-ctl -D -d /dev/video0
v4l2-ctl -d /dev/video0 --list-formats-ext

Lidar

На роботе в стандартной комплектации устанавливается лидар Slamtec RPLidar A1

Lidar A1

Основные параметры лидара

ПараметрЗначение
Максимальное расстояние12 метров
Угол сканирования360 градусов
Частота сканирования (один оборот)5.5Hz
Количество точек на оборот8000

Lidar и ROS

Для работы лидара на роботе в рабочем окружении ros_extra_ws из исходников установлен пакет rplidar_ros.

Конфигурация запуска ноды лидара rplidar_composition, в файле ~/turtlebro_ws/src/turtlebro/launch/rplidar_a1.xml

Данные лидара находятся в топике

/scan: sensor_msgs/msg/LaserScan

Несмотря на то, что лидар вращается по часовой стрелке, данные в топике выводятся против часовой стрелки.

Также доступны сервисы остановки и старта мотора

/start_motor: std_srvs/srv/Empty
/stop_motor: std_srvs/srv/Empty

Визуализация данный в Rviz

Данные лидара в rviz

Моторы робота

На роботе установлено два мотора с энкодерами для контроля скорости вращения моторов. Моторы подключены в шестипиновые разъемы, расположенные снизу платы. Моторы рассчитаны на работу с напряжением питания 12V, максимальная скорость вращения мотора 70RPM.

Настройка моторов

Параметры моторов, можно поменять с помощью DIP переключателя платы

DIP2: Motor inversion

Направление движения колеса, если необходимо изменить.

DIP3: Odom inversion

Направление вращения магнита энкодера.

Настройка передаточного числа

Настройка передаточного числа редуктора мотора возможна через указание параметра wheelparam ноды tm_serial_node.

ros2 param set stm_serial_node wheelparam 12280
ros2 param get stm_serial_node wheelparam 

Также, значение по умолчанию задается в файле .ros_params

export ROBOT_WHEEL_PARAM=12280 

Управление моторами

Для управления скоростью вращения моторов, создан стандартный для такого вида робота топик /cmd_vel, который управляет скоростью движения платформы робота.

Управление роботом возможно линейной скоростью по оси X и угловой по оси Z.

Например, команда движения робота со скоростью 0.1 м/с прямо, вперед

ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "linear:
  x: 0.1
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0"

Получение данных о положении робота

Данные, полученные от моторов (о скорости) и датчика IMU (ориентация робота), преобразуются в информацию о положении робота в пространстве.

Изначально данные от платы робота доступны в упрощенном топике /pose, это сделано для оптимизации serial порта.

ros2 topic echo /pose

position:
  x: -0.00037499982863664627
  y: -3.6113851820118725e-07
  z: 0.0
orientation:
  x: 0.0
  y: 0.0
  z: -0.0005555555690079927
  w: 0.9999998211860657

Далее данные преобразуются в стандартный топик /odom (nav_msgs/msg/Odometry)

ros2 topic echo /odom

header:
  stamp:
    sec: 1750766546
    nanosec: 549143615
  frame_id: odom
child_frame_id: base_footprint
pose:
  pose:
    position:
      x: -0.00037499982863664627
      y: -3.6113851820118725e-07
      z: 0.0
    orientation:
      x: 0.0
      y: 0.0
      z: -0.0005555555690079927
      w: 0.9999998211860657
  covariance:
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
twist:
  twist:
    linear:
      x: 0.0
      y: 0.0
      z: 0.0
    angular:
      x: 0.0
      y: 0.0
      z: 0.0
  covariance:
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
  - 0.0
---

Для упрощенной работы с данными о положении робота создан топик /pose2d, в котором данные приведены в наиболее простой вид, где theta — угол эйлера по оси Z в радианах.

ros2 topic echo /pose2d

x: -0.00037499982863664627
y: -3.6113851820118725e-07
theta: -0.0011111111380159855

IMU (Inertial Measurement Uni) датчик

Блок инерциальных измерений (IMU) — важный компонент робота, отвечающий за определение ориентации.

IMU состоят из трех основных типов датчиков: акселерометра, гироскопа и магнитометра. Акселерометр измеряет линейное ускорение, позволяя роботу определять скорость и направление его движения. Гироскоп измеряет угловую скорость. Магнитометр определяет силу и направление магнитного поля Земли, помогая роботу определить направление по компасу.

На роботе TurtleBro в центре вращения робота установлена плата IMU BNO085.

Данные датчика IMU можно получить в топике /imu (sensor_msgs/msg/Imu).

ros2 topic echo /imu

header:
  stamp:
    sec: 1750767930
    nanosec: 243143974
  frame_id: imu_link
orientation:
  x: 0.01593017578125
  y: -0.00518798828125
  z: 0.00054931640625
  w: 0.9998779296875
orientation_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
angular_velocity:
  x: 0.0
  y: 0.0
  z: -0.0033333334140479565
angular_velocity_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
linear_acceleration:
  x: 0.12999999523162842
  y: -0.019999999552965164
  z: -0.28999999165534973
linear_acceleration_covariance:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
---

RGB лента

Под платой расположено 24 RGB светодиода модели WS2812

WS2812 — это три RGB-светодиода и микросхема-драйвер для управления этими светодиодами, собранные в одном SMD корпусе. Корпус каждого светодиода имеет 4 вывода: два вывода данных и два вывода питания. Выводы данных предыдущих светодиодов соединены со входами следующих, создавая цепочку светодиодов, управляемых через один пин микроконтроллера.

В новых роботах в Arduino DUE загружена демонстрационная прошивка работы с лентой. backlight_demo

Если переключатель D29 включен, то RGB-лента начинает работать в демо-режиме. Для отключения демо-режима необходимо выключить переключатель D29 и нажать на кнопку D15 для выключения всех светодиодов. Одновременная работа демо-режима и управления через ROS ленты невозможна.

Работа со светодиодной лентой через ROS

Управление светодиодной лентой возможно через топики /backlight/all [std_msgs/msg/ColorRGBA]

Установить один цвет для всех светодиодов:

# Установить красный цвет всей ленты
ros2 topic pub /backlight/all std_msgs/msg/ColorRGBA 'r: 1.0
g: 0.0
b: 0.0
a: 1.0'

/backlight/array [turtlebro/msg/ColorRGBAArray]

Установить по отдельности цвет каждого светодиода, пример: ~/turtlebro_ws/src/turtlebro/scripts/leds.py

Работа со светодиодной лентой через Arduino

Лента подключена к пину D30 встроенного контроллера Arduino. Число светодиодов — 24. Для управления светодиодами мы рекомендуем использовать библиотеку FastLed.

Пример работы ленты backlight_demo

Управление lifecycle RGB-ленты

Если запущена нода (leds_lifecycle.launch.py) для демонстрации работы светодиодной ленты через ROS и python. Отключить работу демонстрации RGB-ленты можно, используя механизм lifecycle:

# Отключить демонстрацию
ros2 lifecycle set leds_lifecycle deactivate

# Включить демонстрацию
ros2 lifecycle set leds_lifecycle activate

или выключить загрузку ноды leds_lifecycle из запуска в файле turtlebro_ws/src/turtlebro/launch/turtlebro.xml

<!-- Убрать строчку -->
<include file="$(find-pkg-share turtlebro)/launch/leds_lifecycle.launch.py"/>

Arduino

Для подключения дополнительных датчиков и других устройств на плате расположен микроконтроллер AT91SAM3X8E c аналогичной развязкой Arduino® Due

Спецификация платы https://docs.arduino.cc/hardware/due/

Блок платы Arduino на плате TurtleBro

Блок Arduino

Arduino IDE

Скачайте и установите ArduinoIDE (программу для работы с платой Arduino) на сайте arduino.cc

https://www.arduino.cc/en/software/

Зайдите в раздел Board Manager в поиске наберите due и установите расширение.

Board Manager

Выберете в настройках IDE плату Arduino DUE (Programming Port)

ArduinoIDE board

Проверьте что выбран правильный Serial Port

Arduino Select Serial

Загрузите на плату пример из меню File->Examples->01.Basic->Blink

На плате должен начать мигать светодиод L в блоке Arduino.

Особенности Arduino DUE

Для работы с Arduino не обязательно включать робота, достаточно только подключить его к USB.

WARNING Плата Arduino DUE рассчитана на питание от 3.3v. Поэтому при подключении датчиков к плате, необходимо согласовать напряжение. Большинство датчиков Arduino работают как от напряжения 5v так и от 3.3v

Для подключения "силовых" серво, на плате расположены пины, объединенные в группу servos, с отдельной от основной платы линией питания 5v. Также рядом расположена группа пинов для подключения к линии 5v других потребителей, которым необходимо более мощное питание.

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 видно в устройстве: /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_0010-if00-port0

Для настройки работы через Serial1, необходимо подключить собственный файл, реализующий новый transport

Пример файла default_transport.cpp

Пример простого micro-ros publisher для Arduino

microros_publisher

Если вы загрузите скетч до запуска micro-ros агента, то вам нужно перезапустить Arduino, нажав на кнопку reset. Так как скетч подключается к агенту только в момент запуска.

Пример программы, реализующий переподключение к ROS агенту. В этом примере microros сразу подключается к агенту, как только он будет запущен.

microros_reconnection

Запуск micro-ROS агента

Micro-ROS агент нужен для того, чтобы данные из микроконтроллера попали в общую ROS сеть.

Работу Micro-ROS агента можно пояснить схемой

Micro-ROS agent

Вы можете запустить micro-ROS агент из консоли, командой

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 файл

arduino-agent.xml

Полезные ссылки

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

Полезные ссылки

Образовательный портал с уроками ROS

http://learn.voltbro.ru/

Пакет автономной навигации

https://github.com/voltbro/turtlebro2_navigation

Книга введение в ROS

Книга посвящена ROS1, но общие подходы ROS1 и ROS2 идентичны.

http://docs.voltbro.ru/starting-ros/

Инструкция робота TurtleBro1

http://ros1.turtlebro.ru/

Телеграм-канал технической и информационной поддержки продуктов проекта «Братья Вольт»

https://t.me/+a2Fn7chqQec1MWVi

TurtleDIY

Комплектация для самостоятельной сборки ТБ2. Рекомендуем только людям ранее самостоятельно собиравших роботов.

Набор содержит

Плата

  • Готовая прошитая плата, 1 шт

Корпус

  • Нарезанный пластик для сборки корпуса, 1 комплект
  • Новые стойки + винты, 1 комплект
  • Опорный шарик, 1 шт.
  • Стойки + винты для Разбери (2.5) 4 шт
  • Стойки + винты для Лидара (2.5) 4 шт

Моторы

  • Моторы с платой энкодера сборе, 2 шт
  • Винты для сборки, 1 комплект
  • Кабель подключения к плате 2 шт

Плата для сборки АКБ

  • Плата для установки акб, под пайку, 1 комплект
  • Плата подлючения для акб, под пайку, 1 комплект
  • Кабель балансировки акб, 1 шт
  • Кабель подключения платы, 1 шт

Дополнительно

  • Кабель лидара, 1 шт

Приобретается дополнительно

Перечень носит рекомендательный характер, многие элементы могут быть заменены на аналоги.

Колеса

Колеса

Купить на AliExpress

Блок питания 19в

Блок питания

Напряжение 19V, ток не менее 2A Штекер 5.5 2.5mm Купить на AliExpress

Камера

Камера

Любая удобная USB, крепление камеры (3d печатное) создано для камеры размером 38x38mm. ELP Store

Лидар

Лидар

RP Lidar A1

Купить на AliExpress

Необходимо изготовить кабель подключения

Кабеля USB

  • Кабель питания разбери USB-C - USB-C 10см 1 шт
  • Информационный кабель USB-C - USB-A 15 см 1 шт

Колонки

Размер 40x40, но варианты могут быть по наличию

Колонки

Raspberry

  • Raspberry pi 5 4Gb минимум
  • SD-Card 16 Gb минимум

Для самостоятельного изготовления

3д печать

  • Крепление лидара (не обязательно)
  • Крепление камеры (не обязательно)