5.0 KiB
Навигация с использованием ArUco-маркеров
TODO
ArUco-маркеры — это популярная технология для позиционирования роботехнических систем с использованием компьютерного зрения.
Пример ArUco-маркеров:
aruco_pose
Модуль aruco_pose позволяет восстанавливать позицию коптера относительно карты ArUco-маркеров и сообщать ее полетному контролеру, используя механизм Vision Position Estimation.
При наличия источника положения коптера по маркерам, появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля simple_offboard.
Включение
Необходимо убедиться, что в launch-файле Клевера (~/catkin_ws/src/clever/clever/clever.launch) включен запуск aruco_pose и нижней камеры для компьютерного зрения:
<arg name="camera" default="true"/>
<arg name="aruco_pose" default="true"/>
При изменении launch-файла необходимо перезапустить пакет clever:
sudo systemctl restart clever
Настройка карты ArUco-меток
В качестве карты меток можно использовать автоматически сгенерированный ArUco-board.
TODO
Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотре содержимое топика aruco_pose/map_image. Через браузер его можно просмотреть при помощи web_video_server по ссылке http://192.168.11.1:8080/snapshot?topic=/aruco_pose/map_image:

При полетах необходимо убедиться, что наклеенные на пол метки соответствуют карте по ссылке.
В топике aruco_pose/debug (http://192.168.11.1:8080/snapshot?topic=/aruco_pose/debug) доступен текущий результат распознования меток:
TODO
Система координат
По соглашению, в маркерном поле используется стандартная система координат ENU:
- x — вправо (условный "восток");
- y — вверх (условный "север");
- z — вверх.
Угол по рысканью считается равным 0, когда коптер смотрит направо (по оси x).
TODO: иллюстрация.
Настройка полетного контролера
Для правильной работы Vision Position Estimation необходимо (через QGroundControl) убедиться, что:
- Установлена прошивка с LPE (local position estimator).
- В параметре
LPE_FUSIONвключены только флажкиvision position,vision yaw,land detector. Опционально можно включить барометр (baro). - Выключен компас:
ATT_W_MAG= 0 - Включена ориентация по Yaw по зрению:
ATT_EXT_HDG_M=Vision.
Полет
При правильной настройке коптер начнет удерживать позицию по VPE (в режимах POSCTL или OFFBOARD) автоматически.
Для автономных полетов можно будет использовать функции set_position, set_velocity. Для полета в определенные координаты маркерного поля необхоимо использовать фрейм aruco_map:
# Вначале необходимо взлететь, чтобы коптер увидел карту меток
# и появился фрейм aruco_map:
set_position(x=0, y=0, z=3, frame_id='fcu_horiz') # взлет на 3 метра
# Полет в координату 2:2 маркерного поля, высота 3 метра
set_position(x=2, y=2, z=3, frame_id='aruco_map', update_frame=True) # полет в координату 2:2, высота 3 метра
