Поворачиваем камеру БЛА в нужном направлении
- Подробности
- Просмотров: 2791
Создание маршрута автоматического полета БЛА для фотограмметрии заслуживает отдельной темы разговора, а особенно в горных районах. Тут пойдет разговор о добавлении команд задающих нужное направление подвеса камеры в полетном задании.
Как и многие, на своем самолете я использую автопилот ArduPilot в связке с программой Mission Planner, при этом подвес камеры построен на сервоприводах.
При автоматическом создании полетного задания в Mission Planner, направления подвеса камеры никак не создаются. И их приходится добавлять в ручную.
В протоколе MAVLink существуют два типа команд задающих нужное направление, это DO_MOUNT_CONTROL и DO_SET_ROI.
DO_MOUNT_CONTROL - задает углы курса,крена, и тангажа, что предпочтительно и автопилоту придется выполнять меньше вычислений в полете. Но недостаток этого метода в том, что направления очень сложно контролировать в программной среде Mission Planner.
DO_SET_ROI - задает точку интереса, то-есть точку на которую будет "смотреть камера" и поворачиваться подвес при правильной его настройке. Преимущество данного метода в том, что эти точки легче контролировать на карте программы и легче редактировать. Недостаток в том, что положение летательного аппарата постоянно меняется и данный угол будет постоянно загружать процессор лишней работой, так-же отклонение летательного аппарата от маршрута будет влиять на дерикционный угол подвеса, хотя и не значительно, на уровне ошибок самого подвеса камеры.
На изображении указаны:
зелеными маркерами - путевые точки
красными маркерами - точки интереса ROI (region of interest)
желтой полосой - маршрут и направление маршрута
Поскольку ROI - точки интереса, требуется вводить вручную, а маршрут может состоять из десятков или сотен команд, то эта задача становится достаточно сложной и требует много времени.
На днях, в июне 2017года, я заканчивал курс по основам компьютерных наук CS50 at Harvard (Computer Science 50), проводимый Technology Nation Uzhgorod - by Brain Basket Foundation
и решил свое финальное задание посвятить автоматизации задания направлений камер для моего автопилота.
По сути решение было написано на JavaScript, с небольшим оформлением на карте Google Maps. Скрипт работает только на стороне пользователя, то есть все математические операции выполняет ваш броузер и данные о полетах известны только Вам и больше никому. Это означает, что можно сохранить страничку и получать результат даже без подключения к интернет, скрипт распространяется без ограничений, с условием что в коде еще находятся Google Maps API, которые накладывают собственные ограничения. Так-же автор снимает с себя ответственность за все возможные последствия использования скрипта, пользователь использующий скрипт должен понимать, что делает и самостоятельно контролировать все возможные ошибки в файле путевых точек!
Результат работы скрипта:
Скрипт считывает из файла команды (подробнее описывается по этой ссылке MAVLINK Common Message Set и по этой Waypoint File Format ), находит путевые точки, добавляет точки интереса, остальные команды перезаписываются с учетом последовательной нумерации.
В скрипте отсутствуют многие проверки, нет проверки "файл ли это путевых точек", нет проверки на наличие команд DO_MOUNT_CONTROL и DO_SET_ROI и тд..
Принцип работы со скриптом:
Сперва надо сохранить файл путевых точек, из программы, в моем случае в Mission Planner это кнопка Save WP File:
Выбрать файл (скрипт доступен в конце статьи) и нажать Read, на экране отобразится карта с маршрутом, путевыми точками и рассчитанными точками интереса. Сохранить уже готовый файл в нужное место, расширение файла по умолчанию TXT. В нижней части окошка будет отображен ход работы скрипта
Далее открыть данный файл в программе, в моем случае Mission Planner и выполнить проверку целостности файла возможно выполнить исправления.
Скрипт добавляющий ROI, или команды do_mount_control на выбор:
2017.08.31 добавлена возможность получать в маршруте команды направляющую подвес по курсу.
Образец для работы скрипта можно скачать тут.