跳到主要内容宇树 Go2 机器人强化学习(RL)开发实操指南 | 极客日志PythonAI算法
宇树 Go2 机器人强化学习(RL)开发实操指南
介绍宇树 Go2 机器人在强化学习(RL)领域的开发流程。涵盖硬件与系统要求,基于 Isaac Gym 和 Isaac Lab 两大仿真平台的环境配置、模型训练及策略部署步骤。内容包括 Conda 虚拟环境搭建、CUDA 与 PyTorch 安装、rsl_rl 库使用、PPO 算法训练命令、Sim2Real 实物部署方案及常见问题解决方案,帮助开发者完成从仿真到实物的全流程落地。
DataScient28 浏览 在 Go2 机器人的 RL 开发中,环境配置、模型训练、效果验证与策略部署的实操步骤是核心环节。本文基于宇树科技官方文档及开源资源,以 Isaac Gym 和 Isaac Lab 两大主流仿真平台为核心,提供从环境搭建到实物部署的全流程操作步骤,覆盖关键命令与参数配置,帮助开发者快速落地 RL 开发。
一、基础准备:硬件与系统要求
在开始操作前,需确保硬件与系统满足 RL 开发的基础需求,避免后续因配置不足导致训练中断或性能瓶颈。
| 类别 | 具体要求 | 说明 |
|---|
| 显卡 | NVIDIA RTX 系列(显存≥8GB) | 需支持 CUDA 加速,Isaac Gym/Isaac Lab 均依赖 GPU 进行仿真与训练 |
| 操作系统 | Ubuntu 18.04/20.04/22.04 | 推荐 20.04 版本,兼容性最佳,避免使用 Windows 系统(部分依赖不支持) |
| 显卡驱动 | 525 版本及以上 | 需与 CUDA 版本匹配(如 CUDA 11.3 对应驱动≥465.19.01,CUDA 11.8 对应驱动≥520.61.05) |
| 软件依赖 | Conda(Python 包管理) | 用于创建独立虚拟环境,避免依赖冲突 |
二、基于 Isaac Gym 的 Go2 RL 开发实操(官方推荐)
Isaac Gym 是宇树科技官方文档指定的仿真平台,适合快速实现基础 RL 任务(如行走、避障),操作步骤如下:
(一)环境配置:从依赖安装到验证
1. 安装 Conda 与创建虚拟环境
若未安装 Conda,需先下载 Miniconda(轻量版),再创建并激活 Go2 专属 RL 环境:
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.10.0-1-Linux-x86_64.sh
bash Miniconda3-py38_23.10.0-1-Linux-x86_64.sh
source ~/.bashrc
conda create -n rl-go2 python=3.8
conda activate rl-go2
2. 安装 CUDA 与 PyTorch
Isaac Gym 需依赖特定版本的 CUDA 与 PyTorch,官方推荐 CUDA 11.3 + PyTorch 1.10.0:
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run
echo 'export PATH=/usr/local/cuda-11.3/bin:$PATH' >> ~/.bashrc
echo >> ~/.bashrc
~/.bashrc
pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
pip install numpy==1.23.5
'export LD_LIBRARY_PATH=/usr/local/cuda-11.3/lib64:$LD_LIBRARY_PATH'
source
3. 安装 Isaac Gym 并验证
需从 NVIDIA 官网下载 Isaac Gym Preview 4(需注册账号),解压后安装并验证:
tar -zxvf ~/Downloads/IsaacGym_Preview_4_Package.tar.gz -C ~/
cd ~/IsaacGym/python
pip install -e .
cd examples
python 1080_balls_of_solitude.py
4. 安装 rsl_rl 库(RL 算法核心)
rsl_rl 是 legged_gym 依赖的 RL 算法库,需安装 1.0.2 版本以适配 Go2:
git clone https://github.com/leggedrobotics/rsl_rl
cd rsl_rl
git checkout v1.0.2
pip install -e .
5. 下载 Go2 官方 RL 示例代码
git clone https://github.com/unitreerobotics/unitree_rl_gym
cd unitree_rl_gym
6. 修改路径配置(关键步骤)
需修改 train.py 和 play.py 中的路径,确保脚本能找到 legged_gym:
nano legged_gym/scripts/train.py
sys.path.append("/home/unitree/go2/legged_gym")
sys.path.append("~/unitree_rl_gym/legged_gym")
nano legged_gym/scripts/play.py
(二)模型训练:启动 Go2 RL 任务
1. 基础训练命令(默认任务:行走)
conda activate rl-go2
cd ~/unitree_rl_gym
python3 legged_gym/scripts/train.py --task=go2
2. 关键参数配置(优化训练效率)
| 参数 | 说明 | 示例 |
|---|
--headless | 关闭可视化界面(训练速度提升 50%+) | python3 train.py --task=go2 --headless |
--num_envs | 并行训练环境数量(显存足够时调大,推荐 32/64) | python3 train.py --task=go2 --num_envs=64 |
--max_iterations | 最大训练迭代次数(默认 1500,可按需调整) | python3 train.py --task=go2 --max_iterations=2000 |
--sim_device | 指定仿真设备(默认 GPU,CPU 训练需设为 cpu) | python3 train.py --task=go2 --sim_device=cpu |
--resume | 从上次 checkpoint 继续训练(需有历史日志) | python3 train.py --task=go2 --resume |
3. 训练过程监控
- 可视化界面:若未开启
--headless,会弹出 Isaac Gym 窗口,实时显示 Go2 的训练动作(如站立、行走)。
- 终端输出:会打印每轮迭代的奖励值(Reward)、成功率(Success Rate)等指标,当奖励值稳定在较高水平(如 1000+)时,说明训练效果良好。
- 模型保存:训练结果默认保存在
logs/<experiment_name>/<date_time>_<run_name>/,包含模型文件(model_xxx.pt)和日志。
(三)效果验证:使用 play.py 测试训练结果
当训练迭代达到 1500 次后,可通过 play.py 验证策略效果:
python3 legged_gym/scripts/play.py --task=go2
python3 legged_gym/scripts/play.py --task=go2 --checkpoint=1200
python3 legged_gym/scripts/play.py --task=go2 --headless
验证标准
- 成功指标:Go2 能稳定站立、连续行走,无跌倒或动作卡顿。
- 失败处理:若出现跌倒,需返回训练步骤,增加迭代次数或调整
--num_envs 参数,重新训练。
(四)策略导出:为实物部署准备模型
play.py 会自动导出 Actor 网络(决策模型),路径为:
logs/<experiment_name>/exported/policies/policy_1.pt
导出的模型可用于后续的 sim2sim(跨仿真器部署)和 sim2real(实物部署)。
三、基于 Isaac Lab 的 Go2 RL 开发实操(进阶版)
Isaac Lab 是 NVIDIA 推出的新一代机器人 RL 框架,支持更复杂的任务(如上下台阶、后空翻),且兼容 Go2,操作步骤如下:
(一)环境配置:安装 Isaac Lab 与依赖
1. 安装基础依赖
sudo apt-get update && sudo apt-get install -y libgl1-mesa-glx libglib2.0-0
conda create -n isaaclab python=3.8
conda activate isaaclab
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
echo 'export PATH=/usr/local/cuda-11.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
pip install torch==2.0.0 torchvision==0.15.1 torchaudio==2.0.1 --extra-index-url https://download.pytorch.org/whl/cu118
2. 安装 Isaac Lab
git clone https://github.com/isaac-sim/IsaacLab.git
cd IsaacLab
./setup_conda_env.sh
python source/standalone/tutorials/00_sim/create_empty.py
3. 导入 Go2 的 USD 模型
USD 模型是 Isaac Lab 中 Go2 的仿真载体,需从宇树官方或 Isaac Lab 社区获取:
- 下载 Go2 的 USD 模型文件(如
unitree_go2.usd)。
mkdir -p source/extensions/omni.isaac.lab_assets/resources/robots/unitree_go2
cp ~/Downloads/unitree_go2.usd source/extensions/omni.isaac.lab_assets/resources/robots/unitree_go2/
(二)PPO 算法训练:实现 Go2 复杂动作
Isaac Lab 默认使用 PPO 算法(机器人 RL 主流算法),以'上下台阶'任务为例,操作步骤如下:
1. 创建仿真场景配置文件
在 source/standalone/rl 目录下创建 go2_stairs.py,定义场景(地面、台阶、Go2 机器人):
from omni.isaac.lab.app import AppLauncher
from omni.isaac.lab.assets import Robot
from omni.isaac.lab.scene import InteractiveScene
from omni.isaac.lab.envs import ManagerBasedRLEnv
app_launcher = AppLauncher(headless=False)
simulation_app = app_launcher.app
scene = InteractiveScene()
scene.add_ground_plane()
scene.add_box(prim_path="/World/Stairs", size=[2.0, 1.0, 0.15], position=[1.0, 0.0, 0.075], mass=0)
go2_robot = Robot(
prim_path="/World/Go2",
usd_path="source/extensions/omni.isaac.lab_assets/resources/robots/unitree_go2/unitree_go2.usd",
position=[0.0, 0.0, 0.5]
)
scene.add_robot(go2_robot)
env = ManagerBasedRLEnv(scene=scene, policy_cfg="ppo")
num_episodes = 1000
for episode in range(num_episodes):
obs, _ = env.reset()
done = False
while not done:
action = env.policy.compute_action(obs)
obs, reward, done, _, _ = env.step(action)
print(f"Episode {episode+1}, Reward: {reward:.2f}")
simulation_app.close()
2. 启动 PPO 训练
conda activate isaaclab
cd IsaacLab/source/standalone/rl
python go2_stairs.py
四、sim2real:从仿真到实物部署(关键步骤)
当仿真训练效果达标后,需将策略部署到 Go2 实物机器人,核心步骤如下:
(一)硬件连接
- 网络连接:将开发电脑与 Go2 通过以太网或 Wi-Fi 连接(推荐以太网,延迟更低),确保两者在同一局域网。
权限配置:通过 SSH 登录 Go2 的嵌入式系统(默认 IP:192.168.123.100,用户名:unitree,密码:unitree):
(二)部署准备
转换模型格式:将仿真导出的 policy_1.pt(PyTorch 模型)转换为 Go2 支持的格式(如 ONNX):
python -m torch.onnx.export \
--model=policy_1.pt \
--input-shape=(1,32)
--output=go2_policy.onnx
安装 Go2 SDK:在开发电脑上安装 Go2 SDK(从宇树官网下载),确保能调用机器人的运动控制接口:
cd ~/UnitreeSDK
sudo ./install.sh
(三)执行部署
上传模型与脚本:将转换后的 go2_policy.onnx 与部署脚本(如 deploy_real.py)上传到 Go2:
部署脚本核心逻辑(deploy_real.py 示例)
import onnxruntime as ort
from unitree_sdk2py import Go2SDK
sdk = Go2SDK()
sdk.connect()
session = ort.InferenceSession("go2_policy.onnx")
def get_observation():
joint_angles = sdk.get_joint_angles()
imu_data = sdk.get_imu()
return joint_angles + imu_data
while True:
obs = get_observation()
action = session.run(None, {"input": [obs]} )[0]
sdk.send_joint_commands(action)
五、常见问题与解决方案
| 问题现象 | 原因 | 解决方案 |
|---|
| 训练时弹出'CUDA out of memory' | 显存不足 | 1. 降低 --num_envs(如从 64 改为 32);2. 开启 --headless;3. 更换更大显存显卡 |
| Isaac Gym 示例脚本运行报错'ImportError: No module named 'isaacgym'' | 路径未配置 | 重新执行 pip install -e .(在 Isaac Gym/python 目录下),并确保虚拟环境激活 |
| 实物部署时 Go2 无响应 | 1. 网络未连接;2. SDK 未初始化 | 1. 检查 IP 是否正确,ping 192.168.123.100;2. 确保 sdk.connect() 返回 True |
| play.py 测试时 Go2 频繁跌倒 | 训练不充分或奖励函数不合理 | 1. 增加训练迭代次数(如到 2000 次);2. 调整奖励函数(如增加姿态稳定奖励) |
通过以上步骤,开发者可完成从仿真训练到实物部署的全流程操作。建议先基于 Isaac Gym 完成基础任务(如行走),再通过 Isaac Lab 挑战复杂任务(如上下台阶),逐步积累 RL 开发经验。
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- RSA密钥对生成器
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
- Mermaid 预览与可视化编辑
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
- 随机西班牙地址生成器
随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- curl 转代码
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online