19 KiB
AI-полигон: отдельный профиль Gaussian / Isaac
Этот документ фиксирует первый интеграционный этап. Текущее состояние UI,
две скачанные локации, исправление Stop и измерения полного цикла описаны в
операторской ревизии.
Действующий 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),
источник, 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 отсутствуют.