Merge branch 'master' into CL3_assemble_new

This commit is contained in:
Arthur Golubtsov
2018-11-09 19:28:20 +03:00
committed by GitHub
160 changed files with 3201 additions and 1772 deletions

View File

@@ -1,4 +1,6 @@
Использование внешнего 3G-модема
===
Использование внешнего 3G-модема на Raspberry возможно с помощью пакета `sakis3g`.
TODO

View File

@@ -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
* Набор ПО для работы с Клевером

View File

@@ -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)

View File

@@ -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 будут появляться сообщения, типа:

View File

@@ -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

View File

@@ -3,8 +3,7 @@
![Clever](assets/Clevermain.png)
Состав конструктора
-------------------
## Состав конструктора
![Explosion](assets/explosion.png)
@@ -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 @@
![radio Transmitter](assets/radioTransmitter.png)
## Дополнительное оборудование
Дополнительное оборудование
---------------------------
#### Данное оборудование не входит в состав конструктора Клевер 2, но оно необходимо для реализации сборочного процесса
### Данное оборудование не входит в состав конструктора Клевер 2, но оно необходимо для реализации сборочного процесса
1. Паяльник
2. Канифоль/ Флюс (нейтральный)
@@ -94,11 +91,9 @@
![Дополнительное оборудование](assets/addEqipment.jpg)
[Техника безопасности при пайке](tb.md)
Порядок сборки
--------------
## Порядок сборки
### Установка моторов
@@ -107,11 +102,13 @@
![Мотор brrc2205](assets/brrc2205.png)
Зачистить
* снять 2мм термоизоляции с конца провода не повредив медные жилы.
Скрутить провода.
Залудить
* Нанести флюс на оголенную часть провода.
* Покрыть припоем, используя пинцет.
@@ -128,17 +125,19 @@
![Вращение моторов](assets/brrc2205ondeck.png)
### Залудить три контактные площадки регулятора
#### Залудить три контактные площадки регулятора
* Нанести флюс
* Нанести припой
Чтобы припой аккуратно заполнил всю площадку, необходимо прогреть площадку регулятора. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
![Лужение контактных площадок регуляторов](assets/escDYSzap.png)
* Повторить данную операцию для оставшихся трех регуляторов
#### Припаять провода моторов к регуляторам
### Припаять провода моторов к регуляторам
Припаять ранее приготовленные провода моторов к контактным площадкам регуляторов.
![Припаять провода моторов к регуляторам](assets/solderingBrrc2205ondeckTOescDYSzap.png)
@@ -146,6 +145,7 @@
* Повторить данную операцию для оставшихся трех регуляторов
### Монтаж разъемов питания
[Статья про силовые и управляющие цепи](powerConnection.md)
#### Подготовка проводов для силовых разъемов XT60
@@ -169,10 +169,7 @@
4. Припаять красный провод к “+” контакту разъема .
5. Нарезать термоусадку ф5 (2 отрезка по 10 мм).
6. Надеть термоусадку ф5 на провода так, чтобы она закрывала контактные площадки проводов с XT60 .
7. Усадить термоусадку феном.
![Монтаж разъемов XT60](assets/mountxt60pinsocket.png)
7. Усадить термоусадку феном. ![Монтаж разъемов XT60](assets/mountxt60pinsocket.png)
8. Повторить процедуру для разъема XT60 socket.
#### Подготовка разъема питания управляющей цепи 5В
@@ -193,15 +190,18 @@
![Предпаячная проверка](assets/startPDBtest.jpg)
Прозвонить следующие цепи на НЕЗАМКНУТОСТЬ (отсутствие звукового сигнала мультиметра):
* “BAT+” и “BAT-”
* “12V” и “GND”
* “5V” и “GND”
Прозвонить следующие цепи на ЗАМКНУТОСТЬ (появление звукового сигнала мультиметра):
* “BAT-” c каждым контактом, обозначенным “-” и “GND”
* “BAT+”, с каждым контактом, обозначенным “+”
#### Залудить контактные площадки платы питания
1. [Залудить*](zap.md) контактные площадки платы питания.
2. С помощью мультиметра проверить отсутствие контактного замыкания на плате (прозвонить)
@@ -210,15 +210,18 @@
Чтобы припой аккуратно заполнил всю площадку, необходимо её прогреть. Для этого нужно удерживать жало паяльника на контактной плащадке в течение 2 сек (или больше, если потребуется)
#### Пайка силового разъема питания XT60
Припаять разъем для АКБ, соблюдая полярность на контактных площадках.
![Пайка XT60 на PDB](assets/solderingxt60socketTOpdb.png)
ВАЖНО о полярности
* красный провод - это “+”
* черный провод - это “-”
#### Пайка разъема питания управляющей цепи 5В
Припаять разъем 5В, соблюдая полярность на контактных площадках.
(на изображении: красный провод - это питание “+”)
@@ -227,6 +230,7 @@
### Монтаж отсека АКБ
#### Подготовка перемычек (3 шт.)
![Перемычка](assets/jumper.png)
* Отрезать силовой провод длиной 2 см.
@@ -237,60 +241,49 @@
* Прозвонить мультиметром. В случае необходимости зачистить наждачной бумагой.
#### Подготовка отсека АКБ
![Подготовка отсека АКБ](assets/casebattery.png)
* Приклеить наклейки с разметкой внутрь отсека АКБ, в соответствии с полярностью.
* Приклеить ленту из скотча на дно отсека.
### Монтаж платы распределения питания
* Установить плату питания на раму винтами М3х8 и пластиковыми гайками.
![Установка платы PDB](assets/mountPDB.png)
* ВАЖНО
Стрелочка на плате направлена в сторону носового выреза
* Установить плату питания на раму винтами М3х8 и пластиковыми гайками. ![Установка платы PDB](assets/mountPDB.png)
> **ВАЖНО** Стрелочка на плате направлена в сторону носового выреза
![Установка платы PDB](assets/topviewmountPDB.png)
#### Монтаж элементов
1. Установить гайки в пластиковые держатели
![Монтаж пластиковых держателей](assets/holderLegs.png)
1. Установить гайки в пластиковые держатели. ![Монтаж пластиковых держателей](assets/holderLegs.png)
2. Установить лучи на раму винтами М3х16
*Лучи устанавливаются поверх рамы
*Пластиковые держатели устанавливаются снизу рамы
![Монтаж лучей](assets/mountBeams.png)
3. Расположение моторов
Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем).
![Расположение моторов](assets/motorsTopview.png)
4. Продеть силовые провода регуляторов в отверстия.
![силовые провода моторов](assets/escWires.png)
* Лучи устанавливаются поверх рамы
* Пластиковые держатели устанавливаются снизу рамы. ![Монтаж лучей](assets/mountBeams.png)
3. Расположение моторов. Проверить расположение моторов (моторы с черной гайкой в левом верхнем углу и в правом нижнем). ![Расположение моторов](assets/motorsTopview.png)
4. Продеть силовые провода регуляторов в отверстия. ![силовые провода моторов](assets/escWires.png)
#### Пайка силовой цепи платы питания
Припаять силовые провода регуляторов к плате питания, соблюдая полярность.
![Пайка силовых проводов на PDB](assets/solderingPowerwires.png)
ВАЖНО о полярности
*красный провод - это “+”
*черный провод - это “-”
* красный провод - это “+”
* черный провод - это “-”
### Сопряжение приемника и пульта
1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V
![Подключение питания приемника](assets/receiver5V.png)
3. Подключить АКБ.
Светодиод на радиоприемнике должен мигать.
![Подключение АКБ](assets/connectBattery.png)
1. Подключить радиоприемник к разъему 5В. В любой разъем, GND внизу. На схеме питание обозначено как 5V ![Подключение питания приемника](assets/receiver5V.png)
2. Подключить АКБ. Светодиод на радиоприемнике должен мигать. ![Подключение АКБ]
#### БЕЗОПАСНОСТЬ при работе с АКБ
![БЕЗОПАСНОСТЬ при работе с АКБ](assets/safetyPower.png)
#### Включение радиопульта
1. Вставить джампер в B/VCC радиоприемника (замкнуть "землю" и "сигнал")
2. На пульте зажать кнопку BIND KEY.
3. Включить пульт (перещелкнуть POWER, BIND KEY не отпускаем).
@@ -302,63 +295,42 @@
![Подключение питания приемника](assets/connectingRadio.png)
[Мануал по неисправностям радиоаппаратуры](radioerrors1.md)
### Проверка направления вращения моторов
1. Наклеить наклейки на АКБ 18650.
2. Установить 18650 в отсек АКБ, соблюдая полярность.
![Готовность отсека АКБ](assets/readyBatteryholder.png)
2. Установить 18650 в отсек АКБ, соблюдая полярность. ![Готовность отсека АКБ](assets/readyBatteryholder.png)
3. Проверить, что разъем питания 5В подключен к приемнику по схеме.
4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме.
![Подключение регулятора к приемнику](assets/connectionESCtoReceiver.png)
4. Подключить регулятор мотора к 3 каналу приемника CH3 по схеме. ![Подключение регулятора к приемнику](assets/connectionESCtoReceiver.png)
5. Подключить внешнее питание (АКБ).
6. Включить пульт.
7. Подать левым стиком газ (throttle) на 10%.
8. Проверить направления вращения мотора по схеме.
![Проверка вращения моторов](assets/testMotors.png)
9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять).
![Перепайка фазных проводов](assets/resolderingESC.png)
8. Проверить направления вращения мотора по схеме. ![Проверка вращения моторов](assets/testMotors.png)
9. Если необходимо изменить направление вращения, то меняем любые два фазных провода мотора (нужно перепаять). ![Перепайка фазных проводов](assets/resolderingESC.png)
### Монтаж радиоприемника
1. Установить пластиковые стойки 30 мм на раму винтами М3х8.
2. Разъем питания 5В продеть в прорезь.
![Установка стоек и прорезь](assets/mountReceiverStud.png)
3. Приемник прикрепить к нижней дополнительной раме, используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед.
![Установка радиоприемника на деку](assets/mountReceiverDeck.png)
4. Установить 3х проводной шлейф в канал PPM / CH1.
![Подключение радиоприемника](assets/receiverPPM.png)
2. Разъем питания 5В продеть в прорезь. ![Установка стоек и прорезь](assets/mountReceiverStud.png)
3. Приемник прикрепить к нижней дополнительной раме, используя двухсторонний скотч и ориентируясь на гравировку. Антенны направлены вперед. ![Установка радиоприемника на деку](assets/mountReceiverDeck.png)
4. Установить 3х проводной шлейф в канал PPM / CH1. ![Подключение радиоприемника](assets/receiverPPM.png)
5. Продеть в прорезь к разъему 5 В.
6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8.
![Установка нижней деки](assets/mountBottomDeck.png)
##### ВАЖНО
Направление стрелок на плате питания и на дополнительной раме совпадают
6. Прикрутить нижнюю дополнительную раму к стойкам на центральной раме винтами М3х8. ![Установка нижней деки](assets/mountBottomDeck.png)
> **ВАЖНО** Направление стрелок на плате питания и на дополнительной раме совпадают
### Монтаж полетного контроллера
#### Переворачиваем сборку
![Переворачиваем сборку](assets/topPreview.png)
#### Установка полетного контроллера Pixhawk
1. Клеим 2х сторонний скотч по углам полетного контроллера
![Полетный контроллер](assets/pixhawk.png)
#### Установка полетного контроллера PixHawk
##### ВАЖНО
При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера Pixhawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча
1. Клеим 2х сторонний скотч по углам полетного контроллера. ![Полетный контроллер](assets/pixhawk.png)
> **ВАЖНО** При работе моторов возникают вибрации, отрицательно влияющие на показания датчиков полетного контроллера PixHawk. Чтобы избежать этого эффекта, количество слоев двустороннего скотча
лучше увеличить до 4-5.
2. Установить полетный контроллер в центр рамы
![Полетный контроллер](assets/topviewpixhawk.png)
##### ВАЖНО
Стрелки на раме и pixhawk должны быть сонаправлены
2. Установить полетный контроллер в центр рамы. ![Полетный контроллер](assets/topviewpixhawk.png)
> **ВАЖНО** Стрелки на раме и PixHawk должны быть сонаправлены
#### Подключение полетного контроллера по схеме
@@ -368,47 +340,31 @@
![Подключение полетного контроллера](assets/connectionPixhawk.png)
### Сборка регуляторов
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов
![Скотч на бокс регулей](assets/escCase.png)
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы.
![Вид сверху с боксами для регулей](assets/topESCcaseview.png)
1. Клеим 2х сторонний скотч на основание защитного бокса регуляторов. ![Скотч на бокс регулей](assets/escCase.png)
2. Укладываем регуляторы в защитные боксы. Крепим полученную сборку к лучам рамы. ![Вид сверху с боксами для регулей](assets/topESCcaseview.png)
### Установка защиты
1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы
![Установка лучевой защиты](assets/lowsafeDeck.png)
2. Закрепить ножки к пластиковым держателям винтами М3х16
![Установка ножек](assets/safeLegs.png)
3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12
![Установка нижней радиальной защиты](assets/safelowRadial.png)
4. Закрепить верхнюю защиту винтами М3х12
![Установка верхней радиальной защиты](assets/safehighRadial.png)
1. Закрепить нижнюю защиту винтами М3х16 на лучах рамы. ![Установка лучевой защиты](assets/lowsafeDeck.png)
2. Закрепить ножки к пластиковым держателям винтами М3х16. ![Установка ножек](assets/safeLegs.png)
3. Закрепить стойки 30 мм в отверстия нижней защиты винтами М3х12. ![Установка нижней радиальной защиты](assets/safelowRadial.png)
4. Закрепить верхнюю защиту винтами М3х12. ![Установка верхней радиальной защиты](assets/safehighRadial.png)
### Монтаж отсека АКБ
Необходимые компоненты
Необходимые компоненты:
* Винты М3х12 (4 шт)
* Гайки М3 (4 шт)
* Рама дополнительная (1 шт)
* Батарейный отсек (1 шт)
1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками.
![Монтаж отсека АКБ](assets/mountHolder.png)
2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8.
![Монтаж отсека АКБ](assets/isoViewmountHolder.png)
1. Прикрепить батарейный отсек на верхнюю дополнительную раму винтами М3х12 и гайками. ![Монтаж отсека АКБ](assets/mountHolder.png)
2. Прикрепить верхнюю дополнительную раму на стойки винтами М3х8. ![Монтаж отсека АКБ](assets/isoViewmountHolder.png)
3. Установить АКБ в отсек.
### Монтаж антенн
1. Крепим антенны на 2х сторонний скотч или изоленту, а усики продеваем в передние отверстия верхней дополнительной рамы.
@@ -417,16 +373,11 @@
Коптер готов к настройке!
## Безопасность при сборке и настройке
1. Снять пропеллеры.“Все наземные операции производить со снятыми пропеллерами. Устанавливать пропеллеры на моторы только перед полётом.”
2. Отключить аккумулятор. Держать питание выключенным.
“Сборку, настройку и ремонт производить с отключенным питанием. Подключать питание только для тестирования электронных компонентов коптера. После тестирования перед другими работами питание сразу отключить.”
3. Позвать на помощь
“Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.”
2. Отключить аккумулятор. Держать питание выключенным. “Сборку, настройку и ремонт производить с отключенным питанием. Подключать питание только для тестирования электронных компонентов коптера. После тестирования перед другими работами питание сразу отключить.”
3. Позвать на помощь. “Если при выполнении работ возникли какие-либо проблемы, необходимо обратиться к преподавателю или учителю, а не пытаться решить проблему самостоятельно.”
![Безопасность при сборке](assets/safetybyassem.png)
@@ -436,4 +387,4 @@
2. При подключении (отключении) аккумуляторов держаться только за разъёмы, тянуть или дергать за провода запрещается.
3. В случае обрыва разъемов, обнаружения нарушений целостности изоляции или корпуса аккумулятора, не трогая его, немедленно сообщить преподавателю.
## [ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ПАЙКЕ И ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safety.md)
[ТЕХНИКА БЕЗОПАСНОСТИ ПРИ ПАЙКЕ И ЛЁТНОЙ ЭКСПЛУАТАЦИИ КОПТЕРОВ](safety.md)

View File

@@ -6,6 +6,8 @@
Состав конструктора
-------------------
TODO
Дополнительное оборудование
-------------------
![Дополнительное оборудование](assets/additonal_eqipment.jpg)
@@ -121,7 +123,6 @@
![Проверка направления вращения моторов](assets/cl3_testMotorsFlysky.JPG)
Монтаж и подключение полетного контроллера Pixracer
----------------------------
1. Установить Полетный контроллер Pixracer на двухстороний скотч 3М (2-3 слоя)
@@ -186,4 +187,4 @@ USB-разъемы направлены к хвостовой части коп
--------------------
1. Соедините Pixracer и Raspberry, используя micro USB - USB кабель
2. Соедините Arduino и Raspberry, используя micro USB - USB кабель
![Монтаж USB соединителей](assets/cl3_mountUSBconnectors.JPG)
![Монтаж USB соединителей](assets/cl3_mountUSBconnectors.JPG)

BIN
docs/assets/alcopter.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 KiB

BIN
docs/assets/camera_option_1.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/assets/camera_option_2.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/assets/camera_option_3.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
docs/assets/camera_option_4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 408 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

BIN
docs/assets/etcher.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

BIN
docs/assets/fpv_1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
docs/assets/fpv_2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

BIN
docs/assets/fpv_3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 KiB

BIN
docs/assets/fpv_4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 KiB

BIN
docs/assets/fpv_5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
docs/assets/rqt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 688 KiB

After

Width:  |  Height:  |  Size: 688 KiB

View File

@@ -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

View File

@@ -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"/>
```
![](assets/camera_option_1.png)
### 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, камера вверх
![](assets/camera_option_2.png)
### 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"/>
```
![](assets/camera_option_3.png)
### 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"/>
```
![](assets/camera_option_4.png)

View File

@@ -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
View 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
View File

@@ -0,0 +1,2 @@

View File

@@ -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.
![](assets/stmrev.jpg)
@@ -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

View File

@@ -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
View File

@@ -0,0 +1,49 @@
# Установка FPV
## Подготовка курсовой камеры
1. Взять провод-коннектор от камеры и откусить ЧЁРНУЮ сторону 3-х пинового разъема.
1. Подготовить провода провода к подключению:
1. Укоротить провода до нужной длины *.
1. Зачистить (снять 2мм термоизоляции с конца провода, не повредив жилы).
1. Скрутить провода.
1. Залудить, используя пинцет.
\* Длину нужно определить заранее, между платой распределения питания и предположительным место установки камеры!
![FPV1](assets/fpv_1.png)
## Подготовка передатчика
Аналогичную процедуру проводим и здесь:
1. Взять провод-коннектор от передатчика и откусить ЧЁРНУЮ сторону 5-ти пинового разъема.
2. Подготовить провода провода к подключению:
1. Укоротить провода до нужной длины *.
2. Зачистить (снять 2мм термоизоляции с конца провода, не повредив жилы).
3. Скрутить провода.
4. Залудить, используя пинцет.
* Длину нужно определить заранее, между платой распределения питания и предположительным место установки передатчика!
![FPV2](assets/fpv_2.png)
## Подключение FPV
Готовые коннекторы вставить в соответствующие разъёмы и запаять провода питания на плату распределения питания согласно схеме:
![FPV3](assets/fpv_3.png)
> **Warning** В данной схеме питание камеры идёт на 12V (Однако возможно использовать 5V).
> Питание передатчика идёт на питание регулятора (однако возможно использовать 12V).
## Установка компонентов FPV
![FPV4](assets/fpv_4.png)
В качестве крепежных материалов можно использовать:
1. Термоклей;
1. изоленту;
1. стяжки (хомуты);
1. двусторонний скотч.

View File

@@ -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.

View File

@@ -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"
```
## Функции для работы со светодиодной лентой

View File

@@ -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>

View File

@@ -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> цветом выделены поля данных (полезной нагрузки). Для каждого типа сообщения существует свой набор таких полей.

View File

@@ -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).

View File

@@ -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 | | |

View File

@@ -12,7 +12,7 @@
Для установки образа воспользуйтесь утилитой [Etcher](https://etcher.io).
[![Etcher](https://etcher.io/static/screenshot.gif)](https://etcher.io)
[![Etcher](assets/etcher.gif)](https://etcher.io)
## Версия образа

View File

@@ -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).

View File

@@ -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
View 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
View 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

View File

@@ -19,4 +19,4 @@ Raspberry Pi означает «малиновый пирог». Этот сво
* домашний медиа-сервер
* «мозговой центр» для автоматизированных станков или роботов
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту PixHawk.
Собственно, в последнем качестве мы и будем его использовать, благодаря возможности подключения его к автопилоту Pixhawk.

View File

@@ -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).

View File

@@ -1,11 +1,13 @@
Использование rviz
Использование rviz и rqt
===
![](assets/Снимок экрана 2017-11-28 в 23.50.36.png)
![](assets/rviz.png)
Инструмент [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`.
Результат визуализации коптера и камеры представлен ниже:
![](assets/copter_visualization.png)
### Визуализация окружения
Можно просмотреть картинку с дополненной реальностью из топика основной камеры `/main_camera/image_raw`.
Axis или Grid настроенный на фрейм `aruco_map` будут визуализировать расположение [карты ArUco-меток](aruco.md).
Запуск инструментов rqt
---
![](assets/rqt.png)
Для запуска 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
```

View File

@@ -282,4 +282,4 @@
Далее: [Настройка-полетного-контролера](aruco.md#Настройка-полетного-контролера)
Далее: [Подключение Raspberry Pi к PixHawk](connection.md).
Далее: [Подключение Raspberry Pi к Pixhawk](connection.md).

View File

@@ -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 рад/с:

View File

@@ -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>
Флип:

View File

@@ -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

View File

@@ -0,0 +1,2 @@
https://robots.ros.org/gapter/

85
docs/uart.md Normal file
View 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` падает с ошибкой:
![hciuart error](assets/hciuart_error.jpg)
В случае отключения Bluetooth
```
/dev/serial0 -> ttyAMA0
/dev/serial1 -> ttyS0
```