From 995a1395de6c7ed9f37c55b6513f32cfa000b635 Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Thu, 28 Mar 2019 00:30:54 +0300 Subject: [PATCH] Add articles on new aruco navigation to gitbook --- docs/ru/README.md | 2 +- docs/ru/SUMMARY.md | 5 +- docs/ru/aruco.md | 165 +++---------------------------------------- docs/ru/aruco_new.md | 23 ------ 4 files changed, 13 insertions(+), 182 deletions(-) delete mode 100644 docs/ru/aruco_new.md diff --git a/docs/ru/README.md b/docs/ru/README.md index 822a4665a..dac9983ee 100644 --- a/docs/ru/README.md +++ b/docs/ru/README.md @@ -5,7 +5,7 @@ «Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним. -Набор включает в себя полетный контроллер Pixhawk/Pixracer с полетным стеком PX4, Raspberry Pi 3 в качестве управлящего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии. +Набор включает в себя полетный контроллер Pixhawk/Pixracer с полетным стеком PX4, Raspberry Pi 3 в качестве управляющего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии. На базе точно такой же платформы были созданы многие «большие» проекты компании Copter Express, например, дроны для [пиар-акций по автономной доставке пиццы](https://www.youtube.com/watch?v=hmkAoZOtF58) (Самара, Казань); дрон-доставщик кофе в Сколково, мониторинговый дрон с зарядной станцией, дроны-победители на полевых испытаниях «[Робокросс-2016](https://www.youtube.com/watch?v=dGbDaz_VmYU)», «[Робокросс-2017](https://youtu.be/AQnd2CRczbQ)» и многие другие. diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index 14c3589b3..06abfad70 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -36,7 +36,10 @@ * [ROS](ros.md) * [MAVROS](mavros.md) * [Автономный полет в OFFBOARD](simple_offboard.md) - * [Навигация по ArUco-маркерам](aruco.md) + * Визуальные маркеры (ArUco) + * [Общая информация](aruco.md) + * [Распознавание маркеров](aruco_marker.md) + * [Распознавание карт маркеров](aruco_map.md) * [Навигация по Optical Flow](optical_flow.md) * [Автоматическая проверка](selfcheck.md) * [Примеры кода](snippets.md) diff --git a/docs/ru/aruco.md b/docs/ru/aruco.md index 40815d67f..5d9af8bb3 100644 --- a/docs/ru/aruco.md +++ b/docs/ru/aruco.md @@ -1,172 +1,23 @@ -# Навигация с использованием ArUco-маркеров +# ArUco-маркеры -> **Note** Документация для версий [образа](microsd_images.md), начиная с **0.15**. Для более ранних версий см. [документацию для версии **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/aruco.md). +> **Note** Документация для версий [образа](microsd_images.md), начиная с версии **0.16**. Для более ранних версий см. [документацию для версии **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). [ArUco-маркеры](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) — это популярная технология для позиционирования робототехнических систем с использованием компьютерного зрения. -Пример ArUco-маркеров: - ![ArUco-маркеры](../assets/markers.jpg) > **Hint** При печати визуальных маркеров необходимо использовать максимально матовую бумагу. Глянцевая бумага будет бликовать на свету, сильно ухудшая качество распознавания. Для быстрого генерирования маркеров для печати можно использовать онлайн-инструмент: http://chev.me/arucogen/. -## aruco\_pose - -Модуль `aruco_pose` позволяет восстанавливать позицию коптера относительно карты ArUco-маркеров и сообщать ее полетному контролеру, используя механизм [Vision Position Estimation](https://dev.px4.io/en/ros/external_position_estimation.html). - -При наличии источника положения коптера по маркерам появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля [simple\_offboard](simple_offboard.md). - -### Включение - -Необходимо убедиться, что в launch-файле Клевера \(`~/catkin_ws/src/clever/clever/launch/clever.launch`\) включен запуск aruco\_pose и [камеры для компьютерного зрения](camera.md): - -```xml - -``` - -```xml - -``` - -При изменении launch-файла необходимо перезапустить пакет `clever`: - -```bash -sudo systemctl restart clever -``` - -### Настройка карты ArUco-меток - -В качестве карты меток можно использовать автоматически сгенерированный [ArUco-board](https://docs.opencv.org/trunk/db/da9/tutorial_aruco_board_detection.html). - -Настройка карты меток производится с помощью файла `~/catkin_ws/src/clever/clever/launch/aruco.launch`. Для использования ArUco-board введите его параметры: - -```xml - - - - - - - - - - - - - - - - - - - - -``` - -Можно задать отдельно расстояние между маркерами по горизонтали и вертикали: - -```xml - - - - - -``` - -Если используется карта с нестандартным порядком ID меток, то можно использовать параметр `marker_ids`: - -```xml -[5, 7, 9, 11, 13, 15] -``` - -Нумерация маркеров ведется с левого верхнего угла поля. - -Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `aruco_pose/map_image`. Через браузер его можно просмотреть при помощи [web\_video\_server](web_video_server.md) по ссылке [http://192.168.11.1:8080/snapshot?topic=/aruco\_pose/map\_image](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](http://192.168.11.1:8080/snapshot?topic=/aruco_pose/debug)\) доступен текущий результат распознавания меток: - -TODO - -### Система координат - -По [соглашению](http://www.ros.org/reps/rep-0103.html), в маркерном поле используется стандартная система координат ENU: - -* x — вправо \(условный "восток"\); -* y — вперед \(условный "север"\); -* z — вверх. - -_Примечание_: указанное выше определение приведено для ситуации, когда поле маркеров лежит на полу. - -Таким образом, нулевой является левая нижняя точка маркерного поля. Угол по рысканью считается равным 0, когда коптер смотрит направо \(по оси x\). - -![Система координат маркеров](../assets/aruco-frame.png) - -### Настройка полетного контролера - -Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](gcs_bridge.md)\) убедиться, что: - -* **Для Pixhawk**: Установлена прошивка с LPE \(local position estimator\). Для Pixhawk необходимо [скачать прошивку `px4fmu-v2_lpe.px4`](https://github.com/PX4/Firmware/releases). - - **Для Pixracer**: параметр `SYS_MC_EST_GROUP` должен быть установлен в `local_position_estimator, attitude_estimator_q`. - - > **Note** После изменения значения параметра `SYS_MC_EST_GROUP` необходимо перезагрузить полетный контроллер. -* В параметре `LPE_FUSION` включены **только** флажки `vision position`, `land detector`. Итоговое значение _20_. -* Выключен компас: `ATT_W_MAG` = 0 -* Вес угла по рысканью по зрению: `ATT_W_EXT_HDG` = 0.5 -* Включена ориентация по Yaw по зрению: `ATT_EXT_HDG_M` = 2 `MOCAP`. -* Настройки VPE: `LPE_VIS_DELAY` = 0 sec, `LPE_VIS_XY` = 0.1 m, `LPE_VIS_Z` = 0.15 m. -* Рекомендуемые настройки land detector'а: - * `COM_DISARM_LAND` = 1 s - * `LNDMC_ROT_MAX` = 45 deg - * `LNDMC_THR_RANGE` = 0.5 - * `LNDMC_Z_VEL_MAX` = 1 m/s - - - -### Полет - -При правильной настройке коптер начнет удерживать позицию по VPE \(в [режимах](modes.md) `POSCTL` или `OFFBOARD`\) автоматически. - -Для [автономных полетов](simple_offboard.md) можно будет использовать функции `navigate`, `set_position`, `set_velocity`. Для полета в определенные координаты маркерного поля необходимо использовать фрейм `aruco_map`: - -```python -# Вначале необходимо взлететь, чтобы коптер увидел карту меток -# и появился фрейм aruco_map: -navigate(0, 0, 2, frame_id='body', speed=0.5, auto_arm=True) # взлет на 2 метра - -time.sleep(5) - -# Полет в координату 2:2 маркерного поля, высота 2 метра -navigate(2, 2, 2, speed=1, frame_id='aruco_map') # полет в координату 2:2, высота 3 метра -``` - -См. [другие функции](simple_offboard.md) simple_offboard. - -### Расположение маркеров на потолке - -![Маркеры на потолке](../assets/IMG_4175.JPG) - -Для навигации по маркерам, расположенным на потолке, необходимо поставить основную камеру так, чтобы она смотрела вверх и [установить соответствующий фрейм камеры](camera_frame.md). +На [образе Клевера для RPi](microsd_images.md) предустановлен пакет `aruco_pose`, предназначенный для работы с ArUco-маркерами. -Чтобы задавать карту маркеров в "перевернутой" системе координат, необходимо изменить параметр `aruco_orientation` в файле `~/catkin_ws/src/clever/clever/aruco.launch`: +## Режимы работы -```xml - -``` +Клевер имеет несколько преднастроенных режимов работы с ArUco-маркерами: -При задании вышеуказанного параметра фрейм aruco\_map также окажется "перевернутым". Таким образом, для полета на высоту 2 метра ниже потолка, аргумент `z` нужно устанавливать в 2: +* [распознавание и навигация по отдельным маркерам](aruco_marker.md); +* [распознавание и навигация по картам маркеров](aruco_map.md). -```python -navigate(x=1, y=2, z=1.1, speed=0.5, frame_id='aruco_map') -``` +> **Info** Исчерпывающую документацию по пакету `aruco_pose` на английском языке можно посмотреть [на GitHub](https://github.com/CopterExpress/clever/blob/master/aruco_pose/README.md). diff --git a/docs/ru/aruco_new.md b/docs/ru/aruco_new.md deleted file mode 100644 index 5d9af8bb3..000000000 --- a/docs/ru/aruco_new.md +++ /dev/null @@ -1,23 +0,0 @@ -# ArUco-маркеры - -> **Note** Документация для версий [образа](microsd_images.md), начиная с версии **0.16**. Для более ранних версий см. [документацию для версии **0.15.1**](https://github.com/CopterExpress/clever/blob/v0.15.1/docs/ru/aruco.md). - -[ArUco-маркеры](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) — это популярная технология для позиционирования -робототехнических систем с использованием компьютерного зрения. - -![ArUco-маркеры](../assets/markers.jpg) - -> **Hint** При печати визуальных маркеров необходимо использовать максимально матовую бумагу. Глянцевая бумага будет бликовать на свету, сильно ухудшая качество распознавания. - -Для быстрого генерирования маркеров для печати можно использовать онлайн-инструмент: http://chev.me/arucogen/. - -На [образе Клевера для RPi](microsd_images.md) предустановлен пакет `aruco_pose`, предназначенный для работы с ArUco-маркерами. - -## Режимы работы - -Клевер имеет несколько преднастроенных режимов работы с ArUco-маркерами: - -* [распознавание и навигация по отдельным маркерам](aruco_marker.md); -* [распознавание и навигация по картам маркеров](aruco_map.md). - -> **Info** Исчерпывающую документацию по пакету `aruco_pose` на английском языке можно посмотреть [на GitHub](https://github.com/CopterExpress/clever/blob/master/aruco_pose/README.md).