Дополнение к 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 с вертикальным облетом

Импортированный CSV с вертикальным облетом

Сейчас все настроено так, чтобы на первой точке коптер сначала опускал камеру вертикально вниз и начинал снимать, а на последней прекращал съемку и возвращался домой. и скорость стоит, пока по стандарту — 15 м/с. Эти значения можно потом будет поменять и будет потихоньку внедряться по мере свободного времени в данное приложение.
Предстоит обязательно внедрить сюда следующие функции:

  • Ограничение дальности полета между точками до 1999 метров. Litchi дальше не отправляет коптер по Waypoints.

  • Сейчас есть загрузка KML. Хочу ограничить облет в рамках границ KML, чтобы коптер лишнее не летал.

Загрузка KML

Загрузка KML

Cейчас эта функция реализована в другом коде — при помощи библиотеки Matplotlib.

Так выглядит ограничение в Matplotlib.

Так выглядит ограничение в Matplotlib.

И так выглядит в Litchi

И так выглядит в Litchi

Конечно, можно еще много функций перенести из Litchi, что я и буду делать, чтоб оставалось только загрузить CSV в Litchi Hub и сохранять у них в облаке. Так же выяснить какую площадь обхватывает камеры определенных коптеров, чтобы можно было делать фотосъемку интервалом — чтобы получить полное изображение поля.
Если есть у кого еще идеи — я прислушаюсь, что можно добавить. И если будет отклик, то могу найти какой-нибудь сервер и выкинуть на пользование в общий доступ.

P.S. Обязательно следите за полетом коптера — все коптеры не хотят облетать препятствие, если используешь Litchi. И если батарейка садится по середине пути, то аппарат не хочет лететь на первую точку, а летит куда-то в стратосферу (у меня рекорд — 500 метров высоты). Поэтому его придется возвращать самостоятельно и начинать по новому с ближайшей точки. Если коптер пролетел без происшествий до последней точки, то он прекращает съемку и возвращается на первую точку.

© Habrahabr.ru