Настройка бортового компьютера и 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 визуализация
  • Блочное программирование
  • Логи БВС

input password

Вход в систему

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

result password

  • В открывшемся терминале введите пароль: raspberry

Символы пароля не отображаются при вводе в целях безопасности

  • После успешного ввода вы увидите командную строку:

result password

Ознакомьтесь с основными командами для работы с терминалом

Команды генерации файла карты 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

Параметры для генерации 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
    

    opnen path sverk.txt

  • Внесите изменения.
    Поменяем первый столбец исходя из наших номеров меток и размер первой метки для взлета:

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

    Было:

    was sverk.txt

    Стало:

    become sverk.txt

  • Сохраните и выйдите: Ctrl+X, Y, Enter.

  • Большинство параметров, необходимых для полета, хранится в папке:

    catkin_ws/src/clover/clover/launch/
    
  • Зайти в папку:

    cd ~/catkin_ws/src/clover/clover/launch/
    
  • Открыть файл aruco.launch:

    nano aruco.launch
    

open aruco.launch

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

    find row aruco.launch

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

    find row aruco.launch

  • Сохраните и выйдите: Ctrl+X, Y, Enter

  • Для применения изменений перезагрузите сервис БВС:

    sudo systemctl restart clover
    

    restart

Проверьте вид сгенерированной карты ArUco-меток:

  • Откройте веб-интерфейс

    restart

  • В веб-интерфейсе перейдите в раздел View image topics (web_video_server)

  • Откройте топик /aruco_map/image

    restart

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

    aruco xyz

Генерация карты ArUco-меток для печати

Установите генератор карт ArUco-меток:

  • iOS
  • Windows
    Запустите приложение на компьютере

    app

  • Во вкладке Словарь ArUco выберите необходимый тип меток. Для БВС используется словарь DIST_4X4_100

    app dictionary

  • Откройте файл с конфигурацией карты ArUco-меток на бортовом компьютере, используя команду:

    nano ~/catkin_ws/src/clover/aruco_pose/map/ВАШ_ФАЙЛ.txt
    

    our file

Не забудьте заменить ВАШ_ФАЙЛ.txt на актуальное название файла

  • Скопируйте всё текстовое содержимое открытого файла и вставьте его в программу для генерации карты

    copy and paste

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

    format hill

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

  • Нажмите кнопку Обновить. Проверьте правильность карты и, если всё верно, нажмите Скачать в PDF и Скачать SVG

    find row aruco.launch

  • Распечатайте карту 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 отображаются поверх изображения

results matching ""

    No results matching ""