Просмотр blackbox-логов
⚗️ Экспериментально · предальфа. Экран показывает то, что уже декодировано из вашего лога, и ничего не выдумывает: сигнал, которого в логе нет (например датчика тока), честно объявляется отсутствующим, а не подставляется нулём.
Инструмент /tools/blackbox открывает blackbox-лог полёта (файл .bbl,
записанный INAV) двумя способами: как ленту событий прошивки (armed, смена
режима, failsafe, disarm, конец записи) и как графики телеметрии с общим
курсором. Это чтение уже загруженного файла — сам разбор лога и хранение
происходят при загрузке трека полёта в Ангар, здесь только просмотр.
Как открыть
- Из карточки события — если к событию привязан blackbox-лог, на его странице есть кнопка «Открыть в просмотрщике blackbox».
- Из раздела «Инструменты» —
/tools/blackboxбез параметров открывает список ваших blackbox-логов по всем бортам, включая архивные: лог разбившегося борта — типовой предмет разбора, поэтому архивация борта его не прячет.
Чужой или несуществующий лог — при прямом переходе по ссылке — экран отдаёт как «не найдено», не раскрывая, существует он вообще или нет.
Лента событий — первым экраном
Сразу под шапкой лога стоит лента событий прошивки, а не графики: разбор обычно начинается с поиска МОМЕНТА (когда сработал failsafe, когда сменился режим), а уже потом смотрят, что происходило вокруг него. Клик по событию в ленте переносит курсор графиков на этот момент.
Показываются: старт записи (arm), disarm, смена режима полёта, конец лога, возобновление записи, ошибка IMU, sync-beep и переходы фазы failsafe. Если фаза failsafe за короткий промежуток менялась несколько раз, лента не дробит это на отдельные строки, а показывает одну запись с интервалом времени («0,90–1,90 с»), внутри которого произошли эти переходы: показывать точный момент там, где известна только его нижняя и верхняя граница, было бы неточностью, поданной как точность.
Если переходы failsafe не удалось загрузить (например разорвалась связь), над лентой появляется отдельная пометка — событий прошивки при этом по-прежнему видно, а не «как будто failsafe не было».
Графики телеметрии
Кривые ключуются пресетами:
| Пресет | Что показывает |
|---|---|
| Мощность | напряжение батареи, ток, положение газа |
| Управление | команды RC-приёмника, выходы моторов |
| Стабилизация | гироскоп, P/I/D составляющие PID |
| Навигация | барометрическая высота, высота и скорость по GPS, число спутников, флаги режима полёта |
Сигнал пресета, которого нет в этом конкретном логе (типичный случай — лог без датчика тока), не пропадает молча: над графиками появляется явная строка, какая роль не записана. Раскрывающийся список «Свой набор кривых» показывает все поля, реально записанные в этом логе, — если стандартных пресетов недостаточно.
Непрерывный сигнал рисуется лентой минимум…максимум с линией среднего (выброс в один отсчёт остаётся виден даже при масштабе в минуты записи); дискретный (режимы, флаги) — ступенькой по фактическим значениям, без интерполяции между ними.
Масштаб и курсор
Растяните мышью область на любом графике — все графики разом перестраиваются на этот интервал более подробными данными: узкое окно времени даёт больше отсчётов на секунду, вплоть до сырых значений из лога. Двойной клик возвращает исходный масштаб, кнопка «Сбросить масштаб» — то же самое.
Курсор общий для всех графиков и для ленты событий: подведите его к точке на любом графике (или кликните по записи в ленте) — под графиками появляются момент времени и значение каждой построенной кривой в эту секунду.
Несколько полётов в одном файле
Один файл лога может содержать несколько сессий (несколько полётов подряд без перезаписи карты). Если сессий больше одной, над графиками появляется переключатель сессии — выбор пересобирает и ленту событий, и графики под выбранный полёт.
Частичный разбор
Очень длинные записи (десятки минут на высокой частоте) разбираются не целиком — есть бюджет на объём обрабатываемых данных. Если разбор остановился на этом бюджете, экран честно говорит, какой участок записи показан, и отдельно уточняет: сам файл лога при этом цел — ограничение наше, не повреждение. Если часть кадров лога не читается (файл повреждён или обрезан), это отдельная новость, и обе новости показываются вместе, если применимы обе, — «уложились в бюджет» и «часть кадров повреждена» не исключают друг друга, и одна не гасит другую.
Если в файле больше полётов (сессий), чем мы разбираем, отдельная строка так и говорит: «показаны не все полёты этого файла».
Приватность
Разбор лога выполняется на сервере (файл уже загружен как трек полёта в Ангар), а сам просмотрщик — обычная страница, читающая уже готовый разбор через API; сторонних сервисов при просмотре не задействуется.
Для агента (MCP)
Отдельного MCP-инструмента для просмотра blackbox-логов пока нет — это не CRUD над сущностью и не готовый ответ на осмысленный вопрос агента о логе, поэтому заводить инструмент только ради выдачи «сырых» рядов для графика было бы копированием представления экрана, а не помощью агенту.