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

Интеграция робота GEN72-EG2 и стабильной версии PPO

Этот документ описывает, как использовать робота GEN72-EG2 в средах ManiSkill и обучать его стабильной версией алгоритма PPO.

1. Краткое описание робота GEN72-EG2

GEN72-EG2 — сочетание 7-степенного манипулятора и захвата EG2. Основные особенности:

  • 7-степенной манипулятор с гибкими движениями.
  • Двухпальцевый захват EG2 для захвата предметов.
  • Физические параметры и контроллеры, оптимизированные для сред ManiSkill.
  • Заранее заданы несколько начальных поз для разных задач.

2. Описание файлов

В интеграцию входят следующие файлы:

  1. register_gen72_robot.py — регистрация GEN72-EG2 в средах ManiSkill.
  2. run_gen72_ppo.sh — скрипт для обучения и оценки.
  3. ppo_my.py — стабильная реализация PPO (находится в каталоге уровнем выше).

Расположение URDF-файла: /home/user/17robo/ManiSkill/urdf_01/GEN72-EG2.urdf

3. Порядок действий

1. Регистрация робота

Сначала зарегистрируйте GEN72-EG2 в среде ManiSkill:

cd /home/user/17robo/ManiSkill/examples/baselines/ppo_my
python register_gen72_robot.py

2. Обучение и оценка через shell-скрипт

Для обучения и оценки есть удобный shell-скрипт:

# Выдаём скрипту право на выполнение
chmod +x run_gen72_ppo.sh

# Обучение задаче PushCube (стабильная конфигурация)
./run_gen72_ppo.sh train PushCube-v1 stable

# Предустановленное быстрое обучение задаче PushCube
./run_gen72_ppo.sh push-cube

# Предустановленная задача PickCube (стабильная конфигурация)
./run_gen72_ppo.sh pick-cube

# Оценка обученной модели
./run_gen72_ppo.sh evaluate PushCube-v1 ./runs/PushCube-v1__ppo_my__1__1234567890/final_ckpt.pt

3. Прямой запуск Python-скрипта

Если нужны дополнительные настройки, запускайте Python-скрипт напрямую:

# Сначала убедитесь, что робот зарегистрирован
python register_gen72_robot.py

# Обучение стабильной версией PPO
python ppo_my.py \
    --robot_uids="gen72_eg2_robot" \
    --env_id="PushCube-v1" \
    --control_mode="pd_joint_delta_pos" \
    --num_envs=128 \
    --total_timesteps=10000000 \
    --learning_rate=5e-5 \
    --max_grad_norm=0.25 \
    --update_epochs=4 \
    --num_minibatches=4 \
    --eval_freq=10

4. Описание конфигураций обучения

Предусмотрено четыре предустановленные конфигурации:

  1. Конфигурация по умолчанию (default)

    • Подходит для обычного обучения.
    • Сбалансированы производительность и стабильность.
  2. Стабильная конфигурация (stable)

    • Повышенная числовая стабильность.
    • Меньшая скорость обучения и более строгое отсечение градиента.
    • Подходит для избежания проблем с NaN.
  3. Сверхстабильная конфигурация (ultra-stable)

    • Очень консервативные параметры.
    • Очень маленькая скорость обучения и очень строгое отсечение градиента.
    • Эффективно работает даже на одной видеокарте.
    • Подходит при серьёзных проблемах числовой нестабильности.
  4. Быстрая конфигурация (fast)

    • Приоритет — скорость обучения.
    • Большое число параллельных сред.
    • Подходит для быстрого прототипирования.

5. Настройка физических параметров

Физические параметры GEN72-EG2 оптимизированы, в первую очередь:

  • Трение захвата: заданы высокие коэффициенты статического и динамического трения (2,0), чтобы облегчить захват предметов.
  • Коэффициент упругости: равен 0, чтобы уменьшить отскок.
  • Параметры управления:
    • жёсткость манипулятора: 1e3;
    • демпфирование манипулятора: 1e2;
    • ограничение силы манипулятора: 100.

6. Режимы управления

Поддерживаются несколько режимов управления:

  1. pd_joint_delta_pos — инкрементное управление положением суставов (рекомендуется для RL).
  2. pd_joint_pos — управление положением суставов.
  3. pd_ee_delta_pos — инкрементное управление положением концевого эффектора.
  4. pd_ee_delta_pose — инкрементное управление позой концевого эффектора.

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

  1. Проблема NaN: если во время обучения появляется NaN, попробуйте конфигурацию stable или ultra-stable.
  2. Проблемы производительности: подберите параметр num_envs под объём памяти GPU.
  3. Управление захватом: захват управляется через имитируемые суставы; диапазон значений от 0,0 (закрыт) до 0,04 (открыт).

8. Ссылки

  • Документация ManiSkill: https://maniskill.readthedocs.io/
  • Исходная статья о PPO: https://arxiv.org/abs/1707.06347