Настройка бортового компьютера и ArUco-навигации для БВС
Для стабильных автономных полётов БВС необходима навигационная система.
На платформе «Обрик» эту роль выполняет бортовой компьютер и камера машинного зрения ориентируясь в пространстве по карте ArUco-меток, с заранее известными параметрами.
В комплектации идёт уже готовая распечатанная карта меток, которая так же записана в систему бортового компьютера при установке образа.
Помните, что точность навигации напрямую зависит от качества калибровки камеры, освещенности и физического состояния меток. Регулярно проверяйте систему и при необходимости повторяйте калибровку.
Бортовой компьютер
Бортовой компьютер представляет собой компактное устройство, основу которого составляет процессорная плата Raspberry Pi: Этот миниатюрный одноплатный компьютер размером с ладонь построен на базе мобильного микропроцессора ARM.
Материнская плата: Данное устройство обеспечивает возможность подключения дополнительных элементов к модемной плате и оснащено слотом для SD-карты.
Основная структура образа
clover/ ├── aruco_pose/ # ROS-пакет для работы с ArUco-маркерами │ ├── map/ # примеры карт маркеров │ ├── map.txt # стандартная карта (id, pose, размер) │ └── ... # дополнительные карты │ ├── clover/ # основной ROS-пакет Clover (API автономных | \полётов) │ ├── launch/ # launch-файлы Clover │ ├── clover.launch # главный launch-файл, запускает весь стек │ │ Clover │ ├── mavros.launch # конфигурация MAVROS │ ├── main_camera.launch # запуск и конфигурация основной камеры │ ├ aruco.launch # настройка ArUco-навигации │ └── led.launch # запуск подсветки и эффектов │ ROS-пакета │ ├── clover_blocks/ # блочное программирование │ (Blockly-интерфейс) │ ├── clover_simulation/ # симуляция Clover (Gazebo + PX4 SITL) │ ├── airframes/ # airframe-конфиги PX4 │ ├── launch/ # simulator.launch + другие файлы симулятора │ └── resources/ │ └── worlds/ # миры для Gazebo: clover.world, │ clover_aruco.world └── README.md # общее описание проекта
Подключение
- Подключите питание 5V к бортовому компьютеру с помощью кабеля USB Type-C
- Подключитесь к сети Wi-Fi БВС
- Откройте браузер и в адресной строке введите IP-адрес:
http://172.20.10.7
После подключения доступен Веб-интерфейс с основными веб-инструментами:
- Документация
- Список топиков образа
- Работа камеры
- Онлайн терминал
- 3D визуализация
- Блочное программирование
- Логи БВС

Вход в систему
- В веб-интерфейсе найдите и откройте раздел Web Terminal

- В открывшемся терминале введите пароль:
raspberry
Символы пароля не отображаются при вводе в целях безопасности
- После успешного ввода вы увидите командную строку:

Команды генерации файла карты ArUco-маркеров бортового компьютера
Подробности описаны в статье «Навигация по картам ArUco-маркеров»
Для создания файла карты необходимо выполнить команду с заданными параметрами.
Определите следующие значения для вашей карты:
- length - длина стороны маркера в метрах (например, 0.3)
- x - количество маркеров по оси X (столбцов)
- y - количество маркеров по оси Y (строк)
- dist_x - расстояние между центрами маркеров по оси X (м)
- dist_y - расстояние между центрами маркеров по оси Y (м)
- first_ID - ID первого маркера
- --top-left — нумерация с верхнего левого угла (важный параметр, так как это стандарт для большинства полей)
Выполните команду генерации
В терминале выполните следующую команду, подставив свои параметры:
rosrun aruco_pose genmap.py <length> <x> <y > <dist_x > <dist_y > <first_ID> > ~/catkin_ws/src/clover/aruco_ws/src/clover/aruco_pose/map/<Имя_файла>.txt --top-leftПример:
rosrun aruco_pose genmap.py 0.3 3 2 0.5 0.5 0 > ~/catkin_ws/src/clover/aruco_pose/map/sverk.txt --top-left
Стандартное имя файла карты —
map.txt. Если вы укажете другое имя при генерации, его необходимо прописать в конфигурационном файлеaruco.launch(параметр<param name="map" value="$(find aruco_pose)/map/ВАШ_ФАЙЛ.txt"/>)
Настройка ROS-ноды для работы с новой картой:
- Откройте конфигурационный файл:
nano ~/catkin_ws/src/clover/clover/launch/aruco.launch
- Найдите строку и отредактируйте параметр map:
<arg name="map" default="map.txt"/>
- Замените map.txt на имя вашего файла:
<arg name="map" default="sverk.txt"/>
- Сохраните изменения и выйдите из редактора: Нажмите Ctrl+X, затем Y, затем Enter
Примечание: aruco.launch - это файл запуска ROS (Robot Operating System), предназначенный для детектирования маркеров ArUco. Он обычно запускает узлы, которые: принимают изображения, обрабатывают эти изображения, публикуют позы маркеров
aruco.launch позволяет вашей роботизированной системе "видеть" и отслеживать специальные квадратные маркеры ArUco в реальном времени.
Пример генерации карты ArUco-меток
На изображении ниже показана физическая карта ArUco-меток

Параметры для генерации ArUco-меток обозначены под каждой из них:
- length - 0.3 - длина стороны маркера (м)
- x - 3 - количество маркеров по оси X (столбцов)
- y - 2 - количество маркеров по оси Y (строк)
- dist_x - 0.5 - расстояние между центрами маркеров по оси X (м)
- dist_y - 0.5 - расстояние между центрами маркеров по оси Y (м)
- first - 42 - ID первого маркера
Для обеспечения автоматического взлета используются ArUco-метки размером 1×1 см (левая верхняя метка), что позволяет камере уверенно их распознавать,но при генерации все метки будут одинакового указанного размера, ее необходимо отредактировать.
Меток взлета на карте может быть несколько
Назовем файл sverk.txt
Из вышеуказанных данных собираем команду:
rosrun aruco_pose genmap.py 0.3 3 2 0.5 0.5 42 > ~/catkin_ws/src/clover/aruco_pose/map/sverk.txt --top-left
Поскольку в качестве первой метки мы указали метку №42 теперь наша карта сгенерируется, имея метки по порядку возрастания начиная с №42: 43, 44, 45, 46, 47, 48. Однако, у нас номера иные. Необходимо отредактировать ранее созданный файл.
Редактирование карты ArUco-меток
Необходимо внести изменения в карту ArUco-меток. Размер метки для для взлета должен составлять 1,5×1,5 см
Для удобста использования добавляйте метку 1,5×1,5 см на свои карты
Откройте файл с помощью команды:
nano ~/catkin_ws/src/clover/aruco_pose/map/sverk.txt
Внесите изменения.
Поменяем первый столбец исходя из наших номеров меток и размер первой метки для взлета:Для замены значения перемещайтесь внутри файла спомощью стрелок
Было:

Стало:

Сохраните и выйдите:
Ctrl+X,Y,Enter.Большинство параметров, необходимых для полета, хранится в папке:
catkin_ws/src/clover/clover/launch/Зайти в папку:
cd ~/catkin_ws/src/clover/clover/launch/Открыть файл aruco.launch:
nano aruco.launch

Найдем строчку, где прописан путь и файл указания карты. Поменяем на sverk.txt:

Поменяем на sverk.txt:

Сохраните и выйдите:
Ctrl+X,Y,EnterДля применения изменений перезагрузите сервис БВС:
sudo systemctl restart clover
Проверьте вид сгенерированной карты ArUco-меток:
Откройте веб-интерфейс

В веб-интерфейсе перейдите в раздел View image topics (web_video_server)
Откройте топик /aruco_map/image

Убедитесь, что карта ArUco-меток корректно сгенерировалась - в соответствии с изначальным примером

Генерация карты ArUco-меток для печати
Установите генератор карт ArUco-меток:
- iOS
Windows
Запустите приложение на компьютере
Во вкладке Словарь ArUco выберите необходимый тип меток. Для БВС используется словарь DIST_4X4_100

Откройте файл с конфигурацией карты ArUco-меток на бортовом компьютере, используя команду:
nano ~/catkin_ws/src/clover/aruco_pose/map/ВАШ_ФАЙЛ.txt
Не забудьте заменить ВАШ_ФАЙЛ.txt на актуальное название файла
Скопируйте всё текстовое содержимое открытого файла и вставьте его в программу для генерации карты

Нажмите Рассчитать размер поля для автоматической настройки

Для печати больших полей рекомендуется задать произвольный размер. Для этого выберите пункт Custom и укажите параметры в миллиметрах.
Нажмите кнопку Обновить. Проверьте правильность карты и, если всё верно, нажмите Скачать в PDF и Скачать SVG

Распечатайте карту ArUco-меток и разместите её в полетной зоне
После расчета размера поля, формат поля измениться на Custom
⚠️ Важное требование к печати
Печать обязательно должна быть матовой. Если метки будут бликовать, камера БВС не сможет их распознать, и автономный полет будет невозможен.
Пример сгенерированной карты ArUco-меток
Используйте карту, созданную в предыдущем примере
| # id | length | x | y | z | rot_z | rot_y | rot_x |
| 42 | 0.01 | 0.0 | 0.5 | 0 | 0 | 0 | 0 |
| 18 | 0.3 | 0.5 | 0.5 | 0 | 0 | 0 | 0 |
| 12 | 0.3 | 1.0 | 0.5 | 0 | 0 | 0 | 0 |
| 27 | 0.3 | 0.0 | 0.0 | 0 | 0 | 0 | 0 |
| 43 | 0.3 | 0.5 | 0.0 | 0 | 0 | 0 | 0 |
| 5 | 0.3 | 1.0 | 0.0 | 0 | 0 | 0 | 0 |
- Скачиваем в PDF или SVG. Откройте в любом PDF, SVG редакторе
После печати поля проверьте размеры ArUco-меток
В веб-интерфейсе перейдите в раздел web_video_server
Откройте топик /aruco_map/image
Наведите камеру БВС на метку. Убедитесь, что они корректно определяются, а их ID отображаются поверх изображения