Просмотр 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 над сущностью и не готовый ответ на осмысленный вопрос агента о логе,
поэтому заводить инструмент только ради выдачи «сырых» рядов для графика
было бы копированием представления экрана, а не помощью агенту.