Десктопний застосунок для аналізу польотних місій ArduPilot / Mission
Planner (.waypoints, формат QGC WPL 110) перед вильотом безпілотника.
Перевіряє:
- критично низьку висоту польоту — як за даними самого файлу місії, так і за рельєфом SRTM (по всій лінії польоту між точками, а не тільки в самих точках);
- занадто гострі кути повороту;
- кут набору/зниження (flight path angle) поза допуском;
- глісаду заходу на посадку — дистанцію/азимут/кут по останніх
відрізках до
LAND, з урахуванням командDO_CHANGE_SPEED.
- Windows, Python 3.11+ (стандартна бібліотека:
tkinter,urllib,json; додатково:Pillow— опційно, для якіснішого масштабування логотипу/скріншотів). - Інтернет для довантаження тайлів карти (OpenStreetMap / Google) і тайлів рельєфу SRTM за потреби (див. нижче).
Встановити залежності:
pip install -r requirements.txtpython main.pyТайли рельєфу не зберігаються в репозиторії (це гігабайти
бінарних даних, не код). Замість цього srtm.py сам довантажує
потрібний тайл з публічного дзеркала terrain.ardupilot.org
(тим самим, яким для докачки тайлів користується сам Mission Planner)
у момент, коли тайл дійсно знадобився для аналізу маршруту — і кладе
його в локальну папку SRTM поруч з рештою.
Шлях до папки з тайлами задається на сторінці Конфігурація в самому застосунку.
Якщо в папці вже накопичилась повна світова база SRTM і хочеться
лишити тільки потрібний регіон (наприклад Україну та Росію) —
скористайся cleanup_srtm.py:
python cleanup_srtm.py "шлях\до\папки\SRTM" --applyБез --apply скрипт лише покаже, скільки файлів і гігабайт буде
перенесено (dry-run).
| Файл | Відповідальність |
|---|---|
main.py | Точка входу, сплеш-екран |
app.py | Головне вікно: шапка, навбар, каркас сторінок, перемикання мови |
mission_page.py | Сторінка «Місія»: таблиця вейпоінтів, завантаження/збереження .waypoints, підключення до ArduPilot (MAVLink), карта маршруту |
analysis_page.py | Сторінка «Аналіз»: вкладки зліт/маршрут/посадка, метео, графіки, PDF-звіт |
config_page.py | Сторінка «Конфігурація»: параметри аналізу, шляхи SRTM/кеш карти, провайдер карти |
help_page.py | Сторінка «Довідка»: changelog, перевірка оновлень |
waypoints.py | Парсинг/запис .waypoints (QGC WPL 110) |
geo.py | Геометрія: відстані, азимути, інтерполяція вздовж маршруту |
srtm.py | Читання рельєфу з тайлів SRTM + автодокачка відсутніх тайлів |
analyzer.py | Основна логіка аналізу місії, генерація звіту |
elevation_view.py, angle_view.py, landing_view.py | Графіки висоти, кута траєкторії, глісади |
map_view.py, online_tiles.py, overview_map.py | Тайли карти (OSM/Google), кеш, відмальовка |
occupied_layer.py | Шар окупованих територій / лінії зіткнення (deepstatemap.live) |
i18n.py | Локалізація UA/EN |
theme.py, icons.py | Оформлення в стилі Mission Planner |
settings.py | Збереження/читання settings.json |
meta.py | Версія програми та changelog |
updater.py | Перевірка та застосування оновлень |
cleanup_srtm.py | Допоміжний скрипт очищення папки SRTM від зайвих регіонів |
settings.json генерується самим застосунком при першому запуску і
в репозиторій не входить (див. .gitignore).
Українська та англійська. Російська свідомо не підтримується.
License: MIT — © 2026 Sergey Gorbachevsky