# AI-полигон: отдельный профиль Gaussian / Isaac Этот документ фиксирует первый интеграционный этап. Текущее состояние UI, две скачанные локации, исправление Stop и измерения полного цикла описаны в [операторской ревизии](2026-09-21-ai-polygon-operator-revision.md). Действующий release — `0af432ce95816402`; результаты старых release ниже сохранены как история экспериментов. Решение владельца: лабораторная симуляция с виртуальным дифференциальным ровером, камерой и существующими AI-моделями на Worker 006. Работа с VESC/ASVD, физическими аппаратами и перенос inference на борт в этот этап не входит. World Labs исключён. Основной источник визуальных миров — скачиваемые Gaussian-сканы с явной лицензией. ## Продуктовая поверхность Оператор открывает «Симуляции», выбирает профиль, импортирует локацию, проверяет её ориентацию, масштаб, высоту грунта и старт, затем наблюдает камеру и решения AI. Выбран существующий workspace с верхним Select профиля: это прямое решение владельца. Альтернатива — новый workspace/пункт главной навигации — разделила бы одну операторскую работу между разными поверхностями. Нового продуктового корня или элемента Design Guideline нет: используются существующие Select, Window, GlassSurface, Button, IconButton, StatusBadge, LoadingRegion и ToastStack. LCC Gaussian Mirror сохраняет прежний renderer, каталог и pipeline. AI-полигон имеет отдельные world/run namespaces. Старый lab-archive скрыт из обычной навигации; сохранённые быстрые действия переводятся на AI Inference. Исторические данные, пакеты моделей и контейнеры не удаляются. Состояния: пустая библиотека → загрузка/возобновление → проверка локации → подготовленная локация; simulator disconnected/connected; starting, running, paused, stopping, completed/stopped/failed. Камера и просмотр локации имеют expand/restore; перед первым кадром показывается ожидание, а не фиктивное видео. ## Существующий Worker Изучены Ops MISSIONCOR-75 «AI Inference · Принципы работы и архитектура», MISSIONCOR-73, прежние материалы Worker и фактический Docker Desktop Windows. Активная modular generation — observatory-ai-modules/20260904-v14. Это выполнение записанных задач; уже работающий основной Triton не содержит DDRNet/RF-DETR. Логический image digest модуля отличается от component image установленного пакета: профиль использует фактически установленные component images. До изменений: 21 контейнер, 8 запущены, 108 образов, 9 volumes; RTX 4090 24 GiB, driver 610.47. Сохранены ID, mounts, ports и package bindings без переменных окружения/токенов в private outputs этой задачи. Прежние контейнеры, Compose, модельные конфигурации, immutable releases, source-CAS и rollback не изменяются. Исправлен устаревший DNS только в существующем SSH-профиле mission-gpu, с резервной копией и сохранением проверки host key. ## Новый runtime На Windows используется официальный native Isaac Sim 6.1.0. Его Docker/Web Viewer вариант не выбран: официальный Compose Web Viewer не поддерживает Windows/WSL. Архив 10 370 228 313 bytes проверен vendor MD5 и локальным SHA-256 `dc7cfc966cd0aea105e97bb1b9b30a8e91306a3254f231bca9caa5c97ae74ae9`. Подготовка находится только в `D:\NDC_MISSIONCORE\runtime\simulation`; драйвер, PATH и существующие services не менялись. Два новых временных Docker service запускаются один раз на episode: - DDRNet: исходная PyTorch-модель GOOSE из установленного component image, checkpoint, preprocessing runner и таблица классов сверяются по SHA-256. - RF-DETR: сохранённый стандартный FP16 TensorRT engine с входом 704×704. Это отдельный pinhole-профиль, без KB4 valid-FOV mask. Действующий native-KB4 пакет AI Inference не подменяется. Найденный DDRNet TensorRT export не допущен: его сохранённая проверка показывает 4 009 отличающихся пикселей на 128 кадрах и пометку experimental-unqualified. Полная декларация нового профиля — `simulation/ai-polygon/models.worker-006.json`. Новый Compose использует ndc- namespace, labels и loopback 18091/18092; mounts weights/configs read-only. Новые images/volumes не создаются и старые не чистятся. Core выдаёт GPU reservation через существующую SQLite очередь AI Inference до запуска native simulator и моделей. Потеря heartbeat прекращает episode и не считает GPU автоматически свободным. Release принимается после выхода Isaac и удаления собственных временных model containers по точным ID. Не завершённый active.json требует reconciliation; старые команды автоматически не повторяются. ## Камера, движение и доказательства Core ↔ Worker использует отдельный SSH reverse forward на Windows loopback 18081, Bearer credential нового профиля; существующий Observatory 18080 не меняется. Credential хранится mode 0600 на Mac и с owner-only ACL на Worker. Сцена импортируется штатным NVIDIA `omni.kit.converter.gsplat` 0.1.16 из Isaac. Робот — готовый Jetbot и DifferentialController. Это проверка дифференциального управления в симуляции, а не цифровой двойник конкретного ровера пользователя. Восемь штатных USD-зависимостей Jetbot (31 942 456 bytes) подготовлены отдельным `Prepare-RobotAssets.ps1`: повторный запуск больше не ждёт сетевой загрузки робота. Перед регистрацией Worker сверяет все файлы с локальным SHA-256 manifest. Трава — только визуальные splats. Начальный физический ground — скрытая плоскость; рельеф, сцепление и сгибание растительности этим не моделируются. Каждый шаг: новая камера RGB → DDRNet + RF-DETR → RoadPolicy → журнал решения → speed/yaw-rate → 6 физических тактов по 1/60 с → отдельное подтверждение pose/time. Физика не должна идти во время inference или рендера. Проверяется счётчик шагов. Позы физического движка используются для размещения камеры и диагностики, не передаются в RoadPolicy. Сохраняются кадры с SHA-256, decisions.jsonl, motion.jsonl, snapshot локации/профиля и терминальный результат. RoadPolicy — начальный camera-only follower: видимый связный участок дороги, остановка при препятствии/отсутствии дороги и три свободных кадра до возобновления. Это не Nav2, не метрическая оценка дистанции и не доказанный объезд препятствий. Динамические люди/животные, тормозной путь, обход и повторы/coverage должны проверяться отдельными сценариями. Первый природный проезд описан ниже. ## Фактически выполненная проверка Первый bounded native probe: настоящий RTX RGB 800×600 → обе реальные модели. Inference 156 / 78 / 79 ms на трёх одинаковых технических кадрах; решение no-road, нулевая команда. Пауза не увеличила счётчик физики; явный step увеличил его на 6. Это не FPS benchmark и не navigation acceptance. После probe подтверждено отсутствие его kit process и model containers, сохранены прежние 21 container ID. Локально: 69 backend tests по lifecycle/импорту/shared queue; дополнительно 51 проверка существующих AI Inference/LCC; 888 frontend tests до последнего малого изменения ярлыка, затем 7 focused environment tests; production build и Ruff. Браузером проверены оба профиля, прежние три LCC-локации, сохранение профиля, форма импорта, сворачивание окна, отсутствие legacy в обычной навигации. Первый полный PLY episode выявил отсутствие нового Python API UsdVol.ParticleField3DGaussianSplat в bundled USD Isaac; заменён на штатный совместимый GSplat Converter. Следующая попытка зависла на внешнем stock USD робота и была завершена ограниченным таймаутом; поэтому зависимости сохранены локально. Полный episode `airun-de5fdd342cff4d8994b0016ded5348f0` завершился с 3 samples / 3 applied steps / 18 физических тактов. Просмотр кадра выявил поворот камеры; исправлен world-to-camera look-at transform, не изменяя модели. Повтор `airun-6dc2d164cde04c70bec3348486bd63cc` использует исправленную камеру: на изображении подтверждён горизонтальный грунт. Пауза удержала 4 applied steps, один шаг увеличил счётчик строго до 5, Stop завершил прогон. Это 0.5 секунды симуляции, все решения no-road, скорость 0.0. Проверенный release `84302295451de631`, archive SHA-256 `440f6241af119ac9f63df94a68c99e2d7b724f0796dd999f12d23586a0b117b3`. Совместная команда launcher+tunnel также проверена: отдельный episode остановлен во время подготовки с нулём кадров и корректным освобождением ресурсов. После GPU-проверок сохранён private `worker-preservation-report.json`: тот же набор всех 21 container ID, без изменений image/status/restart/mounts/ports; те же 108 image identities/tags и 9 volumes. Временных simulation processes нет. Сравнение mounts нормализовано по Destination, поскольку Docker меняет порядок их перечисления. Существующие конфигурационные файлы моделей не изменены. Запуск и аварийное восстановление описаны в `docs/runbooks/AI_POLYGON_WORKER_006.md`. Автоматический постоянный service не устанавливался: coordinator запускается одной foreground-командой, idle не занимает GPU. Глобальная эксклюзивность относительно отдельного Gaussian pipeline не доказана; его задачи нельзя выполнять параллельно с этим профилем. ## Природный мир Forest Scan После входа владельца в SuperSplat получен Forest Scan, Joshua Trapani (draftmode), [источник](https://superspl.at/scene/259c0051), CC BY 4.0. Автор и лицензия проверены по Download UI и `license.txt` экспортируемого архива. Browser export оборвался; разрешённые публичные SOG assets той же сцены сохранены versioned `fetch_sog.py` с SHA-256 manifest. Credentials/cookies не извлекались. Исходные SOG/WebP assets занимают 31 446 214 bytes. Официальный `@playcanvas/splat-transform` 3.4.0 подготовлен `Prepare-SplatTools.ps1` в отдельном simulation/tools с pinned package-lock; глобальные npm/system settings не менялись. Конвертация дала стандартный PLY: 2 142 439 splats, 505 617 082 bytes, SHA-256 `432ee329fc75d86b50d0b577542adca579b0749b4939044fc3980f27b2618ece`. PLY импортирован через штатный возобновляемый API и повторно проверен Worker. В библиотеке доступен `aiworld-689fce22369f41158ffd1030bad35c0a`. На момент первого этапа Bamboo Trail ещё не был загружен. В последующей операторской ревизии он скачан, импортирован и проверен реальным episode. Авторская камера и фактическое преобразование viewer сопоставлены с Isaac Z-up: rotation [-90, 0, 180], spawn [0.522299, -0.517838], heading 137.690214°, ground Z -0.065, camera height 0.8, max speed 0.15. Масштаб 1 unit = 1 m принят условно: метрическая калибровка по измеренному объекту ещё не выполнена. Короткий episode `airun-5ff180262220435faa39a814260dae7b` дал 5 samples / 5 applied и ненулевую команду по видимой лесной тропе. Следующий `airun-321bb7cb732b4ab59aee77d60ee978af` завершён: 100 samples / 100 applied / 600 physics ticks, 10 секунд времени симуляции. Первые 2 решения uncertain с нулевой скоростью, затем 98 road с движением. Длина траектории по физическим позам — 1.421741 м в принятом масштабе сцены. Inference: min 94, median 156, p95 172, max 296 ms. Проверены последовательность receipts, шаг времени и SHA-256 всех 100 кадров. Это latency моделей в lockstep, не FPS реального времени. На исходной картинке есть деревянная ступень поперёк тропы. Текущая модель не считала её препятствием; у неё нет collision, поскольку физический ground пока плоский. Поездка подтверждает связку реальная Gaussian-камера → существующие модели → решения → движение, но не безопасное преодоление ступеней, объезд, тормозной путь или реакцию на людей/животных. Такие сценарии остаются открытыми. Private evidence: `outputs/ai-polygon-2026-09-21/forest-drive-report.json`, `forest-drive-run.json`, `forest-drive-decisions.jsonl`, `forest-drive-motion.jsonl`, `forest-drive-final.jpg`, source manifest и `worker-preservation-final.json`. После природного episode прежние 21 контейнер / 108 образов / 9 volumes сохранены; свои native processes, временные model containers и active/lock markers очищены. Техническая синтетическая сцена и её 5 прогонов архивированы отдельно от обычной библиотеки; Forest и оба природных результата оставлены оператору. Камера результата и preview используют общий fullscreen hook; Escape возвращает обычный размер и не вызывает действие оболочки. Направление preview исправлено: CameraControls получает focus point по стартовому heading, а не центр координат. Полноэкранный лесной preview и Escape проверены после final production build; затем 3D закрыт для освобождения ресурсов Mac. В кадре показаны скорость и поворот, отсутствие кадров после раннего Stop обозначено явно. Для операторского handoff оставлен foreground coordinator через `start_worker.py` без `--once`: он поддерживает соединение, но не запускает Isaac/модели до команды в UI. OS service/автозапуск не установлен. Core 8000 оставлен работающим. ## Первичные источники - https://docs.isaacsim.omniverse.nvidia.com/6.1.0/installation/download.html - https://docs.isaacsim.omniverse.nvidia.com/6.1.0/installation/install_workstation.html - https://docs.omniverse.nvidia.com/materials-and-rendering/latest/particle-fields.html - https://superspl.at/scene/259c0051 - https://superspl.at/scene/dd49e9a8 Контрольная точка не выдаёт допуск к физическому аппарату. Все команды имеют virtual-only authority; VESC/ASVD adapters отсутствуют.