电脑硬件配置及开发环境要求(训练与部署同等需求):
- GPU:NVIDIA GPU至少 8GB 显存。为节省训练时间,推荐 GeForce RTX 3090 (24 GB) 或更高
- CPU:至少六核处理器,推荐Intel: Core i7-10700K/AMD:Ryzen5 5600X/或更高版本
- 内存:16GB以上
- 存储空间:至少 30GB 可用空间
- 操作系统:Ubuntu 22.04 LTS及以上版本
- Python:3.10或更高版本
- 网络环境:能正常访问Github
1 任务概述
双足运控项目的开发流程包含以下 4 个主要阶段:
flowchart LR
A["01 · 训练"] --> B["02 · Play"] --> C["03 · Sim2Sim"] --> D["04 · Sim2Real"]
classDef training fill:#e8f1ff,stroke:#4f83cc,color:#17365d,stroke-width:1.5px
classDef play fill:#e8f6f1,stroke:#4a9b76,color:#174d38,stroke-width:1.5px
classDef sim2sim fill:#fff4df,stroke:#d69b36,color:#68480d,stroke-width:1.5px
classDef sim2real fill:#f2ecff,stroke:#8666c5,color:#38265f,stroke-width:1.5px
class A training
class B play
class C sim2sim
class D sim2real
本教程中所用到的训练环境为IsaacLab 2.3.2 + Isaac Sim 5.1.0。
Isaac Lab 是一个统一的、模块化的机器人学习框架,旨在简化机器人研究中的常见工作流程(如强化学习、从示范中学习和运动规划)。它构建在 NVIDIA Isaac Sim 之上,以利用最新的仿真能力以用于逼真的场景和快速高效的仿真。
该框架的核心目标包括:
-
模块化: 轻松定制并添加新的环境、机器人和传感器。
-
灵活性: 适应社区的不断变化需求。
-
开放性: 保持开源,允许社区贡献和扩展该框架。
-
功能齐全: 包括多种环境、传感器和任务,可供直接使用。
Isaac Lab 中提供的主要功能包括由 PhysX 提供的快速准确的物理仿真,用于矢量化渲染的分块渲染 API,用于改善鲁棒性和适应性的域随机化,以及支持在云端运行的功能。
为了快速上手,我们将在本教程中指导您完成一个具体的双足运控任务,即TRON2机器人WF、SF形态下的基础运动。如下所示
2 环境配置
以下步骤首先从其预构建的二进制文件中安装 Isaac Sim,然后从源代码中安装 Isaac Lab。
2.1 IsaacSim安装
在本次安装中,我们使用Isaaclab的预编译二进制安装,可以从下方页面下载ZIP包:
https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/download.html
下载完成 zip 文件后,您可以将其解压到所需目录。
在本次安装中,我们假设Isaac Sim目录被命名为
${HOME}/isaacsim。
然后将下面两个指令加入环境变量.bashrc中:
# Isaac Sim root directory
export ISAACSIM_PATH="${HOME}/isaacsim"
# Isaac Sim python executable
export ISAACSIM_PYTHON_EXE="${ISAACSIM_PATH}/python.sh"
2.2 验证 Isaac Sim 安装
使用下方指令检查仿真器是否正常运行::
# note: you can pass the argument "--help" to see all arguments possible.
${ISAACSIM_PATH}/isaac-sim.sh
使用下方指令检查仿真器是否可以从独立的 python 脚本中运行:
# checks that python path is set correctly
${ISAACSIM_PYTHON_EXE} -c "print('Isaac Sim configuration is now complete.')"
# checks that Isaac Sim can be launched from python
${ISAACSIM_PYTHON_EXE} ${ISAACSIM_PATH}/standalone_examples/api/isaacsim.core.api/add_cubes.py
如果您之前使用过 Isaac Sim 的旧版本,您需要在安装后 第一次 运行以下命令,以删除所有旧用户数据和缓存变量:
${ISAACSIM_PATH}/isaac-sim.sh --reset-user
如果按照上述说明仿真器无法运行或崩溃,意味着某些配置不正确。要调试和故障排除,请查看 Isaac Sim 文档 和 Isaac Sim Forums 。
2.3 IsaacLab安装
2.3.1 克隆IsaacLab
git clone -b release/2.3.0 https://github.com/isaac-sim/IsaacLab.git
2.3.2 构建软链接
# enter the cloned repository
cd IsaacLab
# create a symbolic link
ln -s path_to_isaac_sim _isaac_sim
# path_to_isaac_sim是指本地的isaac_sim的存放路径,需注意!!!
# recommended: ln -s ~/isaacsim _isaac_sim
2.4 Conda安装
可以参照下方的方法安装Conda:
https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html
安装好Conda后,创建Conda环境:
# Option 1: Default environment name 'env_isaaclab'
./isaaclab.sh --conda # or "./isaaclab.sh -c"
# Option 2: Custom name
./isaaclab.sh --conda my_env # or "./isaaclab.sh -c my_env"
#激活环境
# Activate environment
conda activate env_isaaclab # or "conda activate my_env"
2.5 Python依赖安装
2.5.1 安装系统依赖包
build-essential 是 Ubuntu / Debian 系统中的一个元软件包(meta-package),用于一次性安装 C/C++ 开发最基础的一套编译工具。
# these dependency are needed by robomimic which is not available on Windows
sudo apt install cmake build-essential
2.5.2 安装IsaacLab Python包
./isaaclab.sh --install # or "./isaaclab.sh -i"
默认情况下,上述命令将安装 所有 学习框架。这些包括 rl_games 、 rsl_rl 、 sb3 、 skrl 、 robomimic 。
2.6 验证 Isaac Lab 安装
# Option 1: Using the isaaclab.sh executable
# note: this works for both the bundled python and the virtual environment
./isaaclab.sh -p scripts/tutorials/00_sim/create_empty.py
# Option 2: Using python in your virtual environment
python scripts/tutorials/00_sim/create_empty.py
上述命令应该启动仿真器,并显示具有黑色视口的窗口。您可以通过在终端上按 Ctrl+C 来退出脚本。
如果您看到这个,那么安装成功了!
如果出现错误
ModuleNotFoundError: No module named 'isaacsim',请确保虚拟环境已激活且已执行source _isaac_sim/setup_conda_env.sh。
3 代码准备
3.1 拉取代码
使用下方指令拉取代码:
git clone https://github.com/limx-tron2/tron2_rl_lab
3.2 安装Python包
首先进入代码路径
cd tron2_rl_lab
激活Conda环境
conda activate env_isaaclab
然后安装代码包
pip install -e rsl_rl
pip install -e exts/bipedal_locomotion --no-build-isolation
4 启动训练
本章代码均以脚掌形态为示例
4.1 训练
conda activate env_isaaclab
python scripts/rsl_rl/train.py \
--task Isaac-Limx-SF-TRON2A-Blind-Flat-v0 \
--num_envs 4096 \
--headless
4.2 Play训练好的策略
使用如下指令播放训练好的策略,播放的同时也会导出部署所需要的ONNX模型文件
conda activate env_isaaclab
python scripts/rsl_rl/play.py \
--task Isaac-Limx-SF-TRON2A-Blind-Flat-v0 \
--num_envs 1
5 仿真、真机部署
5.1 环境准备
-
配置 Conda 环境用于Python部署
创建一个专门用于Python部署运行的 Conda 环境(例如,
tron2_deploy),并指定 Python 版本:conda create --name tron2_deploy python=3.8 -
激活刚刚创建的环境:
conda activate tron2_deploy
5.2 创建工作空间
可以按照以下步骤,创建一个RL部署开发工作空间:
-
打开一个Bash终端。
-
创建一个新目录来存放工作空间。例如,可以在用户的主目录下创建一个名为“limx_ws”的目录:
mkdir -p ~/limx_ws -
下载 MuJoCo 仿真器
cd ~/limx_ws git clone --recurse-submodules https://github.com/limx-tron2/tron2_mujoco_sim -
下载部署实现
cd ~/limx_ws git clone --recurse-submodules https://github.com/limx-tron2/tron2_rl_deploy_python -
安装运动控制开发库(如果尚未安装):
- Linux x86_64 环境
# 激活tron2_deploy的conda环境 conda activate tron2_deploy # 安装limxsdk pip install tron2_rl_deploy_python/limxsdk-lowlevel/python3/amd64/limxsdk-*-py3-none-any.whl- Linux aarch64 环境
# 激活tron2_deploy的conda环境 conda activate tron2_deploy # 安装limxsdk pip install tron2-rl-deploy-python/limxsdk-lowlevel/python3/aarch64/limxsdk-*-py3-none-any.whl -
设置机器人型号:请参考“查看/设置机器人型号”章节,查看您的机器人型号。如果尚未设置,请按照以下步骤进行设置。
- 通过 Shell 命令
tree -L 1 tron2-mujoco-sim/robot-description/tron2列出可用的机器人类型:
limx@limx:~$ tree -L 1 tron2-mujoco-sim/robot-description/tron2 tron2-mujoco-sim/robot-description/pointfoot ├── SF_TRON2A └── WF_TRON2A- 以 WF_TRON2A(请根据实际机器人类型进行替换)为例,设置机器人型号类型:
echo 'export ROBOT_TYPE=WF_TRON2A' >> ~/.bashrc && source ~/.bashrc - 通过 Shell 命令
5.3 更新RL训练模型
在您的工作空间中,以 WF_TRON2A机器人类型为例,
- RL模型、配置文件所在路径为:
~/limx_ws/tron2-rl-deploy-python/controllers/model/WF_TRON2A,
如下所示。请根据您所使用的训练环境和训练结果更新替换。
tree ~/limx_ws/tron2-rl-deploy-python/controllers/model/WF_TRON2A/
.
├── params.yaml
├── policy.onnx
└── encoder.onnx
5.4 仿真部署
-
打开一个Bash终端,运行 MuJoCo 仿真器。
# 激活tron2_deploy的conda环境 conda activate tron2_deploy # 运行仿真器 cd ~/limx_ws python tron2-mujoco-sim/simulator.py -
打开一个Bash终端,运行控制算法。
如果您的机器人处于摔倒状态,请在启动运动控制后,单击 MuJoCo 仿真器左侧菜单栏的
“Reset”按钮以重置机器人。此时,您将看到机器人恢复并开始行走。# 激活tron2_deploy的conda环境 conda activate tron2_deploy # 运行控制算法 python tron2-rl-deploy-python/main.py -
打开一个Bash终端,运行虚拟遥控器:仿真的过程中,您可以使用虚拟遥控器来控制机器人运动。左摇杆:控制前进/后退/左转/右转运动;右遥控:可控制机器人左右横向运动。
./tron2-mujoco-sim/robot-joystick/robot-joystick
5.5 部署前准备
- 修改开发者电脑IP:确保您的开发电脑与机器人本体通过外置网口连接。设置您的电脑IP地址为:
10.192.1.200,并通过Shell命令ping 10.192.1.4能够正常ping通。如下图所示对您的开发电脑进行IP设置:
-
打开底层开发者模式:机器人开机后,同时按下遥控器按键
R1 + Right会进入High-level Dev,再按L1 + □进入Idle,再按R1 + Right会进入Low-level Dev,这时本体主机将会底层开发者模式,灯显颜色为绿色。在此模式下,用户可以开发自己的运动控制算法。模式设置掉电后不会失效,重新开机后仍然是底层开发者模式。 -
实机部署运行。在Bash终端只需下面Shell命令启动控制算法(在进行实机部署运行时,确保机器人吊装非常重要):
# 激活tron2_deploy的conda环境 conda activate tron2_deploy # 指定机器人IP地址,运行控制算法 python3 tron2-rl-deploy-python/main.py 10.192.1.4
警告
- 执行完运控程序,机器人会自动进入
prepare状态(所有关节处于默认零位,机器人处于站直的状态),因此执行程序前需将机器人吊起,并且确保周围没人;- 在进入机器人行走功能前,确保机器人是被吊装的,且机器人末端着地;
-
这时您可以通过遥控器按键
L1 + △开启机器人行走功能。左摇杆:控制前进/后退/左转/右转运动;右遥控:可控制机器人左右横向运动。 -
遥控器按
L1 + □关闭机器人行走功能。
5.6 实机部署
当您完成仿真和真机调试后,可以将您的算法程序部署到机器人上(在部署测试完成之前,确保机器人始终保持吊装状态非常重要,以保障安全)。详细步骤如下:
-
准备工作
-
保持机器人继续处于开发者模式:确保机器人仍处于开发者模式,方便您进行程序部署和调试。
-
网络连接:确保开发电脑与机器人通过外置网口(Ethernet)连接,网络稳定且通信正常。部署完成后,网络连接将不再需要。
-
-
拷贝算法程序到机器人
-
在开发电脑上打开终端,进入到存放算法程序的工作目录,例如
~/limx_ws。 -
使用
scp命令将包含算法的目录拷贝到机器人中,默认机器人用户为guest,密码为123456。
cd ~/limx_ws scp -r tron2-rl-deploy-python guest@10.192.1.4:/home/guest -
-
安装运动控制开发库(如果尚未安装):
ssh guest@10.192.1.4 "pip install /home/guest/tron2-rl-deploy-python/limxsdk-lowlevel/python3/amd64/limxsdk-*-py3-none-any.whl" -
启动程序:在Bash终端只需下面Shell命令启动控制算法(在进行实机部署运行时,确保机器人吊装非常重要):
# 激活tron2_deploy的conda环境
conda activate tron2_deploy
# 指定机器人IP地址,运行控制算法
python3 tron2-rl-deploy-python/main.py 10.192.1.2
警告
- 执行完运控程序,机器人会自动进入
prepare状态(所有关节处于默认零位,机器人处于站直的状态),因此执行程序前需将机器人吊起,并且确保周围没人;- 在进入机器人行走功能前,确保机器人是被吊装的,且机器人末端着地;
-
配置算法自动启动(按需配置)
-
SSH 登录机器人:使用 ssh 命令远程登录到机器人系统,密码为
123456。ssh guest@10.192.1.4
自启动脚本正在编辑,用户目前需要手动启动控制器,我们会迅速OTA自启动脚本(6.17):
python3 /home/guest/tron2-rl-deploy-python/main.py 10.192.1.2修改自启动脚本:
- 打开自启动脚本
/home/guest/autolaunch/autolaunch.sh进行编辑:busybox vi /home/guest/autolaunch/autolaunch.sh - 在脚本中找到启动
main.py的命令:确保python3 /home/guest/tron2-rl-deploy-python/main.py 10.192.1.4这一行未被注释(没有#注释符号)。编辑完成后,保存并退出编辑器。#!/bin/bash while true; do # 启动用于控制 Pointfoot 机器人的 Python 控制器脚本 # 参数 10.192.1.4 表示机器人所在的 IP 地址 # 该行被注释掉,若要启用自动控制器启动,请取消注释 # 请根据您控制器脚本的实际路径修改此路径 python3 /home/guest/tron2-rl-deploy-python/main.py 10.192.1.4 # 使用 roslaunch 启动机器人控制算法 # 若要启动机器人控制算法,请取消下面注释 # 请根据您安装的实际路径修改路径 # source /home/guest/install/setup.bash # roslaunch robot_hw pointfoot_hw.launch # 等待 3 秒后重新启动 sleep 3 done - 重启机器人电脑。修改完成后,执行以下命令重启机器人:
reboot
-
-
控制机器人运动
等待系统启动后,您可以使用遥控器控制机器人:
-
L1 + △:启动机器人行走功能;
-
L1 + □: 关闭机器人行走功能;
-
左摇杆:控制机器人前进、后退、左转、右转;
-
右摇杆:控制机器人左右横向运动。
-