mirror of
https://github.com/CopterExpress/clever-show.git
synced 2026-05-26 15:13:26 +00:00
121 lines
15 KiB
Markdown
121 lines
15 KiB
Markdown
# Быстрый старт на квадрокоптере Клевер 4
|
||
|
||
## Список оборудования
|
||
|
||
Данное ПО предназначено для управления несколькими квадрокоптерами с компьютера-сервера. Для полноценной работы необходимо следующее оборудование:
|
||
|
||
* Один или несколько квадрокоптеров, работающих на базе ПО [Клевер](https://github.com/CopterExpress/clover).
|
||
* Компьютер с операционной системой Ubuntu 18.04.
|
||
* Wifi роутер, работающий на частоте 2.4 ГГц, либо 5.8 ГГц, если эту частоту поддерживают wifi модули коптеров и компьютера.
|
||
|
||
## Подготовка ПО
|
||
|
||
ПО для организации шоу коптеров состоит из 2х основных частей - серверного приложения и клиентской части, которая предоставляется в виде образа для Raspberry Pi.
|
||
|
||
> Серверное приложение и образ для коптера должны быть одинаковой версии для их совместной работы.
|
||
|
||
Актуальная версия образа на текущий момент: [v0.3](https://github.com/copterexpress/clever-show/releases/tag/v0.3).
|
||
|
||
> Обратите внимание: релиз v0.3 работает только для системы позиционирования по потолочным aruco маркерам.
|
||
|
||
Скачайте на компьютер [образ для Raspberry Pi](https://github.com/CopterExpress/clever-show/releases/download/v0.3/clever-show_v0.3.img.zip) и [исходный код](https://github.com/CopterExpress/clever-show/archive/v0.3.zip). Разархивируйте исходный код в удобную директорию.
|
||
|
||
## Настройка роутера
|
||
|
||
Для управления одним или несколькими коптерами требуется подключение коптеров и сервера к одной сети. Для этого требуется отдельный wifi роутер с известным SSID и паролем.
|
||
|
||
## Установка и запуск клиента
|
||
|
||
* Запишите образ на microSD карту, используя [Etcher](https://www.balena.io/etcher/).
|
||
* Вставьте флешку в Raspberry Pi, включите коптер. Дождитесь появления сети `clever-show-XXXX`.
|
||
* Подключитесь к сети коптера, используя пароль `cloverwifi`.
|
||
* Подключитесь к Raspberry Pi на коптере с помощью ssh, используя статический ip `192.168.11.1`, имя пользователя `pi` и пароль `raspberry`.
|
||
|
||
```bash
|
||
ssh pi@192.168.11.1
|
||
```
|
||
|
||
* После подключения выполните скрипт настройки клиента `client-setup` с указанными параметрами - название точки доступа (`SSID`), пароль точки доступа (`password`), имя коптера (`copter name`). Коптер переключится в режим клиента указанной точки доступа и настроит автозапуск клиента `clever-show` на Raspberry Pi.
|
||
|
||
```bash
|
||
sudo client-setup <SSID> <password> <copter name>
|
||
```
|
||
|
||
* Теперь при запуске серверного приложения настроенные коптеры будут отображаться в виде таблицы. Также можно подключаться к Raspberry Pi на коптере по его имени с добавкой .local через `ssh` в указанной при настройке wifi сети, например `ssh pi@clover-1.local`, пароль `raspberry`.
|
||
|
||
**Подробная документация по настройке клиентской части находится [здесь](client.md).**
|
||
|
||
## Установка и запуск сервера
|
||
|
||
* Установите [chrony](https://chrony.tuxfamily.org/index.html) на ваш компьютер для синхронизации времени с коптерами:
|
||
|
||
```bash
|
||
sudo apt install chrony
|
||
```
|
||
|
||
* Установите необходимые python-пакеты с помощью команды (запущенной из директории с исходным кодом)
|
||
|
||
```bash
|
||
pip3 install -r requirements.txt
|
||
```
|
||
|
||
* Подключитесь к wifi сети роутера, к которому подключены коптеры.
|
||
* Скопируйте [файл настроек chrony](../../examples/chrony/server.conf) в `/etc/chrony/chrony.conf`. Если ip адрес сети начинается не с `192.168.`, то исправьте адрес после слова allow в скопированном файле настроек.
|
||
* Перезапустите сервис chrony
|
||
|
||
```bash
|
||
sudo systemctl restart chrony
|
||
```
|
||
|
||
* Перейдите в директорию сервера из директории с исходным кодом и запустите сервер
|
||
|
||
```bash
|
||
cd clever-show/server
|
||
python3 server.py
|
||
```
|
||
|
||
**Подробная документация по настройке серверной части находится [здесь](server.md).**
|
||
|
||
## Подготовка дрона
|
||
|
||
Соберите коптеры по [инструкции по сборке](https://clover.coex.tech/ru/assemble_4.html).
|
||
|
||
Для запуска анимации все коптеры должны иметь настроенную систему позиционирования.
|
||
|
||
Образ `clever-show` для коптера настроен по умолчанию на полёт по **`optical flow`** (как и образ `clover`) - на коптере должен быть установлер лазерный дальномер, а камера должна быть наклонена вниз шлейфом назад. Данная система позиционирования подходит для демонстрации полёта одного коптера или же для синхронного полёта нескольких коптеров по одной и той же анимации внутри помещения. Однако следует учитывать, что данная система координат не задаёт общее начало координат для всех коптеров - началом координат является стартовое положение каждого конкретного коптера. Также стоит принять во внимание тот факт, что данный способ рассчитывает позицию коптера по скорости перемещения его камеры - а значит в позиции коптера постоянно накапливается ошибка, и позиция становится менее точной со временем. Поэтому не рекомендуется использовать эту систему координат для сложных и продолжительных групповых полётов.
|
||
|
||
ПО `clover` официально поддерживает работу со следующими [системами позиционирования](https://clover.coex.tech/ru/programming.html#positioning):
|
||
|
||
* optical flow
|
||
* aruco
|
||
* gps
|
||
|
||
`clever-show` поддерживает все системы позиционирования, что и `clover`.
|
||
|
||
Настройте один коптер на работу с любой системой позиционирования из перечисленных. Проверьте автономный взлёт коптера: для этого выделите в таблице только один коптер , полёт которого вы ходите проверить, и нажмите кнопку `Takeoff` в правой панели приложения [сервера](server.md#тестовые-команды). Коптер должен взлететь на высоту, указанную в параметре `takeoff_height` раздела FLIGHT в конфигурации коптера, и удерживать свою позицию.
|
||
|
||
Если взлёт прошёл успешно, размножьте конфигурацию, настройки позиционирования и параметры полётного контроллера на остальные коптеры. Выделите в таблице только настроенный коптер и загрузите необходимые файлы настроек с выделенного коптера к себе на компьютер:
|
||
|
||
* Файл конфигурации (`.ini`) можно сохранить, кликнув правой кнопкой мыши на строку с настроенным коптером, выбрав из выпадающего меню `Edit config`, затем нажав на кнопку `Save as`. Также можно перетянуть ячейку из столбца `configuration` в файловый менеджер вашей системы - сервер автоматически скопирует файл настройки в открытую директорию файлового менеджера.
|
||
* `.launch` файлы для настройки ПО `clover` можно сохранить с помощью команды `Selected drones -> Retrieve file` в приложении сервера. В открывшемся диалоговом окне введите путь к файлу на коптере - `launch` файлы `clover` находятся в `/home/pi/catkin_ws/src/clover/clover/launch/`, к этому пути нужно дописать нужное имя `.launch` файла, например `/home/pi/catkin_ws/src/clover/clover/launch/clover.launch`. После нажатия кнопки `OK` в диалоговом окне откроется новое диалоговое окно с выбором пути сохранения указанного файла.
|
||
* Файл настройки полётного контроллера можно сохранить, подключившись к полётному контроллеру через приложение [QGroundControl](http://qgroundcontrol.com). Можно подключиться напрямую к полётному контроллеру [через USB порт](https://clover.coex.tech/ru/connection.html), либо через [TCP или UDP мост](https://clover.coex.tech/ru/gcs_bridge.html) (по умолчанию в образе `clever-show` настроен TCP мост, в графе `Host Address` вместо ip адреса можно ввести имя коптера с добавлением .local в конце, например clover-1.local). После подключения нужно перейти в [раздел](https://docs.px4.io/master/en/advanced_config/parameters.html#tools) `Parameters -> Tools -> Save to file...` и выбрать путь для сохранения файла параметров.
|
||
* Файл калибровки камеры полезен для уточнения визуального позиционирования. Название файла калибровки должно состоять из id коптера, для которого была сделана калибровка, с добавлением расширения `.yaml`, например `clover-1.yaml`. Для получения файла калибровки возпользуйтесь [инструкцией](https://clover.coex.tech/ru/camera_calibration.html).
|
||
|
||
После загрузки необходимых файлов с настроенного коптера, скопируйте эти файлы на остальные коптеры: выделите их в таблице и воспользуйтесь командами `Send -> Configuration`, `Send -> Launch files folder`, `Send -> FCU parameters file`, `Send -> Camera calibrations` из раздела `Selected drones` приложения [сервера](server.md#раздел-selected-drones).
|
||
|
||
**Подробная информация про работу с системами позиционирования и их настройку находится [здесь](positioning.md).**
|
||
|
||
> После тестирования образа версии 0.3 выяснилась неработоспособность конфигурации системы позиционирования по умолчанию (optical flow). Для нормального функционирования требуется система позиционирования с постоянным потоком данных через топик визуальной позиции. Рекомендуемая конфигурация для образа 0.3 - [потолочные aruco маркеры](https://clever.coex.tech/ru/aruco_map.html#расположение-маркеров-на-потолке).
|
||
|
||
## Подготовка анимации
|
||
|
||
Создайте анимацию объектов в [Blender](https://www.blender.org) или воспользуйтесь [примерами](../../examples/animations). Условная единица расстояния в Blender конвертируется в метры. Задержка между кадрами по-умолчанию в [настройках коптера](../../drone/config/spec/configspec_client.ini) равна 0.1 секунды (параметр `frame_delay` в разделе ANIMATION), будьте внимательны при настройке частоты кадров в анимации Blender. Следите за скоростями коптеров, чтобы они были не слишком большими: аддон выдаст предупреждение, но всё равно сконвертирует анимацию.
|
||
|
||
Сконвертируйте анимацию с помощью [аддона для Blender](blender-addon.md).
|
||
|
||
Если в анимации несколько объектов и их имена соответствуют именам коптеров, загрузите папку с анимацией на выделенные в таблице коптеры с помощью команды `Send -> Animations` на [сервере](server.md#раздел-selected-drones). Также любой файл анимации можно загрузить отдельно на все выделенные в таблице коптеры с помощью команды `Send -> Animation`.
|
||
|
||
Если вам нужна информация о том, по каким точкам полетит коптер в результате загрузки анимации по текущим параметрам клиента, возпользуйтесь утилитой [animation_info](../../tools/animation_info.py).
|
||
|
||
**Подробная информация по работе модуля анимации находится [здесь](animation.md).**
|