双足机器人《荣耀机甲H1》到手体验
一、H1 背景
《荣耀机甲H1》是国内首个开源的小型双足机器人,由星莲动科技团队研发,旨在给开发者提供强化学习在双足机器人上的落地。本人在机器人领域开发多年,非常有幸成为荣耀机甲H1的第一批用户,目前打算以荣耀机甲H1为基本框架,应用到自己的机器人上。以下是本人到手后后开发、测试记录。
购买链接如下:
https://item.taobao.com/item.htm?id=858671670902
背景图
二、H1 仿真测试
1、笔记本配置
(1)笔记本
Intel i9处理器、显卡4060
(2)英伟达驱动
nvidia-smi
(3) cuda版本
nvcc -V
2、环境安装
(1)isaccgym 、conda安装
本人之前参考博客,安装了 legged_gym 环境,基本包含了所需各种环境,参考连接如下:
Isaac Gym环境安装和四足机器人模型的训练-CSDN博客
(2)H1 环境安装
按照《荣耀机甲H1》提供的资料,还要进行如下安装步骤:
conda create -n H1 python=3.8.10conda activate H1 pip install torchvision -i https://pypi.tuna.tsinghua.edu.cn/simplepip install torch -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pyquaternion -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pyyaml -i https://pypi.tuna.tsinghua.edu.cn/simplepip install rospkg -i https://pypi.tuna.tsinghua.edu.cn/simplepip install pexpect -i https://pypi.tuna.tsinghua.edu.cn/simplepip install mujoco==2.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install mujoco-py -i https://pypi.tuna.tsinghua.edu.cn/simplepip install mujoco-python-viewer -i https://pypi.tuna.tsinghua.edu.cn/simplepip install dm_control==1.0.14 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simplepip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simplepip install einops -i https://pypi.tuna.tsinghua.edu.cn/simplepip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simplepip install packaging -i https://pypi.tuna.tsinghua.edu.cn/simplepip install h5py -i https://pypi.tuna.tsinghua.edu.cn/simplepip install ipython -i https://pypi.tuna.tsinghua.edu.cn/simplepip install getkey -i https://pypi.tuna.tsinghua.edu.cn/simplepip install wandb -i https://pypi.tuna.tsinghua.edu.cn/simplepip install chardet -i https://pypi.tuna.tsinghua.edu.cn/simplepip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simplepip install numpy==1.23.2 -i https://pypi.tuna.tsinghua.edu.cn/simplepip install h5py_cache -i https://pypi.tuna.tsinghua.edu.cn/simplepip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simplepip install tensorboard -i https://pypi.tuna.tsinghua.edu.cn/simple
进入之前下载的isaacgym文件夹,执行如下安装:
cd /isaacgym/python/ && pip install -e .
(3)RL训练
购买《荣耀机甲H1》时候,会赠送RL训练框架文件,进入文件并运行训练脚本,即可开始训练:
python train.py
训练2000次后,基本可以稳定行走:
错误:
ImportError: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
解决:
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/user/anaconda3/envs/H1/lib/
(4) 回放+模型输出
训练结束后,需要修改 simple_play.py里面,修改加载pt模型的地址:
model_dict = torch.load(os.path.join(ROOT_DIR, \'/xxx/logs/rough_go2_constraint/Dec19_16-48-04_test_barlowtwins/model_8000.pt'))
这里的xxx根据自己电脑实际地址修改,训练的日期不同,文件夹会有所不同 ,上述以我训练的8000次为例。
然后执行:
python play.py
即可播放训练出的.pt模型。
该文件同时会输出jit版本.pt模型,用于后续的sim2sim和实物迁移,输出模型地址在主文件夹里面,如下图model_jitt.pt、modelt.pt:
(5)sim2sim验证
sim2sim之前必须运行 simple_play.py 输出模型文件,之后同样修改sim2sim_tinker.py里面加载模型的地址:
parser.add_argument('--load_model', type=str, default='/xxx/modelt.pt',help='Run to load from.')
这里的xxx根据自己电脑实际地址修改。
然后执行:
python sim2sim.py
效果如下:
可以看到:H1的sim2sim是调用mujoco进行实物验证,从结果看与RL训练出来的效果基本一致。
三、《荣耀机甲H1》 实物迁移部署
1、收到的实物
(1)一台40cm的双足整机机器人
(2)无线遥控器
(3)充电器一个
2、行走起来前的准备
按照使用教程:打开电源——连接无线——校准设备——启动强化学习——开始行走。详细阅读给定《H1使用说明书》,熟悉基本的流程和操作。
原装到货后,基本固件和训练模型都已经提前内置好了,按照说明书,基本可以实现到手即用。下面重点记录我迁移自己模型的过程。
3、迁移自己训练的模型
首先,在第二步中,我们使用给定的训练框架,训练出了自己的模型,在 paly.py 后,会生成 H1_jit.pt、H1_jit.pt 文件,代码如下:
#if 1:#full policy.load_state_dict(model_dict['model_state_dict'])policy.half()policy = policy.to(env.device)torch.save(policy,'H1.pt',)print(policy)#else:#originpolicy.load_state_dict(model_dict['model_state_dict'])policy.half()policy = policy.to(env.device)policy.save_torch_jit_policy('H1_jit.pt',env.device)
这两个文件就是第二步训练出的模型,之后经过torch转换后,机器人板载计算机可以执行的模型文件。
然后,winscp软件连接H1机器人板载 nvidia nano ,将 /sim2sim_lcm/ 文件夹中的两个 *.pt文件,替换成自己训练好的 H1_jit.pt、H1_jit.pt 文件
之后按照说明书操作,启动RL推理 :
cd /sim2sim_lcm/build #已经编译好的环境,无需重新编译
./udp_publisher_H1 #启动推理程序
这里的 udp_publisher_H1 其实是udp_publisher_H1.cpp编译出来的可执行程序,H1在这里使用libtorch推理jit模型,好处是速度更快,支持C++更易在不同设备上共用
4、实物验证
可以看到,荣耀机甲H1已经实现了从训练到部署的全部流程,因此非常适合RL机器人入门的开发者作为开源框架学习,快速部署自己的训练模型。