5.2 KiB
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, 6uncertain, 246no-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-форм, а масштаб скана ещё не подтверждён измеренной опорой.
Следующая работа по автономии должна отдельно квалифицировать распознавание проезжаемого грунта и принятие решений на неровностях. Для проверки подъёма на камни потребуется метрически согласованная поверхность контакта и измеренный профиль аппарата. Порог не понижался ради демонстрации движения; успешное прохождение тропы и физическая проходимость этим изменением не заявляются.