Merge branch 'master' into CL3_assemble_new
@@ -1,4 +1,6 @@
|
||||
Использование внешнего 3G-модема
|
||||
===
|
||||
|
||||
Использование внешнего 3G-модема на Raspberry возможно с помощью пакета `sakis3g`.
|
||||
|
||||
TODO
|
||||
|
||||
@@ -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)» и многие другие.
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
* Raspbian Stretch
|
||||
* ROS Kinetic
|
||||
* Настроенную работу с сетью
|
||||
* Настроенную [работу с сетью](network.md)
|
||||
* OpenCV
|
||||
* mavros
|
||||
* Набор ПО для работы с Клевером
|
||||
|
||||
@@ -4,16 +4,19 @@
|
||||
* [Глоссарий](glossary.md)
|
||||
* [Сборка Клевер 2](assemble.md)
|
||||
* [Сборка Клевер 3](assemble_clever3_4in1.md)
|
||||
* [Установка FPV](fpv.md)
|
||||
* [Первоначальная настройка](setup.md)
|
||||
* [Полетные режимы](modes.md)
|
||||
* [Raspberry Pi](raspberry.md)
|
||||
* [Образ операционной системы на RPi](microsd_images.md)
|
||||
* [Подключение Raspberry Pi к PixHawk](connection.md)
|
||||
* [Подключение Raspberry Pi к Pixhawk](connection.md)
|
||||
* [Подключение по Wi-Fi](wifi.md)
|
||||
* [Работа с QGroundControl через Wi-Fi](gcs_bridge.md)
|
||||
* [Прошивка PixHawk/PixRacer](firmware.md)
|
||||
* [Прошивка Pixhawk/Pixracer](firmware.md)
|
||||
* [Параметры PX4](px4_parameters.md)
|
||||
* [Пилотирование со смартфона](rc.md)
|
||||
* [SSH-доступ](ssh.md)
|
||||
* [Устройство UART](uart.md)
|
||||
* [Неисправности радиоаппаратуры](radioerrors.md)
|
||||
* [Безопасность](safety.md)
|
||||
* [Техника безопасности по пайке](tb.md)
|
||||
@@ -43,8 +46,11 @@
|
||||
* [Учебно-методическое пособие](metod.md)
|
||||
* [Контрольные и проверочные материалы](tests.md)
|
||||
* [Другое](drugoe.md)
|
||||
* [CopterHack-2018](copterhack2018.md)
|
||||
* [CopterHack-2017](copterhack2017.md)
|
||||
* [Прошивка ESC контроллеров с помощью Arduino](esc_firmware.md)
|
||||
* [Работа со светодиодной лентой](leds.md)
|
||||
* [Проекты на базе коптера "Клевер"](projects.md)
|
||||
* [Тестовое описание Клевера по шаблону robots.ros.org/gapter/](testovoe-opisanie-klevera-po-shablonu-robotsrosorggapter.md)
|
||||
* [Полезные ссылки](links.md)
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
Управление коптером с Arduino
|
||||
===
|
||||
# Управление коптером с Arduino
|
||||
|
||||
Для взаимодействия с ROS-топиками и сервисами на Raspberry Pi можно использовать библиотеку [rosserial_arduino](http://wiki.ros.org/rosserial_arduino).
|
||||
|
||||
@@ -7,17 +6,23 @@
|
||||
|
||||
Arudino необходимо установить на Клевер и подключить по USB-порту.
|
||||
|
||||
Настройка Arduino IDE
|
||||
---
|
||||
## Настройка Arduino IDE
|
||||
|
||||
Необходимо скачать и скопировать [библиотеку ROS-сообщений Клевера](https://github.com/CopterExpress/clever_bundle/blob/master/deploy/clever_arudino.tar.gz?raw=true) (`ros_lib`) в `<папку скетчей>/libraries`.
|
||||
Для работы с ROS, Arduino необходимо понимать формат сообщений. Для этого на Clever необходимо собрать библиотеку ROS-сообщений (`ros_lib`) и скопировать в папку `<папку скетчей>/libraries`.
|
||||
|
||||
Настройка Raspberry Pi
|
||||
---
|
||||
Для сборки библиотеки на коптере необходимо выполнить следующий скрипт:
|
||||
|
||||
```bash
|
||||
rosrun rosserial_arduino make_libraries.py .
|
||||
tar czf clever_arudino.tar.gz ros_lib
|
||||
rm -rf ros_lib
|
||||
```
|
||||
|
||||
## Настройка Raspberry Pi
|
||||
|
||||
Чтобы единоразово запустить программу на Arduino, можно воспользоваться командой:
|
||||
|
||||
```
|
||||
```bash
|
||||
roslaunch clever arduino.launch
|
||||
```
|
||||
|
||||
@@ -33,8 +38,7 @@ roslaunch clever arduino.launch
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
Задержки
|
||||
---
|
||||
## Задержки
|
||||
|
||||
При использовании `rosserial_arduino` микроконтроллер Arduino не должен быть заблокирован больше чем на несколько секунд (например, с использованием функции `delay`); иначе связь между Raspberry Pi и Arduino будет разорвана.
|
||||
|
||||
@@ -52,13 +56,12 @@ while(/* условие */) {
|
||||
```cpp
|
||||
// Задержка на 8 секунд
|
||||
for(int i=0; i<8; i++) {
|
||||
delay(1000);
|
||||
nh.spinOnce();
|
||||
delay(1000);
|
||||
nh.spinOnce();
|
||||
}
|
||||
```
|
||||
|
||||
Работа с Клевером
|
||||
---
|
||||
## Работа с Клевером
|
||||
|
||||
Набор сервисов и топиков аналогичен обычному набору в [simple_offboard](simple_offboard.md) и [mavros](mavros.md).
|
||||
|
||||
@@ -165,8 +168,7 @@ void loop()
|
||||
}
|
||||
```
|
||||
|
||||
Получение телеметрии
|
||||
---
|
||||
## Получение телеметрии
|
||||
|
||||
С Arduino можно использовать [сервис](simple_offboard.md) `get_telemetry`. Для этого надо объявить его по аналогии с сервисами `navigate` и `set_mode`:
|
||||
|
||||
@@ -201,8 +203,7 @@ getTelemetry.call(gt_req, gt_res);
|
||||
// gt_res.z - положение коптера по z
|
||||
```
|
||||
|
||||
Проблемы
|
||||
---
|
||||
## Проблемы
|
||||
|
||||
При использовании Arudino Nano может не хватать оперативной памяти (RAM). В таком случае в Aruino IDE будут появляться сообщения, типа:
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ sudo systemctl restart clever
|
||||
|
||||
В качестве карты меток можно использовать автоматически сгенерированный [ArUco-board](https://docs.opencv.org/trunk/db/da9/tutorial_aruco_board_detection.html).
|
||||
|
||||
Настройка карты меток производится с помощью файла `~/catkin_ws/src/clever/clever/aruco.launch`. Для использования AruCo-board введите его параметры:
|
||||
Настройка карты меток производится с помощью файла `~/catkin_ws/src/clever/clever/launch/aruco.launch`. Для использования AruCo-board введите его параметры:
|
||||
|
||||
```xml
|
||||
<node pkg="nodelet" type="nodelet" name="aruco_pose" args="load aruco_pose/aruco_pose nodelet_manager">
|
||||
@@ -110,7 +110,7 @@ _Примечание_: указанное выше определение пр
|
||||
|
||||
Для правильной работы 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`.
|
||||
* Для 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`.
|
||||
* В параметре `LPE_FUSION` включены **только** флажки `vision position`, `vision yaw`, `land detector`. Итоговое значение _28_.
|
||||
* Выключен компас: `ATT_W_MAG` = 0
|
||||
* Вес угла по рысканью по зрению: `ATT_W_EXT_HDG` = 0.5
|
||||
|
||||
193
docs/assemble.md
@@ -3,8 +3,7 @@
|
||||
|
||||

|
||||
|
||||
Состав конструктора
|
||||
-------------------
|
||||
## Состав конструктора
|
||||
|
||||

|
||||
|
||||
@@ -27,7 +26,7 @@
|
||||
* Зарядное устройство EFEST Luc V4 Li-lon x1.
|
||||
* Защитный бокс регуляторов x4.
|
||||
* Крепление под ножки x8.
|
||||
* Полетный контроллер PIXHAWK x1.
|
||||
* Полетный контроллер PixHawk x1.
|
||||
* Радиоприемник FlySky i6 x1.
|
||||
* Радиопульт FlySky i6 x1.
|
||||
* Зарядное устройство EFEST LUC V4 x1.
|
||||
@@ -37,7 +36,8 @@
|
||||
* Батарейка АА х4
|
||||
* Джампер, Bind-разъем
|
||||
|
||||
#### Крепежные элементы
|
||||
### Крепежные элементы
|
||||
|
||||
* Пластиковые стойки 6 мм x28.
|
||||
* Пластиковые стойки 30 мм x32.
|
||||
* Винты М3x8 x48.
|
||||
@@ -54,10 +54,8 @@
|
||||
* Ножницы канцелярские х1
|
||||
* Ремешок для батареи 250 мм х1
|
||||
|
||||
## Функционал радиопульта Flysky i6
|
||||
|
||||
|
||||
Функционал радиопульта Flysky i6
|
||||
---------------------------
|
||||
1. Переключатель A (SwA).
|
||||
2. Переключатель B (SwB).
|
||||
3. Переключатель С (SwC).
|
||||
@@ -78,10 +76,9 @@
|
||||
|
||||

|
||||
|
||||
## Дополнительное оборудование
|
||||
|
||||
Дополнительное оборудование
|
||||
---------------------------
|
||||
#### Данное оборудование не входит в состав конструктора Клевер 2, но оно необходимо для реализации сборочного процесса
|
||||
### Данное оборудование не входит в состав конструктора Клевер 2, но оно необходимо для реализации сборочного процесса
|
||||
|
||||
1. Паяльник
|
||||
2. Канифоль/ Флюс (нейтральный)
|
||||
@@ -94,11 +91,9 @@
|
||||
|
||||

|
||||
|
||||
|
||||
[Техника безопасности при пайке](tb.md)
|
||||
|
||||
Порядок сборки
|
||||
--------------
|
||||
## Порядок сборки
|
||||
|
||||
### Установка моторов
|
||||
|
||||
@@ -107,11 +102,13 @@
|
||||

|
||||
|
||||
Зачистить
|
||||
|
||||
* снять 2мм термоизоляции с конца провода не повредив медные жилы.
|
||||
|
||||
Скрутить провода.
|
||||
|
||||
Залудить
|
||||
|
||||
* Нанести флюс на оголенную часть провода.
|
||||
* Покрыть припоем, используя пинцет.
|
||||
|
||||
@@ -128,17 +125,19 @@
|
||||
|
||||

|
||||
|
||||
### Залудить три контактные площадки регулятора
|
||||
|
||||
#### Залудить три контактные площадки регулятора
|
||||
* Нанести флюс
|
||||
* Нанести припой
|
||||
|
||||
Чтобы припой аккуратно заполнил всю площадку, необходимо прогреть площадку регулятора. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
|
||||
|
||||

|
||||
|
||||
* Повторить данную операцию для оставшихся трех регуляторов
|
||||
|
||||
#### Припаять провода моторов к регуляторам
|
||||
### Припаять провода моторов к регуляторам
|
||||
|
||||
Припаять ранее приготовленные провода моторов к контактным площадкам регуляторов.
|
||||
|
||||

|
||||
@@ -146,6 +145,7 @@
|
||||
* Повторить данную операцию для оставшихся трех регуляторов
|
||||
|
||||
### Монтаж разъемов питания
|
||||
|
||||
[Статья про силовые и управляющие цепи](powerConnection.md)
|
||||
|
||||
#### Подготовка проводов для силовых разъемов XT60
|
||||
@@ -169,10 +169,7 @@
|
||||
4. Припаять красный провод к “+” контакту разъема .
|
||||
5. Нарезать термоусадку ф5 (2 отрезка по 10 мм).
|
||||
6. Надеть термоусадку ф5 на провода так, чтобы она закрывала контактные площадки проводов с XT60 .
|
||||
7. Усадить термоусадку феном.
|
||||
|
||||

|
||||
|
||||
7. Усадить термоусадку феном. 
|
||||
8. Повторить процедуру для разъема XT60 socket.
|
||||
|
||||
#### Подготовка разъема питания управляющей цепи 5В
|
||||
@@ -193,15 +190,18 @@
|
||||

|
||||
|
||||
Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра):
|
||||
|
||||
* “BAT+” и “BAT-”
|
||||
* “12V” и “GND”
|
||||
* “5V” и “GND”
|
||||
|
||||
Прозвонить следующие цепи на ЗАМКНУТОСТЬ (появление звукового сигнала мультиметра):
|
||||
|
||||
* “BAT-” c каждым контактом, обозначенным “-” и “GND”
|
||||
* “BAT+”, с каждым контактом, обозначенным “+”
|
||||
|
||||
#### Залудить контактные площадки платы питания
|
||||
|
||||
1. [Залудить*](zap.md) контактные площадки платы питания.
|
||||
2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить)
|
||||
|
||||
@@ -210,15 +210,18 @@
|
||||
Чтобы припой аккуратно заполнил всю площадку, необходимо её прогреть. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
|
||||
|
||||
#### Пайка силового разъема питания XT60
|
||||
|
||||
Припаять разъем для АКБ, соблюдая полярность на контактных площадках.
|
||||
|
||||

|
||||
|
||||
ВАЖНО о полярности
|
||||
|
||||
* красный провод - это “+”
|
||||
* черный провод - это “-”
|
||||
|
||||
#### Пайка разъема питания управляющей цепи 5В
|
||||
|
||||
Припаять разъем 5В, соблюдая полярность на контактных площадках.
|
||||
(на изображении: красный провод - это питание “+”)
|
||||
|
||||
@@ -227,6 +230,7 @@
|
||||
### Монтаж отсека АКБ
|
||||
|
||||
#### Подготовка перемычек (3 шт.)
|
||||
|
||||

|
||||
|
||||
* Отрезать силовой провод длиной 2 см.
|
||||
@@ -237,60 +241,49 @@
|
||||
* Прозвонить мультиметром. В случае необходимости зачистить наждачной бумагой.
|
||||
|
||||
#### Подготовка отсека АКБ
|
||||
|
||||

|
||||
|
||||
* Приклеить наклейки с разметкой внутрь отсека АКБ, в соответствии с полярностью.
|
||||
* Приклеить ленту из скотча на дно отсека.
|
||||
|
||||
|
||||
### Монтаж платы распределения питания
|
||||
|
||||
* Установить плату питания на раму винтами М3х8 и пластиковыми гайками.
|
||||

|
||||
|
||||
* ВАЖНО
|
||||
Стрелочка на плате направлена в сторону носового выреза
|
||||
* Установить плату питания на раму винтами М3х8 и пластиковыми гайками. 
|
||||
> **ВАЖНО** Стрелочка на плате направлена в сторону носового выреза
|
||||

|
||||
|
||||
|
||||
#### Монтаж элементов
|
||||
|
||||
1. Установить гайки в пластиковые держатели
|
||||

|
||||
|
||||
1. Установить гайки в пластиковые держатели. 
|
||||
2. Установить лучи на раму винтами М3х16
|
||||
*Лучи устанавливаются поверх рамы
|
||||
*Пластиковые держатели устанавливаются снизу рамы
|
||||

|
||||
|
||||
3. Расположение моторов
|
||||
Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем).
|
||||

|
||||
|
||||
4. Продеть силовые провода регуляторов в отверстия.
|
||||

|
||||
|
||||
* Лучи устанавливаются поверх рамы
|
||||
* Пластиковые держатели устанавливаются снизу рамы. 
|
||||
3. Расположение моторов. Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем). 
|
||||
4. Продеть силовые провода регуляторов в отверстия. 
|
||||
|
||||
#### Пайка силовой цепи платы питания
|
||||
|
||||
Припаять силовые провода регуляторов к плате питания, соблюдая полярность.
|
||||
|
||||

|
||||
|
||||
ВАЖНО о полярности
|
||||
*красный провод - это “+”
|
||||
*черный провод - это “-”
|
||||
|
||||
* красный провод - это “+”
|
||||
* черный провод - это “-”
|
||||
|
||||
### Сопряжение приемника и пульта
|
||||
1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V
|
||||

|
||||
3. Подключить АКБ.
|
||||
Светодиод на радиоприемнике должен мигать.
|
||||

|
||||
|
||||
1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V 
|
||||
2. Подключить АКБ. Светодиод на радиоприемнике должен мигать. ![Подключение АКБ]
|
||||
|
||||
#### БЕЗОПАСНОСТЬ при работе с АКБ
|
||||
|
||||

|
||||
|
||||
#### Включение радиопульта
|
||||
|
||||
1. Вставить джампер в B/VCC радиоприемника (замкнуть "землю" и "сигнал")
|
||||
2. На пульте зажать кнопку BIND KEY.
|
||||
3. Включить пульт (перещелкнуть POWER, BIND KEY не отпускаем).
|
||||
@@ -302,63 +295,42 @@
|
||||

|
||||
|
||||
[Мануал по неисправностям радиоаппаратуры](radioerrors1.md)
|
||||
|
||||
### Проверка направления вращения моторов
|
||||
|
||||
1. Наклеить наклейки на АКБ 18650.
|
||||
2. Установить 18650 в отсек АКБ, соблюдая полярность.
|
||||
|
||||

|
||||
|
||||
2. Установить 18650 в отсек АКБ, соблюдая полярность. 
|
||||
3. Проверить, что разъем питания 5В подключен к приемнику по схеме.
|
||||
4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме.
|
||||

|
||||
|
||||
4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме. 
|
||||
5. Подключить внешнее питание (АКБ).
|
||||
6. Включить пульт.
|
||||
7. Подать левым стиком газ (throttle) на 10%.
|
||||
8. Проверить направления вращения мотора по схеме.
|
||||

|
||||
|
||||
9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять).
|
||||
|
||||

|
||||
|
||||
8. Проверить направления вращения мотора по схеме. 
|
||||
9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять). 
|
||||
|
||||
### Монтаж радиоприемника
|
||||
|
||||
1. Установить пластиковые стойки 30 мм на раму винтами М3х8.
|
||||
2. Разъем питания 5В продеть в прорезь.
|
||||

|
||||
|
||||
3. Приемник прикрепить к нижней дополнительной раме, используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед.
|
||||
|
||||

|
||||
|
||||
4. Установить 3х проводной шлейф в канал PPM / CH1.
|
||||

|
||||
|
||||
2. Разъем питания 5В продеть в прорезь. 
|
||||
3. Приемник прикрепить к нижней дополнительной раме, используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед. 
|
||||
4. Установить 3х проводной шлейф в канал PPM / CH1. 
|
||||
5. Продеть в прорезь к разъему 5 В.
|
||||
6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8.
|
||||

|
||||
|
||||
##### ВАЖНО
|
||||
Направление стрелок на плате питания и на дополнительной раме совпадают
|
||||
6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8. 
|
||||
> **ВАЖНО** Направление стрелок на плате питания и на дополнительной раме совпадают
|
||||
|
||||
### Монтаж полетного контроллера
|
||||
|
||||
#### Переворачиваем сборку
|
||||
|
||||

|
||||
|
||||
#### Установка полетного контроллера Pixhawk
|
||||
1. Клеим 2х сторонний скотч по углам полетного контроллера
|
||||

|
||||
#### Установка полетного контроллера PixHawk
|
||||
|
||||
##### ВАЖНО
|
||||
При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера Pixhawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча
|
||||
1. Клеим 2х сторонний скотч по углам полетного контроллера. 
|
||||
> **ВАЖНО** При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера PixHawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча
|
||||
лучше увеличить до 4-5.
|
||||
|
||||
2. Установить полетный контроллер в центр рамы
|
||||
|
||||

|
||||
##### ВАЖНО
|
||||
Стрелки на раме и pixhawk должны быть сонаправлены
|
||||
2. Установить полетный контроллер в центр рамы. 
|
||||
> **ВАЖНО** Стрелки на раме и PixHawk должны быть сонаправлены
|
||||
|
||||
#### Подключение полетного контроллера по схеме
|
||||
|
||||
@@ -368,47 +340,31 @@
|
||||
|
||||

|
||||
|
||||
|
||||
### Сборка регуляторов
|
||||
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов
|
||||

|
||||
|
||||
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы.
|
||||

|
||||
|
||||
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов. 
|
||||
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы. 
|
||||
|
||||
### Установка защиты
|
||||
1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы
|
||||

|
||||
|
||||
2. Закрепить ножки к пластиковым держателям винтами М3х16
|
||||

|
||||
|
||||
3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12
|
||||

|
||||
|
||||
4. Закрепить верхнюю защиту винтами М3х12
|
||||

|
||||
|
||||
1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы. 
|
||||
2. Закрепить ножки к пластиковым держателям винтами М3х16. 
|
||||
3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12. 
|
||||
4. Закрепить верхнюю защиту винтами М3х12. 
|
||||
|
||||
### Монтаж отсека АКБ
|
||||
|
||||
Необходимые компоненты
|
||||
Необходимые компоненты:
|
||||
|
||||
* Винты М3х12 (4 шт)
|
||||
* Гайки М3 (4 шт)
|
||||
* Рама дополнительная (1 шт)
|
||||
* Батарейный отсек (1 шт)
|
||||
|
||||
1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками.
|
||||

|
||||
|
||||
2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8.
|
||||
|
||||

|
||||
|
||||
1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками. 
|
||||
2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8. 
|
||||
3. Установить АКБ в отсек.
|
||||
|
||||
|
||||
### Монтаж антенн
|
||||
|
||||
1. Крепим антенны на 2х сторонний скотч или изоленту, а усики продеваем в передние отверстия верхней дополнительной рамы.
|
||||
@@ -417,16 +373,11 @@
|
||||
|
||||
Коптер готов к настройке!
|
||||
|
||||
|
||||
## Безопасность при сборке и настройке
|
||||
|
||||
1. Снять пропеллеры.“Все наземные операции производить со снятыми пропеллерами. Устанавливать пропеллеры на моторы только перед полётом.”
|
||||
|
||||
2. Отключить аккумулятор. Держать питание выключенным.
|
||||
“Сборку, настройку и ремонт производить с отключенным питанием. Подключать питание только для тестирования электронных компонентов коптера. После тестирования перед другими работами питание сразу отключить.”
|
||||
|
||||
3. Позвать на помощь
|
||||
“Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.”
|
||||
2. Отключить аккумулятор. Держать питание выключенным. “Сборку, настройку и ремонт производить с отключенным питанием. Подключать питание только для тестирования электронных компонентов коптера. После тестирования перед другими работами питание сразу отключить.”
|
||||
3. Позвать на помощь. “Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.”
|
||||
|
||||

|
||||
|
||||
@@ -436,4 +387,4 @@
|
||||
2. При подключении (отключении) аккумуляторов держаться только за разъёмы, тянуть или дергать за провода запрещается.
|
||||
3. В случае обрыва разъемов, обнаружения нарушений целостности изоляции или корпуса аккумулятора, не трогая его, немедленно сообщить преподавателю.
|
||||
|
||||
## [ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ПАЙКЕ И ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safety.md)
|
||||
[ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ПАЙКЕ И ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safety.md)
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
Состав конструктора
|
||||
-------------------
|
||||
|
||||
TODO
|
||||
|
||||
Дополнительное оборудование
|
||||
-------------------
|
||||

|
||||
@@ -121,7 +123,6 @@
|
||||
|
||||

|
||||
|
||||
|
||||
Монтаж и подключение полетного контроллера Pixracer
|
||||
----------------------------
|
||||
1. Установить Полетный контроллер Pixracer на двухстороний скотч 3М (2-3 слоя)
|
||||
@@ -186,4 +187,4 @@ USB-разъемы направлены к хвостовой части коп
|
||||
--------------------
|
||||
1. Соедините Pixracer и Raspberry, используя micro USB - USB кабель
|
||||
2. Соедините Arduino и Raspberry, используя micro USB - USB кабель
|
||||

|
||||

|
||||
BIN
docs/assets/alcopter.jpg
Normal file
|
After Width: | Height: | Size: 456 KiB |
BIN
docs/assets/camera_option_1.png
Executable file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/camera_option_2.png
Executable file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/camera_option_3.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/assets/camera_option_4.png
Executable file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/assets/cl3_mountElements2.png
Normal file
|
After Width: | Height: | Size: 408 KiB |
BIN
docs/assets/cl3_mountPDB1.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
docs/assets/cl3_mountingMotors.png
Normal file
|
After Width: | Height: | Size: 317 KiB |
BIN
docs/assets/copter_visualization.png
Executable file
|
After Width: | Height: | Size: 448 KiB |
BIN
docs/assets/copterhack18.jpg
Normal file
|
After Width: | Height: | Size: 212 KiB |
BIN
docs/assets/etcher.gif
Normal file
|
After Width: | Height: | Size: 238 KiB |
BIN
docs/assets/fpv_1.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
docs/assets/fpv_2.png
Normal file
|
After Width: | Height: | Size: 308 KiB |
BIN
docs/assets/fpv_3.png
Normal file
|
After Width: | Height: | Size: 908 KiB |
BIN
docs/assets/fpv_4.png
Normal file
|
After Width: | Height: | Size: 670 KiB |
BIN
docs/assets/fpv_5.png
Normal file
|
After Width: | Height: | Size: 451 KiB |
BIN
docs/assets/hciuart_error.jpg
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
docs/assets/rqt.png
Normal file
|
After Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 688 KiB After Width: | Height: | Size: 688 KiB |
@@ -26,6 +26,6 @@
|
||||
|
||||
* ОС [Raspbian Jessie](https://www.raspberrypi.org/downloads/raspbian/)
|
||||
* Фреймворк [ROS](ros.md)
|
||||
* Пакет [MAVROS](mavros.md) для связи с PixHawk по [MAVLink](mavlink.md)
|
||||
* Пакет [MAVROS](mavros.md) для связи с Pixhawk по [MAVLink](mavlink.md)
|
||||
* Дополнительные пакеты ROS: web_video_server, usb_cam, rosbridge_suite и другие
|
||||
* Пакет программ clever_bundle
|
||||
|
||||
@@ -22,20 +22,34 @@
|
||||
|
||||
## Настройки для Клевера
|
||||
|
||||
### Клевер 3, камера вниз
|
||||
### 1. Камера направлена вниз, шлейф назад
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 -0.07 -1.5707963 0 3.1415926 fcu main_camera_optical"/>
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 2. Камера направлена вниз, шлейф вперёд
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 -0.07 1.5707963 0 3.1415926 fcu main_camera_optical"/>
|
||||
```
|
||||
|
||||
### Клевер 3, камера вверх
|
||||

|
||||
|
||||
### 3. Камера направлена вверх, шлейф назад
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.07 1.5707963 0 0 fcu main_camera_optical"/>
|
||||
```
|
||||
|
||||

|
||||
|
||||
### 4. Камера направлена вверх, шлейф вперёд
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0.05 0 0.07 -1.5707963 0 0 fcu main_camera_optical"/>
|
||||
```
|
||||
|
||||
### Клевер 2, камера вниз
|
||||
|
||||
```xml
|
||||
<node pkg="tf2_ros" type="static_transform_publisher" name="main_camera_frame" args="0 0 -0.07 -1.5707963 0 3.1415926 fcu main_camera_optical"/>
|
||||
```
|
||||

|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
Подключение PixHawk/PixRacer к Raspberry Pi
|
||||
Подключение Pixhawk/Pixracer к Raspberry Pi
|
||||
===
|
||||
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с PixHawk по Wi-Fi](gcs_bridge.md), использования [веб-пульта](web_rc.md) и других функций необходимо подсоединить Raspberry Pi к PixHawk.
|
||||
Для программирования [автономных полетов](simple_offboard.md), [работы с Pixhawk по Wi-Fi](gcs_bridge.md), использования [веб-пульта](web_rc.md) и других функций необходимо подсоединить Raspberry Pi к Pixhawk.
|
||||
|
||||
Убедиться в работоспособности подключения, выполнив на Raspberry Pi:
|
||||
|
||||
@@ -14,7 +14,7 @@ rostopic echo /mavros/state
|
||||
Подключение по USB
|
||||
---
|
||||
|
||||
Соедините PixHawk/PixRacer и Raspberry Pi micro-USB to USB кабелем.
|
||||
Соедините Pixhawk/Pixracer и Raspberry Pi micro-USB to USB кабелем.
|
||||
|
||||
Необходимо убедиться, что в launch-файле Клевера (`~/catkin_ws/src/clever/clever/launch/clever.launch`) тип подключения установлен на USB:
|
||||
|
||||
@@ -28,7 +28,7 @@ rostopic echo /mavros/state
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и PixHawk по USB необходимо установить значение параметра `CBRK_USB_CHK` на 197848.
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по USB необходимо установить значение параметра `CBRK_USB_CHK` на 197848.
|
||||
|
||||
Подключение по UART
|
||||
---
|
||||
@@ -47,7 +47,7 @@ TODO схема подключения
|
||||
sudo systemctl restart clever
|
||||
```
|
||||
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и PixHawk по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
> **Hint** Для корректной работы подключения Raspberry Pi и Pixhawk по UART необходимо установить значение параметра `SYS_COMPANION` на 921600.
|
||||
|
||||
Подключение к SITL
|
||||
---
|
||||
|
||||
31
docs/copterhack2018.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Copter Hack 2018
|
||||
|
||||
<img src="assets/copterhack18.jpg" height=400px title="Copter Hack 2018">
|
||||
|
||||
Чат хакатона: https://t.me/CopterHack.
|
||||
|
||||
Стрим хакатона: https://www.youtube.com/watch?v=nIo5HSqlt6I.
|
||||
|
||||
Фотографии с хакатона: https://drive.google.com/open?id=1ozdXol4rhKwhHbsrnfxrp3CqazBRm-3W.
|
||||
|
||||
## Лекции
|
||||
|
||||
Лекция 1: сборка – https://www.youtube.com/watch?v=gEs-w7BRPM8.
|
||||
|
||||
Лекция 2: настройка – https://www.youtube.com/watch?v=sPqSCCmgdG0.
|
||||
|
||||
Лекция 3: прошивка PX4 – https://www.youtube.com/watch?v=WFnZAIypgMQ.
|
||||
|
||||
Лекция 4: автономные полеты – https://www.youtube.com/watch?v=gD6a7aSEf9M.
|
||||
|
||||
## Результаты
|
||||
|
||||
Команды-победители:
|
||||
|
||||
1. Starshine (Москва) — управление дроном с помощью "умной" перчатки.
|
||||
2. Alcopter (Москва) — управление дроном с помощью жестов и смены поз.
|
||||
3. Весёлый коптер (Самара) — бот Vkontakte для управления коптером, совместный полет "Жужи" и "Клевера 3".
|
||||
4. International Post (Новосибирск) — автоматический разброс листовок с дрона.
|
||||
5. ЛАМАР (Екатеринбург) — станция автоматической смены аккумулятора квадрокоптера.
|
||||
|
||||
<img src="assets/alcopter.jpg" title="Команда Alcopter" height=300px>
|
||||
2
docs/drugoe.md
Normal file
@@ -0,0 +1,2 @@
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
Прошивка PixHawk / PixRacer
|
||||
Прошивка Pixhawk / Pixracer
|
||||
===
|
||||
|
||||
PixHawk или PixRacer можно прошить, используя QGroundControl или утилиты командной строки.
|
||||
Pixhawk или Pixracer можно прошить, используя QGroundControl или утилиты командной строки.
|
||||
|
||||
Различные варианты сборок стабильных прошивок PX4 можно скачать в разделе [Releases на GitHub](https://github.com/PX4/Firmware/releases).
|
||||
|
||||
В названии файла прошивки кодируется информации о целевой плате и варианте сборки. Примеры:
|
||||
|
||||
* `px4fmu-v2_default.px4` — прошивка для PixHawk с EKF2.
|
||||
* `px4fmu-v2_lpe.px4` — прошивка для PixHawk с LPE.
|
||||
* `px4fmu-v4_default.px4` — прошивка для PixRacer с EKF2 и LPE (*Клевер 3*).
|
||||
* `px4fmu-v3_default.px4` — прошивка для более новых версий PixHawk (чип ревизии 3, см. илл. + Bootloader v5) с EKF2 и LPE.
|
||||
* `px4fmu-v2_default.px4` — прошивка для Pixhawk с EKF2.
|
||||
* `px4fmu-v2_lpe.px4` — прошивка для Pixhawk с LPE.
|
||||
* `px4fmu-v4_default.px4` — прошивка для Pixracer с EKF2 и LPE (*Клевер 3*).
|
||||
* `px4fmu-v3_default.px4` — прошивка для более новых версий Pixhawk (чип ревизии 3, см. илл. + Bootloader v5) с EKF2 и LPE.
|
||||
|
||||

|
||||
|
||||
@@ -19,9 +19,9 @@ PixHawk или PixRacer можно прошить, используя QGroundCon
|
||||
QGroundControl
|
||||
---
|
||||
|
||||
В QGroundControl откройте раздел Firmware. **После** этого подключите PixHawk / PixRacer по USB.
|
||||
В QGroundControl откройте раздел Firmware. **После** этого подключите Pixhawk / Pixracer по USB.
|
||||
|
||||
Выберите PX4 Flight Stack. Для скачивания и загрузки стандартной прошивки (вариант с EKF2 для PixHawk) выберите пункт меню "Standard Version", для загрузки собственного файла прошивки выберите пункт "Custom firmware file...", затем нажмите OK.
|
||||
Выберите PX4 Flight Stack. Для скачивания и загрузки стандартной прошивки (вариант с EKF2 для Pixhawk) выберите пункт меню "Standard Version", для загрузки собственного файла прошивки выберите пункт "Custom firmware file...", затем нажмите OK.
|
||||
|
||||
> **Warning** Не отключайте USB-кабель до окончания процесса прошивки.
|
||||
|
||||
@@ -46,7 +46,7 @@ make px4fmu-v4_default upload
|
||||
|
||||
Где `px4fmu-v4_default` – требуемый вариант прошивки.
|
||||
|
||||
Для загрузки прошивки `v3` в PixHawk может понадобиться команда `force_upload`:
|
||||
Для загрузки прошивки `v3` в Pixhawk может понадобиться команда `force_upload`:
|
||||
|
||||
```
|
||||
make px4fmu-v3_default force-upload
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
Мониторинг топиков в режиме реального времени
|
||||
---
|
||||
|
||||
Для более новых версий платы PixHawk (`px4fmu-v3`), а также для плат PixRacer, в прошивку включен модуль `topic_listener`, который позволяет просматривать значения топиков в режиме реального времени (в том числе в полете).
|
||||
Для более новых версий платы Pixhawk (`px4fmu-v3`), а также для плат Pixracer, в прошивку включен модуль `topic_listener`, который позволяет просматривать значения топиков в режиме реального времени (в том числе в полете).
|
||||
|
||||
Для ее использования нужно выбрать вкладку Mavlink Console в QGroundControl:
|
||||
|
||||
|
||||
49
docs/fpv.md
Normal file
@@ -0,0 +1,49 @@
|
||||
# Установка FPV
|
||||
|
||||
## Подготовка курсовой камеры
|
||||
|
||||
1. Взять провод-коннектор от камеры и откусить ЧЁРНУЮ сторону 3-х пинового разъема.
|
||||
1. Подготовить провода провода к подключению:
|
||||
1. Укоротить провода до нужной длины *.
|
||||
1. Зачистить (снять 2мм термоизоляции с конца провода, не повредив жилы).
|
||||
1. Скрутить провода.
|
||||
1. Залудить, используя пинцет.
|
||||
|
||||
\* Длину нужно определить заранее, между платой распределения питания и предположительным место установки камеры!
|
||||
|
||||

|
||||
|
||||
## Подготовка передатчика
|
||||
|
||||
Аналогичную процедуру проводим и здесь:
|
||||
|
||||
1. Взять провод-коннектор от передатчика и откусить ЧЁРНУЮ сторону 5-ти пинового разъема.
|
||||
2. Подготовить провода провода к подключению:
|
||||
1. Укоротить провода до нужной длины *.
|
||||
2. Зачистить (снять 2мм термоизоляции с конца провода, не повредив жилы).
|
||||
3. Скрутить провода.
|
||||
4. Залудить, используя пинцет.
|
||||
|
||||
* Длину нужно определить заранее, между платой распределения питания и предположительным место установки передатчика!
|
||||
|
||||

|
||||
|
||||
## Подключение FPV
|
||||
|
||||
Готовые коннекторы вставить в соответствующие разъёмы и запаять провода питания на плату распределения питания согласно схеме:
|
||||
|
||||

|
||||
|
||||
> **Warning** В данной схеме питание камеры идёт на 12V (Однако возможно использовать 5V).
|
||||
> Питание передатчика идёт на питание регулятора (однако возможно использовать 12V).
|
||||
|
||||
## Установка компонентов FPV
|
||||
|
||||

|
||||
|
||||
В качестве крепежных материалов можно использовать:
|
||||
|
||||
1. Термоклей;
|
||||
1. изоленту;
|
||||
1. стяжки (хомуты);
|
||||
1. двусторонний скотч.
|
||||
@@ -11,7 +11,7 @@
|
||||
## Полетный контроллер / автопилот
|
||||
|
||||
**1\.** Специализированная плата, спроектированная для управления мультикоптером, самолетом или другим аппаратом. Примеры:
|
||||
PixHawk, Ardupilot, Naze32, CC3D.
|
||||
Pixhawk, Ardupilot, Naze32, CC3D.
|
||||
|
||||
**2\.** Программное обеспечение для платы управления мультикоптером. Примеры: PX4, APM, CleanFlight.
|
||||
|
||||
@@ -47,11 +47,11 @@ Armed – состояние коптера готовности к полету
|
||||
|
||||
## PX4
|
||||
|
||||
Популярный полетный контроллер с открытым исходным кодом, работащий на платах PixHawk, PixRacer и других. PX4 рекомендуется для использования на Клевере.
|
||||
Популярный полетный контроллер с открытым исходным кодом, работащий на платах Pixhawk, Pixracer и других. PX4 рекомендуется для использования на Клевере.
|
||||
|
||||
## APM / ArduPilot
|
||||
|
||||
Полетный контроллер с открытым исходным кодом, изначально созданный для платы Arduino. Впоследствии был портирован на PixHawk, PixRacer и другие платы.
|
||||
Полетный контроллер с открытым исходным кодом, изначально созданный для платы Arduino. Впоследствии был портирован на Pixhawk, Pixracer и другие платы.
|
||||
|
||||
## MAVLink
|
||||
|
||||
@@ -64,3 +64,7 @@ Armed – состояние коптера готовности к полету
|
||||
## MAVROS
|
||||
|
||||
Библиотека-связующее звено между аппаратом, работающем по протоколу MAVLink, и ROS.
|
||||
|
||||
## UART
|
||||
|
||||
Последовательный асинхронный интерфейс передачи данных, применяемый во многих устройствах. Например GPS антенны, Wi-Fi роутеры или Pixhawk.
|
||||
|
||||
12
docs/leds.md
@@ -101,10 +101,14 @@ sudo python strandtest.py
|
||||
При запуске программы с помощью sudo пользовательское окружение изменяется и появляются ошибки импорта библиотек, т.к. в окружении отсутствуют необходимые пути. Чтобы добавить в окружение пути к библиотекам python и пакетам ROS, необходимо добавить в файл /etc/sudoers следующие строки:
|
||||
|
||||
```(bash)
|
||||
Defaults env_keep += "PYTHONPATH"
|
||||
Defaults env_keep += "PATH"
|
||||
Defaults env_keep += "ROS_ROOT"
|
||||
Defaults env_keep += "ROS_MASTER_URI"
|
||||
Defaults env_keep += "PYTHONPATH"
|
||||
Defaults env_keep += "PATH"
|
||||
Defaults env_keep += "ROS_ROOT"
|
||||
Defaults env_keep += "ROS_MASTER_URI"
|
||||
Defaults env_keep += "ROS_PACKAGE_PATH"
|
||||
Defaults env_keep += "ROS_LOCATIONS"
|
||||
Defaults env_keep += "ROS_HOME"
|
||||
Defaults env_keep += "ROS_LOG_DIR"
|
||||
```
|
||||
|
||||
## Функции для работы со светодиодной лентой
|
||||
|
||||
@@ -49,3 +49,8 @@
|
||||
Часть 6
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/v00oNVzwICg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
Автономные полеты
|
||||
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/WvIlRG7ShWA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
|
||||
|
||||
143
docs/mavlink.md
@@ -2,7 +2,7 @@
|
||||
|
||||
Основная документация: https://mavlink.io/en/.
|
||||
|
||||
MAVLink – это протокол для организации связи между автономными летательными и транспортными системами (дронами, самолетами, автомобилями). Проктол MAVLink лежит в основе взаимодействия между PixHawk и Raspberry Pi.
|
||||
MAVLink – это протокол для организации связи между автономными летательными и транспортными системами (дронами, самолетами, автомобилями). Проктол MAVLink лежит в основе взаимодействия между Pixhawk и Raspberry Pi.
|
||||
|
||||
В Клевер включено 2 обертки над этим протоколом: [MAVROS](mavros.md) и [simple_offboard](simple_offboard.md).
|
||||
|
||||
@@ -36,3 +36,144 @@ MAVLink-сообщение это отдельная "порция" данных
|
||||
Каждое устройство (дрон, базовая станция и т. д.) имеет ID в сети MAVLink. В PX4 MAVLink ID менятся с помощью параметра `MAV_SYS_ID`. Каждое MAVLink сообщение содержит поле с ID системы-отправителя. Кроме того, некоторые сообщения (например, `COMMAND_LONG`) содержат также ID системы-получателя.
|
||||
|
||||
Помимо ID систем, сообщения могут содержать ID компонента-отправителя и компонента-получателя. Примеры компонентов системы: полетный контроллер, внешняя камера, управляющий бортовой компьютер (Raspberry Pi в случае Клевера) и т. д.
|
||||
|
||||
### Пример пакета
|
||||
|
||||
Пример структуры MAVLink-пакета с сообщением `COMMAND_LONG`:
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>Поле</th>
|
||||
<th>Длина</th>
|
||||
<th>Имя</th>
|
||||
<th>Комментарий</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td rowspan="8"><div style="transform: rotate(-90deg)">Заголовок</div></td>
|
||||
<td><code>magic</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Метка начала</td>
|
||||
<td>0xFD для MAVLink 2.0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>len</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Размер данных</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>incompat_flags</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Обратно несовместимые флаги</td>
|
||||
<td>На данный момент не используется</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>compat_flags</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Обратно совместимые флаги</td>
|
||||
<td>На данный момент не используется</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>seq</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Порядковый номер сообщения</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>sysid</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>ID системы-отправителя</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>compid</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>ID компонента-отправителя</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><code>msgid</code></td>
|
||||
<td>3 байта</td>
|
||||
<td>ID сообщения</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td rowspan="11"><div style="transform: rotate(-90deg)">Данные (пример)</div></td>
|
||||
<td><code>target_system</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>ID системы-получателя</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>target_component</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>ID компонента–получателя</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>command</code></td>
|
||||
<td>2 байта</td>
|
||||
<td>ID команды</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>confirmation</code></td>
|
||||
<td>1 байт</td>
|
||||
<td>Номер для подтверждения</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param1</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 1</td>
|
||||
<td rowspan="7">Число с плавающей точкой одинарной точности</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param2</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 2</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param3</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 3</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param4</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 4</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param5</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 5</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param6</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 6</td>
|
||||
</tr>
|
||||
<tr style="background: #fffee6">
|
||||
<td><code>param7</code></td>
|
||||
<td>4 байта</td>
|
||||
<td>Параметр 7</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><code>checksum</code></td>
|
||||
<td>2 байта</td>
|
||||
<td>Контрольная сумма</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><code>signature</code></td>
|
||||
<td>13 байт</td>
|
||||
<td>Сигнатура (опционально)</td>
|
||||
<td>Позволяет убедиться, что пакет не был скомпроментирован.
|
||||
Обычно не используется.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<span style="background: #fffee6">Желтым</span> цветом выделены поля данных (полезной нагрузки). Для каждого типа сообщения существует свой набор таких полей.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# MAVROS
|
||||
|
||||
Основная статья: [http://wiki.ros.org/mavros](http://wiki.ros.org/mavros)
|
||||
Основная документация: [http://wiki.ros.org/mavros](http://wiki.ros.org/mavros)
|
||||
|
||||
MAVROS \(MAVLink + ROS\) — это пакет для ROS, предоставляющий возможность управлять беспилотниками по протоколу [MAVLink](mavlink.md). MAVROS поддерживает полетные стеки PX4 и APM. Связь организовывается по UART, USB, TCP или UDP.
|
||||
|
||||
@@ -8,6 +8,10 @@ MAVROS подписывается определенные ROS-топики в
|
||||
|
||||
Нода MAVROS автоматически запускается в launch-файле Клевера. Для [настройки типа подключения](connection.md) см. аргумент `fcu_conn`.
|
||||
|
||||
> **Hint** Упрощенное взаимодействие с коптером возможно с использованием пакета [`simple_offboard`](simple_offboard.md).
|
||||
|
||||
> **Note** В пакете `clever` некоторые плагины MAVROS отключены (в целях сохранения ресурсов). Подробнее см. параметр `plugin_blacklist` в файле `/home/pi/catkin_ws/src/clever/clever/launch/mavros.launch`.
|
||||
|
||||
## Основные сервисы
|
||||
|
||||
`/mavros/set_mode` — установить [полетный режим](modes.md) контроллера. Обычно устанавливается режим OFFBOARD \(для управления с Raspberry Pi\).
|
||||
@@ -18,7 +22,7 @@ MAVROS подписывается определенные ROS-топики в
|
||||
|
||||
`/mavros/state` — статус подключения к полетному контроллеру. Режим полетного контроллера.
|
||||
|
||||
`/mavros/local_position/pose` — локальная позиция коптера в системе координат ENU.
|
||||
`/mavros/local_position/pose` — локальная позиция коптера в системе координат ENU и его ориентация.
|
||||
|
||||
`/mavros/local_position/velocity` — текущая скорость в локальных координатах. Угловые скорости.
|
||||
|
||||
@@ -28,6 +32,8 @@ MAVROS подписывается определенные ROS-топики в
|
||||
|
||||
`/mavros/global_position/rel_alt` — относительная высота \(относительно высоты включения моторов\).
|
||||
|
||||
Просмотр сообщений, публикуемых в топики возможен с помощью утилиты `rostopic`, например `rostopic echo /mavros/state`. Подробнее см. [работа с ROS](ros.md).
|
||||
|
||||
## Основные топики для публикации
|
||||
|
||||
`/mavros/setpoint_position/local` — установить целевую позицию и рысканье \(yaw\) беспилотника \(в системе координат ENU\).
|
||||
@@ -45,5 +51,3 @@ MAVROS подписывается определенные ROS-топики в
|
||||
`/mavros/setpoint_raw/attitude` — отправка пакета [SET\_ATTITUDE\_TARGET](https://pixhawk.ethz.ch/mavlink/#SET_ATTITUDE_TARGET). Позвлояет установить целевую ориенатацию /угловые скорости и уровень газа. Выбор устанавливаемых величин осуществляется с помощью поля `type_mask`
|
||||
|
||||
`/mavros/setpoint_raw/global` — отправка пакета [SET\_POSITION\_TARGET\_GLOBAL\_INT](https://pixhawk.ethz.ch/mavlink/#SET_POSITION_TARGET_GLOBAL_INT). Позволяет установить целевую позицию в глобальных координатах \(ширина, долгота, высота\), а также скорости полета. **Не поддерживается в PX4** \([issue](https://github.com/PX4/Firmware/issues/7552)\).
|
||||
|
||||
[Упрощенное управление коптером с помощью Simple Offboard](simple_offboard.md).
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
|
||||
**Подведение итогов**
|
||||
|
||||
Ниже предложен один из вариантов подведения итогов курса.
|
||||
Ниже предложен один из вариантов подведения итогов курса.
|
||||
|
||||
Финальное мероприятие включает 3 раздела:
|
||||
|
||||
@@ -155,7 +155,7 @@
|
||||
| 5 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы. Спросить, что из изученного на занятии было для них интереснее всего. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии. |
|
||||
| 6 | Резервное время | Показать видео и рассказать классу интересные факты по пройденной теме, не вошедшие в программу. |
|
||||
|
||||
## Урок №6. Тема: «Бесколлекторные двигатели и регуляторы их хода»
|
||||
## Урок №6. Тема: «Бесколлекторные двигатели и регуляторы их хода»
|
||||
|
||||
**Цель урока:** закрепить теоретические знания о строении и работе бесколлекторных
|
||||
электродвигателей. Сформировать знания о работе и настройке регуляторов хода,
|
||||
@@ -381,7 +381,7 @@
|
||||
| 5 | Меняем SSID | Рассказать, что такое SSID. Научить изменять имя wi-fi сети. Объяснить что такое демоны и в какой момент они запускаются. Проработать с конфигурацией одного из них. |
|
||||
| 6 | Используем права суперпользователя | Рассказать о типах и правах пользователей системы. Показать примеры использования sudo. |
|
||||
| 7 | Подготовка коптера к автономным полетам | Проверить подключенное оборудование для автономных полетов. Убедиться в работоспособности подключения можно выполнив на Raspberry Pi: rostopic echo /mavros/state |
|
||||
| 8 | Использование QGroundControl через Wi-Fi | Настроить беспроводное соединение для работы с PixHawk в QGroundControl. Предложить учащимся установить новую прошивку, которая подходит для автономных полетов и откалибровать коптер при беспроводном подключении. |
|
||||
| 8 | Использование QGroundControl через Wi-Fi | Настроить беспроводное соединение для работы с Pixhawk в QGroundControl. Предложить учащимся установить новую прошивку, которая подходит для автономных полетов и откалибровать коптер при беспроводном подключении. |
|
||||
| 9 | Заключение | Подвести итоги занятия, спросить, есть ли у класса вопросы, их должно быть много, нужно заранее продумать ответы на них. Попросить учеников ответить на контрольные вопросы. Предложить ученикам по желанию провести в интернете дополнительное исследование на пройденную тему. Сообщить ученикам, какую тему они будут проходить на следующем занятии.|
|
||||
| 10 | | |
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
Для установки образа воспользуйтесь утилитой [Etcher](https://etcher.io).
|
||||
|
||||
[](https://etcher.io)
|
||||
[](https://etcher.io)
|
||||
|
||||
## Версия образа
|
||||
|
||||
|
||||
@@ -41,8 +41,8 @@ PX4
|
||||
|
||||
Основные используемые пакеты MAVLink:
|
||||
|
||||
* MAV_CMD_COMPONENT_ARM_DISARM
|
||||
* [SET_POSITION_TARGET_LOCAL_NED](https://pixhawk.ethz.ch/mavlink/#SET_POSITION_TARGET_LOCAL_NED)
|
||||
* [SET_ATTITUDE_TARGET](https://pixhawk.ethz.ch/mavlink/#SET_ATTITUDE_TARGET)
|
||||
* [MAV_CMD_COMPONENT_ARM_DISARM](https://mavlink.io/en/messages/common.html#MAV_CMD_COMPONENT_ARM_DISARM)
|
||||
* [SET_POSITION_TARGET_LOCAL_NED](https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED)
|
||||
* [SET_ATTITUDE_TARGET](https://mavlink.io/en/messages/common.html#SET_ATTITUDE_TARGET)
|
||||
|
||||
См.: [автономные полеты коптера в режиме OFFBOARD](simple_offboard.md).
|
||||
|
||||
@@ -5,7 +5,7 @@ Wi-Fi адаптер на Raspberry Pi имеет два основных реж
|
||||
1. **Режим клиента** – RPi подключается к существующей Wi-Fi сети.
|
||||
2. **Режим точки доступа** – RPi создает Wi-Fi сеть, к которой вы можете подключиться.
|
||||
|
||||
При использовании [образа для RPi](microsd_images.md) по умолчанию Wi-Fi адаптер работает в режиме точки доступа.
|
||||
При использовании [образа для RPi](microsd_images.md) по умолчанию Wi-Fi адаптер работает в [режиме точки доступа](wifi.md).
|
||||
|
||||
## Инструкция для переключения адаптера в режим клиента
|
||||
|
||||
@@ -272,7 +272,7 @@ EOF
|
||||
## Ссылки
|
||||
|
||||
1. [habr.com: Linux WiFi из командной строки с wpa_supplicant](https://habr.com/post/315960/)
|
||||
2. [wiki.archlinux.org: WPA supplicant (Русский)](https://wiki.archlinux.org/index.php/WPA_supplicant_(Русский))
|
||||
2. [wiki.archlinux.org: WPA supplicant (Русский)](https://wiki.archlinux.org/index.php/WPA_supplicant_\(Русский\))
|
||||
3. [blog.hoxnox.com: WiFi access point with wpa_supplicant](http://blog.hoxnox.com/gentoo/wifi-hotspot.html)
|
||||
4. [dmitrysnotes.ru: Raspberry Pi 3. Присвоение статического IP-адреса](http://dmitrysnotes.ru/raspberry-pi-3-prisvoenie-staticheskogo-ip-adresa)
|
||||
5. [thegeekdiary.com: Linux OS Service ‘network’](https://www.thegeekdiary.com/linux-os-service-network/)
|
||||
|
||||
63
docs/optical_flow.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Использование Optical Flow
|
||||
|
||||
> **Warning** Данная функция является **экспериментальной** и включена в образ с версии v0.11.4.
|
||||
|
||||
При использовании технологии Optical Flow возможен полет в режиме POSCTL и автономные полеты по камере, направленной вниз, засчет измерения сдвигов текстуры поверхности пола.
|
||||
|
||||
## Включение
|
||||
|
||||
А данный момент для использования Optical Flow необходима [кастомная прошивка PX4](https://yadi.sk/d/KaxaIhohu4V8XA).
|
||||
|
||||
Необходимо использования дальномера. При использовании дальномера STM vl53l1x, необходимо подключить его к Raspberry Pi по I2C и включить его в `~/catkin_ws/src/clever/clever/launch/clever.launch`:
|
||||
|
||||
```xml
|
||||
<arg name="vl53l1x" default="true"/>
|
||||
```
|
||||
|
||||
Проверить работу лазерного дальномера можно с помощью команды:
|
||||
|
||||
```bash
|
||||
rostopic echo mavros/distance_sensor/rangefinder_3_sub
|
||||
```
|
||||
|
||||
Необходимо включить Optical Flow:
|
||||
|
||||
```xml
|
||||
<arg name="optical_flow" default="true"/>
|
||||
```
|
||||
|
||||
В `main_camera.launch` должен быть выставлен корректный фрейм камеры.
|
||||
|
||||
Рекомендуемые параметры PX4:
|
||||
|
||||
* `SYS_MC_EST_GROUP` – 2 (EKF2).
|
||||
* `EKF2_AID_MASK` – use optical flow.
|
||||
* `EKF2_OF_DELAY` – 0.
|
||||
* `EKF2_OF_QMIN` – 20.
|
||||
* `EKF2_HGT_MODE` – range sensor (ремменд.).
|
||||
|
||||
## Полет в POSCTL
|
||||
|
||||
Настройте POSCTL как один из полетных режимов PX4. Переведите в режим POSCTL.
|
||||
|
||||
## Автономный полет
|
||||
|
||||
Автономный полет возможен с использованием модуля [simple_offboard](simple_offboard.md).
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
При появлении в QGC ошибок типа `EKF INTERNAL CHECKS` попробуйте перезагрузить ekf2. Для этого наберите в MAVLink-консоли:
|
||||
|
||||
```nsh
|
||||
ekf2 stop
|
||||
ekf2 start
|
||||
```
|
||||
|
||||
Если коптер будет сильно уплывать по рысканью, попробуйте следующее:
|
||||
|
||||
* Перекалибровать гироскопы
|
||||
* Перекалибровать магнитометр
|
||||
* Попробовать разные значения параметра `EKF2_MAG_TYPE`, который определяет, каким образом данные с магнитометра используются в EKF2.
|
||||
* Изменять значения параметров `EKF2_MAG_NOISE`, `EKF2_GYR_NOISE`, `EKF2_GYR_B_NOISE`.
|
||||
|
||||
Если коптер уплывает по высоте, попробуйте также выставить `MPC_ALT_MODE` = 2 (Terrain following).
|
||||
70
docs/px4_parameters.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# Параметры PX4
|
||||
|
||||
Основная статья: https://dev.px4.io/en/advanced/parameter_reference.html
|
||||
|
||||
> **Note** Это описание некоторых, наиболее важных параметров PX4 по состоянию на версию 1.8.0. Полный список см. по ссылке выше.
|
||||
|
||||
Для изменения параметров PX4 можно воспользоваться программой QGroundControl, [подключившись к Клеверу по Wi-Fi](gcs_bridge.md).
|
||||
|
||||
## Основные параметры
|
||||
|
||||
Наиболее важные параметры вынесены в этот параграф.
|
||||
|
||||
`SYS_MC_EST_GROUP` – выбор модуля estimator'а.
|
||||
|
||||
Это группа модулей, которая вычисляет текущее состояние (state) коптера, используя показания с датчиков. В состояние коптера входит:
|
||||
|
||||
* угловая скорость коптера – pitch_rate, roll_rate, yaw_rate;
|
||||
* ориентация коптера (в локальной системе координат) – pitch (тангаж), roll (крен), yaw (рысканье) (одно из представлений);
|
||||
* позиция коптера (в локальной системе координат) – x, y, z;
|
||||
* скорость коптера (в локальной системе координат) – vx, vy, vz;
|
||||
* глобальные координаты коптера – lattitude, longitude, altitude;
|
||||
* высота над поверхностью;
|
||||
* другие параметры (дрейф гироскопов, скорость ветра и пр.).
|
||||
|
||||
`SYS_AUTOCONFIG` – сброс всех параметров (при установке в значение 1).
|
||||
|
||||
## EKF2
|
||||
|
||||
`EKF2_AID_MASK` – выбор датчиков, которые используются EKF2 для вычисления состояния коптера.
|
||||
|
||||
`EKF2_HGT_MODE` – основной источник данных о высоте (z в локальной системе координт):
|
||||
|
||||
* 0 – давление с барометра.
|
||||
* 1 – GPS.
|
||||
* 2 – дальномер (например, vl53l1x).
|
||||
* 3 – данные с VPE.
|
||||
|
||||
Вариант 2 является наиболее точным, но его корректно использовать, только если поверхность, над которой летает котер – плоская. В противном случае начало координат по Z будет двигаться вверх и вниз с изменением высоты поверхности.
|
||||
|
||||
## Multicopter Position Control (полет по позиции)
|
||||
|
||||
Данные параметры настраивают полет коптера по позиции (режимы POSCTL, OFFBOARD, AUTO).
|
||||
|
||||
`MPC_THR_HOVER` – газ висения. Данный параметр наобходимо установить на примерный процент газа, необходимый для того, чтобы коптер удерживал высоту. Если коптер имеет тенденцию набирать или терять высоту в режиме удержания высоты – можно уменьшить или увеличить это значение.
|
||||
|
||||
`MPC_XY_P` – коэффициент *P* регулятора по позиции. Этот параметр влияет на то, насколько резко коптер будет выполнять заданные команды по позиции. Слишком большое значение может вызвать перестрелы.
|
||||
|
||||
`MPC_XY_VEL_P` – коэффициент *P* регулятора по скорости. Данный параметр также влияет на точность и резкость выполнения коптером заданной позиции. При слишком большом значении возможны перестрелы.
|
||||
|
||||
`MPC_XY_VEL_MAX` – максимальная горизонтальная скорость в режимах POSCTL, OFFBOARD, AUTO.
|
||||
|
||||
`MPC_Z_P`, `MPC_Z_VEL_P` – коэффициенты *P* регуляторов по вертикальной позиции и скорости. Влияют на удерживание коптером необходимой высоты.
|
||||
|
||||
`MPC_LAND_SPEED` – вертикальная скорость посадки в режиме LAND.
|
||||
|
||||
## LPE + Q attitude estimator
|
||||
|
||||
Данные параметры настраивают поведение модулей `lpe` и `q`, которые вычисляют состояние (ориентацию, позицию) коптера. Эти параметры применяются **только** если параметр `SYS_MC_EST_GROUP` установлен в значение `1` (local_position_estimator, attitude_estimator_q)
|
||||
|
||||
TODO
|
||||
|
||||
## Commander
|
||||
|
||||
Преарм-чеки, переключение режимов и состояний коптера.
|
||||
|
||||
## Sensors
|
||||
|
||||
Включение, выключение и настройка различных датчков.
|
||||
|
||||
TODO
|
||||
@@ -19,4 +19,4 @@ Raspberry Pi означает «малиновый пирог». Этот сво
|
||||
* домашний медиа-сервер
|
||||
* «мозговой центр» для автоматизированных станков или роботов
|
||||
|
||||
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту PixHawk.
|
||||
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту Pixhawk.
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
|
||||
> **Note** Мобильный пульт конфликтует с реальной аппаратурой радиоуправления. Во время использования мобильного пульта она должна быть выключена.
|
||||
|
||||
> **Warning** Открытое соединение QGroundControl или rviz пересылает большие объемы данных по Wi-Fi, что может негативно сказаться на отзывчивости мобильного пульта. Рекомендуется не использовать эти приложения одновременно с ним.
|
||||
|
||||
Установите [образ Clever на RPi](microsd_images.md). Для работы приложения параметры `rosbridge` и `rc` в launch-файле (`~/catkin_ws/src/clever/clever/launch/clever.launch`) должны быть включены:
|
||||
|
||||
```xml
|
||||
@@ -53,4 +55,4 @@ sudo systemctl restart clever
|
||||
|
||||
* Если интерфейс пульта отображает явно неправильное напряжение (напр. > 5 V), проверьте, что значение PX4-параметра `BAT_N_CELLS` соответствует реальному количество элементов батареи. Если отображаемое напряжение все равно неверно, откалибруйте батарею (TODO: ссылка).
|
||||
|
||||
* Если вместо режима PX4 отображается текст "DISCONNECTED FROM FCU", проверьте [подключение Raspberry Pi к PixHawk](connection.md).
|
||||
* Если вместо режима PX4 отображается текст "DISCONNECTED FROM FCU", проверьте [подключение Raspberry Pi к Pixhawk](connection.md).
|
||||
|
||||
49
docs/rviz.md
@@ -1,11 +1,13 @@
|
||||
Использование rviz
|
||||
Использование rviz и rqt
|
||||
===
|
||||
|
||||

|
||||

|
||||
|
||||
Инструмент [rviz](http://wiki.ros.org/rviz) позволяет в реальном времени визуализировать на 3D-сцене все компоненты роботехнической системы — системы координат, движущиеся части, показания датчиков, изображения с камер.
|
||||
|
||||
Для использования rviz необходим компьютер с ОС Ubuntu Linux (либо виртуальная машина, например [Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) или [VirtualBox](https://www.virtualbox.org)).
|
||||
[rqt](http://wiki.ros.org/rqt) – это набор GUI для анализа и контроля ROS-систем. Например, `rqt_image_view` позволяет просматривать топики с изображениями, `rqt_multiplot` – строить графики по значениям в топиках и т. д.
|
||||
|
||||
Для использования rviz и rqt необходим компьютер с ОС Ubuntu Linux (либо виртуальная машина, например [Parallels Desktop Lite](https://itunes.apple.com/ru/app/parallels-desktop-lite/id1085114709?mt=12) или [VirtualBox](https://www.virtualbox.org)).
|
||||
|
||||
На него необходимо установить пакет `ros-kinetic-desktop-full` или `ros-kinetic-desktop`, используя [документацию по установке](http://wiki.ros.org/kinetic/Installation/Ubuntu).
|
||||
|
||||
@@ -24,9 +26,46 @@ ROS_MASTER_URI=http://192.168.11.1:11311 rviz
|
||||
export ROS_IP=192.168.11.1
|
||||
```
|
||||
|
||||
Использование
|
||||
Использование rviz
|
||||
---
|
||||
|
||||
В качестве reference frame рекомендуется установить фрейм `local_origin`. Для визуализации коптера можно добавить визуализационные маркеры из топика `/vehicle_markers`. Можно просмотреть картинку с дополненной реальностью из топика основной камеры `/main_camera/image_raw`.
|
||||
### Визуализация положения коптера
|
||||
|
||||
В качестве reference frame рекомендуется установить фрейм `local_origin`. Для визуализации коптера добавьте визуализационные маркеры из топика `/vehicle_markers`. Для визуализации камеры коптера добавьте визуализационные маркеры из топика `/main_camera/camera_markers`.
|
||||
|
||||
Результат визуализации коптера и камеры представлен ниже:
|
||||
|
||||

|
||||
|
||||
|
||||
### Визуализация окружения
|
||||
|
||||
Можно просмотреть картинку с дополненной реальностью из топика основной камеры `/main_camera/image_raw`.
|
||||
|
||||
Axis или Grid настроенный на фрейм `aruco_map` будут визуализировать расположение [карты ArUco-меток](aruco.md).
|
||||
|
||||
Запуск инструментов rqt
|
||||
---
|
||||
|
||||

|
||||
|
||||
Для запуска rqt для мониторинга состояния Клевера используйте команду:
|
||||
|
||||
```bash
|
||||
ROS_MASTER_URI=http://192.168.11.1:11311 rqt
|
||||
```
|
||||
|
||||
Пример запуск конкретного плагина (`rqt_image_view`):
|
||||
|
||||
```bash
|
||||
ROS_MASTER_URI=http://192.168.11.1:11311 rqt_image_view
|
||||
```
|
||||
|
||||
jsk_rviz_plugins
|
||||
---
|
||||
|
||||
Рекомендуется также установка набора дополнительных полезных плагинов для rviz [jsk_rviz_plugins](https://jsk-docs.readthedocs.io/en/latest/jsk_visualization/doc/jsk_rviz_plugins/index.html). Это набор позволяет визуализировать топики типа `TwistStamped` (скорость), `CameraInfo`, `PolygonArray` и многое другое. Для установки используйте команду:
|
||||
|
||||
```bash
|
||||
sudo apt-get install ros-kinetic-jsk-visualization
|
||||
```
|
||||
|
||||
@@ -282,4 +282,4 @@
|
||||
|
||||
Далее: [Настройка-полетного-контролера](aruco.md#Настройка-полетного-контролера)
|
||||
|
||||
Далее: [Подключение Raspberry Pi к PixHawk](connection.md).
|
||||
Далее: [Подключение Raspberry Pi к Pixhawk](connection.md).
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
Simple offboard
|
||||
===
|
||||
|
||||
> **Warning** Это описание API версии 0.5. См. [описание API предыдущих версий](https://github.com/CopterExpress/clever/blob/67051b21a05b12e2e9e519cb640565bccb80fbe3/docs/simple_offboard.md).
|
||||
|
||||
Модуль `simple_offboard` пакета `clever` предназначен для упрощенного программирования автономного дрона (режим `OFFBOARD`). Он позволяет устанавливать желаемые полетные задачи и автоматически трансформирует [систему координат](frames.md).
|
||||
Модуль `simple_offboard` пакета `clever` предназначен для упрощенного программирования автономного дрона ([режим](modes.md) `OFFBOARD`). Он позволяет устанавливать желаемые полетные задачи и автоматически трансформирует [систему координат](frames.md).
|
||||
|
||||
`simple_offboard` является высокоуровневым способом взаимодействия с полетным контроллером. Для более низкоуровневой работы см. [mavros](mavros.md).
|
||||
|
||||
@@ -162,7 +160,7 @@ navigate(x=3, y=2, z=2, speed=1, frame_id='aruco_map', update_frame=True)
|
||||
Вращение на месте со скоростью 0.5 рад/c (против часовой):
|
||||
|
||||
```python
|
||||
navigate(x=0, y=0, z=0, speed=1, yaw=float('nan'), yaw_rate=0.5, frame_id='fcu_horiz')
|
||||
navigate(x=0, y=0, z=0, yaw=float('nan'), yaw_rate=0.5, frame_id='fcu_horiz')
|
||||
```
|
||||
|
||||
Полет вперед 3 метра со скоростью 0.5 м/с, вращаясь по рысканью со скоростью 0.2 рад/с:
|
||||
|
||||
111
docs/snippets.md
@@ -9,7 +9,7 @@ Python
|
||||
> # -*- coding: utf-8 -*-
|
||||
> ```
|
||||
|
||||
---
|
||||
<h3 id="distance"><a href="#distance">#</a></h3>
|
||||
|
||||
Функция определения расстяния между двумя точками (**важно**: точки должны быть в одной [системе координат](frames.md)):
|
||||
|
||||
@@ -18,7 +18,7 @@ def get_distance(x1, y1, z1, x2, y2, z2):
|
||||
return math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2 + (z1 - z2) ** 2)
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="distance-global"><a href="#distance-global">#</a></h3>
|
||||
|
||||
Функция для приблизительного определения расстояния (в метрах) между двумя глобальными координатами (широта/долгота):
|
||||
|
||||
@@ -27,7 +27,7 @@ def get_distance_global(lat1, lon1, lat2, lon2):
|
||||
return math.hypot(lat1 - lat2, lon1 - lon2) * 1.113195e5
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="block-takeoff"><a href="#block-takeoff">#</a></h3>
|
||||
|
||||
Взлет и ожидание окончания взлета:
|
||||
|
||||
@@ -50,7 +50,7 @@ while True:
|
||||
rospy.sleep(0.2)
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="block-nav"><a href="#block-nav">#</a></h3>
|
||||
|
||||
Лететь в точку и ждать пока коптер долетит в нее:
|
||||
|
||||
@@ -71,19 +71,75 @@ while True:
|
||||
rospy.sleep(0.2)
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="disarm"><a href="#disarm">#</a></h3>
|
||||
|
||||
Дизарм коптера (выключение винтов, **коптер упадет**):
|
||||
|
||||
```python
|
||||
# Объявление прокси:
|
||||
from mavros_msgs.srv import CommandBool
|
||||
arming = rospy.ServiceProxy('mavros/cmd/arming', CommandBool)
|
||||
|
||||
# ...
|
||||
|
||||
arming(False) # дизарм
|
||||
```
|
||||
|
||||
<h3 id="transform"><a href="#transform">#</a></h3>
|
||||
|
||||
Трансформировать позицию (`PoseStamped`) из одной системы координат ([фрейма](frames.md)) в другую, используя [tf2](http://wiki.ros.org/tf2):
|
||||
|
||||
```python
|
||||
import tf2_ros
|
||||
import tf2_geometry_msgs
|
||||
|
||||
tf_buffer = tf2_ros.Buffer()
|
||||
tf_listener = tf2_ros.TransformListener(tf_buffer)
|
||||
|
||||
# ...
|
||||
|
||||
# Создаем объект PoseStamped (либо получаем из топика):
|
||||
pose = PoseStamped()
|
||||
pose.header.frame_id = 'local_origin' # фрейм, в котором задана позиция
|
||||
pose.header.stamp = rospy.get_rostime() # момент времени, для которого задана позиция (текущее время)
|
||||
pose.pose.position.x = 1
|
||||
pose.pose.position.y = 2
|
||||
pose.pose.position.z = 3
|
||||
pose.pose.orientation.w = 1
|
||||
|
||||
frame_id = 'fcu' # целевой фрейм
|
||||
transform_timeout = rospy.Duration(0.2) # таймаут ожидания транформации
|
||||
|
||||
# Преобразовываем позицию из старого фрейма в новый:
|
||||
new_pose = tf_buffer.transform(pose, frame_id, transform_timeout)
|
||||
```
|
||||
|
||||
<h3 id="upside-down"><a href="#upside-down">#</a></h3>
|
||||
|
||||
Определение, перевернут ли коптер:
|
||||
|
||||
```python
|
||||
PI_2 = math.pi / 2
|
||||
telem = get_telemetry()
|
||||
|
||||
flipped = not -PI_2 <= telem.pitch <= PI_2 or not -PI_2 <= telem.roll <= PI_2
|
||||
```
|
||||
|
||||
<h3 id="angle-hor"><a href="#angle-hor">#</a></h3>
|
||||
|
||||
Рассчет общего угла коптера к горизонту:
|
||||
|
||||
TODO: fix
|
||||
|
||||
```python
|
||||
PI_2 = math.pi / 2
|
||||
telem = get_telemetry()
|
||||
|
||||
flipped = not -PI_2 <= telem.pitch <= PI_2 or not -PI_2 <= telem.roll <= PI_2
|
||||
angle_to_horizon = math.atan(math.hypot(math.tan(telem.pitch), math.tan(telem.roll)))
|
||||
if flipped:
|
||||
angle_to_horizon = math.pi - angle_to_horizon
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="circle"><a href="#circle">#</a></h3>
|
||||
|
||||
Полет по круговой траектории:
|
||||
|
||||
@@ -105,7 +161,18 @@ while not rospy.is_shutdown():
|
||||
r.sleep()
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="rate"><a href="#rate">#</a></h3>
|
||||
|
||||
Повторять действие с частотой 10 Гц:
|
||||
|
||||
```python
|
||||
r = rospy.Rate(10)
|
||||
while not rospy.is_shutdown():
|
||||
# Do anything
|
||||
r.sleep()
|
||||
```
|
||||
|
||||
<h3 id="mavros-sub"><a href="#mavros-sub">#</a></h3>
|
||||
|
||||
Пример подписки на топики из MAVROS:
|
||||
|
||||
@@ -132,7 +199,7 @@ rospy.Subscriber('mavros/rc/in', RCIn, rc_callback)
|
||||
|
||||
Информацию по топикам MAVROS см. по [ссылке](mavros.md).
|
||||
|
||||
---
|
||||
<h3 id="mavlink"><a href="#mavlink">#</a></h3>
|
||||
|
||||
Пример отправки произвольного [MAVLink-сообщения](mavlink.md) коптеру:
|
||||
|
||||
@@ -156,7 +223,7 @@ ros_msg = mavlink.convert_to_rosmsg(msg)
|
||||
mavlink_pub.publish(ros_msg)
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="rc-sub"><a href="#rc-sub">#</a></h3>
|
||||
|
||||
Реакция на переключение режима на пульте радиоуправления (может быть использовано для запуска автономного полета, см. [пример](https://gist.github.com/okalachev/b709f04522d2f9af97e835baedeb806b)):
|
||||
|
||||
@@ -165,16 +232,16 @@ from mavros_msgs.msg import RCIn
|
||||
|
||||
# Вызывается при получении новых данных с пульта
|
||||
def rc_callback(data):
|
||||
# Произвольная реакция на переключение тумблера на пульте
|
||||
if data.channels[5] < 1100:
|
||||
# ...
|
||||
pass
|
||||
elif data.channels[5] > 1900:
|
||||
# ...
|
||||
pass
|
||||
else:
|
||||
# ...
|
||||
pass
|
||||
# Произвольная реакция на переключение тумблера на пульте
|
||||
if data.channels[5] < 1100:
|
||||
# ...
|
||||
pass
|
||||
elif data.channels[5] > 1900:
|
||||
# ...
|
||||
pass
|
||||
else:
|
||||
# ...
|
||||
pass
|
||||
|
||||
# Создаем подписчик на топик с данными с пульта
|
||||
rospy.Subscriber('mavros/rc/in', RCIn, rc_callback)
|
||||
@@ -182,7 +249,7 @@ rospy.Subscriber('mavros/rc/in', RCIn, rc_callback)
|
||||
rospy.spin()
|
||||
```
|
||||
|
||||
---
|
||||
<h3 id="flip"><a href="#flip">#</a></h3>
|
||||
|
||||
Флип:
|
||||
|
||||
|
||||
@@ -13,4 +13,6 @@ ssh pi@192.168.11.1
|
||||
|
||||
Для доступа по SSH из Windows можно использовать [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html).
|
||||
|
||||
Также можно получить доступ по SSH со смартфона с помощью приложения [Termius](https://www.termius.com).
|
||||
|
||||
Подробнее: https://www.raspberrypi.org/documentation/remote-access/ssh/README.md
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
https://robots.ros.org/gapter/
|
||||
|
||||
85
docs/uart.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Интерфейс UART
|
||||
|
||||
UART – последовательный асинхронный интерфейс для передачи данных, применяемый во многих устройствах. Например GPS-антенны, Wi-Fi роутеры или Pixhawk.
|
||||
|
||||
Интерфейс обычно содержит две линии: TX – линия для передачи данных, RX – линия для приёма данных. А также обычно использует 5-ти вольтовую логику.
|
||||
|
||||
Для соединения двух устройств необходимо линию TX первого устройства подать на RX второго. Аналогичную операцию нужно совершить с другой стороны, чтобы обеспечить двустороннюю передачу данных.
|
||||
|
||||
> Также необходимо синхронизировать уровни напряжений – соединить землю на двух устройствах.
|
||||
|
||||
Почитать больше про интерфейс и протокол можно в [этой статье](https://habr.com/post/109395/).
|
||||
|
||||
## Linux TTY
|
||||
|
||||
В Linux есть понятие Posix Terminal Interface (подробнее [здесь](https://ru.wikipedia.org/wiki/TTY-абстракция)). Это некоторая абстракция над последовательным или виртуальным интерфейсом, позволяющая работать с устройством нескольким агентам одновременно.
|
||||
|
||||
В качестве примера такой абстрации в Raspbian можно привести `/dev/tty1` – устройство вывода текста на экран подключенный по HDMI.
|
||||
|
||||
## UART на Raspberry Pi 3
|
||||
|
||||
В Raspberry Pi 3 есть два аппаратных UART интерфейса:
|
||||
|
||||
1. `Mini UART` (/dev/ttyAMA0) – для своей работы использует тактирование видеоядра RPi, в связи с чем ограничивает его частоту.
|
||||
2. `PL011` (/dev/ttyS0) – полноценный UART интерфейс выполненный на отдельном блоке кристалла микроконтроллера.
|
||||
|
||||
Подробнее про UART на Raspberry Pi в [официальной статье](https://www.raspberrypi.org/documentation/configuration/uart.md).
|
||||
|
||||
Данные интерфейсы с помощью вентелей микроконтроллера можно переключать между двуями физическими выходами:
|
||||
|
||||
1. разъём UART на GPIO;
|
||||
2. Bluetooth модуль RPi.
|
||||
|
||||
По умолчанию в Raspberry Pi 3 `PL011` подключен к Bluetooth модулю. А `Mini UART` отключен с помощью значения директивы `enable_uart`, по дефолту равной `0`.
|
||||
|
||||
> Надо понимать, что директива `enable_uart` меняет свое дефолтное значение исходя из того, какой UART подключен к Bluetooth модулю RPi с помощью директивы `dtoverlay=pi3-miniuart-bt`.
|
||||
|
||||
Для удобства работы с этими выходами в Raspbian существуют алиасы:
|
||||
|
||||
* `/dev/serial0` – всегда указывает на то TTY устройство, что подключено к GPIO портам.
|
||||
* `/dev/serial1` – всегда указывает на то TTY устройство, что подключено к Bluetooh модулю.
|
||||
|
||||
### Настройка UART на Raspberry Pi
|
||||
|
||||
Для настроек UART существуют директивы, которые находятся в `/boot/config.txt`.
|
||||
|
||||
Для включения UART интерфейса на GPIO:
|
||||
|
||||
```
|
||||
enable_uart=1
|
||||
```
|
||||
|
||||
Для отключения UART интерфейса от Bluetooth модуля:
|
||||
|
||||
```
|
||||
dtoverlay=pi3-disable-bt
|
||||
```
|
||||
|
||||
Для подключения `Mini UART` к Bluetooth модулю:
|
||||
|
||||
```
|
||||
dtoverlay=pi3-miniuart-bt
|
||||
```
|
||||
|
||||
В случае отключения Bluetooth модуля следует отключить `hciuart` сервис:
|
||||
|
||||
```bash
|
||||
sudo systemctl disable hciuart.service
|
||||
```
|
||||
|
||||
## Дефолтная настройка образа
|
||||
|
||||
На образе CLEVER мы изначально выключили `Mini UART` и Bluetooth модуль.
|
||||
|
||||
## Bugs
|
||||
|
||||
Если использовать подключение `Mini UART` к Bluetooth, `hciuart` падает с ошибкой:
|
||||
|
||||

|
||||
|
||||
В случае отключения Bluetooth
|
||||
|
||||
```
|
||||
/dev/serial0 -> ttyAMA0
|
||||
/dev/serial1 -> ttyS0
|
||||
```
|
||||