资讯动态

四足机器人强化学习入门:Unitree RL GYM 从 Isaac Gym 训练到实机部署的完整工作流

发布时间:2026/10/20 11:09:13 来源:尧图企业网站定制
四足机器人强化学习入门Unitree RL GYM 从 Isaac Gym 训练到实机部署的完整工作流【免费下载链接】unitree_rl_gym项目地址: https://gitcode.com/GitHub_Trending/un/unitree_rl_gymunitree_rl_gym 是 Unitree Robotics 开源的四足机器人强化学习框架基于 Isaac Gym 与 rsl_rl 实现支持 Go2、G1、H1、H1_2 四种机器人的运动控制策略训练、仿真验证与实机部署面向想跑通机器人强化学习全流程的开发者与学生。项目定位策略如何替代手写控制器传统足式机器人控制依赖手动设计步态规划器、状态机与平衡控制器调试周期长且难以覆盖复杂运动。unitree_rl_gym 的做法是用 PPO 在数千个并行仿真环境中试错你只需在配置文件中定义奖励函数算法负责搜索出最优的关节控制策略。项目的核心差异体现在两条链路上训练侧Isaac Gym 提供 GPU 加速的刚体仿真一个场景里同时跑成百上千个环境实例训练吞吐量远高于传统物理引擎PPO 算法由 rsl_rl 提供环境配置与注册集中在legged_gym/包内。部署侧同一套策略可以导出为 JIT 模块在 MuJoCo 中做 Sim2Sim 验证再通过unitree_sdk2_python下发到真实机器人甚至用 C/LibTorch 部署。四种型号的定位不同选择标准是你打算让机器人做什么任务名--task型号适用场景go2Go2 四足12 自由度四足配置最简适合验证基础流程g1G1 双足/四足人形12 自由度腿部配置配套预训练模型与 C 部署示例最完整推荐入门h1H1 人形10 个腿部动作维度的全身控制含手臂关节h1_2H1_2 人形高端型号简化 URDF 预览版任务奖励函数仍在调优中各型号的环境与参数分别定义在 G1 配置、H1 配置、H1_2 配置、Go2 配置 中统一通过 任务注册表 注册后以--task参数选择。Unitree RL GYM 安装步骤系统要求Ubuntu 18.04、NVIDIA 显卡驱动 525 或更高版本。官方流程是四步安装完整细节见 中文安装文档此处只列关键命令# 1. 创建 Python 3.8 虚拟环境 conda create -n unitree-rl python3.8 conda activate unitree-rl # 2. 安装 PyTorch 2.3.1 (CUDA 12.1) 与 Isaac Gym conda install pytorch2.3.1 torchvision0.18.1 torchaudio2.3.1 pytorch-cuda12.1 -c pytorch -c nvidia # Isaac Gym 从 NVIDIA 官网下载后进入 isaacgym/python 执行 pip install -e . # 3. 安装 rsl_rl切换到 v1.0.2 分支后 pip install -e . # 4. 安装本项目 git clone https://gitcode.com/GitHub_Trending/un/unitree_rl_gym cd unitree_rl_gym pip install -e .pip install -e .会依据 setup.py 声明的依赖安装isaacgym、rsl-rl、numpy1.20、mujoco3.2.3等包。若要实机部署还需额外安装unitree_sdk2_python。验证安装是否成功python -c import isaacgym, rsl_rl, legged_gym; print(OK)无报错即代表核心依赖链Isaac Gym → rsl_rl → legged_gym完整。核心工作流四个阶段各自要解决什么整体流程是Train → Play → Sim2Sim → Sim2Real。每个阶段回答一个问题训练出的策略好不好用会不会迁移能不能上真机跑通第一个训练任务这一步让机器人在 Isaac Gym 里通过试错学会运动python legged_gym/scripts/train.py --taskg1 --headless true训练时不要开图形界面窗口渲染会显著拖慢训练。常用参数--task必填取值go2、g1、h1、h1_2--num_envs并行环境数量直接决定训练速度--max_iterations最大迭代次数G1 默认 10000见g1_config.py中runner.max_iterations--resume/--load_run/--checkpoint从日志目录中的断点恢复训练--seed、--sim_device、--rl_device随机种子与计算设备可指定cpu训练产物保存在logs/experiment_name/date_time_run_name/下模型文件为model_iteration.pt同时生成 TensorBoard 日志用于观察奖励曲线。查看策略实际表现Play 阶段在 Gym 中回放策略并自动关闭噪声、摩擦随机化和外力扰动见 play.py 中add_noise False、randomize_friction False等覆盖项让你看到无干扰下策略的真实水平python legged_gym/scripts/play.py --taskg1参数与 train 一致默认加载实验目录下最新一次运行的最新 checkpoint也可用--load_run和--checkpoint指定。一个容易忽略的产物play 会自动把 Actor 网络导出为 JIT 模块到logs/g1/exported/policies/MLP 网络导出为policy_1.ptRNNLSTM网络导出为policy_lstm_1.pt——这个文件就是后续 Sim2Sim 和实机部署直接加载的模型。跨仿真器验证泛化性在 Isaac Gym 中表现好不代表策略没有过拟合 Gym 的物理细节。Sim2Sim 阶段用 MuJoCo 重新加载同一策略验证python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml参数只有一个配置文件名在 deploy_mujoco 配置目录 下查找g1.yaml、h1.yaml、h1_2.yaml。以 G1 为例配置中的关键项policy_path默认指向仓库自带的预训练模型deploy/pre_train/g1/motion.pt想测自己训练的策略就改成logs/g1/exported/policies/policy_lstm_1.ptsimulation_dt: 0.002与control_decimation: 10仿真步长 2ms、控制频率 50Hzcmd_init: [0.5, 0, 0]初始速度指令前向 0.5 m/skps/kds/default_angles与训练侧 PD 参数一致的位置控制若 MuJoCo 里机器人频繁摔倒而 Gym 里正常说明策略对 Gym 特有的物理实现过于敏感需要回到训练阶段加强域随机化见下文。策略部署到实机实机部署只支持 G1、H1、H1_2通信基于unitree_sdk2_python。启动命令python deploy/deploy_real/deploy_real.py enp3s0 g1.yaml第一个参数enp3s0连接机器人的网卡名用ifconfig查看第二个参数g1.yaml位于 deploy_real 配置目录内含policy_path、PD 增益、控制周期control_dt: 0.02即 50Hz等上电操作必须严格按顺序完整图文说明见 实机部署 README机器人吊起状态下开机等待进入零力矩模式按遥控器L2R2进入调试模式关节进入阻尼态网线直连电脑与机器人配好 IP 后记录网卡名运行部署程序后关节为零力矩按遥控器start使机器人回到默认站姿缓慢下放让其踩地按A进入运动控制模式左摇杆控制前后/横移右摇杆控制转向按select退出控制、CtrlC终止程序⚠️ 这是演示性质部署程序不是稳定控制程序控制过程中避免碰撞机器人出现异常立即退出控制。追求更低延迟可以编译仓库内置的 C 版部署源码在 cpp_g1 目录依赖 LibTorchmkdir build cd build cmake .. make -j4后以./g1_deploy_run {net_interface}运行。调优按症状定位问题训练速度不够快--headless true去掉窗口渲染这是影响最大的一项调大--num_envs如 4096显存允许的前提下越多越快确认--sim_device与--rl_device都落在 GPU 上若显存不足--sim_devicecpu可以牺牲速度换取显存余量策略表现不稳定G1 的奖励权重集中在 g1_config.py 的rewards.scales中例如tracking_lin_vel 1.0追踪速度指令、base_height -10.0躯干高度目标 0.78m 的惩罚、action_rate -0.01动作平滑惩罚。常见调法走路飘加大orientation、ang_vel_xy负权重追不上指令提高tracking_lin_vel正向权重收敛慢runner.max_iterations默认 10000可按需提高探索不足时调小algorithm.entropy_coef默认 0.01仿真与实机差距大差距主要来自域随机化覆盖不足。G1 的domain_rand已开启摩擦随机化friction_range [0.1, 1.25]、躯干加质量added_mass_range [-1., 3.]和每 5 秒一次的最大 1.5 m/s 外力推搡。若实机仍明显退化扩大上述随机化范围或检查观测噪声配置legged_gym/envs/base/legged_robot_config.py中的noise段上实机前必须先过 MuJoCo 的 Sim2Sim 关卡两边都稳定再部署对比训练配置与部署 YAML 中的kps/kds/action_scale是否严格一致显存或内存不够降低--num_envs训练吞吐与环境数线性相关训练时避免开窗口play 阶段内部已把环境数限制在 100、地形网格限制为 5×5无需手动处理硬件基线建议NVIDIA 显卡 16GB 以上内存RTX 3080 及以上体验较好一条完整的实战路径让 G1 在平地上稳定行走以 G1 为例串联全流程。安装完成后先直接跑仓库预训练模型确认环境无误——deploy/deploy_mujoco/configs/g1.yaml中的policy_path已指向deploy/pre_train/g1/motion.pt执行python deploy/deploy_mujoco/deploy_mujoco.py g1.yaml应能看到机器人以 0.5 m/s 前向行走这一步可排除 80% 的环境问题。确认无误后训练自己的策略python legged_gym/scripts/train.py --taskg1 --headless true --num_envs 4096。在 RTX 3080 级别的 GPU 上跑到可用地面行走策略大约需要 1-2 小时期间可用 TensorBoard 观察reward与episode length曲线episode length 稳定在最大值附近说明机器人不再频繁摔倒。训练收敛后依次执行play.py --taskg1Gym 回放并导出策略、MuJoCo 验证把 YAML 中policy_path改为导出的policy_lstm_1.pt、实机部署。预期效果机器人按遥杆指令在平地上稳定行走、转向速度由cmd_scale[2.0, 2.0, 0.25]与遥杆共同决定最大线速度受max_cmd[0.8, 0.5, 1.57]限制。后续探索方向地形与课程学习地形生成与难度递进逻辑在 terrain.py可修改地形参数挑战粗糙地形自定义任务参照legged_gym/envs/g1/的结构新建 config 与 env 文件并在legged_gym/envs/__init__.py中task_registry.register()注册H1_2 全身控制预览任务说明见 h1_2 README注意当前奖励函数尚未调优C 部署deploy/deploy_real/cpp_g1/提供 LibTorch 推理与 50Hz 控制的完整工程资源索引安装文档doc/setup_zh.md / doc/setup_en.md实机部署图文指南deploy/deploy_real/README.md预训练模型deploy/pre_train/{g1,h1,h1_2}/motion.pt机器人模型资源URDF/MJCF/网格resources/robots/训练/推理入口train.py、play.py许可证BSD-3-Clause见 LICENSE【免费下载链接】unitree_rl_gym项目地址: https://gitcode.com/GitHub_Trending/un/unitree_rl_gym创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑