unitree_rl_gym_新手教程_第3章_动手实践

unitree_rl_gym_新手教程_第3章_动手实践
第 3 章动手实践 — 训练、查看、调试开始真正跑模型每个命令都会解释清楚。3.1 每次工作前激活环境conda activate unitree_rl cd /workspace_project/g1_robot/unitree_rl_gym_study/unitree_rl_gym⚠️ 必须看到终端提示符显示(unitree_rl)。如果显示(base)说明没切过来。3.2 开始训练基础命令python legged_gym/scripts/train.py --taskg1 --headless --num_envs512参数含义建议--taskg1训练 G1 机器人必填可选 go2/h1/h1_2--headless不弹窗口训练快 30%训练时推荐加--num_envs512同时 512 个环境无头模式 512有头模式 64--seed1随机种子不指定则用 1--max_iterations10000训练轮数上限先设 200 测试确认无误再跑正式RTX 4060 8GB 显存规则模式num_envs说明有头看过程64GUI 渲染吃显存高了会卡无头--headless512释放渲染后 GPU 能跑满训练时你会看到的输出Learning iteration 100/10000 Computation: 15000 steps/s (collection: 0.3s, learning: 0.07s) Value function loss: 0.0011 ← 价值函数损失越小越好 Surrogate loss: -0.0221 ← 策略损失不要管正负看它变化 Mean action noise std: 0.80 ← 探索噪声慢慢减小网络变自信 Mean reward: 0.04 ← ★ 最重要的是这个 —— 平均奖励 Mean episode length: 300 ← ★ 机器人能活几步越久越好看懂两个关键指标就够了Mean reward 持续上升→ 训练正常 ✅Mean episode length 持续增长→ 机器人站得越来越久 ✅什么时候停止训练reward 不再上升收敛→ 可以停了达到max_iterations→ 自动停显存爆了OOM Error→ 减少--num_envsepisode_length 接近上限值~1000 步 20 秒→ 快要练好了3.3 查看训练效果方法 1Isaac Gym 可视化python legged_gym/scripts/play.py --taskg1 --load_run文件夹名会弹出一个窗口显示 G1 在走路。不加--load_run则加载最近一次训练的模型。键盘控制ESC 退出V 切换同步模式。方法 2TensorBoard更推荐# 新开一个终端 tensorboard --logdirlogs/然后在浏览器打开http://localhost:6006能看到图表简要含义mean_total_reward总奖励持续上升并趋于稳定通常表示训练收敛rew_tracking_lin_vel线速度跟踪越高表示越能按照指令行走mean_episode_length平均存活步数越高通常表示步态越稳定rew_lin_vel_z/rew_orientation机身稳定性惩罚负值绝对值越小越好policy_loss/value_lossPPO 策略与价值网络损失重点观察是否剧烈发散entropy策略探索程度过快降到 0 可能表示探索不足具体使用方法看TensorBoard 使用教程3.4 从上次中断继续训练# 从上一次中断的位置继续 python legged_gym/scripts/train.py --taskg1 --headless --resume # 从指定的 run 继续 python legged_gym/scripts/train.py --taskg1 --headless --resume --load_run文件夹名 # 从第 500 轮的检查点继续 python legged_gym/scripts/train.py --taskg1 --headless --resume --checkpoint500模型检查点位置logs/g1/日期_run_name/model_迭代次数.pt3.5 常见调试场景场景 1训练半天 reward 不涨可能原因和排查学习率太高/太低→g1_config.py里algorithm.learning_rate默认 1e-3 一般OK探索不够→ 调大policy.init_noise_std默认 0.8奖励设计有问题→ 检查rewards.scales各项权重是否合理域随机化太强→ 关掉试试domain_rand.randomize_friction False场景 2机器人学会了但走路抽搐关节抖动 → 调大rewards.scales.action_rate变更负惩罚动作变化。场景 3机器人总是前倾摔倒检查default_joint_angles是否合理当前默认姿态应该微坐增大rewards.scales.orientation更负的绝对值增大rewards.scales.base_height更负的绝对值场景 4显存不够-CUDA out of memory# 无头降低到 256 python legged_gym/scripts/train.py --taskg1 --headless --num_envs256 # 有头降低到 32 python legged_gym/scripts/train.py --taskg1 --num_envs323.6 导出模型给 MuJoCo 验证目标 2# 1. 用 play.py 导出 JIT 模型 python legged_gym/scripts/play.py --taskg1 --load_run文件夹名 # play.py 默认导出到 logs/g1/exported/policies/ # 2. 用 MuJoCo 跑导出的模型 cd deploy/deploy_mujoco python deploy_mujoco.py g1.yaml这是学习目标 2deploy_mujoco的核心内容。详见 部署计划 - 目标 2。3.7 训练建议和技巧新手推荐的实验顺序先用默认配置跑 200 轮看 reward 有没有增长趋势看 TensorBoard了解各项奖励的变化调一个参数比如tracking_lin_vel的权重重新跑 200 轮对比记录每次实验改了哪个参数、效果怎样积累经验反复 3-4 次就能培养直觉一次典型训练的时间线0-100 轮 机器人基本在乱动频繁摔倒reward 很低 100-500 轮 开始能站几秒了reward 上升 500-1000 轮 开始迈步了但不太稳episode length 达到几百步 1000-3000 轮走得越来越稳reward 接近收敛 3000-5000 轮基本收敛可以停了 5000-10000 轮微调优化如果还有上升空间就继续以上是经验估计实际取决于你的奖励设计和硬件速度。256 环境 ~15k steps/s1 轮 24×2566144 steps约 0.4 秒/轮1000 轮约 7 分钟。训练过程中不要做的事❌ 训练中不要开 GUI会拖慢 30-50%用--headless TensorBoard 看曲线就够了❌ 不要每跑几轮就改参数让同一配置至少跑 500 轮再看效果❌ 不要同时训练和 Play显存不够→ 下一章04unitree_rl_gym新手教程第4章深入理解