Not translated yet — page language: Russian

Треки полёта на карте

Обновлено: 2026-11-13
На этой странице

Треки полёта

Вкладка «Журнал полётов» на паспорте борта (/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.

Как загрузить

  1. Откройте борт → вкладка «Журнал полётов».
  2. Нажмите «Загрузить лог полёта» и выберите файл GPX, KML, blackbox-лог (.bbl/.bfl/.txt) или ArduPilot DataFlash-лог (.bin/.log).
  3. После разбора трек появится в списке и сразу отрисуется на карте с авто-зумом по границам маршрута: зелёный маркер — старт, красный — финиш, синяя линия — путь.

Для каждого трека в списке видно: имя файла, формат, число точек, дистанцию, длительность и дату. Кнопки: «На карте» (показать), «Скачать» (сырой файл как загружен), «Завести событие» / «🚨 Открыть событие» (см. ниже) и «Удалить».

Графики по логу полётного контроллера. Трек, загруженный 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-парсер логов её не включает.