OmniGibson: быстрый старт для симуляции бытовых сцен
OmniGibson — среда робототехнической симуляции на основе Isaac Sim, которую использует бенчмарк бытовых активностей BEHAVIOR-1K. В этом разделе описаны структура конфигурации и минимальный процесс создания окружения. Команды установки и условия лицензирования ассетов приведены в официальной инструкции по установке и официальном репозитории. При расхождениях следуйте им.
Цели обучения
- Понимать четыре типа конфигурации: сцена, объекты, робот и задача.
- Создать окружение с роботом Fetch и базовыми объектами.
- Выполнить шаги среды и корректно завершить симулятор.
- Понимать, когда нужны ассеты сцен и объектов BEHAVIOR-1K.
Предварительные условия
OmniGibson опирается на Isaac Sim, у которого есть строгие требования к операционной системе, драйверу видеокарты и графической среде. Перед началом сверьте требования к версии на официальной странице установки и создайте для проекта отдельное окружение. Модели, сцены и ассеты объектов храните вне исходного репозитория.
export PROJECT_ROOT=$HOME/projects/BEHAVIOR-1K
export DATA_ROOT=$HOME/datasets/behavior-1k
git clone https://github.com/StanfordVL/BEHAVIOR-1K.git "$PROJECT_ROOT"
cd "$PROJECT_ROOT"
Затем установите OmniGibson и ассеты по официальному скрипту установки. После установки сначала проверьте импорт:
python -c "import omnigibson as og; print(og.__file__)"
Команда должна вывести путь к пакету omnigibson в текущем окружении.
Структура конфигурации
OmniGibson собирает окружение из словаря конфигурации:
import omnigibson as og
cfg = {
"scene": {
"type": "Scene",
"floor_plane_visible": True,
},
"objects": [
{
"type": "PrimitiveObject",
"name": "target_box",
"primitive_type": "Cube",
"rgba": [0.2, 0.7, 1.0, 1.0],
"scale": [0.25, 0.25, 0.1],
"fixed_base": True,
"position": [1.0, 0.0, 0.1],
}
],
"robots": [
{
"type": "Fetch",
"name": "fetch",
"obs_modalities": ["rgb", "depth"],
}
],
"task": {
"type": "DummyTask",
"termination_config": {},
"reward_config": {},
},
}
sceneзадаёт пространство и ассеты сцены.objectsзадаёт взаимодействующие объекты, их начальные позы и физические свойства.robotsзадаёт робота, модальности датчиков и интерфейс управления.taskзадаёт награду, условия завершения и логику задачи.
Создание и шаги окружения
Сохраните конфигурацию выше в файл examples/omnigibson_minimal.py и добавьте в конец:
env = og.Environment(cfg)
for _ in range(240):
action = env.action_space.sample()
observation, reward, terminated, truncated, info = env.step(action)
if terminated or truncated:
break
og.shutdown()
Запуск:
cd "$PROJECT_ROOT"
python examples/omnigibson_minimal.py
Окружение должно загрузить пол, объекты и робота Fetch, а затем выполнить серию шагов. Случайные действия нужны только для проверки интерфейсов наблюдения, действия и шага физики. Они не являются стратегией решения задачи.
Использование объектов из датасета
В официальном быстром старте DatasetObject ищет объект по category и model среди ассетов BEHAVIOR-1K. Для таких объектов нужно заранее установить соответствующие ассеты. Собственные USD-файлы загружаются через USDObject и параметр usd_path.
Контрольные точки
import omnigibsonвыполняется без ошибок.- При создании окружения не возникает ошибок о недостающих сценах и объектах.
- Размерность
env.action_space.sample()совпадает с пространством действий робота. env.step()возвращает наблюдения, награду, флаги завершения и словарь информации.- Перед выходом из скрипта вызывается
og.shutdown(), чтобы освободить ресурсы симулятора.
Частые проблемы
Объект или сцена не найдены
Проверьте, что ассеты установлены, что категория и имя модели в конфигурации существуют и что программа может читать каталог с ассетами.
На сервере без графического интерфейса симулятор не запускается
Сначала проверьте работу Isaac Sim без графического интерфейса по официальной документации, и только потом запускайте OmniGibson. Не смешивайте ошибки графического драйвера и ошибки конфигурации задачи в одном запуске.
Окружение работает, но задача не выполняется
В этом разделе для проверки интерфейсов используются случайные действия. Для решения реальной задачи нужно выбрать контроллер или стратегию, а также использовать условия завершения и протокол оценки этой задачи.