☰
Unitree RL Gym 做四足机器人强化学习:从仿真训练到实机部署全链路拆解
2026/10/20 1:39:32 网站建设 项目流程

Unitree RL Gym 做四足机器人强化学习:从仿真训练到实机部署全链路拆解

【免费下载链接】unitree_rl_gym项目地址: https://gitcode.com/GitHub_Trending/un/unitree_rl_gym

Unitree RL Gym 是基于 Unitree 机器人的四足机器人强化学习开源仓库,支持 Go2、G1、H1、H1_2 四款机型,把 Isaac Gym 训练、Play 验证、Mujoco 交叉仿真到实机部署串成一条完整链路。适合有 PyTorch 基础、想跑通机器人运动控制策略的开发者。

拉取仓库并配置 Isaac Gym 训练环境

整个训练栈压在 Isaac Gym 和 rsl_rl 两个外部依赖上,环境没搭对,后面的命令一条都跑不起来,所以这一步值得先做扎实。先克隆仓库并完成项目自身的安装:

git clone https://gitcode.com/GitHub_Trending/un/unitree_rl_gym cd unitree_rl_gym pip install -e .

pip install -e .只装了 unitree_rl_gym 本体。参照 安装配置文档,还要额外准备 Python 3.8 虚拟环境、PyTorch 2.3.1 + CUDA 12.1、从 Nvidia 官方获取的 Isaac Gym,以及固定 v1.0.2 分支的 rsl_rl。常见坑是漏装 Isaac Gym——启动训练时 import 报错,九成是它没进环境。装好后可以用 Isaac Gym 自带的 1080 球下落示例确认 GPU 链路正常。

环境就绪之后,第一个决策是机型:四个任务的观测、动作空间和奖励设计各不相同,选错机型后面全是返工。

选对机型:Go2 / G1 / H1 强化学习任务对比

各机型的任务配置集中在 legged_gym/envs/ 下,go2、g1、h1、h1_2 各有独立的 config 与 env 实现。选型建议:入门先跑 Go2,做全身协调控制选 G1 或 H1,H1_2 只当预览版用。

机型形态与自由度适用场景当前状态
Go2四足,腿部 12 关节入门训练、基础行走成熟
G1人形,23 / 29 自由度全身协调控制成熟
H1人形,大尺寸复杂运动任务成熟
H1_2简化 URDF算法验证预览版,奖励未完全调优

H1_2 用的是精简版 URDF:手、腕和肘部旋转关节被固定,碰撞只保留脚滚轮、膝关节和躯干。仓库自带的 H1_2 说明 也明确写着奖励函数尚未调优,它更适合用来验证算法流程,而不是直接期待最终效果。

机型定下来后,就能把第一条训练任务真正跑起来,顺便验证整条数据通路没有断点。

🚀 跑通第一条四足机器人强化学习训练任务

第一次训练的目的不是出好策略,而是确认"环境能训、日志能落盘"。这条命令在 Isaac Gym 里启动 g1 任务的并行训练:

python legged_gym/scripts/train.py --task=g1 --headless=true # 其余参数省略

关键参数:--task(必选,可选 go2 / g1 / h1 / h1_2)、--headless(不渲染窗口,训练效率更高)、--num_envs(并行环境数)、--sim_device与--rl_device(分别指定仿真和强化学习计算设备,可设为 cpu)。用--experiment_name和--run_name给实验命名,便于日后回查。

训练权重落在logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt。注意两点:长时间训练别开着图形界面,默认就带渲染窗口;H1_2 任务当前是预览质量,效果不好不代表你的操作有问题。

训练收敛只是中间站,策略很容易过拟合到 Gym 自身的特性上,直接上实机风险很大,所以要先过两关验证。

用 Play 与 Mujoco 交叉验证策略的仿真泛化

先回到 Gym 里看效果,默认加载最新一次运行的模型:

python legged_gym/scripts/play.py --task=g1 # 其余参数省略

--load_run和--checkpoint可以指定加载哪一次运行的哪个迭代。Play 还有一个关键副作用:它会把 Actor 网络导出到logs/<experiment_name>/exported/policies,MLP 网络存为policy_1.pt,RNN 网络存为policy_lstm_1.pt——这就是后面所有部署环节的输入文件。

四足机器人强化学习里很常见的现象是:策略在 Gym 里走得很顺,换到别的仿真器就发飘。用 Mujoco 做 Sim2Sim 就是用来提前暴露这类问题的:

python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml

配置文件在deploy/deploy_mujoco/configs/下查找,默认的policy_path指向deploy/pre_train/g1/motion.pt预训练模型;想用自己的策略,把这一项改成 Play 导出的 policy 路径即可。如果 Mujoco 和 Gym 的表现差异明显,先核对配置里的ang_vel_scale、dof_pos_scale等观测缩放是否与训练时一致。

跨仿真器都稳定之后,剩下的路就通到实机上了,这也是整条链路里最需要安全预案的一环。

🤖 把训练好的策略部署到 Unitree 实机

实机部署的前置条件是机器人进入调试模式:吊装状态下启动到零力矩模式,按遥控器L2+R2进入调试模式,再用网线直连电脑并记下对应网卡名,完整操作序列见 实物部署指南。

确认网卡后,执行部署命令(以 G1 为例):

python deploy/deploy_real/deploy_real.py enp3s0 g1.yaml

enp3s0是连接机器人的网卡名(用ifconfig查看),g1.yaml来自deploy/deploy_real/configs/,里面包含控制频率、各关节 kps/kds、动作与观测缩放等参数。程序启动后机器人处于零力矩状态,按start走到默认姿态,再按A进入运动控制模式,即可用摇杆控制前进与转向。

对实时性要求高的场景可以走 C++ 部署路径,示例代码在deploy/deploy_real/cpp_g1,依赖 LibTorch:

cd deploy/deploy_real/cpp_g1 mkdir build && cd build && cmake .. && make -j4 ./g1_deploy_run enp3s0

需要提醒:官方明确说明示例部署不是稳定控制程序,实机操作务必全程吊装,出现任何异常立刻按select退出到阻尼模式。

常见卡点排查与后续延伸方向

全链路走下来,问题大多集中在两处。训练侧:起不来先查 Isaac Gym 和 rsl_rl 是否装进当前虚拟环境,奖励剧烈波动时先看学习率和--entropy_coef,中断的运行用--resume从 checkpoint 恢复,不必从头再训。部署侧:实机与仿真动作对不上,优先核对 obs 缩放、control_dt和控制频率是否与训练配置一致,其次确认机器人确实处于调试模式。

链路跑通之后,可以按这个难度顺序继续深入:

  • 在legged_gym/envs/里调整奖励函数与任务参数,针对自己的场景重新训练
  • 对比 Go2、G1 等机型的策略表现,尝试跨机型迁移与观测空间对齐
  • 把 C++ 部署路径接上 LibTorch 推理,调优实机控制回路的实时性能

策略从 Gym 走到实机,这条链路才算真正闭环。

【免费下载链接】unitree_rl_gym项目地址: https://gitcode.com/GitHub_Trending/un/unitree_rl_gym

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询