本文主要介绍如何快速使用逐际动力的开源强化学习仓库实现TRON1的训练和部署

1.安装与环境配置

1.1前置条件:

  1. GPU:推荐 GeForce RTX 3080 (12 GB) 或更高
  2. 操作系统:Ubuntu 20.04 LTS
  3. 网络环境:能正常访问Github

1.2一键安装RL训练环境

        在终端中输入:

mkdir -p ~/limx_rl && cd ~/limx_rl && \
sudo apt update && sudo apt install -y git && \
if [ ! -d "pointfoot-legged-gym" ]; then \
  git clone https://github.com/limxdynamics/pointfoot-legged-gym.git; \
fi && \
cd pointfoot-legged-gym && bash install.sh && source ~/.bashrc

    执行完上述命令后等待片刻,终端中会出现:

               

    此时长按Enter阅读完Anaconda的用户协议后,会出现:

      

    输入yes并回车后,可以选择Anaconda的路径(一般不用更改),直接按下Enter即可,会出现:

    输入no按下回车即可完成Anaconda的安装。

    Anaconda安装完成后,一键安装脚本还会继续安装pointfoot_legged_gym和相关依赖,请耐心等待安装完成。

1.3验证训练环境

1.验证NVIDIA驱动安装

nvidia-smi

  如果显示了 NVIDIA 驱动版本和 GPU 信息,说明驱动已成功安装。

2.验证IsaacGym是否安装成功

conda activate pointfoot_legged_gym
cd ~/limx_rl/isaacgym/python/examples
python 1080_balls_of_solitude.py

3.验证pointfoot-legged-gym是否安装成功

当您安装完RL环境后,在 ~/limx_rl目录下包含如下所示的内容:

cd ~/limx_rl
.
├── isaacgym
└── pointfoot-legged-gym

1.4一键安装部署环境

打开一个终端,在终端中输入(注意训练的conda环境和部署的conda环境不是同一个):

source ~/anaconda3/etc/profile.d/conda.sh && \
conda create -n pointfoot_deploy python=3.8 -y && \
conda activate pointfoot_deploy && \
mkdir -p ~/limx_ws && cd ~/limx_ws && \
git clone --recurse-submodules https://github.com/limxdynamics/pointfoot-mujoco-sim.git && \
git clone --recurse-submodules https://github.com/limxdynamics/rl-deploy-with-python.git && \
ARCH=$(uname -m) && \
if [ "$ARCH" = "x86_64" ]; then \
  pip install rl-deploy-with-python/limxsdk-lowlevel/python3/amd64/limxsdk-*-py3-none-any.whl; \
elif [ "$ARCH" = "aarch64" ]; then \
  pip install rl-deploy-with-python/limxsdk-lowlevel/python3/aarch64/limxsdk-*-py3-none-any.whl; \
else \
  echo "不支持的架构:$ARCH"; \
fi && \
pip install onnx && \
echo 'export ROBOT_TYPE=PF_TRON1A'>>~/.bashrc && \
echo'export RL_TYPE=isaacgym'>> ~/.bashrc && \
source ~/.bashrc

1.5验证部署环境

        打开一个Bash终端来运行控制算法。

# 激活pointfoot_deploy的conda环境
conda activate pointfoot_deploy

# 运行控制算法
cd ~/limx_ws && python rl-deploy-with-python/main.py

         打开一个Bash终端来运行MuJoCo仿真器。

# 激活pointfoot_deploy的conda环境
conda activate pointfoot_deploy

# 运行仿真器
cd ~/limx_ws && python pointfoot-mujoco-sim/simulator.py

        打开一个Bash终端来运行虚拟遥控器,仿真的过程中,您可以使用虚拟遥控器来控制机器人运动。

  • 左摇杆:控制前进/后退/左转/右转运动;

  • 右遥控:可控制机器人左右横向运动。

    cd ~/limx_ws && ./pointfoot-mujoco-sim/robot-joystick/robot-joystick

    若能看到双点足机器人在MuJoCo中正常运动说明配置成功。

        如果您的机器人处于摔倒状态,请在启动运动控制后,单击 MuJoCo 仿真器左侧菜单栏的"Reset"按钮以重置机器人。此时,您将看到机器人恢复并开始行走。

2.TRON1点足训练

2.1启动训练

1.训练双点足机器人需切换分支,打开终端输入:

cd ~/limx_rl/pointfoot-legged-gym 

2.常用训练参数说明:

        --task=pointfoot_flat:指定任务或环境类型为 pointfoot_flat。

        --num_envs 1024:指定要创建的环境数量为 1024。

        --max_iteration 10000: 指定要训练的轮数为10000轮       

        --headless:以无头模式运行,即不显示任何图形界面。通常用于在没有显示器的服务器上运行,或者在需要高效计算而不需要图形渲染的情况下使用。

3.开始训练

        a.命令1:无头模式运行(推荐)

conda activate pointfoot_legged_gym
cd ~/limx_rl/pointfoot-legged-gym
python legged_gym/scripts/train.py --task=pointfoot_flat --headless

        b.命令2:图形模式运行

conda activate pointfoot_legged_gym
cd ~/limx_rl/pointfoot-legged-gym
python legged_gym/scripts/train.py --task=pointfoot_flat

可以看到Isaac Gym以图形模式运行:(可以在键盘按下V键暂停图形渲染来加快训练速度)

4.继续训练

如果您的训练终止,可以指定一个检查点的文件接着继续训练。

请注意将--load_run和--checkpoint的参数替换为实际中您的参数。

cd ~/limx_rl/pointfoot-legged-gym
python legged_gym/scripts/train.py --task=pointfoot_flat --resume --headless --load_run Dec23_17-38-22_ --checkpoint 200

可以看到Loading model from: 的输出,说明已经读取该路径下的checkpoint继续训练。

2.2查看训练情况

1.激活Conda环境

conda activate pointfoot_legged_gym

2.启动Tensorborad

cd ~/limx_rl/pointfoot-legged-gym
tensorboard --logdir=logs/pointfoot_flat

3.查看训练情况

        在浏览器地址栏输入 http://127.0.0.1:6006,查看训练情况。

2.3导出训练结果

1.完成训练后查看训练结果

        默认会读取最新的run和checkpoint,如需选择特定的run和checkpoint,请输入--load_run和--checkpoint参数。

        --load_run::指定要加载的训练运行的标识符(例如,训练运行的名字或ID)。这个标识符通常与训练过程相关联,用于从 logs 目录中找到相应的运行记录或配置。

        获取方式:查看 logs 目录:进入 logs 目录查看子目录或文件,这些子目录或文件通常会以训练运行的标识符命名。

        示例路径:

ls -l ~/limx_rl/pointfoot-legged-gym/logs/pointfoot_flat

        您会看到类似于 Dec23_17-38-22_ 这样的目录,Dec23_17-38-22_ 就是 --load_run 参数的值。

        --checkpoint:指定要加载的检查点文件。检查点文件保存了模型的中间状态,可以用于恢复训练或进行推断。

        获取方式:查看 logs 目录:在 logs 目录下的相应 --load_run 目录中,通常会有保存检查点的文件。这些文件通常以 .pt 或类似扩展名存在,文件名可能包含训练的轮次或时间戳。

        示例路径:

ls -l ~/limx_rl/pointfoot-legged-gym/logs/pointfoot_flat/Dec23_17-38-22_

        您会看到类似于model_200.pt 的文件,则200就是 --checkpoint 参数的值。

        使用示例

        请注意将--load_run和--checkpoint后的参数替换为自己训练logs 目录中的。

conda activate pointfoot_legged_gym
cd ~/limx_rl/pointfoot-legged-gym
python legged_gym/scripts/play.py --task=pointfoot_flat --load_run Dec23_17-38-22_ --checkpoint 200

2.导出模型的ONNX格式文件

        在运行完上一步的脚本后,可以到目录: ~/limx_rl/pointfoot-legged-gym/logs/pointfoot_flat/exported/policies 中查看导出的文件。

ls -l ~/limx_rl/pointfoot-legged-gym/logs/pointfoot_flat/exported/policies

 2.4基于Python仿真部署(sim2sim)

        在您的工作空间中,以 PF_TRON1A机器人类型为例,RL模型和配置文件所在路径为:~/limx_ws/rl-deploy-with-python/controllers/model/PF_TRON1A,如下所示。

tree ~/limx_ws/rl-deploy-with-python/controllers/model/PF_TRON1A
.
├── params.yaml
└── policy
    └── policy.onnx
    └── encoder.onnx

        将导出的训练结果即ONNX文件(包括policy.onnx和encoder.onnx)移动到对应的policy文件夹内即可。

        启动仿真

        打开一个Bash终端来运行控制算法。

conda activate pointfoot_deploy
cd ~/limx_ws && python rl-deploy-with-python/main.py

        打开一个Bash终端来运行MuJoCo仿真器。

conda activate pointfoot_deploy
cd ~/limx_ws && python pointfoot-mujoco-sim/simulator.py

        打开一个Bash终端来运行虚拟遥控器。

cd ~/limx_ws && ./pointfoot-mujoco-sim/robot-joystick/robot-joystick

        即可看到训练结果部署在MuJoCo平台中的表现。

3.TRON1实机部署

3.1真机调试

        修改开发者电脑IP:确保您的开发电脑与机器人本体通过外置网口连接。设置您的电脑IP地址为:10.192.1.200,并通过Shell命令ping 10.192.1.2 能够正常ping通。如下图所示对您的开发电脑进行IP设置:

        打开开发者模式:机器人开机后,同时按下遥控器按键 R1 + Left,这时本体主机将会自动重启并切换机器人到开发者模式。在此模式下,用户可以开发自己的运动控制算法。模式设置掉电后不会失效,重新开机后仍然是开发者模式。

        进行校零动作:机器人开机启动后,执行运控程序之前,请进行校零,使机器人各个关节回到初始位置。校零对应的遥控器按键为L1+R1。

        实机部署运行。在Bash终端只需下面Shell命令启动控制算法(在进行实机部署运行时,确保机器人吊装非常重要):

conda activate pointfoot_deploy
cd ~/limx_ws
python rl-deploy-with-python/main.py 10.192.1.2

        这时您可以通过遥控器按键L1 + △开启机器人行走功能。左摇杆:控制前进/后退/左转/右转运动;右遥控:可控制机器人左右横向运动。

        遥控器按L1 + □关闭机器人行走功能。

3.2真机部署

        当您完成仿真和真机调试后,可以将您的算法程序部署到机器人上(在部署测试完成之前,确保机器人始终保持吊装状态非常重要,以保障安全)。详细步骤如下:

        1.准备工作

        保持机器人继续处于开发者模式:确保机器人仍处于开发者模式,方便您进行程序部署和调试。

        网络连接:确保开发电脑与机器人通过外置网口(Ethernet)连接,网络稳定且通信正常。部署完成后,网络连接将不再需要。

        2.拷贝算法程序到机器人

        在开发电脑上打开终端,进入到存放算法程序的工作目录,例如 ~/limx_ws。

        使用 scp 命令将包含算法的目录拷贝到机器人中,默认机器人用户为 guest,密码为 123456。

cd ~/limx_ws
scp -r rl-deploy-with-python guest@10.192.1.2:/home/guest

        安装运动控制开发库(如果尚未安装):

ssh guest@10.192.1.2 "pip install /home/guest/rl-deploy-with-python/limxsdk-lowlevel/python3/amd64/limxsdk-*-py3-none-any.whl"   

        配置算法自动启动:

        SSH 登录机器人:使用 ssh 命令远程登录到机器人系统,密码为 123456。

ssh guest@10.192.1.2

        打开自启动脚本 /home/guest/autolaunch/autolaunch.sh 进行编辑:

busybox vi /home/guest/autolaunch/autolaunch.sh

        在脚本中找到启动 main.py 的命令:确保 python3 /home/guest/rl-deploy-with-python/main.py 10.192.1.2 这一行未被注释(没有 # 注释符号)。编辑完成后,保存并退出编辑器。

#!/bin/bash

while true; do
  # 启动用于控制 Pointfoot 机器人的 Python 控制器脚本
  # 参数 10.192.1.2 表示机器人所在的 IP 地址
  # 该行被注释掉,若要启用自动控制器启动,请取消注释
  # 请根据您控制器脚本的实际路径修改此路径
  python3 /home/guest/rl-deploy-with-python/main.py 10.192.1.2

  # 使用 roslaunch 启动机器人控制算法
  # 若要启动机器人控制算法,请取消下面注释
  # 请根据您安装的实际路径修改路径
  # source /home/guest/install/setup.bash
  # roslaunch robot_hw pointfoot_hw.launch

  # 等待 3 秒后重新启动
  sleep 3
done

        重启机器人电脑。配置完成后,手动重启机器人。

3.控制机器人运动

        等待系统启动后,您可以使用遥控器控制机器人:

        L1 + △:启动机器人行走功能;

        L1 + □: 关闭机器人行走功能;

        左摇杆:控制机器人前进、后退、左转、右转;

        右摇杆:控制机器人左右横向运动。

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐