diff --git a/docs/en/camera.md b/docs/en/camera.md
index 2620facd..821bc741 100644
--- a/docs/en/camera.md
+++ b/docs/en/camera.md
@@ -43,7 +43,7 @@ Additionally you can specify an arbitrary capture parameter using its [OpenCV co
```xml
-
+
```
## Computer vision
diff --git a/docs/en/frames.md b/docs/en/frames.md
index 94d6159d..9d3bcffd 100644
--- a/docs/en/frames.md
+++ b/docs/en/frames.md
@@ -1,16 +1,28 @@
Coordinate systems (frames)
===
-> **Note** Documentation for the [image](image.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/frames.md).
+> **Note** The following applies to [image](image.md) version 0.15 and up. See [previous version of the article](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/frames.md) (Russian only) for older images.
-
+
-Main frames in package `clever`:
+Main frames in the `clever` package:
-* `map` coordinates relative to the point of flight controller initialization: the white grid in the illustration;
-* `base_link` — coordinates relative to the quadcopter: schematic image of the quadcopter in the illustration;
-* `body` — coordinates relative to the quadcopter regardless of pitch and roll: red, blue and green lines in the illustration.
+* `map` has its origin at the flight controller initialization point and may be considered stationary. It is shown as a white grid on the image above;
+* `base_link` is rigidly bound to the drone. It is shown by the simplified drone model on the image above;
+* `body` is bound to the drone, but its Z axis points up regardless of the drone's pitch and roll. It is shown by the red, blue and green lines in the illustration;
+* `navigate_target` is bound to the current navigation target (as set by the [navigate](simple_offboard.md#navigate) service).
-> **Hint** In accordance with [the agreement](http://www.ros.org/reps/rep-0103.html), for frames associated with the copter, the X-axis directed forward, Y – to the left, and Z – up.
+> **Hint** Frames that are bound to the drone are oriented according to [the ROS convention](http://www.ros.org/reps/rep-0103.html): the X axis points forward, Y to the left, and Z up.
-More clearly, 3D visualization of the coordinate systems can be viewed using [rviz](rviz.md).
+3D visualization of the coordinate systems can be viewed using [rviz](rviz.md).
+
+tf2
+--
+
+Read more at http://wiki.ros.org/tf2
+
+tf2 ROS package is used extensively in the Clever platform. tf2 is a set of libraries for C++, Python and other programming languages that are used to work with the frames. Internally, ROS nodes publish `TransformStamped` messages to `/tf` topic with transforms between frames at certain points in time.
+
+The [`simple_offboard`](simple_offboard.md) node can be used to request the drone position in an arbitrary frame by setting the `frame_id` argument appropriately in a call to `get_telemetry` service.
+
+tf2 can be used from Python to transform coordinates (for objects like PoseStamped and PointStamped) from one frame to another
diff --git a/docs/en/optical_flow.md b/docs/en/optical_flow.md
index 0db4f4e8..0876a357 100644
--- a/docs/en/optical_flow.md
+++ b/docs/en/optical_flow.md
@@ -20,6 +20,8 @@ Optical Flow publishes data in `mavros/px4flow/raw/send` topic. In the topic `op
## Setup of the flight controler
+> **Hint** Suggested parameters are applied automatically in [our custom PX4 firmware](firmware.md#modified-firmware-for-clever).
+
When using **EKF2** (parameter `SYS_MC_EST_GROUP` = `ekf2`):
* `EKF2_AID_MASK` – flag 'use optical flow' is on.
diff --git a/docs/en/simple_offboard.md b/docs/en/simple_offboard.md
index 72c06006..5441e2e6 100644
--- a/docs/en/simple_offboard.md
+++ b/docs/en/simple_offboard.md
@@ -1,11 +1,11 @@
Simple OFFBOARD
===
-> **Note** Documentation for the [image](image.md), versions, starting with **0.15**. For older versions refer to [documentation for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/simple_offboard.md).
+> **Note** The following applies to [image](image.md) versions **0.15** and up. Older documentation is still avaliable [for version **0.14**](https://github.com/CopterExpress/clever/blob/v0.14/docs/ru/simple_offboard.md) (Russian only).
-> **Hint** For autonomous flights it is recommanded to use [special PX4 firmware for Clever](firmware.md#modified-firmware-for-clever).
+> **Hint** We recommend using our [special PX4 firmware for Clever](firmware.md#modified-firmware-for-clever) for autonomous flights.
The `simple_offboard` module of the `clever` package is intended for simplified programming of the autonomous drone flight (`OFFBOARD` [flight mode](modes.md)). It allows setting the desired flight tasks, and automatically transforms [coordinates between frames](frames.md).
@@ -140,6 +140,12 @@ Flying 3 m to the right from the drone:
navigate(x=0, y=-3, z=0, speed=1, frame_id='body')
```
+Flying 2 m to the left from the last navigation target:
+
+```python
+navigate(x=0, y=2, z=0, speed=1, frame_id='navigate_target')
+```
+
Turn 90 degrees counterclockwise:
```python
@@ -170,6 +176,8 @@ Ascending to the altitude of 2 m (command line):
rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, yaw_rate: 0.0, speed: 0.5, frame_id: 'body', auto_arm: true}"
```
+> **Note** Consider using the `navigate_target` frame instead of `body` for missions that primarily use relative movements forward/back/left/right. This negates inaccuracies in relative point calculations.
+
### navigate_global
Flying in a straight line to a point in the global coordinate system (latitude/longitude).
diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md
index 183b231c..b7ed4acc 100644
--- a/docs/ru/SUMMARY.md
+++ b/docs/ru/SUMMARY.md
@@ -43,10 +43,12 @@
* [Визуализация с помощью rviz](rviz.md)
* [Автозапуск ПО](autolaunch.md)
* Дополнительные материалы
+ * [COEX Pix](coex_pix.md)
* [Гид по автономному полету](auto_setup.md)
* [Имя хоста](hostname.md)
* [Симулятор](sitl.md)
* [Настройка PID](pid_tuning.md)
+ * [STL-модели Клевера](models.md)
* [Docker-контейнер с симулятором](sitl_docker.md)
* [Установка ROS Kinetic](ros-install.md)
* [Пилотирование со смартфона](rc.md)
@@ -82,6 +84,7 @@
* [Генератор ArUco карт](arucogenmap.md)
* [Модель аэротакси в городе](bigchallenges.md)
* [Шаровая защита коптера](shield.md)
+ * [Дрон для 3D-сканирования человека](3dscan.md)
* [Распознавание лиц](face_recognition.md)
* [Управление дроном силой мысли](control_emotions.md)
* [Подсчет количества объектов c камеры](object_counting.md)
diff --git a/docs/ru/aruco_map.md b/docs/ru/aruco_map.md
index f531f3b0..bebeef1a 100644
--- a/docs/ru/aruco_map.md
+++ b/docs/ru/aruco_map.md
@@ -120,18 +120,21 @@ rosrun aruco_pose genmap.py 0.33 2 4 1 1 0 > ~/catkin_ws/src/clever/aruco_pose/m
```python
# Вначале необходимо взлететь, чтобы коптер увидел карту меток и появился фрейм aruco_map:
-navigate(0, 0, 2, frame_id='body', speed=0.5, auto_arm=True) # взлет на 2 метра
+navigate(x=0, y=0, z=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 метра
+navigate(x=2, y=2, z=2, speed=1, frame_id='aruco_map') # полет в координату 2:2, высота 3 метра
```
-Начиная с версии [образа](image.md) 0.18, доступны также полеты относительно отдельного маркера в карте, даже если дрон его не видит:
+### Полет в координаты по ID маркера
+
+Начиная с версии [образа](image.md) 0.18, доступны также полёты относительно отдельного маркера в карте, даже если дрон его не видит. По аналогии с [навигацией по отдельным маркерам](aruco_marker.md#навигация-по-маркерам) при настройке карты маркеров дрон сможет лететь в координаты относительно отдельного маркера, используя фрейм aruco_ID с соответствующим ID маркера.
+
+Полет в точку над маркером 5 на высоту 1 метр:
```python
-# Полет на высоту 1 м над маркером 5
navigate(frame_id='aruco_5', x=0, y=0, z=1)
```
diff --git a/docs/ru/assemble_4.md b/docs/ru/assemble_4.md
index 6974f965..dec9e260 100644
--- a/docs/ru/assemble_4.md
+++ b/docs/ru/assemble_4.md
@@ -97,6 +97,8 @@
Моторы с **
красными** гайками должны вращаться **против** часовой стрелки, с **чёрными** - **по** часовой стрелке. Правильные направления вращения также указаны на самих моторах. Для проверки направления вращения можно использовать серво-тестер или радиоприёмник с пультом.
+

+
Использование радиоприёмника и пульта описано ниже.
### Перевод пульта в режим PWM
@@ -181,31 +183,35 @@
## Установка полётного контроллера
-1. Установите полетный контроллер на пластину с помощью двухстороннего скотча.
-2. Стрелки на полетном контроллере и центральной деке должны быть направлены в одну сторону.
-3. Подключите шлейф питания PDB к разъему *"POWER"* полетного контроллера, закрутив его в "косичку" для взаимной фиксации проводов.
+1. Вставьте карту microSD в полётный контроллер
+
+

+
+2. Установите полетный контроллер на пластину с помощью двухстороннего скотча.
+3. Стрелки на полетном контроллере и центральной деке должны быть направлены в одну сторону.
+4. Подключите шлейф питания PDB к разъему *"POWER"* полетного контроллера, закрутив его в "косичку" для взаимной фиксации проводов.
-4. Установите 4 алюминиевые стойки 40 мм с помощью винтов М3х10.
+5. Установите 4 алюминиевые стойки 40 мм с помощью винтов М3х10.
-5. Подключите сигнальные провода регуляторов к полетному контроллеру следующим образом:
+6. Подключите сигнальные провода регуляторов к полетному контроллеру следующим образом:
-6. Установите 2 стойки "мама-мама" 15 мм на центральную деку с помощью винтов М3х8.
-7. Другие 2 стойки были установлены ранее в разделе "Сборка рамы", п. 2.
+7. Установите 2 стойки "мама-мама" 15 мм на центральную деку с помощью винтов М3х8.
+8. Другие 2 стойки были установлены ранее в разделе "Сборка рамы", п. 2.

@@ -224,15 +230,19 @@
## Установка Raspberry Pi
-1. Установите плату Raspberry Pi на стойки, используя 4 стойки "папа-мама".
-2. Протяните провода от BEC через паз в центральной раме.
+1. Вставьте карту microSD с [записанным образом](image.md) в Raspberry Pi
+
+

+
+2. Установите плату Raspberry Pi на стойки, используя 4 стойки "папа-мама".
+3. Протяните провода от BEC через паз в центральной раме.
-3. Подключите провод питания от BEC к Raspberry, согласно схеме:
+4. Подключите провод питания от BEC к Raspberry, согласно схеме:

@@ -252,7 +262,10 @@
1. Питание для ленты берется от второго BEC. Подключите контакты *«-»* и *«+»* к *Ground* и *5v* на ленте соответственно.
2. Подключите контакт *D* к GPIO-пину на Raspberry. Рекомендуется использовать пин GPIO21.
-

+
+

+

+
## Установка шлейфа для камеры
@@ -339,6 +352,9 @@
4. Подключите USB кабель к разъему на полетном контроллере и USB разъему Raspberry Pi.
+
+

+
5. Зафиксируйте "улитку" кабеля в удобном месте с помощью двухстороннего скотча так, чтобы провод не мешал вращению винтов.
diff --git a/docs/ru/camera.md b/docs/ru/camera.md
index 830e6019..0a80ee9a 100644
--- a/docs/ru/camera.md
+++ b/docs/ru/camera.md
@@ -45,7 +45,7 @@ raspistill -o test-image.jpg
```xml
-
+
```
## Компьютерное зрение
diff --git a/docs/ru/coex_pix.md b/docs/ru/coex_pix.md
new file mode 100644
index 00000000..8d6d7110
--- /dev/null
+++ b/docs/ru/coex_pix.md
@@ -0,0 +1,60 @@
+# COEX Pix
+
+Полетный контроллер **COEX Pix** является модифицированным аналогом полетного контроллера [Pixracer](https://docs.px4.io/v1.9.0/en/flight_controller/pixracer.html). Этот полетный контроллер поставляется с наборами **Клевер 4** и далее.
+
+## Ревизия 1.1
+
+### Характеристики
+
+* Размеры платы – 35x35 мм.
+* Диаметр монтажных отверстий – 3.2 мм.
+* Расстояние между центрами монтажных отверстий – 30.5 мм.
+* Масса платы (без проводов) – 9 г.
+* Диапазон рабочих температур – -5...+65 ºC.
+* Диапазон входного напряжения – 4.8...5.5 В.
+
+### Основные элементы
+
+* Основной SOC – *STM32F427VIT6*.
+* Память FRAM – *FM25V02A*.
+* Датчики:
+ * *MPU9250* (9 DOF) – 3-х осевой магнитометр, 3-х осевой гироскоп, 3-х осевой акселерометр.
+ * *MS5607* – датчик атмосферного давления.
+
+### Разъемы
+
+* *TELEM 1* (JST-GH 4 pin) – разъем для подключения телеметрии, порт 1, протокол UART.
+* *TELEM 2* (JST-GH 4 pin) – разъем для подключения телеметрии, порт 2, протокол UART.
+* *GPS* (JST-GH 6 pin) – разъем для подключения ГПС модуля (UART) с компасом (I2C).
+* *I2C* (JST-GH 4 pin) – разъем для подключения поддерживаемых I2C устройств.
+* *PWR* (JST-GH 6 pin) – разъем для подключения питания с платы COEX PDB или аналогичной, датчиков напряжения и тока.
+* *RC IN* (JST-GH 4 pin) – разъем для подключения радиоприемника аппаратуры радиоуправления, канала для * снятия показаний RSSI. Поддерживаемые RC протоколы – PPM и SBUS.
+* Разьем Micro USB – для подключения к ПК для настройки и коммуникации по протоколу USB 2.0/1.1
+* Слот для карты памяти MicroSD, до 32 ГБ.
+* Серворазъемы – для подключения контроллеров моторов и других устройств.
+
+### Схемы расположения контактов
+
+

+
+

+
+> **Note** На плате ревизии 1.0 RC IN разъем располагался на месте разъема Micro SD. Распиновка самого разъема осталась такой же.
+
+### Установка на Клевере
+
+**Важно**: плата спроектирована для удобной установки на Клевере с поворотом на 180º по крену и 90º по рысканью (стрелка на плате находится снизу и указывает направо). Таким образом, параметр ориентации автопилота PX4 устанавливается в значение `SENS_BOARD_ROT` = `ROLL 180, YAW 90`.
+
+### Рекомендации
+
+Во время установки полетного контроллера, учитывайте возможные влияния магнитных полей от силовых проводов и платы распределения питания на магнитометр. В случае установки данной платы над платой распределения питания, рекомендуется (в случае использования внутреннего магнитометра) поднять плату на высоту не менее 15 мм от платы распределения питания и силовых проводов. Силовой провод от аккумуляторной батареи старайтесь зафиксировать соответственно.
+
+В случае использования внешнего GPS модуля со встроенным магнитометром, внутренний магнитометр рекомендуется отключать.
+
+В случае, если на дроне не предусмотрен защитный кожух, рекомендуется изолировать барометр поролоновой губкой (достаточно подложить губку между полетным контроллером и нижней частью корпуса (платой распределения питания), либо зафиксировать иным способом.
+
+При подключении питания в разъем PWR, на разъеме **+** будет напряжение 5 вольт, его можно использовать для питания сервомашинок. Не рекомендуется подключать дополнительные источники питания в разъем **+**, если питание подается в разъем PWR. Питать полетный контроллер одновременно от USB и PWR\AUX разъемов допускается.
+
+### Особенности платы
+
+Для повышения надежности и стабильности, плата оснащена низкошумящими понижающими преобразователями. Установлен входной LC фильтр, а также ферритовые фильтры в цепях питания.
diff --git a/docs/ru/copterhack2019.md b/docs/ru/copterhack2019.md
index d3b563f1..9c9ae698 100644
--- a/docs/ru/copterhack2019.md
+++ b/docs/ru/copterhack2019.md
@@ -18,11 +18,11 @@ Timepad: https://copterexpress.timepad.ru/event/1017592/.
Этот параметр устанавливается для того, чтобы на программном уровне настроить ориентацию вашего *IMU* датчика находящегося на полетном контроллере.
-### Полет с использованием Optical Flow
+### Рекомендуемая версия образа
-При полете только с использованием Optical Flow необходимо в QGroundControl в параметре `LPE_FUSION` включить галочку `pub agl as lpos down`.
+Для Raspberry Pi версий до 3B+: [v0.18](https://github.com/CopterExpress/clever/releases/tag/v0.18)
-Необходимо также убедиться, что лазерный дальномер корректно установлен и работает (см. [конфигурирование дальномера](laser.md)).
+Для Raspberry Pi версии 4: [v0.19-alpha.1](https://github.com/CopterExpress/clever/releases/tag/v0.19-alpha.1)
### Ориентация камеры
@@ -30,6 +30,47 @@ Timepad: https://copterexpress.timepad.ru/event/1017592/.
Подробнее см. статью [Ориентация камеры](camera_frame.md).
+### Полет с использованием Optical Flow
+
+Для включения optical flow установите параметры `optical_flow` и `rangefinder_vl53l1x` в файле `clever.launch` в `true`.
+
+Также необходимо в QGroundControl в параметре `LPE_FUSION` включить галочку `pub agl as lpos down`.
+
+Необходимо также убедиться, что лазерный дальномер корректно установлен и работает (см. [конфигурирование дальномера](laser.md)).
+
+Подробнее: [Использование Optical Flow](optical_flow.md).
+
+### Использование карты маркеров
+
+Для настройки большой карты маркеров используйте карту с названием `cmit.txt`. Далее используйте [инструкцию](aruco_map.md).
+
+### Аккумуляторы
+
+**При полетах обязательно использование датчика напряжения ("пищалки"). В случае выхода из строя аккумулятора новый не предоставляется!**
+
+### Съемка видео
+
+Снимайте **ВСЕ** ваши полеты на видео! В случае поломки дрона на защите сможете показать видео, что будет учтено при оценке.
+
+### Проблема с yaw
+
+При полете по маркерам (VPE) в прошивке v1.8.2-clever.7 возможно есть ошибка, которая проявляется в том, что дрон не держит yaw по маркерам. Если у вас есть такая проблема, попробуйте залить более старую прошивку v1.8.2-clever.6, доступную по ссылке https://github.com/CopterExpress/Firmware/releases/tag/v1.8.2-clever.6. Для COEX Pix необходимо скачивать файл `px4fmu-v4_default.px4`.
+
+### Проблема с navigate
+
+В образе 0.18 обнаружился баг из-за которого дрон может летать по точкам слишком быстро. Если у вас это происходит, поставьте в файле `~/catkin_ws/src/clever/clever/launch/clever.launch` параметр `nav_from_sp` в значение `false` таким образом:
+
+```xml
+
+
+
+
+
+
+
+
+```
+
## Лекции
Лекция 1: введение – https://www.youtube.com/watch?v=cjtmZNuq7z0.
@@ -41,3 +82,13 @@ Timepad: https://copterexpress.timepad.ru/event/1017592/.
Лекция 4: автономные полеты: https://www.youtube.com/watch?v=ThXiNG1IzvI.
См. также другие видео на канале COEX на YouTube: https://www.youtube.com/channel/UCeCu93sLBkcgbIkIC7Jaauw/featured.
+
+## Результаты
+
+Команды-победители:
+
+1. Бульболет – доставка картошки с помощью умной лебедки.
+2. Copter don't hurt me – управление дроном с помощью нейроинтерфейса.
+3. import torch – active track на нейронках.
+4. Автобот – freeze light через бота ВКонтакте.
+5. Stardust Crusaders – AR среда симуляции для дронов.
diff --git a/docs/ru/frames.md b/docs/ru/frames.md
index 0d479ead..cd7c1c03 100644
--- a/docs/ru/frames.md
+++ b/docs/ru/frames.md
@@ -9,7 +9,8 @@
* `map` — координаты относительно точки инициализации полетного контроллера: белая сетка на иллюстрации;
* `base_link` — координаты относительно квадрокоптера: схематичное изображение квадрокоптера на иллюстрации;
-* `body` — координаты относительно квадрокоптера без учета наклонов по тангажу и крену: красная, синяя и зеленая линии на иллюстрации.
+* `body` — координаты относительно квадрокоптера без учета наклонов по тангажу и крену: красная, синяя и зеленая линии на иллюстрации;
+* `navigate_target` – координаты точки, в которую сейчас летит дрон (с использованием [navigate](simple_offboard.md#navigate)).
> **Hint** В соответствии с [соглашением](http://www.ros.org/reps/rep-0103.html), для фреймов, связанных с коптером, ось X направлена вперед, Y – налево и Z – вверх.
diff --git a/docs/ru/human_pose_estimation_drone_control.md b/docs/ru/human_pose_estimation_drone_control.md
index ed451bfc..20298f03 100644
--- a/docs/ru/human_pose_estimation_drone_control.md
+++ b/docs/ru/human_pose_estimation_drone_control.md
@@ -1,4 +1,4 @@
-# Управление дроном для оценки позы человека
+# Управление дроном при помощи позы человека
## Демонстрация
diff --git a/docs/ru/models.md b/docs/ru/models.md
new file mode 100644
index 00000000..ae839738
--- /dev/null
+++ b/docs/ru/models.md
@@ -0,0 +1,15 @@
+# STL-модели
+
+На этой странице представлены STL-модели некоторых деталей квадрокоптеров Клевер.
+
+## Клевер 4
+
+### Холдер для АКБ
+
+Файл: [`battery_holder.stl`](https://github.com/CopterExpress/clever/raw/master/docs/assets/battery_holder.stl).
+
+Материал печати: PLA/ABS/SBS.
+
+Заполнение: не менее 50%.
+
+Функция: устанавливается на деталь "дека монтажная", после чего позволяет надежно фиксировать АКБ с помощью ремешка. Также имеется возможность установки индикатора напряжения (с помощью 3М-скотча).
diff --git a/docs/ru/optical_flow.md b/docs/ru/optical_flow.md
index 0ecc1352..99c75c41 100644
--- a/docs/ru/optical_flow.md
+++ b/docs/ru/optical_flow.md
@@ -1,10 +1,10 @@
# Использование Optical Flow
-При использовании технологии Optical Flow возможен полет в режиме POSCTL и автономные полеты по камере, направленной вниз, за счет измерения сдвигов текстуры поверхности пола.
+При использовании технологии Optical Flow возможен полет в режиме POSCTL и автономные полеты ([режим OFFBOARD](simple_offboard.md)) по камере, направленной вниз, за счет измерения сдвигов текстуры поверхности пола.
## Включение
-> **Hint** Рекомендуется использование [специальной сборки PX4 для Клевера](firmware.md#прошивка-для-клевера).
+> **Hint** Необходимо использование [специальной сборки PX4 для Клевера](firmware.md#прошивка-для-клевера).
Необходимо использование дальномера. [Подключите и настройте дальномер VL53L1X](laser.md), используя инструкцию.
@@ -20,17 +20,7 @@ Optical Flow публикует данные в топик `mavros/px4flow/raw/s
## Настройка полетного контроллера
-При использовании **EKF2** (параметр `SYS_MC_EST_GROUP` = `ekf2`):
-
-* `EKF2_AID_MASK` – включен флажок use optical flow.
-* `EKF2_OF_DELAY` – 0.
-* `EKF2_OF_QMIN` – 10.
-* `EKF2_OF_N_MIN` – 0.05.
-* `EKF2_OF_N_MAX` - 0.2.
-* `SENS_FLOW_ROT` – No rotation (отсутствие поворота).
-* `SENS_FLOW_MAXHGT` – 4.0 (для дальномера VL53L1X)
-* `SENS_FLOW_MINHGT` – 0.01 (для дальномера VL53L1X)
-* Опционально: `EKF2_HGT_MODE` – range sensor (см. [конфигурирование дальномера](laser.md)).
+> **Hint** При использовании [сборки PX4 для Клевера](firmware.md#прошивка-для-клевера) необходимые параметры PX4 применятся автоматически.
При использовании **LPE** (параметр `SYS_MC_EST_GROUP` = `local_position_estimator, attitude_estimator_q`):
@@ -44,6 +34,18 @@ Optical Flow публикует данные в топик `mavros/px4flow/raw/s
* `SENS_FLOW_MINHGT` – 0.01 (для дальномера VL53L1X)
* Опционально: `LPE_FUSION` – включен флажок pub agl as lpos down (см. [конфигурирование дальномера](laser.md).
+При использовании **EKF2** (параметр `SYS_MC_EST_GROUP` = `ekf2`):
+
+* `EKF2_AID_MASK` – включен флажок use optical flow.
+* `EKF2_OF_DELAY` – 0.
+* `EKF2_OF_QMIN` – 10.
+* `EKF2_OF_N_MIN` – 0.05.
+* `EKF2_OF_N_MAX` - 0.2.
+* `SENS_FLOW_ROT` – No rotation (отсутствие поворота).
+* `SENS_FLOW_MAXHGT` – 4.0 (для дальномера VL53L1X)
+* `SENS_FLOW_MINHGT` – 0.01 (для дальномера VL53L1X)
+* Опционально: `EKF2_HGT_MODE` – range sensor (см. [конфигурирование дальномера](laser.md)).
+
Для проверки правильности всех настроек можно [воспользоваться утилитой `selfcheck.py`](selfcheck.md).
## Полет в POSCTL
@@ -63,7 +65,13 @@ navigate(z=1.5, frame_id='body', auto_arm=True)
Полет вперед на 1 м:
```python
-navigate(x=1.5, frame_id='body')
+navigate(x=1, frame_id='body')
+```
+
+Полет назад на 1 м (относительно предыдущей целевой точки):
+
+```python
+navigate(x=-1, frame_id='navigate_target')
```
При использовании Optical Flow возможна также [навигация по ArUco-маркерам](aruco_marker.md), в том числе [используя VPE](aruco_map.md).
diff --git a/docs/ru/simple_offboard.md b/docs/ru/simple_offboard.md
index d2c49b0d..b86d4ade 100644
--- a/docs/ru/simple_offboard.md
+++ b/docs/ru/simple_offboard.md
@@ -140,6 +140,12 @@ navigate(x=5, y=0, z=3, speed=0.8, yaw=float('nan'))
navigate(x=0, y=-3, z=0, speed=1, frame_id='body')
```
+Полет влево на 2 м относительно последней целевой точки полета дрона:
+
+```python
+navigate(x=0, y=2, z=0, speed=1, frame_id='navigate_target')
+```
+
Повернуться на 90 градусов против часовой:
```python
@@ -170,6 +176,8 @@ navigate(x=3, y=0, z=0, speed=0.5, yaw=float('nan'), yaw_rate=0.2, frame_id='bod
rosservice call /navigate "{x: 0.0, y: 0.0, z: 2, yaw: 0.0, yaw_rate: 0.0, speed: 0.5, frame_id: 'body', auto_arm: true}"
```
+> **Note** При программировании миссии дрона в терминах "вперед-назад-влево-вправо" рекомендуется использовать систему координат `navigate_target` вместо `body`, чтобы не учитывать неточность прилета дрона в предыдущую целевую точку при вычислении следующей.
+
### navigate_global
Полет по прямой в точку в глобальной системе координат (широта/долгота).