Треки полёта
Вкладка «Журнал полётов» на паспорте борта (/hangar/view/<id>) позволяет
загрузить файл GPS-трека и посмотреть маршрут полёта на карте.
Треки — это карта и анализ полёта, не счётчик налёта. «Налёт борта» и суммарный налёт/дистанция флота на дашборде считаются ТОЛЬКО по одометру полётного контроллера (кнопка «Синхронизировать налёт» на паспорте борта) — загрузка трека на эту цифру не влияет никак, ни суммой, ни максимумом. Чтобы налёт борта рос, синхронизируйте его по USB; трек здесь даёт маршрут на карте и рекорды (макс. высота/скорость/время одного полёта, «самый летающий борт») на дашборде.
Что можно загрузить
| Формат | Расширение | Статус |
|---|---|---|
| GPX (GPS Exchange) | .gpx |
✅ разбирается, показывается на карте |
| KML (Google Earth) | .kml |
✅ разбирается (LineString и gx:Track) |
| INAV/Betaflight blackbox | .bbl, .bfl, .txt |
✅ из лога извлекается GPS-трек |
| ArduPilot DataFlash | .bin |
✅ из лога извлекается GPS-трек + события полёта |
| ArduPilot DataFlash (текст) | .log |
✅ тот же трек текстовым CSV-дампом («Log → text») |
| ArduPilot/MAVLink телеметрия | .tlog |
⏳ пока не поддерживается (см. ниже) |
Формат определяется автоматически — по содержимому файла и расширению. Из трека берутся координаты (широта/долгота), а если есть — высота, время точки и скорость. Максимальный размер файла — 512 МБ (реальный blackbox-лог часового полёта — обычно 80–300 МБ); при превышении платформа честно сообщит лимит в МБ (файл при этом не грузится в память целиком).
Blackbox-логи полётного контроллера. Файл blackbox (
.bbl/.bfl, а также.txt— так по умолчанию называет лог SD-карта INAV) декодируется на платформе локально — из него берётся GPS-трек (координаты, высота, скорость, время). Если полётный контроллер писал лог без GPS-модуля (или не было фикса спутников), точек в логе нет — платформа честно сообщит об этом. Обрезанный или частично повреждённый лог тоже разберётся: покажется та часть маршрута, что успела записаться. Если же лог пустой или битый целиком (типичная причина — SD-карта не успела дописать данные, например при обрыве питания) — платформа так и скажет: «лог пустой или повреждён — запись не удалась», не путая это с неподдерживаемым форматом. Прочая телеметрия из blackbox (напряжение, ток, RSSI, режимы) пока не извлекается — см. планы ниже.ArduPilot — вторая платформа наравне с INAV. Бинарный DataFlash-лог (
.bin, самоописывающийся формат FMT-заголовков) декодируется на платформе локально, тем же принципом честности, что и blackbox: лог без GPS-модуля/ фикса — понятное сообщение, а не пустой трек; обрезанный лог разберётся частично (та часть маршрута, что успела записаться). Кроме точек трека, из лога извлекаются дискретные события полёта (смена режима, ошибки подсистем, текстовые сообщения прошивки) — они показываются маркерами на карте/3D-сцене и тиками на шкале реплея (см. «События на треке» ниже). Текстовый CSV-дамп («Log → text», расширение.log) — тот же трек, но без событий (секонд-формат). MAVLink-телеметрия (.tlog) распознаётся, но разбор пока не реализован — сообщение об этом при загрузке явно так и говорит («пока не поддерживается»), вместо намёка на неизвестный формат; используйте DataFlash-лог (.bin) с полётного контроллера вместо.tlog.
Как загрузить
- Откройте борт → вкладка «Журнал полётов».
- Нажмите «Загрузить лог полёта» и выберите файл GPX, KML, blackbox-лог
(
.bbl/.bfl/.txt) или ArduPilot DataFlash-лог (.bin/.log). - После разбора трек появится в списке и сразу отрисуется на карте с авто-зумом по границам маршрута: зелёный маркер — старт, красный — финиш, синяя линия — путь.
Для каждого трека в списке видно: имя файла, формат, число точек, дистанцию, длительность и дату. Кнопки: «На карте» (показать), «Скачать» (сырой файл как загружен), «Завести событие» / «🚨 Открыть событие» (см. ниже) и «Удалить».
Графики по логу полётного контроллера. Трек, загруженный blackbox-логом INAV/Betaflight или ArduPilot
.BIN, можно открыть в просмотре лога полётного контроллера: там все ваши логи из Ангара собраны списком «Мои логи в Ангаре», а лог, открытый с диска, сохраняется треком выбранного борта кнопкой «Сохранить в Ангар» — с теми же проверками, что и загрузка здесь. Если просмотр лога полётного контроллера вам пока недоступен, логи blackbox открываются прежним экраном просмотра blackbox.Полёт закончился событием? Кнопка «Завести событие» у трека открывает форму нового события с уже выбранным бортом и предзаполненным временем происшествия (конец GPS-трека) — после сохранения событие свяжется с ЭТИМ ЖЕ треком, файл лога не копируется (общий
track_idна обе карточки). Если трек уже связан с событием, вместо этой кнопки — прямая ссылка «🚨 Открыть событие». Обратное тоже работает: загрузка лога прямо из карточки [события] (../events/events.md) сразу заводит полноценный полёт на этой вкладке (раздел «Трек полёта и место падения»).Дата — это время полёта, а не время загрузки файла. Если в логе есть GPS-время (GPX почти всегда, blackbox — если был фикс спутников), в колонке «Дата» показывается момент первой GPS-точки трека — то есть когда реально состоялся полёт, а не когда вы загрузили файл на платформу (это могут быть разные дни). Наведите курсор на дату — подсказка уточнит, откуда она взята. Если в логе времени нет (KML часто его не пишет, у blackbox без фикса спутников времени тоже нет) — колонка честно показывает момент загрузки, ничего не придумывая.
Реплей полёта
Под картой есть плеер реплёя — можно «проиграть» полёт: маркер-самолётик (тёмный силуэт с белой обводкой) едет по маршруту, как самолёт двигался по времени.
- ▶ / ⏸ — воспроизведение и пауза.
- Ползунок — перемотка в любую точку трека.
- Скорость —
1×,2×,4×,8×(во сколько раз быстрее реального времени). - «Следить камерой» — карта едет за маркером (по желанию).
Во время реплёя рядом показываются параметры текущей точки: высота, скорость и время. Если у точек трека есть метки времени — маркер движется по реальному времени полёта (с интерполяцией между точками); если времени в файле нет — равномерно по точкам.
Тот же плеер работает и в карточке события (если событие привязано к треку) — можно проиграть полёт, закончившийся крашем.
События на треке (смена режима, ошибки, фейлсейф)
Для треков ArduPilot DataFlash (.bin) на карте, в 3D-сцене и на шкале
реплея появляются маркеры дискретных событий полёта — то, что писал в лог
полётный контроллер отдельно от GPS-точек: смена режима полёта, ошибки
подсистем (EKF, GPS и т.п.) и текстовые сообщения прошивки. Это ключевой
инструмент разбора события: например, флайэвей после потери линка — по
маркерам видно, в какой момент маршрута сработал фейлсейф и что борт делал
после.
- Цвет — по важности события, не по акценту темы: обычная смена режима — нейтральный серо-голубой; предупреждение — жёлтый; ошибка/фейлсейф — красный. Три уровня видно сразу, не вчитываясь в подписи.
- На шкале реплея (и 2D, и 3D) — маленькие цветные точки-тики поверх ползунка позиции, на своём моменте трека.
- На карте/3D-сцене — маркер стоит НА маршруте в точке, где событие произошло (интерполяция по времени, как и у движущегося маркера-самолётика).
- Клик по маркеру или тику — реплей ставится на паузу и перематывается ровно к этому моменту.
Треки без событий (GPX, KML, INAV/Betaflight blackbox, а также ArduPilot
.log-текстовый дамп) показываются как обычно — просто без маркеров и тиков,
без какой-либо заглушки на месте отсутствующих данных.
3D-просмотр трека
Над картой — переключатель «🗺️ 2D map» / «🧊 3D scene»: тот же трек можно посмотреть как объёмную сцену (как в ArduPilot Mission Planner), а не только плоскую линию на карте.
- Трек рисуется 3D-ломаной: широта/долгота превращаются в горизонтальную плоскость (метры от центра трека), высота — в вертикальную ось. На длинных маршрутах с небольшим набором высоты в реальных пропорциях (метр высоты = метр по горизонтали) трек выглядит почти плоским, поэтому по умолчанию высота преувеличена автоматически — коэффициент подбирается по аспекту трека (горизонтальный размах / перепад высот), чтобы профиль полёта было видно сразу. Ползунок «Vertical exaggeration» рядом позволяет подкрутить преувеличение вручную (×1…×10) — текущий коэффициент всегда подписан числом, чтобы было видно, что высота преувеличена (это не настоящий рельеф); ×1 — реальные пропорции.
- Высота сцены — заметно выше плоской 2D-карты (на широком экране), чтобы объёмный трек не превращался в сжатую полосу.
- Цвет линии — градиент по высоте или скорости (переключатель «Color by»), рядом легенда с мин/макс значением. Тёмный конец шкалы — низкое значение, светлый — высокое.
- Камера — орбита (зажать и тянуть), пан (правая кнопка), зум (колесо мыши) — стандартное управление 3D-вьюером, как у конструктора крыла.
- Реплей — тот же принцип, что у 2D (play/pause, ползунок, скорость 1×/2×/4×/8×, «следить камерой»): маркер едет по 3D-треку, вертикальная линия-«флагшток» до сетки пола показывает высоту наглядно, рядом — текущая высота/AGL/скорость/время (AGL — см. ниже).
- Земля — настоящий рельеф местности (карта высот): под треком строится
меш по данным о высоте участка, где летали, а не условная плоскость. Это
особенно важно для полётов в горах — видно, где земля поднимается навстречу
треку, а где остаётся запас высоты. Если данные о рельефе получить не
удалось (нет сети до сервиса высот, площадка вне покрытия) — платформа
честно об этом сообщает и показывает прежнюю сетку-плоскость вместо того,
чтобы выдумывать несуществующий рельеф.
Высоты тянет и кеширует сама платформа (не браузер) — сторонний сервис карт высот не получает никаких данных о вашем треке напрямую, и повторный показ того же места (аэродрома) не требует нового обращения наружу. Источник — открытые данные о рельефе (без API-ключа и платы). Спутниковый снимок поверх рельефа — в планах (см. ниже), сама геометрия земли уже здесь.
- AGL (высота над землёй) — раз рельеф известен, реплей может показывать не только высоту над уровнем моря, но и реальный запас до земли ИМЕННО под бортом в этой точке маршрута — появляется в реплее автоматически, когда для места есть данные о рельефе.
3D-сцена (Three.js) грузится, только если у борта есть хотя бы один трек — на пустой вкладке лишние ~600 КБ библиотеки не подгружаются.
Приватность
Треки приватны — их видит только владелец борта, как и остальные данные борта (конфигурации, расходы, события). Чужой трек недоступен. При удалении борта все его треки (и сырые файлы) удаляются вместе с ним; если удалённый трек (единичное удаление или удаление всего борта) был связан с событием — связь честно отвязывается (трек и место падения пропадают из карточки события), само событие не удаляется и не портится.
Карта и её подложка. Библиотека карты (MapLibre GL) и её стили хостятся на платформе. Подложка (векторная карта местности, подписи, значки) приходит с собственного картографического сервера Skyforge — отдельного адреса платформы, а не стороннего сервиса. Сами координаты вашего трека при этом никуда не отправляются: браузер запрашивает только квадраты карты нужного района.
Платформа работает в тёмной теме, поэтому подложка — тёмная тема Protomaps, собранная из данных OpenStreetMap; подпись на карте: «© OpenStreetMap contributors | Protomaps» (данные OpenStreetMap — под лицензией ODbL). Подписи улиц и городов — на языке интерфейса, если у объекта есть имя на этом языке.
Если картографический сервер недоступен, карта продолжает работать: трек, маркеры и плеер на месте, только фон остаётся тёмным без улиц.
Рельеф под 3D-треком — иначе, чем 2D-тайлы выше: браузер НЕ обращается к стороннему сервису напрямую (координаты трека наружу из браузера не уходят вовсе) — данные о высоте местности запрашивает и кеширует сама платформа, а фронту отдаёт уже готовую сетку. Источник — AWS Terrain Tiles (открытые данные о рельефе: SRTM/NED/GMTED2010 от USGS, ETOPO1 от NOAA — все общественное достояние), без API-ключа и платы. Кеш — по участку местности (не по пользователю): повторный показ того же аэродрома у любого пилота платформы не требует нового обращения наружу.
Что дальше (планы)
- спутниковый снимок поверх рельефа под 3D-треком (геометрия земли уже есть, см. выше — текстура сверху — отдельный шаг);
- графики высоты/скорости вдоль трека с курсором, синхронным с реплеем;
- привязка события к точке на треке («здесь разбился»);
- телеметрия из blackbox (напряжение, RSSI, режимы) и сравнение нескольких полётов;
- разбор MAVLink-телеметрии (
.tlog) — не входит в текущий парсер, отдельный тикет (см. блок про ArduPilot выше); - инструмент подключения/настройки ArduPilot по MAVLink (аналог
/tools/ inav-connect) — отдельная будущая тема, ArduPilot-парсер логов её не включает.