Merge branch 'master' into ros-book

This commit is contained in:
Oleg Kalachev
2020-10-06 02:30:23 +03:00
parent bb9d8edb78
commit d15eb7785e
105 changed files with 11452 additions and 101 deletions

View File

@@ -1,27 +1,24 @@
# Содержание
* [Введение](README.md)
* [Глоссарий](gloss.md)
* [Глоссарий](glossary.md)
* [Безопасность](safety.md)
* Сборка
* [Сборка](assembly.md)
* [Клевер 4.2](assemble_4_2.md)
* [Клевер 4.1](assemble_4_1.md)
* [Клевер 4](assemble_4.md)
* [Клевер 3](assemble_3.md)
* [Клевер 2](assemble_2.md)
* Настройка
* [Первоначальная настройка](setup.md)
* [Настройка](setup.md)
* [Калибровка датчиков](calibration.md)
* [Настройка пульта](radio.md)
* [Работа с FS-A8S](rc_flysky_a8s.md)
* [Полетные режимы](modes.md)
* [Настройка питания](power.md)
* [Настройка failsafe](failsafe.md)
* Ручной полет
* [Основы](flight.md)
* [Ручной полет](flight.md)
* [Упражнения](flight_exercises.md)
* Работа с Raspberry Pi
* [Raspberry Pi](raspberry.md)
* [Работа с Raspberry Pi](raspberry.md)
* [Образ для RPi](image.md)
* [Подключение по Wi-Fi](wifi.md)
* [Подключение к Pixracer](connection.md)
@@ -30,11 +27,9 @@
* [Командная строка](cli.md)
* [Автоматическая проверка](selfcheck.md)
* [Просмотр видеострима с камер](web_video_server.md)
* Программирование
* [Общая информация](programming.md)
* [Программирование](programming.md)
* [Настройка камеры](camera_setup.md)
* Визуальные маркеры (ArUco)
* [Общая информация](aruco.md)
* [Визуальные маркеры (ArUco)](aruco.md)
* [Распознавание маркеров](aruco_marker.md)
* [Навигация по карте маркеров](aruco_map.md)
* [Навигация по Optical Flow](optical_flow.md)
@@ -46,23 +41,20 @@
* [Работа с GPIO](gpio.md)
* [Ультразвуковой дальномер](sonar.md)
* [Компьютерное зрение](camera.md)
* [Визуализация с помощью rviz](rviz.md)
* [Визуализация с помощью rviz и rqt](rviz.md)
* [Автозапуск ПО](autolaunch.md)
* [Использование JavaScript](javascript.md)
* [`mavros`](mavros.md)
* Симулятор
* [Общая информация](simulation.md)
* [Блочное программирование](blocks.md)
* [Симулятор](simulation.md)
* [Сборка на собственной машине](simulation_native.md)
* [Установка виртуальной машины](simulation_vm.md)
* [Использование симулятора](simulation_usage.md)
* ROS: учебник
* [Общая информация](ros.md)
* [ROS: учебник](ros.md)
* [Графические инструменты](ros_gui.md)
* [Соглашения ROS](ros_conventions.md)
* [Продвинутое использование](ros_advanced.md)
* [ROS](ros.md)
* [MAVROS](mavros.md)
* Дополнительные материалы
* [Дополнительные материалы](supplementary.md)
* [COEX Pix](coex_pix.md)
* [Гид по автономному полету](auto_setup.md)
* [Имя хоста](hostname.md)
@@ -99,14 +91,14 @@
* [Светодиодная лента (legacy)](leds_old.md)
* [Вклад в Клевер](contributing.md)
* [Переход на версию 0.20](migrate20.md)
* Мероприятия
* [Мероприятия](events.md)
* [CopterHack-2021](copterhack2021.md)
* [CopterHack-2019](copterhack2019.md)
* [Олимпиада НТИ 2019](nti2019.md)
* [Робокросс-2019](robocross2019.md)
* [CopterHack-2018](copterhack2018.md)
* [CopterHack-2017](copterhack2017.md)
* Проекты на базе Клевера
* [Список проектов](projects.md)
* [Проекты на базе Клевера](projects.md)
* [Шоу коптеров](clever-show.md)
* [Innopolis Open 2020 (L22_ÆRO)](innopolis_open_L22_AERO.md)
* [Олимпиада НТИ 2020 (P4DF2)](nti2020_p4df2.md)
@@ -126,4 +118,4 @@
* [Теория и видеоуроки](lessons.md)
* [Учебно-методическое пособие](metod.md)
* [Контрольные и проверочные материалы](tests.md)
* [Контрольные материалы](tests.md)

View File

@@ -413,7 +413,7 @@
<img src="../assets/assembling_clever4/final_1.png" width=300 class="zoom border center">
Обязательно установите и настройте индикатор напряжения перед полетом, чтобы не переразрядить аккумулятор. Для настройки индикатора используйте конпку расположенную в его основании. Отображаемые цифры во время настройки обозначают минимально возможное напряжение в каждой [ячейке](gloss.md#ячейка--банка-акб) аккумулятора, рекомендуемое значение **3.5**.
Обязательно установите и настройте индикатор напряжения перед полетом, чтобы не переразрядить аккумулятор. Для настройки индикатора используйте конпку расположенную в его основании. Отображаемые цифры во время настройки обозначают минимально возможное напряжение в каждой [ячейке](glossary.md#ячейка--банка-акб) аккумулятора, рекомендуемое значение **3.5**.
> **Info** Звуковая индикация означает, что ваш аккумулятор разряжен и его нужно зарядить.

View File

@@ -234,7 +234,7 @@
<img src="../assets/assembling_clover4_1/assembly.jpg" width=300 class="zoom border center">
Обязательно установите и настройте индикатор напряжения перед полетом, чтобы не переразрядить аккумулятор. Для настройки индикатора используйте кнопку, расположенную в его основании. Отображаемые цифры во время настройки обозначают минимально возможное напряжение в каждой [ячейке](gloss.md#ячейка--банка-акб) аккумулятора, рекомендуемое значение **3.5**.
Обязательно установите и настройте индикатор напряжения перед полетом, чтобы не переразрядить аккумулятор. Для настройки индикатора используйте кнопку, расположенную в его основании. Отображаемые цифры во время настройки обозначают минимально возможное напряжение в каждой [ячейке](glossary.md#ячейка--банка-акб) аккумулятора, рекомендуемое значение **3.5**.
> **Info** Звуковая индикация означает, что ваш аккумулятор разряжен и его нужно зарядить.

View File

@@ -174,6 +174,12 @@
5. На деку захвата установите дальномер с помощью самоконтрящихся гаек и винтов М3х8, и приклейте радиоприемник с помощью двустороннего скотча.
> **Сaution** Обратите внимание, что крепящие гайки расположены обратной стороны от платы дальномера, как на схеме, иначе есть большая вероятность повредить плату.
<!---->
> **Hint** Также плата может быть закреплена на саморезы М2 в соседние отверстия.
<img src="../assets/assembling_clever4_2/raspberry_5.png" width=300 class="zoom border center">
6. Установите 4 стойки 20мм и закрепите их с помощью винтов М3х8.

27
docs/ru/assembly.md Normal file
View File

@@ -0,0 +1,27 @@
# Сборка Клевера
В этом разделе находится статьи, описывающие сборку каждой из версии Клевера.
<table class=versions>
<tr><th>Версия</th><th>Изображение</th></tr>
<tr>
<td><a href="assemble_4_2.md">Клевер&nbsp;4.2</a></td>
<td><img src="../assets/versions/clover_4.jpg" width=200></td>
</tr>
<tr>
<td><a href="assemble_4_2.md">Клевер&nbsp;4.1</a></td>
<td><img src="../assets/versions/clover_4.jpg" width=200></td>
</tr>
<tr>
<td><a href="assemble_4_2.md">Клевер&nbsp;4</a></td>
<td><img src="../assets/versions/clover_4.jpg" width=200></td>
</tr>
<tr>
<td><a href="assemble_4_2.md">Клевер&nbsp;3</a></td>
<td><img src="../assets/versions/clover_3.jpg" width=200></td>
</tr>
<tr>
<td><a href="assemble_4_2.md">Клевер&nbsp;2</a></td>
<td><img src="../assets/versions/clover_2.jpg" width=200></td>
</tr>
</table>

110
docs/ru/blocks.md Normal file
View File

@@ -0,0 +1,110 @@
# Блочное программирование Клевера
<img src="../assets/blocks/blockly.svg" width=200 align="right">
Возможность блочного визуального программирования автономных полетов Клевера добавлена в [образ для RPi](image.md), начиная с версии **0.21**. Реализация блочного программирования основана на [Google Blockly](https://developers.google.com/blockly). Интеграция Blockly в Клевер позволяет понизить входной порог в программирование автономных полетов до минимального уровня.
## Конфигурация
Для корректной работы работы блочного программирования аргумент `blocks` в launch-файле Клевера (`~/catkin_ws/src/clover/clover/launch/clover.launch`) [должен быть в значении](cli.md#editing) `true`:
```xml
<arg name="blocks" default="true"/>
```
## Запуск
Для того, чтобы открыть интерфейс блочного программирования в Клевере, [подключитесь к Клеверу по Wi-Fi](wifi.md) и перейдите на страницу http://192.168.11.1:8080/clover_blocks/ либо нажмите ссылку *Blocks programming* на [основной веб-странице Клевера](wifi.md#веб-интерфейс).
Интерфейс выглядит следующим образом:
<img src="../assets/blocks/blocks.png" width=600>
Соберите необходимую программу из блоков в меню слева а затем нажмите кнопку *Run* для ее запуска. Также вы можете просмотреть сгенерированный код на языке Python, переключившись во вкладку *Python*.
Кнопка *Stop* позволяет остановить программу. Нажатие кнопки *Land* также останавливает программу и сажает дрон.
## Сохранение и загрузка
<img src="../assets/blocks/save.png" width=300 align=right>
Для сохранения программы откройте меню справа сверху, выберите пункт меню *Save* и введите название программы. Название программы может содержать только латинские буквы, дефис, подчеркивание и точку. Все ранее сохраненные программы будут доступны в этом же меню.
На карте памяти сохраненные XML-файлы программ хранятся в каталоге `/catkin_ws/src/clover/clover_blocks/programs/`.
В этом же меню доступны примеры программ (подкаталог `examples`).
## Блоки
Набор блоков приблизительно аналогичен набору ROS-сервисов [API автономных полетов Клевера](simple_offboard.md). В этом разделе приведено описание некоторых из них.
Блоки Клевера поделены на 4 категории:
* <span style="padding:2px;color:white;background:#9d5ca6">Flight</span> команды, имеющие отношение к полету.
* <span style="padding:2px;color:white;background:#ff9b00">State</span> блоки, позволяющие получить те или иные параметры текущего состояния коптера.
* <span style="padding:2px;color:white;background:#01d754">LED</span> блоки для управления [LED-лентой](leds.md).
* <span style="padding:2px;color:white;background:#5b97cc">GPIO</span> блоки для работы с [GPIO-пинами](gpio.md).
В остальных категориях находятся стандартные блоки Google Blockly.
### take_off
<img src="../assets/blocks/take-off.png" srcset="../assets/blocks/take-off.png 2x">
Взлететь на указанную высоту в метрах. Высота может быть произвольным блоком, возвращающим числовое значение.
Флаг `wait` определяет, должен ли дрон ожидать окончания взлета перед выполнением следующего блока.
### navigate
<img src="../assets/blocks/navigate.png" srcset="../assets/blocks/navigate.png 2x">
Прилететь в заданную точку. Координаты точки задаются в метрах.
Флаг `wait` определяет, должен ли дрон ожидать завершения полета в точку перед выполнением следующего блока.
#### Поле *relative to* {#relative_to}
В блоке может быть выбрана [система координат](frames.md), в которой задана целевая точка:
* *body* координаты относительно коптера: вперед (*forward*), влево (*left*), вверх (*up*).
* *markers map* система координат, связанная с [картой ArUco-маркеров](aruco_map.md).
* *marker* система координта, связанная с [ArUco-маркером](aruco_marker.md); появляется поле для ввода ID маркеа.
* *last navigate target* координаты относительно последней заданной точки для навигации.
* *map* локальная система координат коптера, связана с местом его инициализации.
### land
<img src="../assets/blocks/land.png" srcset="../assets/blocks/land.png 2x">
Произвести посадку.
Флаг `wait` определяет, должен ли дрон ожидать окончания посадки перед выполнением следующего блока.
### wait
<img src="../assets/blocks/wait.png" srcset="../assets/blocks/wait.png 2x">
Ожидать заданное время в секундах. Время ожидания может быть произвольным блоком, возвращающим числовое значение.
### wait_arrival
<img src="../assets/blocks/wait-arrival.png" srcset="../assets/blocks/wait-arrival.png 2x">
Ожидать, пока дрон долетит до целевой точки (заданной в [navigate](#navigate)-блоке).
### get_position
<img src="../assets/blocks/get-position.png" srcset="../assets/blocks/get-position.png 2x">
Блок позволяет получить позицию, скорость и угол по рысканью дрона в заданной [системе координат](#relative_to).
### set_effect
<img src="../assets/blocks/set-effect.png" srcset="../assets/blocks/set-effect.png 2x">
Блок позволяет устанавливать различные анимации на LED-ленту аналогично [ROS-сервису `set_effect`](leds.md#set_effect).
Пример использования блока для установки случайного цвета (блоки, связанные с цветами находятся в категории *Colour*):
<img src="../assets/blocks/random-color.png" srcset="../assets/blocks/random-color.png 2x">

View File

@@ -1,4 +1,5 @@
{
"language": "ru",
"root": "."
"root": ".",
"structure": {"glossary": "_GLOSSARY.md" }
}

View File

@@ -1,5 +1,7 @@
# Блочное программирование Клевера
> **Warning** В этой статье описана неофициальная реализация блочного программирования. [Официальная поддержка](blocks.md) появилась в образе Клевера версии **0.21**.
<img src="../assets/clever_blocks.jpg">
В этой статье я опишу процесс скачивания, установки и запуска блочного конструктора программ для квадрокоптера Клевер.

View File

@@ -0,0 +1,5 @@
# CopterHack 2021
CopterHack 2021 это командный конкурс по разработке проектов с открытым исходным кодом для платформы квадрокоптера "Клевер".
Все информацию о мероприятии смотрите на официальном сайте: https://ru.coex.tech/copterhack.

5
docs/ru/events.md Normal file
View File

@@ -0,0 +1,5 @@
# Мероприятия
"Клевер" применяется в в большом количестве образовательных мероприятий и соревнований: WorldSkills, Олимпиада НТИ, Copter Hack, Всероссийская Робототехническая Олимпиада и других.
Этот раздел содержит статьи, написанные специально к тому или иному мероприятию.

View File

@@ -4,6 +4,10 @@ GPIO (General-Purpose Input/Output) это тип пинов на Raspberry
> **Info** Используйте [распиновку](https://pinout.xyz), чтобы понять, какие из пинов на Raspberry Pi поддерживают GPIO и ШИМ.
<!---->
> **Info** Для того, чтобы не создавалось конфликтов при использовании портов *GPIO* в образе закрыт доступ для портов 0, 1, 2, 3, 14, 15, на которые выведены интерфейсы подключения I2C и UART.
Для работы с GPIO на [образе для RPi](image.md) предустановлена библиотека [`pigpio`](http://abyz.me.uk/rpi/pigpio/). Чтобы взаимодействовать с этой библиотекой, запустите соответствующий демон:
```bash
@@ -77,7 +81,7 @@ pi.set_servo_pulsewidth(13, 2000)
![GPIO Mosfet Magnet Connection](../assets/gpio_mosfet_magnet.png)
Для подключения электромагнита используйте полевой транзистор (MOSFET). Подключите транзистор к одному из GPIO-пинов Raspberry Pi. Для управления магнитом, подключенным к 15 пину, используйте такой код:
Для подключения электромагнита используйте полевой транзистор (MOSFET). Подключите транзистор к одному из GPIO-пинов Raspberry Pi. Для управления магнитом, подключенным к 18 пину, используйте такой код:
```python
import time
@@ -85,14 +89,14 @@ import pigpio
pi = pigpio.pi()
# устанавливаем режим 15 пина на вывод
pi.set_mode(15, pigpio.OUTPUT)
# устанавливаем режим 18 пина на вывод
pi.set_mode(18, pigpio.OUTPUT)
# включаем электромагнит
pi.write(15, 1)
pi.write(18, 1)
time.sleep(2)
# отключаем электромагнит
pi.write(15, 0)
pi.write(18, 0)
```

View File

@@ -14,7 +14,7 @@
> **Caution** Обратите внимание, что светодиодную ленту нужно питать от стабильного источника энергии. Если вы подключите питание напрямую к Raspberry, то это создаст слишком большую нагрузку на ваш микрокомпьютер. Для снятия нагрузки с Raspberry можно подключить питание к преобразователю BEC.
## Высокоуровневое управление лентой
## Высокоуровневое управление лентой {#set_effect}
1. Для работы с лентой подключите ее к питанию +5v 5v, земле GND GND и сигнальному порту DIN GPIO21. Обратитесь [к инструкции по сборке](assemble_4_2.md#установка-led-ленты) для подробностей.
2. Включите поддержку LED-ленты в файле `~/catkin_ws/src/clever/clever/launch/clever.launch`:
@@ -95,16 +95,26 @@ disconnected: { effect: blink, r: 255, g: 50, b: 50 }
<!-- ... -->
```
В левой части таблицы указывается событие, на которая лента должна среагировать. В правой части указывается эффект (анимация), который необходимо включить при возникновении события. Список поддерживаемых событий:
В левой части таблицы указывается событие, на которая лента должна среагировать. В правой части указывается эффект (анимация), который необходимо включить при возникновении события.
* `startup` запуск всех систем Клевера;
* `connected` успешное подключение к полетному контроллеру;
* `disconnected` разрыв связи с полетным контроллером;
* `armed` переключение полетного контроллера в состояние Armed;
* `disarmed` переключение полетного контроллера в состояние Disarmed;
* `stabilized`, `acro`, `rattitude`, `altctl`, `posctl`, `offboard`, `mission`, `rtl`, `land` переключение полетных режимов;
* `error` возникновение ошибки в ROS-нодах или полетном контроллере (*ERROR*-сообщение в топике `/rosout`);
* `low_battery` – низкий заряд батареи (порог настраивается в параметре `threshold`).
Список поддерживаемых событий:
<table>
<tr><th>Событие</th><th>Описание</th><th>Эффект по умолчанию</th></tr>
<tr><td><code>startup</code></td><td>Запуск всех систем Клевера</td><td>Белый</div></td></tr>
<tr><td><code>connected</code></td><td>Успешное подключение к полетному контроллеру</td><td>Эффект радуги</td></tr>
<tr><td><code>disconnected</code></td><td>Разрыв связи с полетным контроллером</td><td><div class=circle style="background:rgb(255,50,50)"></div>Мигание красным</div></td></tr>
<tr><td><code>armed</code></td><td>Переход в состояние Armed</td><td></td></tr>
<tr><td><code>disarmed</code></td><td>Переход в состояние Disarmed</td><td></td></tr>
<tr><td><code>acro</code></td><td>Режим Acro</td><td><div class=circle style="background:rgb(245,155,0)"></div>Оранжевый</div></td></tr>
<tr><td><code>stabilized</code></td><td>Режим Stabilized</td><td><div class=circle style="background:rgb(30,180,50)"></div>Зеленый</td></tr>
<tr><td><code>altctl</code></td><td>Режим Altitude</td><td><div class=circle style="background:rgb(255,255,40)"></div>Желтый</td></tr>
<tr><td><code>posctl</code></td><td>Режим Position</td><td><div class=circle style="background:rgb(50,100,220)"></div>Синий</td></tr>
<tr><td><code>offboard</code></td><td>Режим Offboard</td><td><div class=circle style="background:rgb(220,20,250)"></div>Фиолетовый</td></tr>
<tr><td><code>rattitude</code>, <code>mission</code>, <code>rtl</code>, <code>land</code></td><td>Переход в соответствующие режимы</td><td></td></tr>
<tr><td><code>error</code></td><td>Возникновение ошибки в ROS-нодах или полетном контроллере (<i>ERROR</i>-сообщение в топике <code>/rosout</code>)</td><td><div class=circle style="background:rgb(255,0,0)"></div>Мигнуть красным</td></tr>
<tr><td><code>low_battery</code></td><td>Низкий заряд батареи (порог настраивается в параметре <code>threshold</code>)</td><td><nobr><div class=circle style="background:rgb(255,0,0)"></div>Быстрое мигание красным</nobr></td></tr>
</table>
> **Note** Для корректной работы сигнализации LED-лентой о низком заряде батареи необходимо корректная [калибровка электропитания](power.md#Калибровка-делителя-напряжения).

View File

@@ -1,5 +1,9 @@
# Проекты на базе Клевера
Конструктор "Клевер" широко используется в для проектной деятельности. В этом разделе приведены проектные идеи, а также статьи пользователей, рассказывающие о реализованных проектах.
## Примеры
Список возможных проектов для стажировок и практических работ в вузах и колледжах.
|Проект/Идея|Примечания|

5
docs/ru/supplementary.md Normal file
View File

@@ -0,0 +1,5 @@
# Дополнительные материалы
Этот раздел содержит статьи, не вошедшие в основные разделы, а так же статьи пользователей по той или иной проблематике, связанной с БПЛА.
Чтобы узнать больше о публикации текста в этом разделе, смотрите статью "[Вклад в Клевер](contributing.md)".