Files
clover/docs/aruco.md
Oleg Kalachev 912376da81 Updates docs/aruco.md
Auto commit by GitBook Editor
2017-11-29 21:52:50 +03:00

5.5 KiB
Raw Blame History

Навигация с использованием 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:

![](/assets/Снимок экрана 2017-11-27 в 23.20.49.png)

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

В топике 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) убедиться, что:

  • Для PixHawk: Установлена прошивка с LPE (local position estimator). Для PixRacer: параметр SYS_MC_EST_GROUP установлен в local_position_estimator, attitude_estimator_q.
  • В параметре LPE_FUSION включены только флажки vision position, vision yaw, land detector. Опционально можно включить барометр (baro).
  • Выключен компас: ATT_W_MAG = 0
  • Включена ориентация по Yaw по зрению: ATT_EXT_HDG_M = Vision.
  • Настройки VPE: LPE_VIS_DELAY = 0.03 sec, LPE_VIS_XY = 0.1 m, LPE_VIS_Z = 0.15 m.
  • Рекомендуемые настройки контроллера:
    • Максимальная скорость по позиции: MPC_XY_VEL_MAX = 1 m/s
    • Настройки PID-регуляторов: MPC_XY_P = 0.12, MPC_XY_VEL_P = 0.12

Полет

При правильной настройке коптер начнет удерживать позицию по VPE (в режимах POSCTL или OFFBOARD) автоматически.

Для автономных полетов можно будет использовать функции set_position, set_velocity. Для полета в определенные координаты маркерного поля необхоимо использовать фрейм aruco_map:

# Вначале необходимо взлететь, чтобы коптер увидел карту меток
# и появился фрейм aruco_map:
set_position(x=0, y=0, z=3, frame_id='fcu_horiz')  #  взлет на 3 метра

time.sleep(5)

# Полет в координату 2:2 маркерного поля, высота 3 метра
set_position(x=2, y=2, z=3, frame_id='aruco_map', update_frame=True)  #  полет в координату 2:2, высота 3 метра