# 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-размещение и цикл подтверждены; прохождение длинной грунтовой дороги, объезд, точный тормозной путь и реакции на динамических людей/животных пока не приняты. ## Схема ```text 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-rtc`6.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. ## Официальные источники - [Native streaming](https://docs.isaacsim.omniverse.nvidia.com/6.1.0/installation/manual_livestream_clients.html) - [Web Streaming Library](https://docs.omniverse.nvidia.com/ov-web-sdk/latest/web-streaming-library/overview.html) - [Isaac clocks](https://docs.isaacsim.omniverse.nvidia.com/latest/sensors/isaacsim_sensors_multitick_rendering.html) - [Throttling/manual loop flags](https://docs.isaacsim.omniverse.nvidia.com/6.0.0/overview/troubleshooting.html) - [Timing examples](https://docs.isaacsim.omniverse.nvidia.com/latest/replicator_tutorials/tutorial_replicator_isaac_snippets.html) Рабочая инструкция: [Worker006 runbook](../runbooks/AI_POLYGON_WORKER_006.md).