Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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.

Контрольные точки

  1. import omnigibson выполняется без ошибок.
  2. При создании окружения не возникает ошибок о недостающих сценах и объектах.
  3. Размерность env.action_space.sample() совпадает с пространством действий робота.
  4. env.step() возвращает наблюдения, награду, флаги завершения и словарь информации.
  5. Перед выходом из скрипта вызывается og.shutdown(), чтобы освободить ресурсы симулятора.

Частые проблемы

Объект или сцена не найдены

Проверьте, что ассеты установлены, что категория и имя модели в конфигурации существуют и что программа может читать каталог с ассетами.

На сервере без графического интерфейса симулятор не запускается

Сначала проверьте работу Isaac Sim без графического интерфейса по официальной документации, и только потом запускайте OmniGibson. Не смешивайте ошибки графического драйвера и ошибки конфигурации задачи в одном запуске.

Окружение работает, но задача не выполняется

В этом разделе для проверки интерфейсов используются случайные действия. Для решения реальной задачи нужно выбрать контроллер или стратегию, а также использовать условия завершения и протокол оценки этой задачи.

Ссылки