From 512b4c2e096e4552142774ddc9eeaa710bbecdd2 Mon Sep 17 00:00:00 2001 From: goldarte Date: Tue, 27 Feb 2018 19:34:50 +0000 Subject: [PATCH] Updates docs/aruco.md Auto commit by GitBook Editor --- .../Screenshot from 2018-02-27 22-30-50.png | Bin 0 -> 18277 bytes docs/aruco.md | 50 ++++++++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) create mode 100644 assets/Screenshot from 2018-02-27 22-30-50.png diff --git a/assets/Screenshot from 2018-02-27 22-30-50.png b/assets/Screenshot from 2018-02-27 22-30-50.png new file mode 100644 index 0000000000000000000000000000000000000000..29c465eb1a1d6eb6964bef7eed7a6581ca5388d6 GIT binary patch literal 18277 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 BYry~j literal 0 HcmV?d00001 diff --git a/docs/aruco.md b/docs/aruco.md index 7b4bb324..73cd363b 100644 --- a/docs/aruco.md +++ b/docs/aruco.md @@ -1,7 +1,6 @@ -Навигация с использованием ArUco-маркеров -=== +# Навигация с использованием ArUco-маркеров -[ArUco-маркеры](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) — это популярная технология для позиционирования +[ArUco-маркеры](https://docs.opencv.org/3.2.0/d5/dae/tutorial_aruco_detection.html) — это популярная технология для позиционирования роботехнических систем с использованием компьютерного зрения. Пример ArUco-маркеров: @@ -10,16 +9,15 @@ > **Hint** При печати визуальных маркеров необходимо использовать максимально матовую бумагу. Глянцевая бумага будет бликовать на свету, сильно ухудшая качество распознавания. -aruco_pose ---- +## aruco\_pose Модуль `aruco_pose` позволяет восстанавливать позицию коптера относительно карты ArUco-маркеров и сообщать ее полетному контролеру, используя механизм [Vision Position Estimation](https://dev.px4.io/en/ros/external_position_estimation.html). -При наличии источника положения коптера по маркерам появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля [simple_offboard](/docs/simple_offboard.md). +При наличии источника положения коптера по маркерам появляется возможность производить точную автономную indoor-навигацию по позициям при помощи модуля [simple\_offboard](/docs/simple_offboard.md). ### Включение -Необходимо убедиться, что в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) включен запуск aruco_pose и [камеры для компьютерного зрения](/docs/camera.md): +Необходимо убедиться, что в launch-файле Клевера \(`~/catkin_ws/src/clever/clever/launch/clever.launch`\) включен запуск aruco\_pose и [камеры для компьютерного зрения](/docs/camera.md): ```xml @@ -46,25 +44,26 @@ sudo systemctl restart clever - + - + - + - + ``` Можно задать отдельно расстояние между маркерами по горизонтали и вертикали: + ```xml @@ -81,13 +80,13 @@ sudo systemctl restart clever Нумерация маркеров ведется с левого верхнего угла поля. -Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `aruco_pose/map_image`. Через браузер его можно просмотреть при помощи [web_video_server](/docs/web_video_server.md) по ссылке http://192.168.11.1:8080/snapshot?topic=/aruco_pose/map_image: +Для контроля карты, по которой в данный момент коптер осуществляет навигацию, можно просмотреть содержимое топика `aruco_pose/map_image`. Через браузер его можно просмотреть при помощи [web\_video\_server](/docs/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) доступен текущий результат распознования меток: +В топике `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 @@ -95,21 +94,21 @@ TODO По [соглашению](http://www.ros.org/reps/rep-0103.html), в маркерном поле используется стандартная система координат ENU: -* x — вправо (условный "восток"); -* y — вперед (условный "север"); +* x — вправо \(условный "восток"\); +* y — вперед \(условный "север"\); * z — вверх. _Примечание_: указанное выше определение приведено для ситуации, когда поле маркеров лежит на полу. -Таким образом, нулевой является левая нижня точка маркерного поля. Угол по рысканью считается равным 0, когда коптер смотрит направо (по оси x). +Таким образом, нулевой является левая нижня точка маркерного поля. Угол по рысканью считается равным 0, когда коптер смотрит направо \(по оси x\). ![](/assets/aruco-frame.png) ### Настройка полетного контролера -Для правильной работы Vision Position Estimation необходимо (через [QGroundControl](/docs/gcs_bridge.md)) убедиться, что: +Для правильной работы Vision Position Estimation необходимо \(через [QGroundControl](/docs/gcs_bridge.md)\) убедиться, что: -* Для PixHawk: Установлена прошивка с LPE (local position estimator). Для PixRacer: параметр `SYS_MC_EST_GROUP` установлен в `local_position_estimator, attitude_estimator_q`. +* Для PixHawk: Установлена прошивка с LPE \(local position estimator\). Для PixRacer: параметр `SYS_MC_EST_GROUP` установлен в `local_position_estimator, attitude_estimator_q`. * В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_. * Выключен компас: `ATT_W_MAG` = 0 * Вес угла по рысканью по зрению: `ATT_W_EXT_HDG` = 0.5 @@ -120,11 +119,14 @@ _Примечание_: указанное выше определение пр * `LNDMC_ROT_MAX` = 45 deg * `LNDMC_THR_RANGE` = 0.5 * `LNDMC_Z_VEL_MAX` = 1 m/s - + +Для простоты настройки можно воспользоваться готовым файлом настроек для [Clever 2](https://github.com/CopterExpress/clever/blob/master/assets/Clever2LPE_160118.params) или для [Clever 3](https://github.com/CopterExpress/clever/blob/master/assets/Clever3_LPE_020218.params) и вгрузить его в контроллер с помощью меню Tools - Load from file из раздела Parameters в QGroundControl. + +![](/assets/Screenshot from 2018-02-27 22-30-50.png) ### Полет -При правильной настройке коптер начнет удерживать позицию по VPE (в [режимах](/docs/modes.md) `POSCTL` или `OFFBOARD`) автоматически. +При правильной настройке коптер начнет удерживать позицию по VPE \(в [режимах](/docs/modes.md) `POSCTL` или `OFFBOARD`\) автоматически. Для [автономных полетов](/docs/simple_offboard.md) можно будет использовать функции `navigate`, `set_position`, `set_velocity`. Для полета в определенные координаты маркерного поля необходимо использовать фрейм `aruco_map`: @@ -138,11 +140,12 @@ time.sleep(5) # Полет в координату 2:2 маркерного поля, высота 2 метра navigate(2, 2, 2, speed=1, frame_id='aruco_map', update_frame=True) # полет в координату 2:2, высота 3 метра ``` + См. [другие функции](/docs/simple_offboard.md) simple offboard. ### Расположение маркеров на потолке -> **Info** Образ версии >0.2. +> **Info** Образ версии >0.2. ![](/assets/IMG_4175.JPG) @@ -154,8 +157,11 @@ navigate(2, 2, 2, speed=1, frame_id='aruco_map', update_frame=True) # поле ``` -При задании вышеуказанного параметра фрейм aruco_map также окажется "перевернутым". Таким образом, для полета на высоту 2 метра ниже потолка, аргумент `z` нужно устанавливать в 2: +При задании вышеуказанного параметра фрейм aruco\_map также окажется "перевернутым". Таким образом, для полета на высоту 2 метра ниже потолка, аргумент `z` нужно устанавливать в 2: ```python navigate(x=1, y=2, z=1.1, speed=0.5, frame_id='aruco_map') ``` + + +