宇树强化学习RL例程:使用 isaac_gym 仿真平台训练 G1 控制算法实验记录
实验记录
宇树强化学习RL例程:使用 isaac_gym 仿真平台训练 G1 控制算法
参考官方开发文档https://support.unitree.com/home/zh/G1_developer/rl_control_routine
实验环境
我的环境:ubuntu22.04物理机,4090
训练必须使用物理机,本人经实验后发现wsl不支持isaac_gym可视化界面显示,虚拟机无法使用显卡。
官方文档建议系统使用 ubuntu18/20,但我在装ubuntu20系统时遇到无线网卡和有线网卡都不匹配的问题,ubuntu无法上网,手机usb共享热点失败。虽然isaac_gym平台官方已停止维护,但经过实验发现,isaac_gym能在ubuntu22上正常使用。
虽然宇树机器人G1 edu的开发板系统是ubuntu20,但在ubuntu22上训练好的模型可以迁移至宇树机器人G1 edu上。
我的CUDA与显卡驱动版本如下
安装对应的显卡驱动
如果之前安装了不适配的版本或安装失败,手动卸载干净
sudo apt purge nvidia*
sudo apt autoremove
首先确认显卡型号以及系统推荐安装的驱动版本
ubuntu-drivers devices
自动安装推荐版本驱动
sudo ubuntu-drivers autoinstall
手动安装特定版本
sudo apt update
sudo apt install nvidia-driver-535
驱动安装完成后,必须重启才能生效。
sudo reboot
验证安装是否成功,重启后,输入以下命令查看 GPU 状态:
nvidia-smi
注意:
1、Secure Boot 问题:如果主板开启了 Secure Boot,在安装驱动的过程中,可能终端会弹出一个蓝色的界面
重启按F12或Fn+F12(华硕是F8,戴尔是F2)进入BIOS界面,找到Secure Boot设置成disabled。这一步大部分是在用引导U盘装双系统的时候更改。
2、ubuntu终端是鼠标右键复制或者粘贴,不是ctrl c/v
虚拟环境配置
安装miniconda,依次运行
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
# 激活环境变量
source ~/.bashrc
# 配置镜像源,也可不配置,我主要用pip
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
安装官方文档,依次运行
conda create -n rl-g1 python=3.8
conda activate rl-g1
torch版本不必使用过低的1.1,但numpy库版本不要太高,建议安装 1.23.5版本
pip install torch torchvision torchaudio
下载 Isaac Gym Preview 4 仿真平台到ubuntu22

勾选

勾选

解压后进入 python 目录,使用 pip 安装,并用镜像加速
# current directory: isaacgym/python
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/
运行 python/examples 目录下的例程,验证安装是否成功
# current directory: isaacgym/python/examples
python 1080_balls_of_solitude.py
安装成功我的显示如图

问题:
运行python 1080_balls_of_solitude.py时报错,
ImportError:libpython3.8.so.1.0: cannot open shared object file: no such file or dictionary

运行
sudo find / -name "libpython3.8.so.1.0"

在minicoda3/envs/rl-g1/lib下找到了libpython3.8.so.1.0
发现libpython3.8.so.1.0文件上有个红色小×,链接失效
将/home/fly/miniconda3/pkgs/python-3.8.20-he870216_0/lib/libpython3.8.so.1.0这个文件复制替换掉
/home/fly/miniconda3/envs/rl-g1/lib/libpython3.8.so.1.0即可解决问题
接着安装rsl_rl库,依次运行
git clone https://github.com/leggedrobotics/rsl_rl
cd rsl_rl
git checkout v1.0.2
pip install -e . -i https://mirrors.aliyun.com/pypi/simple/
注意一定要严格git checkout v1.0.2!不要手动下载
训练
下载宇树官方示例代码
git clone https://github.com/unitreerobotics/unitree_rl_gym.git
修改 legged_gym/scripts/train.py , legged_gym/scripts/play.py 中的sys.path.append(“/home/unitree/h1/legged_gym”)为自己的路径
注意:
sys.path.append(“/home/…unitree_rl_gym/legged_gym”)后仍然报错ModuleNotFoundError: No module named 'legged_gym'
这是因为当执行train.py中的 from legged_gym.envs import * 时,Python 会在 sys.path 的每一个目录下寻找名为 legged_gym 的 文件夹。
目前的设置: 把 /home/.../unitree_rl_gym/legged_gym 加入了路径。Python 的行为: 它会去 /home/…/unitree_rl_gym/legged_gym 目录下找一个叫 legged_gym 的子文件夹。
解决:
应该将 legged_gym 的 父目录 加入 sys.path:sys.path.append("/home/.../unitree_rl_gym")
接着切换到 legged_gym/scripts 目录下,执行训练指令,开始训练。
python3 train.py --task=g1
初始训练次数是一万次,过于久,可在配置文件里修改
由于运行的是 --task=g1,需要找到 G1 机器人的训练配置。路径:legged_gym/envs/g1/g1_config.py
修改 max_iterations 参数,改为1000即可
开始训练后会出现如下 isaac_gym 界面

训练完成后,运行测试指令。
python play.py --task=g1
注意:
play.py 中的 sys.path.append(“/home/…/unitree_rl_gym”)需要放在from legged_gym import LEGGED_GYM_ROOT_DIR和from legged_gym import LEGGED_GYM_ROOT_DIR的前面,import sys的后面
我的测试效果如图,1000轮机器人已经能较好的行走

更多推荐
所有评论(0)