Знакомство с InternDataEngine без загрузки 200 ГБ ассетов: практическое руководство для малого пространства
InternDataEngine — движок синтеза данных в платформе воплощённых данных InternVerse. Официальная документация охватывает установку, быстрый старт, рабочие процессы (Workflow), навыки (Skills), объекты, камеры, роботов, контроллеры, доменную рандомизацию, ассеты и обучение. Однако если нужно лишь «посмотреть, что умеет система», полная загрузка ассетов (около 200 ГБ) и запуск всей библиотеки задач — неоправданно дорого.
Этот документ идёт более лёгким путём: не загружает полный пакет ассетов, а использует небольшие ассеты из репозитория, необходимые зависимости CuRobo и Drake и одну примерно 1-мегабайтную модель сочленённой урны. Так удаётся охватить основные возможности InternDataEngine и получить видео с тремя ракурсами, которые можно вставлять в Markdown.
Руководство подходит трём типам читателей:
- тем, кто хочет быстро проверить, может ли сервер запускать InternDataEngine;
- тем, кто готовит демонстрации для курса, доклада или блога;
- тем, кто хочет разобраться в цепочке конфигураций, навыков, камер, рандомизации и вывода данных InternDataEngine, но пока не готов загружать полные ассеты.
В руководстве не утверждается, что полный набор официальных задач Pick / Place / Open успешно выполнен. В малой конфигурации эти задачи доходят до этапа планирования, но ещё требуют подстройки ограничений и поз. Основная цель — на малом пространстве запустить основной конвейер платформы и подготовить материалы, которые стабильно демонстрируют её функции.
Итоговые результаты
В руководстве подготовлены четыре группы видео с локальным рендерингом, они лежат в каталоге assets/ рядом с этим документом.
Отслеживание целей: Workflow, робот, контроллер, три камеры
Открыть видео: assets/track_three_views.mp4
Комбинация навыков управления: суставы, захват, отслеживание траектории
Открыть видео: assets/control_mix_three_views.mp4
Объекты и доменная рандомизация: классы объектов, позы, освещение и возмущения камер
Открыть видео: assets/object_dr_three_views.mp4
Малый ассет с сочленённым объектом: загрузка и рендеринг ArticulatedObject
Открыть видео: assets/articulation_three_views.mp4
Что воспроизводится в этом руководстве
После выполнения руководства вы получите:
- локальный Markdown-документ (имя файла в исходном репозитории сохранено):
docs_artifacts/InternDataEngine_小空间功能体验教程.md - локальный каталог видеоресурсов:
docs_artifacts/assets/ - четыре группы видео с тремя ракурсами, которые можно вставить в Markdown;
- четыре воспроизводимые минимальные конфигурации задач;
- ясное описание необходимых патчей совместимости для текущего окружения;
- честную запись о текущем состоянии задач Pick / Place / Open.
Этот путь на практике охватывает:
- рабочий процесс
simbox_plan_and_render; - конфигурацию задач в YAML;
- загрузку робота Split ALOHA;
- цепочку управления CuRobo;
- навыки
track,joint__ctrl,gripper__action; RigidObject,GeometryObject,ArticulatedObject;- камеры головы, левого и правого запястья;
- рандомизацию освещения, объектов, поз и камер;
- вывод LMDB,
meta_info.pklи видео MP4.
Соглашения о каталогах
В этом руководстве проект предполагается по пути:
/path/to/InternDataEngine
Python Isaac Sim находится по пути:
/isaac-sim/python.sh
Каталог вспомогательных ассетов:
/path/to/internverse_assets
Перейдите в корень проекта:
cd /path/to/InternDataEngine
Все последующие команды по умолчанию выполняются из этого каталога.
Руководство рассчитано на подготовленный сервер с уже установленным Isaac Sim: здесь описано, как с минимальными затратами дискового пространства познакомиться с основными возможностями InternDataEngine и получить видео для вставки в Markdown.
Цель руководства — не воспроизвести полную библиотеку официальных задач и не скачивать около 200 ГБ полных ассетов, а на малых ассетах охватить:
- Workflow: сквозное выполнение
simbox_plan_and_render; - YAML-конфигурацию: задачи, роботы, камеры, навыки, ассеты;
- Роботов и контроллеры: Split ALOHA и контроллер CuRobo;
- Навыки:
track,joint__ctrl,gripper__action; - Объекты: твёрдые тела, геометрические объекты, сочленённые объекты;
- Камеры: головная, левая и правая запястные камеры;
- Доменную рандомизацию: освещение, класс объекта, позу, возмущения камер;
- Вывод данных: LMDB,
meta_info.pkl, три видео MP4; - Сочленённые объекты: проверка загрузки и отображения
ArticulatedObjectна малом ассете около 1 МБ.
По завершении у вас будут видео, которые можно напрямую вставить в Markdown, курсовой материал или отчёт по проекту.
1. Результаты руководства
Файл руководства:
/path/to/InternDataEngine/docs_artifacts/InternDataEngine_小空间功能体验教程.md
Видео и обложки лежат в каталоге assets/ рядом с ним:
/path/to/InternDataEngine/docs_artifacts/assets/
Уже подготовленные материалы:
assets/track_three_views.mp4
assets/control_mix_three_views.mp4
assets/object_dr_three_views.mp4
assets/articulation_three_views.mp4
Все эти видео получены локальным рендерингом InternDataEngine и не являются внешними ссылками.
2. Ответ на вопрос: какие API Isaac Sim / InternDataEngine были изменены
В этот раз сам Isaac Sim не модифицировался, интерфейсы в каталоге установки /isaac-sim тоже не менялись. Фактические изменения сделаны в коде InternDataEngine в рабочем каталоге проекта; цель — чтобы официальный код продолжал работать в текущем окружении с Isaac Sim 5.1, Python 3.11, Torch 2.7 и новым API Drake.
2.1 Сохранение arena_file, чтобы повторный reset не терял конфигурацию
Файл:
/path/to/InternDataEngine/workflows/simbox_dual_workflow.py
До исправления во время reset workflow выполнял:
self.task_cfg.pop("arena_file", None)
Из-за этого при повторном reset того же конвейера arena_file удалялся из конфигурации, и последующая загрузка арены получала None. В локальном многонавыковом smoke-тесте с малой задачей это проявлялось как сбой reset сцены.
Текущий патч сохраняет arena_file:
# Keep arena_file available because the same task_cfg can be reset more
# than once inside the local plan-and-render pipeline.
self.task_cfg.pop("camera_file", None)
self.task_cfg.pop("logger_file", None)
Это исправление совместимости управления состоянием workflow InternDataEngine, а не изменение API Isaac Sim.
2.2 Совместимость с MultibodyPlantConfig в Drake
Файл:
/path/to/InternDataEngine/workflows/simbox/solver/planner_utils.py
Официальный код предполагает, что pydrake.multibody.plant.MultibodyPlantConfig поддерживает параметр discrete_contact_solver:
MultibodyPlantConfig(
time_step=time_step,
discrete_contact_solver=discrete_contact_solver,
)
В версии Drake этого окружения такого поля нет, и появляется ошибка:
AttributeError: 'pydrake.multibody.plant.MultibodyPlantConfig' object has no attribute 'discrete_contact_solver'
Патч использует совместимую с новым и старым API запись:
try:
multibody_plant_config = MultibodyPlantConfig(
time_step=time_step,
discrete_contact_solver=discrete_contact_solver,
)
except AttributeError:
multibody_plant_config = MultibodyPlantConfig(time_step=time_step)
2.3 Совместимость с AddModels парсера Drake
В том же файле:
/path/to/InternDataEngine/workflows/simbox/solver/planner_utils.py
Официальный код использует старый интерфейс:
parser.AddModelFromFile(franka_combined_path)
В текущей версии Drake этого метода нет, и появляется ошибка:
AttributeError: 'pydrake.multibody.parsing.Parser' object has no attribute 'AddModelFromFile'
Патч добавляет функцию совместимости:
def add_model_from_file(parser, model_path):
if hasattr(parser, "AddModelFromFile"):
return parser.AddModelFromFile(model_path)
return parser.AddModels(model_path)[0]
И затем в AddR5a, AddPiper, AddFranka вызов заменяется на:
franka = add_model_from_file(parser, franka_combined_path)
2.4 Вывод
В официальном репозитории InternDataEngine код действительно изменён, но только небольшими патчами совместимости:
- Isaac Sim сам по себе не менялся;
- крупная структура логики официальных задач не переписывалась;
- неудачные задачи не объявлялись успешными искусственно;
- патчи в основном устраняют различия API между текущим окружением выполнения и версией кода в репозитории.
Если позже перейти на рекомендуемую официально комбинацию Isaac Sim / Python / Drake, эти патчи могут стать ненужными. Сохранять их обычно безвредно, поскольку они реализованы как ветвление совместимости, а старый API продолжает работать.
3. Окружение
Руководство опирается на такие пути:
/path/to/InternDataEngine
/isaac-sim/python.sh
/path/to/internverse_assets
Перед началом перейдите в репозиторий:
cd /path/to/InternDataEngine
Проверьте, что Python Isaac Sim существует:
test -x /isaac-sim/python.sh && echo "Isaac Sim python found"
Проверьте GPU:
nvidia-smi
Проверьте состояние репозитория:
git status --short
Демонстрации этого руководства не требуют полных 200 ГБ ассетов. Используются:
workflows/simbox/example_assets, которые поставляются в репозитории;- уже загруженный
workflows/simbox/curobo; - уже загруженный
workflows/simbox/panda_drake; - дополнительно добавленная модель сочленённой урны размером около 1 МБ.
4. Локальная копия документации
Официальная документация зеркалирована локально:
/path/to/internverse-docs-mirror/internrobotics.github.io/InternDataEngine-Docs/index.html
Этот HTML можно открыть в браузере и просматривать офлайн страницы Installation, Quick Start, Workflow, Skills, Objects, Cameras, Robots, Controllers, Domain Randomization, Assets и Training.
Если нужно заново создать зеркало официальной документации, можно использовать такую команду:
cd /path/to
wget \
--mirror \
--convert-links \
--adjust-extension \
--page-requisites \
--no-parent \
https://internrobotics.github.io/InternDataEngine-Docs/
После зеркалирования точка входа обычно находится здесь:
internrobotics.github.io/InternDataEngine-Docs/index.html
5. Конфигурация задач для малого пространства
Новые конфигурации задач этого руководства лежат в каталоге:
workflows/simbox/core/configs/tasks/example/
Основные файлы:
workflows/simbox/core/configs/tasks/example/track_the_targets.yaml
workflows/simbox/core/configs/tasks/example/local_control_mix.yaml
workflows/simbox/core/configs/tasks/example/local_object_dr_showcase.yaml
workflows/simbox/core/configs/tasks/example/local_articulation_showcase.yaml
workflows/simbox/core/configs/tasks/example/local_pick_left.yaml
workflows/simbox/core/configs/tasks/example/local_pick_place_right.yaml
workflows/simbox/core/configs/tasks/example/local_open_trashcan.yaml
Четыре задачи, которые стабильно сгенерировали видео:
track_the_targets.yamllocal_control_mix.yamllocal_object_dr_showcase.yamllocal_articulation_showcase.yaml
local_pick_left.yaml, local_pick_place_right.yaml и local_open_trashcan.yaml — попытки проверить навыки Pick / Place / Open. Пока что для них нужно подстраивать ограничения планирования; об этом подробнее ниже.
6. Демо 1: Track The Targets
Демо использует двуруку Split ALOHA для простого отслеживания целей. Основная задача — проверить workflow, YAML, робота, контроллер, камеры, рендеринг и запись LMDB.
Команда запуска:
cd /path/to/InternDataEngine
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/track_the_targets.yaml \
1 \
9
Значение параметров:
- первый параметр — YAML задачи;
- второй
1— сгенерировать 1 случайный образец; - третий
9— seed случайных чисел.
После успешного выполнения выходной каталог выглядит так:
output/track_the_targets_plan_and_render_seed_9/
Видео можно найти командой:
find output/track_the_targets_plan_and_render_seed_9 \
-type f -name 'demo.mp4' -print
Подготовленное демонстрационное видео:
Если Markdown-рендерер не поддерживает тег HTML video, откройте напрямую:
Превью кадра:
Это демо показывает, что текущее окружение может выполнить:
- запуск Isaac Sim;
- выполнение SimBox workflow;
- загрузку Split ALOHA;
- планирование CuRobo;
- рендеринг с трёх камер;
- запись данных LMDB;
- экспорт MP4.
7. Демо 2: Control Mix
Демо объединяет несколько недорогих навыков управления и показывает систему навыков и цепочку команд контроллера.
Команда запуска:
cd /path/to/InternDataEngine
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_control_mix.yaml \
1 \
24
Обратите внимание на имена навыков:
name: joint__ctrl
name: gripper__action
name: track
joint__ctrl и gripper__action — имена, которые регистрирует текущий код, с двойным подчёркиванием посередине. Если написать joint_ctrl или gripper_action, навык не будет найден в реестре.
Демонстрационное видео:
Прямая ссылка:
assets/control_mix_three_views.mp4
Превью кадра:
Это демо охватывает:
joint__ctrl;gripper__action;track;- контроллер двуруких манипуляций;
- три видеопотока: голова, левое запястье, правое запястье.
8. Демо 3: Объекты и доменная рандомизация
Демо использует объекты для сортировки мусора и урну из малого пакета ассетов и показывает загрузку объектов, рандомизацию класса, позы объекта, освещения, возмущения камер и поведение повторных попыток (retry).
Команда запуска:
cd /path/to/InternDataEngine
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_object_dr_showcase.yaml \
1 \
41
Корневой каталог ассетов, который использует задача:
asset_root: workflows/simbox/example_assets
В конфигурации включены такие поля:
env_map:
apply_randomization: True
intensity_range: [2500, 7500]
rotation_range: [0, 180]
Для твёрдых тел включено:
apply_randomization: True
randomization_scope: category
orientation_mode: random
optimize_2d_layout: True
Демонстрационное видео:
Прямая ссылка:
assets/object_dr_three_views.mp4
Превью кадра:
Это демо охватывает:
RigidObject;GeometryObject;- рандомизацию класса объекта;
- случайный поворот (yaw) и позу;
- рандомизацию освещения окружения;
- рандомизацию позы камеры;
- неверную компоновку и повторную попытку планирования;
- вывод трёх видео и LMDB.
9. Демо 4: ArticulatedObject на малом ассете
Полные задачи с сочленёнными объектами обычно требуют много ассетов с суставами. Здесь полный пакет не загружался, а добавлен только небольшой ассет урны:
workflows/simbox/example_assets/art/trashcan/trashcan_0001
Этот каталог весит около 1 МБ и содержит:
instance.usd
Kps/open_h/info.json
Kps/open_h/keypoints.json
Kps/open_h/keypoints_final.json
Kps/close_h/info.json
Kps/close_h/keypoints.json
Kps/close_h/keypoints_final.json
Запуск демонстрационной задачи:
cd /path/to/InternDataEngine
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_articulation_showcase.yaml \
1 \
52
Демонстрационное видео:
Прямая ссылка:
assets/articulation_three_views.mp4
Превью кадра:
Это демо охватывает:
- загрузку
ArticulatedObject; - загрузку метаданных ключевых точек для
info_name: open_h; - инициализацию углов суставов через
joint_position_range; - фиксацию основания сочленённого объекта через
fix_base: True; - размещение сочленённого объекта на столе;
- случайное освещение и возмущения камер;
- экспорт трёх видео.
Важно: это демо показывает визуализацию и цепочку данных для ArticulatedObject, но не эквивалентно успешному открытию крышки навыком open.
10. Структура выходных данных
Каждая успешная задача обычно создаёт структуру такого вида:
output/<task_name>_plan_and_render_seed_<seed>/
└── BananaBaseTask/
└── split_aloha/
└── <task_dir>/
└── <collect_info>/
└── <timestamp>/
├── lmdb/
│ ├── data.mdb
│ └── info.json
├── meta_info.pkl
├── images.rgb.head/
│ └── demo.mp4
├── images.rgb.hand_left/
│ └── demo.mp4
└── images.rgb.hand_right/
└── demo.mp4
Просмотр выходных данных задачи:
find output/local_articulation_showcase_plan_and_render_seed_52 \
-type f \
\( -name 'demo.mp4' -o -name 'data.mdb' -o -name 'meta_info.pkl' \) \
-print
Просмотр информации о видео:
ffprobe -v error \
-select_streams v:0 \
-show_entries stream=width,height,duration \
-of default=nw=1 \
docs_artifacts/assets/articulation_three_views.mp4
Фактические параметры склеенного видео для сочленённого демо:
width=2134
height=480
duration=14.666667
11. Как разложить видео по каталогу assets для Markdown
Команды ниже копируют склеенные видео с тремя ракурсами в каталог assets/ рядом с руководством.
cd /path/to/InternDataEngine
mkdir -p docs_artifacts/assets
cp docs_artifacts/videos/track_the_targets/seed9_three_views.mp4 \
docs_artifacts/assets/track_three_views.mp4
cp docs_artifacts/videos/track_the_targets/seed9_three_views.jpg \
docs_artifacts/assets/track_three_views.jpg
cp docs_artifacts/videos/control_mix/three_views.mp4 \
docs_artifacts/assets/control_mix_three_views.mp4
cp docs_artifacts/videos/control_mix/three_views.jpg \
docs_artifacts/assets/control_mix_three_views.jpg
cp docs_artifacts/videos/object_dr/three_views.mp4 \
docs_artifacts/assets/object_dr_three_views.mp4
cp docs_artifacts/videos/object_dr/three_views.jpg \
docs_artifacts/assets/object_dr_three_views.jpg
cp docs_artifacts/videos/articulation_showcase/three_views.mp4 \
docs_artifacts/assets/articulation_three_views.mp4
cp docs_artifacts/videos/articulation_showcase/three_views.jpg \
docs_artifacts/assets/articulation_three_views.jpg
Для вставки видео в Markdown лучше использовать HTML:
<video controls muted preload="metadata" width="100%">
<source src="assets/object_dr_three_views.mp4" type="video/mp4">
</video>
А для Markdown-рендереров, которые не поддерживают HTML video, дополнительно сохраните обычную ссылку:
[assets/object_dr_three_views.mp4](assets/object_dr_three_views.mp4)
12. Функции, которые пока не работают полностью
Чтобы сэкономить место, полный пакет ассетов не загружался. Поэтому Pick, Place и полноценный навык открытия/закрытия сочленённого объекта пока не дают стабильного успешного видео.
12.1 Pick
Конфигурация:
workflows/simbox/core/configs/tasks/example/local_pick_left.yaml
Наблюдаемый результат:
Plan did not converge to a solution.
Это значит, что сцена, объект и цепочка разметки захвата уже дошли до этапа планирования, но в малой конфигурации CuRobo не нашёл допустимой траектории. Дальнейшая отладка — понизить сложность положения объекта, скорректировать домашнюю позу, уменьшить число препятствий, ослабить ограничения позы захвата или выбрать объект, который легче захватить.
12.2 Pick + Place
Конфигурация:
workflows/simbox/core/configs/tasks/example/local_pick_place_right.yaml
Конфигурация готова, но поскольку одиночный Pick пока нестабилен, полный Pick + Place пока не запускался до конца.
12.3 Навык Open
Конфигурация:
workflows/simbox/core/configs/tasks/example/local_open_trashcan.yaml
Уже исправлены две точки совместимости с API Drake; навык open доходит до генерации ключевых поз KPAM, но сейчас результат такой:
No keyframes found, return empty manip_list
Это означает, что проблемы установки и API уже не главные препятствия. Дальше нужно подстраивать:
- положение урны на столе;
- расстояние от базы робота до урны;
constraint_list;contact_pose_index;post_actuation_motions;- соответствие направления ключевых точек и ключевых точек захвата.
13. Частые вопросы
13.1 arena_file становится пустым или reset падает
Проверьте, сохранён ли патч из раздела 2.1. В конвейере с несколькими этапами не удаляйте arena_file из task_cfg после первого reset.
13.2 У MultibodyPlantConfig нет discrete_contact_solver
Это различие версий Drake. Используйте совместимую запись из раздела 2.2.
13.3 У Parser нет AddModelFromFile
Это различие API парсера Drake. Используйте функцию совместимости add_model_from_file() из раздела 2.3.
13.4 Не находится имя навыка
Сначала посмотрите зарегистрированное имя в классе навыка. В локальном control mix сейчас используется:
name: joint__ctrl
name: gripper__action
а не:
name: joint_ctrl
name: gripper_action
13.5 Планирование не сходится
Это не обязательно ошибка установки. Plan did not converge to a solution обычно означает, что сочетание начальной позы робота, целевой позы, препятствий и ограничений позы захвата слишком сложно. Сначала проверьте окружение на track_the_targets.yaml или local_control_mix.yaml, а уже потом усложняйте задачу.
13.6 Проверка остаточных процессов после запуска
pgrep -af 'simbox_plan_and_render|launcher.py|isaac-sim/kit/python' || true
Если нужно остановить текущее демо:
pkill -f 'launcher.py --config configs/simbox/de_plan_and_render_template.yaml' || true
14. Рекомендуемый порядок воспроизведения
Для первого воспроизведения рекомендуется такой порядок:
cd /path/to/InternDataEngine
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/track_the_targets.yaml \
1 9
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_control_mix.yaml \
1 24
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_object_dr_showcase.yaml \
1 41
bash scripts/simbox/simbox_plan_and_render.sh \
workflows/simbox/core/configs/tasks/example/local_articulation_showcase.yaml \
1 52
После каждой задачи сначала проверьте выход:
find output -type f -name 'demo.mp4' | tail -20
И убедитесь, что не осталось остаточных процессов:
pgrep -af 'simbox_plan_and_render|launcher.py|isaac-sim/kit/python' || true
15. Итоги
Без загрузки полных ассетов это руководство на малом пространстве охватило основные функции InternDataEngine:
- можно запустить Isaac Sim 5.1;
- можно выполнить SimBox workflow;
- можно загрузить Split ALOHA;
- можно выполнить цепочку управления CuRobo;
- можно вывести LMDB и три MP4;
- можно показать несколько навыков;
- можно показать рандомизацию объектов и доменов;
- можно показать ArticulatedObject с дополнительными ассетами около 1 МБ.
Официальные Pick, Place и Open/Close навыки здесь не объявлены полностью работающими. Они дошли до соответствующего этапа планирования или генерации ключевых поз, но требуют дальнейшей настройки ограничений и поз. Для демонстрации задачи, описания функций платформы и видеоиллюстраций для Markdown четыре подготовленные группы видео уже достаточны для обзора основных возможностей InternDataEngine на малом пространстве.