Введение · clover
«Клевер» — это учебный конструктор программируемого квадрокоптера, состоящего из популярных открытых компонентов, а также набор необходимой документации и библиотек для работы с ним.
Набор включает в себя полетный контроллер COEX Pix с полетным стеком PX4, Raspberry Pi 4 в качестве управляющего бортового компьютера, модуль камеры для реализации полетов с использованием компьютерного зрения, а также набор различных датчиков и другой периферии.
Платформа Клевера также включает в себя преднастроенный образ для Raspberry Pi в полным набором необходимого ПО для работы со всей периферией и программирования автономных полетов. Исходный код платформы Клевера и данной документации открыт и доступен на GitHub.
Если вы детально изучили документацию, но так и не нашли ответа на свой вопрос, напишите в чат техподдержки и наши специалисты вам с радостью ответят: @COEXHelpdesk.
Также у нас есть чат для программистов, которые разрабатывают под PX4, автономную навигацию в помещениях и рои дронов: @DroneCode.
Чат по разработке самой платформы Клевера и образа для RPi: @devclover.
Вы можете скачать PDF-версию этой документации. The English version of this documentation is available.
Автоматический полет
В этих режимах квадрокоптер игнорирует сигналы с пульта и летает по какой-либо автоматической программе.
Базовые команды
Вам пригодятся основные команды Linux, а также специальные команды Clover, чтобы уверенно работать в системе.
Показать список файлов:
ls
Перейти в папку с прописыванием пути к ней:
cd catkin_ws/src/clover/clover/launch/
Перейти в домашнюю директорию:
cd
Открыть файл file.py:
nano file.py
Открыть файл clover.launch с прописыванием полного пути к нему (сработает, если вы находитесь в другой папке):
nano ~/catkin_ws/src/clover/clover/launch/clover.launch
Сохранить файл (нажимать последовательно):
Ctrl X; Y; Enter
Удалить файл или папку с названием name (ВНИМАНИЕ: операция выполнится без подтверждения. Будьте осторожны!):
rm -rf name
Создать папку с названием myfolder:
mkdir myfolder
Полная перезагрузка Raspberry Pi:
sudo reboot
Перезапуск только систем Клевера:
sudo systemctl restart clover
Выполнить самопроверку Клевера:
rosrun clover selfcheck.py
Остановить программу
Ctrl C
Запустить программу myprogram.py на Питоне:
python3 myprogram.py
Журнал событий процессов Клевера. Пролистывать список можно нажатием Enter или сочетанием клавиш Ctrl V (пролистывает быстрее):
journalctl -u clover
Открыть файл sudoers от имени администратора (он не откроется без прописывания sudo. Через sudo можно запускать другие команды, если они не открываются без прав администратора):
sudo nano /etc/sudoers
Выполнение автоматической проверки
Проверку следует выполнить, когда вы полностью настроили дрон, а также при возникновении неполадок. Подробно процедура описана в статье «Автоматическая проверка».
Запись программы на дрон
Самый простой способ – это скопировать текст программы, создать новый файл в командной строке Клевера и вставить текст программы в файл.
Написание программы
В статье «Автономный полет» описана работа с модулем simple_offboard, который создан для простого программирования дрона. В ней даны описания основных функций, а также примеры кода.
-
Скопируйте из раздела «Использование из языка Python» пример кода и вставьте в редактор (например, в Visual Studio Code, PyCharm, Sublime Text, Notepad ).
-
Сохраните документ с расширением .py для включения подсветки текста.
-
Далее необходимо добавить полётные команды в программу. Примеры таких команд представлены в статье. Нужно написать функции для взлета и полета в точку, а также для посадки.
-
Взлет.
Для взлета можно использовать функцию
navigate
:navigate(x=0, y=0, z=1.5, speed=0.5, frame_id='body', auto_arm=True)
Добавьте эту строку внизу программы.
Также добавьте команду ожидания:
rospy.sleep(3)
Важно выделить время на выполнение команды navigate
, иначе коптер, не дожидаясь выполнения предыдущей команды, сразу перейдет к выполнению следующей. Для этого используется команда rospy.sleep()
. В скобках указывается время в секундах. Функция rospy.sleep()
относится к предыдущей команде navigate
, а не к последующей, то есть это время, которое мы даем на то, чтобы долететь до точки, обозначенной в предыдущем navigate
.
-
Зафиксировать положение дрона в системе координат маркерного поля.
Для этого нужно выполнить
navigate
и указать в нем необходимые координаты (например, x=1, y=1, z=1.5) и выбрать систему координат (frame_id
):navigate(x=1, y=1, z=1.5, speed=1, frame_id='aruco_map')
-
В итоге должно получиться:
navigate(x=0, y=0, z=1.5, speed=0.5, frame_id='body', auto_arm=True) rospy.sleep(3) navigate(x=1, y=1, z=1.5, speed=1, frame_id='aruco_map')
Обратите внимание, что параметр
auto_arm=True
ставится только при первом взлете. В остальных случаях его выставлять нельзя, иначе возникнут проблемы с перехватом управления. -
Если вы хотите добавить другие точки для пролета, нужно дописать еще один
navigate
иrospy.sleep()
. Время нужно вычислить отдельно для каждой точки в зависимости от скорости полета и расстояния между точками.Например, если мы хотим полететь в точку (3, 3, 1.5):
navigate(x=3, y=3, z=1.5, speed=1, frame_id=‘aruco_map’) rospy.sleep(3)
Координаты не должны выходить за пределы вашего поля. Если поле имеет размер 4х4 метра, максимальное значение координат, которое стоит указывать, — 4.
-
После пролета по точкам нужно приземлиться. Следующая строка ставится в конце программы:
land()
Настройка параметров raspberry pi для автономного полета
Большинство параметров, необходимых для полета, хранится в папке ~/catkin_ws/src/clover/clover/launch/.
Настройка полетного контроллера для автономного полета
Обязательно выберете файл скачанной прошивки после нажатия Firmware.
Ручное управление
При ручном управлении пилот управляет квадрокоптером напрямую. GPS, данные с компьютерного зрения и барометр не используются. Для полетов в этих режимах необходимы хорошие навыки пилотирования мультикоптеров.
- STABILIZED/MANUAL — режим стабилизации горизонтального положения. Управление газом, углами наклона коптера по тангажу и крену, угловой скоростью по рысканью.
- ACRO — управление газом и угловой скоростью коптера по тангажу, крену и рысканью. Используется дрон-рейсерами и в шоу 3D-пилотирования для выполнения трюков.
- RATTITUDE — в центре правый стик аналогичен STABILIZED, по краям переходит в режим ACRO.
С использованием дополнительных датчиков
- ALTCTL (Altitude) — управление скоростью изменения высоты полета, углами по тангажу и крену и угловой скоростью по рысканью. Используется барометр (или иной датчик высоты).
- POSCTL (Position) — управление скоростями набора высоты, скоростью движения вперед/назад и вправо/влево, угловой скоростью по рысканью. Наиболее простой для полетов режим. Используется барометр, GPS, компьютерное зрение, другие датчики.