13 KiB
AI-полигон: операторская ревизия
Причина и результат
Владелец обнаружил реальные дефекты первой поверхности: разделение на «Мои» и «Готовые» локации, внешние синие ссылки вместо подготовленных файлов, автоматически открытый кадр старого прогона, отсутствие видимого ровера и неясное состояние Stop. Техническая связка камеры и моделей ещё не давала удобной наблюдаемой симуляции.
Теперь библиотека содержит только «Доступные локации»: скачанные Forest Scan и Bamboo Trail с действием «Открыть». Нижний preview, внешний каталог, список исторических кадров и raw links удалены из этой поверхности. Авторство и лицензия сохранены у каждой сцены. LCC Gaussian Mirror и AI Inference остаются отдельными.
Открытая локация имеет явный заголовок, включая fullscreen. Один viewer переключает «За ровером», «Обзор» и «Камера AI». Первый показывает упрощённый ровер с размерами колёс/колеи Jetbot по фактическим XY/yaw из applied receipt; второй даёт свободный обзор; третий показывает именно RGB из Isaac, переданный моделям. Это не экспорт точной модели Jetbot и не цифровой двойник физического аппарата владельца. Отрисовка интерполирует только уже полученные позы, не вычисляет свои команды или физику и не подменяет кадры inference. В режиме камеры 3D rendering приостановлен.
Кнопки паузы/шага/Stop и состояние находятся внутри fullscreen viewer. Подготовка показывает стадии мира, моделей и камеры. Stop сначала показывает остановку, после cleanup — «Остановлено · inference выключен». Пауза показывает нулевое движение, без устаревшего показателя скорости. Конечная поза текущего прогона сохраняется; старые прогоны сами в библиотеке не открываются. При отсутствии первого кадра завершённый прогон не продолжает показывать ожидание камеры.
Использованы существующие Button, IconButton, SegmentedControl, StatusBadge, LoadingRegion, GlassSurface из NODEDC Design Guideline и отдельный domain renderer. Новых продуктовых корней или локальных замен дизайн-компонентов нет.
Bamboo Trail
Источник, автор luckysplat, CC BY 4.0. Лицензия и разрешённая загрузка проверены в авторизованном SuperSplat Download UI. Его Source action не дал файл; сохранены публичные assets именно опубликованного viewer и SHA manifest, без извлечения cookies или credentials.
fetch_lod.py выбирает полный опубликованный LOD0 из manifest и архивирует 11 SOG
chunks через fetch_sog.py. Добавлена обработка gzip JSON. Официальный закреплённый
SplatTransform 3.4.0 через Prepare-Scene.ps1 собрал обычный PLY без перезаписи
предыдущего результата; LOD0 содержит 5 818 957 splats, SH degree 0.
- PLY: 325 861 955 bytes.
- SHA-256:
d7f2aad3240cc1a7369eb0d8b0d4c96a9cadbe07ee352c25d297b1037a812824. - World:
aiworld-7a58431a5551469cbbf0e8a4efef2a8b. - Rotation [-90, 0, 180], ground Z -2.418, spawn [-0.696364224, -0.696364224], heading 22.55°, camera height 0.8, max speed 0.15, условный scale 1.
Файл импортирован штатными блоками по 4 MiB, хеш проверен при завершении и на Worker. Native Isaac успешно создал camera RGB; конвертированный USD закеширован. Первый запуск был долгим из-за конвертации 5.8 млн splats. При исходном heading 47.55° камера смотрела на край тропы и камни, первые 15 решений были no-road. Heading повёрнут на 25° вдоль видимой тропы, после чего выполнен полный тест ниже.
Причины задержки и сбоя Stop
В пользовательском airun-2b1d079ab6b04df3a39019d664c75329 фактически выполнено
54 samples / 54 applied. Native process завершился одновременно с taskkill;
его exit code 255 был ошибочно принят coordinator как сбой. Isaac и временные
модельные контейнеры уже отсутствовали, но UI получил failed вместо stopped.
worker.py теперь ожидает действительное завершение дочернего процесса и допускает
гонку с уже вышедшим процессом. После cleanup он заново читает control/state, чтобы
конкурентный Stop не превратился в completed или failed. model_stack.py проверяет
отмену при подготовке моделей. Core принимает промежуточные стадии подготовки,
не объявляя running до первого sample. Reservation освобождается только после
завершения native process и удаления собственных container IDs.
UI ранее опрашивал каталог раз в 1.5 с и пропускал промежуточные кадры; теперь активный прогон опрашивается с интервалом 200 мс, с одним последовательным запросом. Постоянные HTTP connections сокращают повторные TCP handshakes; соединение пересоздаётся после простоя >2 с, чтобы не переиспользовать истёкший server keepalive. Неопределённые mutation requests автоматически не повторяются. RTX subframes: 1.
Applied receipts получили yaw и измерения полного цикла/render/transport. Physics остаётся lockstep: ровно 100 мс симуляции за решение, 6 ticks по 1/60 с; во время ожидания моделей мир не движется. Плавность browser viewer не означает такую же частоту камеры или решений. Это ещё не realtime 1×.
Проверки на Worker
| Проверка | Фактический результат |
|---|---|
Forest через UI, airun-5950929b54754077a3f21ae64ea1e8a5 |
87 samples / 87 applied; stopped |
| Пауза Forest | Счётчик удержан на 86 через 1.2 с; один шаг дал строго 87 |
| Полный цикл Forest | Медиана 313 мс; render 62 мс; transport до receipt 47 мс; inference 156 мс |
Bamboo, airun-a10fe72eddca48548ab8ec23e4f59d38 |
120 samples / 120 applied; completed; 26 road, 17 uncertain, 77 no-road |
| Полный цикл Bamboo | Медиана 297 мс; inference 156 мс |
Stop во время движения, airun-9015f6ab095848e78db24b6dcda5045d |
6 samples / 6 applied; stopped через 2.17 с после запроса |
Stop при загрузке моделей, airun-1c2c258e1211459dbbfe471a9fb1b958 |
0 samples; stopped; подготовка отменена |
Stop из fullscreen, airun-e9be1e3e45e84f71862a9c0b7eddcda0 |
0 samples; «Останавливаем…» → «Остановлено · inference выключен» |
Проверены SHA-256 всех 87 Forest-кадров. Bamboo дал движение, затем остановку при недостатке уверенно распознанной дороги; это не прохождение всей тропы. Полный цикл соответствует примерно 3.2–3.4 решениям/с и 0.32–0.34× simulation time. Ранее указанные 156 мс — только latency моделей, не полный FPS системы.
Локально: 71 backend test (AI-полигон и shared recorded queue) прошёл, после корректировки starting/running повторены 19 AI-полигон tests. Добавлены регрессии для startup progress и гонки taskkill. Frontend full pass: 891/892; единственная ошибка была старым ожиданием соседнего Rerun camera-journal теста. Оно исправлено в его задаче; затем все 11 focused architecture/simulation/camera-journal tests прошли. Финальные production build/typecheck, Ruff и diff whitespace check прошли.
В фактическом браузере проверены обе сцены, движущийся pose marker, камера AI, пауза, step, Stop, свободный обзор, fullscreen с доступным Stop и Escape. После финального build проверены название в fullscreen и библиотека без нижнего preview. Тяжёлый 3D закрыт, оставлена библиотека из двух локаций на Core 8000.
Сохранение окружения и handoff
Release 0af432ce95816402, SHA-256 архива
47230a1d1a2cffe3dd448e5e0fb5aef354bba4ee4ad6a0d7008791593cd1e0b9.
После проверки сохранены все прежние 21 container ID и их image/status/restart,
mounts, memory/GPU bindings и настроенные PortBindings; все прежние 108 image
identities/tags и 9 volumes. Runtime NetworkSettings.Ports не подменяет сравнение
настроенных PortBindings. Отдельная соседняя задача добавила CPU-only контейнер
ndc-rerun-navigation-build и свой образ; они не относятся к AI-полигону.
В 18:48 UTC собственных kit.exe и model containers нет, active_run null. Оставлен один idle coordinator PID 19724 с worker.lock, через foreground launcher session 21791 и private reverse forward 18081. Автозапуска OS нет. Core 8000 жив; 8765 не слушает. Существующие AI Inference/KB4 конфигурации не менялись. Запуск/остановка описаны в runbook.
Private evidence: outputs/ai-polygon-2026-09-21/revision-2/: forest-performance,
bamboo-performance, pause-verification, stop-qualification, worker-inventory,
worker-preservation, operator-handoff JSON; исходные receipts и RGB рядом.
Архивы Bamboo и manifests находятся в родительском private outputs directory.
Промежуточные неуспешные попытки и пользовательский failed run сохранены.
Оставшаяся граница
Это наблюдаемая лабораторная симуляция с реальным inference, но ещё не принятая автономная навигация. Масштаб некалиброван, физическая земля плоская. Деревянная ступень Forest не имеет collision и раньше не была распознана как препятствие. Трава только визуальная. Объезд, тормозной путь, устойчивое движение по длинной тропе, динамические люди/животные и глобальный GPU arbitration требуют отдельных контролируемых сценариев. Физические VESC/ASVD-аппараты в этом контуре отсутствуют.