16 KiB
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.