Интеграция робота GEN72-EG2 и стабильной версии PPO
Этот документ описывает, как использовать робота GEN72-EG2 в средах ManiSkill и обучать его стабильной версией алгоритма PPO.
1. Краткое описание робота GEN72-EG2
GEN72-EG2 — сочетание 7-степенного манипулятора и захвата EG2. Основные особенности:
- 7-степенной манипулятор с гибкими движениями.
- Двухпальцевый захват EG2 для захвата предметов.
- Физические параметры и контроллеры, оптимизированные для сред ManiSkill.
- Заранее заданы несколько начальных поз для разных задач.
2. Описание файлов
В интеграцию входят следующие файлы:
register_gen72_robot.py— регистрация GEN72-EG2 в средах ManiSkill.run_gen72_ppo.sh— скрипт для обучения и оценки.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. Описание конфигураций обучения
Предусмотрено четыре предустановленные конфигурации:
-
Конфигурация по умолчанию (
default)- Подходит для обычного обучения.
- Сбалансированы производительность и стабильность.
-
Стабильная конфигурация (
stable)- Повышенная числовая стабильность.
- Меньшая скорость обучения и более строгое отсечение градиента.
- Подходит для избежания проблем с NaN.
-
Сверхстабильная конфигурация (
ultra-stable)- Очень консервативные параметры.
- Очень маленькая скорость обучения и очень строгое отсечение градиента.
- Эффективно работает даже на одной видеокарте.
- Подходит при серьёзных проблемах числовой нестабильности.
-
Быстрая конфигурация (
fast)- Приоритет — скорость обучения.
- Большое число параллельных сред.
- Подходит для быстрого прототипирования.
5. Настройка физических параметров
Физические параметры GEN72-EG2 оптимизированы, в первую очередь:
- Трение захвата: заданы высокие коэффициенты статического и динамического трения (2,0), чтобы облегчить захват предметов.
- Коэффициент упругости: равен 0, чтобы уменьшить отскок.
- Параметры управления:
- жёсткость манипулятора: 1e3;
- демпфирование манипулятора: 1e2;
- ограничение силы манипулятора: 100.
6. Режимы управления
Поддерживаются несколько режимов управления:
pd_joint_delta_pos— инкрементное управление положением суставов (рекомендуется для RL).pd_joint_pos— управление положением суставов.pd_ee_delta_pos— инкрементное управление положением концевого эффектора.pd_ee_delta_pose— инкрементное управление позой концевого эффектора.
7. Частые проблемы
- Проблема NaN: если во время обучения появляется NaN, попробуйте конфигурацию
stableилиultra-stable. - Проблемы производительности: подберите параметр
num_envsпод объём памяти GPU. - Управление захватом: захват управляется через имитируемые суставы; диапазон значений от 0,0 (закрыт) до 0,04 (открыт).
8. Ссылки
- Документация ManiSkill: https://maniskill.readthedocs.io/
- Исходная статья о PPO: https://arxiv.org/abs/1707.06347