Files
NODEDC_MISSION_CORE/docs/audits/2026-09-22-ai-polygon-layout-and-bamboo-stop.md
T

63 lines
5.2 KiB
Markdown

# AI-полигон: компоновка и остановка Bamboo
## Изменение интерфейса
По замечаниям оператора viewport использует `--nodedc-radius-panel` и обрезает
содержимое по этому радиусу. Статус, управление запуском/паузой/завершением и
телеметрия вынесены над viewport. Переключатель камер находится в его верхнем
левом углу, каноническое разворачивание — в верхнем правом. Общий fullscreen
контейнер сохраняет название локации и управление над изображением.
Заголовок локации исключён из прокручиваемой области: прокручивается только
содержимое под ним. Профиль и Bamboo Trail больше не перекрывают друг друга.
Контракты Worker, inference, модели, физика и пороги управления не изменялись.
## Проверка
Последовательно прошли architecture 4/4, TypeScript, frontend 895/895 и
production build. В браузере на каноническом `127.0.0.1:8000` проверены
скругление, перенос управления, прокрутка, follow/overview/AI-camera,
fullscreen и Escape. При прокрутке содержимого на 255 px заголовок остался
на y=250.375 px; управление геометрически находится выше viewport.
Видео показывало 28–30 FPS; в DOM нет canvas. GPU-рендеринг остаётся на Worker.
QA-сцена `airun-1f27d76ef73748cc89958dc70dc9b28b` оставлена открытой для
операторского просмотра: ready, follow, stream_ready=true, sim_time=0,
inference_count=0. AI во время UI-проверки не запускался. Core PID 10918
продолжает обслуживать 8000; второго backend на 8765 нет.
## Причина остановки в пользовательском прогоне
Источник: сохранённые Worker-журналы `motion.jsonl` и `camera/decisions.jsonl`
прогона `airun-0ca108e35bed49128b077f6844cbd8eb`, созданного
2026-09-21T21:03:30.999Z. Журналы прочитаны без повторного запуска inference.
Также просмотрены первый и последний сохранённые RGB-кадры; приватные кадры
и полные журналы не входят в Git.
- 262 решения: 10 `road`, 6 `uncertain`, 246 `no-road`.
- Смещение от старта 0.0721 м, длина пути по snapshots 0.0726 м.
- Последний motion snapshot: RTF 1.0, render 28 FPS, sensor 8 FPS, AI 8 Hz,
inference 94 мс, возраст кадра 172 мс, road_fraction 0.02468.
- Во всех сохранённых решениях obstacle_count=0. Остановка не была решением
детектора о препятствии; RoadPolicy обнулила скорость из-за road_fraction
ниже 0.35 в ближней области маски.
На RGB-кадрах визуально сохраняется тропа. Это свидетельство ограничения
сегментации/простого правила следования, а не доказательство непроходимости
тропы для метрового ровера. Полные семантические маски не архивировались,
поэтому конкретный ошибочный класс по этим журналам восстановить нельзя.
## Граница вывода
Текущая RoadPolicy — camera-only baseline: она ищет полосу из шести классов
GOOSE и задаёт скорость/поворот, но не оценивает высоту ступеньки, уклон,
клиренс, опорную поверхность и сцепление. Скан даёт внешний вид; физическая
опора в `run_realtime.py` — невидимая плоскость. Камни не имеют физических
collision-форм, а масштаб скана ещё не подтверждён измеренной опорой.
Следующая работа по автономии должна отдельно квалифицировать распознавание
проезжаемого грунта и принятие решений на неровностях. Для проверки подъёма
на камни потребуется метрически согласованная поверхность контакта и
измеренный профиль аппарата. Порог не понижался ради демонстрации движения;
успешное прохождение тропы и физическая проходимость этим изменением не заявляются.