EngineAI PM-V2 双足机器人 — MuJoCo + Stable-Baselines3 PPO
| 项目 |
参数 |
| 物理引擎 |
MuJoCo 3.x |
| 控制频率 |
20 Hz(每步 25 个物理子步,dt=0.002s) |
| 观测维度 |
48 |
| 动作维度 |
12(腿部关节 J00-J11) |
| 非腿部关节 |
腰/手臂/头固定在初始姿态 |
| 单集长度 |
最多 500 步(25 秒) |
| 终止条件 |
重心高度 < 0.3m 或躯干倾斜 > 60° |
[0:3] 基座线速度(机体坐标系)
[3:6] 基座角速度(机体坐标系)
[6:9] 重力方向(机体坐标系)
[9:12] 指令速度(vx, vy, vyaw)
[12:24] 腿部关节角度(相对于默认姿态)
[24:36] 腿部关节角速度
[36:48] 上一步动作
| 项目 |
权重 |
说明 |
| 前进速度追踪 |
1.0 |
Gaussian kernel,目标 0.5 m/s |
| 侧向速度追踪 |
0.3 |
目标 0 m/s |
| 偏航速率追踪 |
0.2 |
目标 0 rad/s |
| 高度维持 |
0.5 |
目标 0.808 m |
| 躯干直立 |
0.5 |
重力方向投影 |
| 动作平滑 |
-0.002 |
动作幅度惩罚 |
| 关节速度 |
-0.0005 |
关节速度惩罚 |
| 存活奖励 |
0.2 |
每步固定奖励 |
conda activate isaac_rl
pip install mujoco gymnasium stable-baselines3[extra] tensorboard
conda activate isaac_rl
cd /home/walle/pm_v2_rl
python pm_v2_env.py
conda activate isaac_rl
cd /home/walle/pm_v2_rl
# 默认配置(8环境并行,2000万步)
python pm_v2_train.py
# 自定义参数
python pm_v2_train.py --n_envs 16 --total_timesteps 40000000
# 断点续训
python pm_v2_train.py --resume logs/pm_v2_ppo/20240101_120000/final_model.zip
conda activate isaac_rl
cd /home/walle/pm_v2_rl
tensorboard --logdir logs/pm_v2_ppo
# 浏览器打开 http://localhost:6006
conda activate isaac_rl
cd /home/walle/pm_v2_rl
# 自动找最新 checkpoint
python pm_v2_eval.py
# 指定 checkpoint + 不渲染(打印统计)
python pm_v2_eval.py --model logs/.../best_model.zip --no_render --n_episodes 20
# 修改目标速度
python pm_v2_eval.py --cmd_vx 1.0 --cmd_vy 0.0
| 步数 |
预期表现 |
| 0.5M |
能站立,偶尔小步移动 |
| 2M |
不规则行走,偶尔摔倒 |
| 5M |
基本行走,较多摔倒 |
| 10M |
稳定行走,偶尔摔倒 |
| 20M |
较为稳定的行走步态 |
pm_v2_rl/
├── pm_v2_env.py # Gymnasium 环境定义
├── pm_v2_train.py # PPO 训练脚本
├── pm_v2_eval.py # 可视化评估脚本
├── README.md # 本文件
└── logs/
└── pm_v2_ppo/
└── <run_name>/
├── pm_v2_*.zip # 定期 checkpoint(每10万步)
├── best/best_model.zip # 最优模型
├── final_model.zip # 训练结束模型
└── vecnormalize.pkl # 观测归一化参数
控制的12个腿部关节:
| 索引 |
关节名 |
初始角度(rad) |
控制范围(rad) |
| J00 |
HIP_PITCH_L |
0.00 |
[-2.618, 2.618] |
| J01 |
HIP_ROLL_L |
0.00 |
[-0.611, 0.611] |
| J02 |
HIP_YAW_L |
-0.12 |
[-0.698, 0.698] |
| J03 |
KNEE_PITCH_L |
0.24 |
[-0.087, 2.531] |
| J04 |
ANKLE_PITCH_L |
-0.12 |
[-0.611, 0.524] |
| J05 |
ANKLE_ROLL_L |
0.00 |
[-0.349, 0.349] |
| J06 |
HIP_PITCH_R |
0.00 |
[-2.618, 2.618] |
| J07 |
HIP_ROLL_R |
0.00 |
[-0.611, 0.611] |
| J08 |
HIP_YAW_R |
-0.12 |
[-0.698, 0.698] |
| J09 |
KNEE_PITCH_R |
0.24 |
[-0.087, 2.531] |
| J10 |
ANKLE_PITCH_R |
-0.12 |
[-0.611, 0.524] |
| J11 |
ANKLE_ROLL_R |
0.00 |
[-0.349, 0.349] |
PD 增益(XML中定义):kp=300,kv=15