Files
NODEDC_MISSION_CORE/docs/audits/2026-09-21-ai-polygon-realtime-placement.md
T

16 KiB
Raw Blame History

AI-полигон: исполнение на Worker и потоковый операторский просмотр

Решение и текущий статус

Требование владельца от 21.09.2026 реализовано: в профиле AI-полигона мир, физика, камера, AI, управление виртуальным ровером и журналы исполняются на Worker 006. Mac принимает готовое NVIDIA WebRTC-видео и небольшой snapshot. Локальный AiWorldPreview с PlayCanvas/PLY удалён. LCC Gaussian Mirror остаётся отдельным профилем; изменения не переносятся на его собственный renderer.

Размещение принято на основе MISSIONCOR-76 / Mission Core Node: один локальный владелец исполнения, отдельные control/media/telemetry и локальное хранение. Повторно использованы существующие Worker tunnel18080 и модельные образы. Go/Linux Node service не скопирован на Windows; готового AI-autonomy service в Node нет. Добавлен узкий host coordinator симулятора.

Новый runtime — лабораторная основа для проверки AI. Его realtime-размещение и цикл подтверждены; прохождение длинной грунтовой дороги, объезд, точный тормозной путь и реакции на динамических людей/животных пока не приняты.

Схема

Worker 006, Windows / RTX4090
  Isaac6.1: Gaussian + метрический ровер + physics60Hz + sensor800×600
       RGB -> очередь последнего кадра -> локальные DDRNet / RF-DETR
                                     -> RoadPolicy -> виртуальные приводы
       viewport -> NVIDIA encoder -> Tailscale WebRTC -> HTML video на Mac
       timestamps / motion / decisions / camera archive -> локальный диск
  persistent coordinator <-> существующий tunnel18080 <-> Core8000

Mac: операторские команды, подтверждённые состояния, telemetry и video decoder

В render/physics loop нет CoreClient, HTTP к Mac, per-frame ACK или ожидания моделей. Coordinator обменивается управляющими файлами/snapshots с native child; зависший управляющий HTTP не является частью физического tick. AI имеет отдельный поток и одно ожидающее изображение: новый кадр заменяет старый, очередь не растёт. Наблюдение/команда старше500мс дают нулевую команду, физическое время идёт дальше. Pause инвалидирует уже начатый inference; Resume требует новые ясные наблюдения.

Штатный Isaac6.1 throttling при Play включал manual loop, из-за чего первая проверка дала0.47×. Исправлены все три управляющие настройки — fixed timeline, manual main loop и enable_manualmode расширения throttling. PhysX продолжает исполнять дискретные шаги1/60с, накапливая их по wall-clock. Измерение основано на фактическом числе physics steps; 30FPS видео отдельно измеряет браузер.

Runtime и установка

  • Native Isaac6.1.0 и существующий observatory-ai-modules/20260904-v14 сохранены.
  • NVIDIA @nvidia/ov-web-rtc6.7.0 взят из официального registry, версия закреплена.
  • Windows Scheduled Task ndc-ai-polygon-worker: при входе текущего пользователя, не зависит от foreground SSH или viewer. Не заявляется работа до Windows login.
  • Windows Job Object закрывает native потомков при аварии coordinator; точные container IDs сохраняются для восстановления и очистки. Core не освобождает GPU reservation только по пропавшему heartbeat: требуется реальный finish.
  • Управление через существующий приватный туннель18080; отдельного18081 больше нет.
  • Direct stream1280×720 по TCP49100/UDP47998. Allow ограничен процессом Kit, приватным адресом Worker и текущим Tailscale-адресом Mac. Существующие Windows Block rules сохраняются для всех остальных портов/адресов; rollback записан.
  • Операторский video input inert: клавиатура/мышь не управляют произвольным KitUI. Camera переключается явной командой Worker. NVIDIA допускает один viewer.

Финальный release: a25fa4f008a18cbf, 551 файлов; SHA-256 архива: 177aeb640398ef2aeac46f07ddbe731078ea36f85c811111d57a82ea3b5ddd55. Проверены архив и все файловые hashes до установки. Модельный профиль: e505cc842575d96a4993765cfba19fea8a95e6c98ff613996d87e3887be79ecb. Scene provenance включает runtime, очередь, IPC, inference adapter, policy и контракты; robot и models имеют отдельные hashes. Private archives/manifests: outputs/ai-polygon-2026-09-21/realtime/.

Промежуточный Forest performance release ed210b04d0fd858b имел те же clocks, renderer и robot; финальный release дополнительно сбрасывает накопленную ясность дороги при Resume, корректно различает первоначальную загрузку AI и последующий отказ inference, расширяет source identity и ограниченно повторяет локальный IPC при кратком Windows sharing conflict. Установщик сам проверяет плоский файловый manifest и сохраняет verified_files; пустой manifest не допускается.

Геометрия и данные

Ровер заменён с Jetbot на four-wheel differential articulation. Полный footprint 1×1м; radius0.15м, track0.9м, масса24кг — явно временные параметры. Визуальная геометрия и collision находятся в одном профиле. Камера расположена перед мачтой: первая проверка обнаружила самоокклюзию, после исправления модели видят дорогу. Физические VESC/ASVD и управление настоящими аппаратами отсутствуют.

Forest:2 142 439 splats,505 617 082bytes,CCBY4.0,draftmode, SHA432ee329fc75d86b50d0b577542adca579b0749b4939044fc3980f27b2618ece. Bamboo:5 818 957splats,325 861 955bytes,CCBY4.0,luckysplat, SHAd7f2aad3240cc1a7369eb0d8b0d4c96a9cadbe07ee352c25d297b1037a812824. PLY/USD кэшируются на Worker; при открытии браузер их не загружает. Grass visual-only, физическая земля — скрытая плоскость. Единицы Gaussian пока не подтверждены измеренной опорой. Это не калиброванный физический двойник.

Inference получает локальный несжатый RGB до streaming encoder. Evidence сохраняется на Worker: motion/decisions timestamps, commands, boxes, JPEG90 копии использованных кадров и ихSHA. JPEG архив не называется lossless raw. Полного автоматического archive sync на Mac в этом этапе нет.

Операторский интерфейс

Сохранена существующая поверхность «Симуляции» с переключателем профиля. Библиотека содержит только доступные Forest/Bamboo, без магазинных ссылок, нижних превью и автоматически показанных старых кадров. «Открыть» отдельно от «Запустить AI». Круглая стрелка назад закрывает просмотр, сохраняя episode. Повторное открытие присоединяет тот же run. Pause и Stop имеют подтверждение Worker; Stop становится терминальным после освобождения native/model ресурсов. Fullscreen сохраняет кнопки и имя сцены. Камеры follow/overview/AI исполняются на Worker. Поля FPS/AIHz/RTF/возраст кадра больше не смешиваются.

Измеренная приёмка

Forest run airun-b2275571be9941e7b2e45ad104af1ec9,35 snapshots в steady-state:

Метрика Минимум Медиана Максимум
Физическое/реальное время 0.969× 1.000× 1.033×
Render loop 23.62FPS 28.00FPS 28.00FPS
Камера→очередь AI 9.69FPS 11.29FPS 12.00FPS
Завершённые решения 8.00Hz 10.83Hz 12.00Hz
Inference 62мс 93мс 109мс
Возраст кадра 140мс 172мс 219мс

Браузер показывал27–30декодируемыхFPS. Внутри замера ровер изменил позицию; наблюдались решения road/uncertain/no-road/obstacle. Обнаружение obstacle здесь не доказательство правильного распознавания реального препятствия: требуется отдельная размеченная приёмка.

Pause удержал6сек: sim70.9с,4254physics steps,686решений и одна pose без изменений. При закрытом viewer за6сек physics time вырос98.8→104.583с, решения993→1059; повторное открытие восстановило видео того же run. Stop завершился за3.23с включая освобождение native process и двух model containers.

Backend26/26: ownership/ACK, идемпотентность, disconnect/restart reconciliation, сохранение reservation, отсутствие Mac frames, bounded queue, stale-source stop, отсечение результата послеPause и свежие наблюдения послеResume. Frontend895/895, architecture4/4,typecheck,production build прошли последовательно. Ruff прошёл. Bamboo run airun-43bc42b3def04d5091330c5ea3c28062 на release7536f11d4ae78371: 25 steady-state snapshots, RTF0.969–1.022× (медиана1.000), render28FPS, camera12FPS, AI11Hz, inference79мс, frame age172мс (медианы). До выборки были11road и13uncertain решений, затем no-road и остановка. Это не прохождение всей тропы. Во время сцены GPU50%, VRAM7606MiB из24564MiB.

После финального frontend build браузером проверены follow/overview/AI, fullscreen с именем и управлением, Escape и Stop изfullscreen. DOM во время реального Bamboo-видео содержал0canvas; сцена в браузере не рисуется. Переключение вида меняет Workercamera, видео восстанавливается после возврата. Последующее исправление Windows IPC не меняет scene/clock/model algorithms.

Финальный smoke airun-99d524b99f8444819ba299841805353b на release a25fa4f008a18cbf естественно завершился: 30сек,297решений,медианаRTF1.0. Отдельная проверка airun-9669437638ec499fa63b165ad75e63b6 подтвердила29FPS видеопотока после конечной установки firewall: прежние Kit rules явноBlock, остальные адреса на streaming ports блокируются, Allow только оператору. Оба прогона завершены. Installer receipt: verified_files=551.

Финальная Docker-сверка: все21исходных container ID, полныеConfig/HostConfig, 109image identities/tags и9volumes сохранены без различий. Private evidence: preservation-proof.json, worker-before.json, worker-after.json. После QA нет active.json, nativeKit и временных AI modelcontainers; сервисWorker idle, Core8000 доступен, обе локации available. Ops MISSIONCOR-83 обновлён фактическими результатами; общая автономия остаётся InProgress.

Ограничения и следующий этап

Функциональная симуляция с наблюдением принята отдельно от качества autonomy. RoadPolicy — camera-only baseline, не маршрутный планировщик и не оценка метрической дистанции. Нужны калиброванный масштаб, грунтовый collision/terrain, профиль динамики аппарата, сценарии obstacle/braking/avoidance/dynamic actors. Одновременно квалифицирован один виртуальный ровер и один комплект моделей; две параллельные симуляции требуют отдельного GPU-бюджета.

Разрыв viewer проверен на работающем Worker. Core restart/lease recovery проверены контрактными тестами; общий действующий tunnel не отключался ради эксперимента. Полный end-to-end hard network outage и host crash drill не заявлены пройденными. При потере Core лабораторный run продолжает последнюю команду до локального лимита времени с локальным AI watchdog; потеря связи не означает подтверждённыйStop.

Existing AI Inference reservation соблюдён. Отдельные Gaussian jobs пока не используют общий GPU broker и не запускаются параллельно. Задержки на4090 не доказывают быстродействие будущего onboard hardware. Docker profiles/images/ weights сохранены; неподтверждённый ускоренный DDRNetTRT не подменяет reference.

Официальные источники

Рабочая инструкция: Worker006 runbook.