
_
2025.11 - 2025结束这段时间,跳槽到具身智能行业, 在同事的引导下摸索着自定义usd schema, 并使用非侵入的方式修改isaac sim的physX插件, 支持从UI上对USD scene中的prim增删自定义的schema api, 修改schema属性.
下一阶段的目标是在isaac lab上尝试替换物理引擎进行rl 训练
为了更快的适应工作要求,我给自己设定了一个快速入门的计划, 通过训练一个自己的机器人模型,来学习工作所需要的技能
本博客将围绕bittle 4足机器狗 记录
- isaaclab 中训练 (平坦地面,4096个仿真环境 2000个迭代训练量, 4090 D大概10分钟左右即可)
- isaacsim 中推理 (在Ros2使用ps5手柄控制,发消息到仿真环境的Ros2节点,控制仿真世界的bittle)
- sim2sim (从physX 物理引擎转换到 其他物理引擎验证模型泛化能力)
- sim2real (通过模型蒸馏, 去除现实世界中不方便采样的数据,以及添加真实世界的6轴陀螺仪传感器)
本文不会介绍rl 和 infer的具体细节,但会提供代码,操作步骤,
尝试探索代码,优化代码,这样才会有所收获
计划常常在随着工作,目标,兴趣 调整, 不保证能做完, 但是有完成,我都会更新博客(否则岂不是做了个寂寞)
0. Bittle
bittle是一款比较成熟的学习用的机器狗, 4条腿每条腿有两个自由度,还有脖子一个,共有9个自由度,不过训练行走的话,脖子可以简略,视作8个dof.
他有一个第三方的逆向建模, 但有一些小问题, 右边肢体的关节方向与左边不一样
我做了一些调整,统一所有肢体的行为, 使其关节角度为负时,向前抬起肢体,
除此之外,还修改了关节的名称, 把关节名称按 左右(L/R),关节位置(Front / Hind), 关节名称(Hip/Knee),关节行为(Flexion-Extention/Abduction- Adduction) 重命名
由于Bittle没有向外侧扩张/合拢的关节(HAA),所以没有办法走螃蟹步,修改后的8个关节名称为
- LF_HFE (左前,髋关节,伸屈)
- LH_HFE …
- RF_HFE …
- RH_HFE …
- LF_KFE …
- LF_KFE …
- RF_KFE …
- RH_KFE (右后,膝关节,伸屈)
如果想购买Bittle, 需要注意他有ardiuno版本和esp32版本, 其中ardiuno版本不支持读取关节角度
强烈建议不要太着急买, 直到需要真机部署时再买都来得及,
isaaclab/isaacsim中内置了一些4足机器人的example, 如spot ,anymal, 我训练参考了anymal c , 推理参考了spot
1. 代码获取
本文代码基于isaacsim 5.1 + isaaclab 2.3
主仓库 项目中包含4个git submodule
|
|
获取它们:
|
|
2. 训练,导出模型
Isaaclab和isaacsim的安装, 请参考Installation using Isaac Sim Source Code
在isaaclab中 你需要把这个绝对路径修改为适合你环境的路径 (懒得改成相对路径)
训练
|
|
–num_env 表示使用4096个环境,意味着训练时,仿真世界会有4096只bittle 学习走路
agent.max_iterations=2000 表示训练过程中最多更新2000次权重
–headless 表示训练过程不显示仿真,以提升性能,
训练完成后,
|
|
其中2026-01-19_17-05-33需要修改为你真实训练的时间
执行这条指令后, log目录应为:
|
|
exported目录和params目录在后面推理步骤会使用到.
3. 推理, ps5手柄控制
isaacsim 5.1 自带了一个ros2 humble , 与Python3.11兼容
我在m系 mac book上使用ros2 humble 通过组网过云端和 isaacsim中的ros2 humble进行通讯
因为使用的消息是ros标准消息,所以不必保证abi兼容,但需要ros组网,
为简便教程,我默认看本文的你使用的是ubuntu 22.04 本机ros2 humble和isaacsim的ros通讯
如果你在ubuntu上同时使用isaacsim ros2和ros2 通讯
不自定义消息则也不必考虑abi兼容, 否则需要自己参考nvidia文档为isaacsim编译python 11兼容的 ros2
因为ubuntu22.04 apt 安装的humble是python 10兼容的,而isaacsim 5.1 使用的python 11
假设你已经安装好ros2环境和ros2-humble-joy
|
|
在编译前根据操作系统和Ps手柄型号 使用这个宏操作编译目标
开始编译
|
|
设置ros环境变量到~/.bashrc末尾
|
|
通过蓝牙或usb 连接你的ps手柄到你的主机上,然后重新打开3个终端,以便于上ros相送的环境变量生效
终端1运行
|
|
终端2运行
|
|
终端3运行
|
|
确认操作手柄方向后, 在终端3正常打印后, 就可以启动isaacsim进行下一步的测试了
同样需要修改加载的usd路径
以及修改isaacsim bittle examples中加载的模型文件路径
在isaacsim_bittle目录中执行
|
|

选择ros2 bridge, humble后, 点击start

选择 window->examples->robotics examples

在下方选择 POLICY -> Bittle ,加载完成后, 将会自动运行仿真,但机器人不会动作, 这可能是isaacsim的Bug或我代码哪里有问题
解决方式是选择所有关节,把stiffness从0.01745修改为0.017451,
事实上只要值改变一下就正常了,在末尾加1显然是一个微不足道的小修改

此时把ps5手柄通过蓝牙或type-c连接到mac book上, 就可以控制仿真世界的bittle 机器狗了.
如果不想使用ros和手柄, 只需要注释掉这部分代码 和这部分代码, 仍然可以使用键盘的方向键操作仿真环境中的bittle
Comments