Дополнение к Litchi
Почитав эту статью: https://habr.com/ru/articles/684858 (особенно заинтересовали Waypoints) и обзаведясь коптером DJI, пришел к выводу — да, классно, здорово, но не удобно. Если стоит задача облететь и снять видео поля площадью пару десятков гектаров, то ставить ручками точки маршрута не очень удобно. Занимает много времени.
А таких точек может быть десятки.
Согласитесь не очень продуктивно?! А хочется просто отрисовать прямоугольник и чтобы в нем сгенерировался маршрут. Пытаясь найти более оптимальную программу наткнулся на программу Dji TERRA. Но она платная, так еще не все коптеры поддерживают эту программу. Только определенные линейки. А на вопрос к поддержке Litchi: «Как можно сделать мою хотелку?!)» На что ответили, что в ближайшие несколько месяцев они планируют внедрить этот функционал. Что-ж, я терпеливый, готов подождать, но не долго. Поскольку ждать и ничего не делать это скучно я решил попробовать сам.
Используя библиотеку folium за основу, языки Python, JS и в помощь HTMl и CSS получилось небольшое дополнение. Функционал таков: я отрисовываю прямоугольник, в нем генерируются Waypoints, все сохраняю в CSV и импортирую в Litchi.
было бы видео, но я не знаю, как сюда видео прикреплять. функционал у приложения простой: я выбираю место на карте, нажимаю на кнопку «Отрисовать прямоугольник» и вот результат. В отрисовованном прямоугольнике появляются сгенерированные точки, с маршрутом по которому будет летать коптер
Скриншот из приложения
Теперь к меню:
Кнопка прямоугольника — отрисовка прямоугольника
Под ней кнопка — редактировать отрисованный прямоугольник.
Здесь все просто. Комментарии ни к чему.
Не все кнопки работают, но все же.
Здесь остановлюсь по подробнее.
Заполняемое окно «Расстояние» — задаю расстояние между точками (линиями)
Заполняемое окно «Высота» — Высота на которой коптер будет лететь.
Пока эти значения применяются ко всему маршруту, т.е. не сможем по середине изменить высоту или расстояние между точками.
Кнопки «Вертикальные» или «Горизонтальные» — выбор каким маршрутом коптер летать будет
«Горизонтальный полет»
«Вертикальный полет»
Кнопка «Изменить 1 точку» — меняет местоположение 1 точки против часовой стрелки по углам. Т.е. 4 варианта откуда может коптер начать свой облет.
Дальше, если надо редактируем площадь и скачиваем в формате CSV.
И этот CSV спокойно импортируем в Litchi Hub.
Импортированный CSV с вертикальным облетом
Сейчас все настроено так, чтобы на первой точке коптер сначала опускал камеру вертикально вниз и начинал снимать, а на последней прекращал съемку и возвращался домой. и скорость стоит, пока по стандарту — 15 м/с. Эти значения можно потом будет поменять и будет потихоньку внедряться по мере свободного времени в данное приложение.
Предстоит обязательно внедрить сюда следующие функции:
Ограничение дальности полета между точками до 1999 метров. Litchi дальше не отправляет коптер по Waypoints.
Сейчас есть загрузка KML. Хочу ограничить облет в рамках границ KML, чтобы коптер лишнее не летал.
Загрузка KML
Cейчас эта функция реализована в другом коде — при помощи библиотеки Matplotlib.
Так выглядит ограничение в Matplotlib.
И так выглядит в Litchi
Конечно, можно еще много функций перенести из Litchi, что я и буду делать, чтоб оставалось только загрузить CSV в Litchi Hub и сохранять у них в облаке. Так же выяснить какую площадь обхватывает камеры определенных коптеров, чтобы можно было делать фотосъемку интервалом — чтобы получить полное изображение поля.
Если есть у кого еще идеи — я прислушаюсь, что можно добавить. И если будет отклик, то могу найти какой-нибудь сервер и выкинуть на пользование в общий доступ.
P.S. Обязательно следите за полетом коптера — все коптеры не хотят облетать препятствие, если используешь Litchi. И если батарейка садится по середине пути, то аппарат не хочет лететь на первую точку, а летит куда-то в стратосферу (у меня рекорд — 500 метров высоты). Поэтому его придется возвращать самостоятельно и начинать по новому с ближайшей точки. Если коптер пролетел без происшествий до последней точки, то он прекращает съемку и возвращается на первую точку.