javascript

Дополнение к Litchi

  • суббота, 16 ноября 2024 г. в 00:00:06
https://habr.com/ru/articles/858774/

Почитав эту статью: 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 метров высоты). Поэтому его придется возвращать самостоятельно и начинать по новому с ближайшей точки. Если коптер пролетел без происшествий до последней точки, то он прекращает съемку и возвращается на первую точку.