二、导入并训练自己的机器人
1、urdf等其他格式转usd(工具在./scrips/tools/)
维度 | URDF (Unified Robot Description Format) | USD (Universal Scene Description) |
---|---|---|
定位 | 机器人模型描述标准(仅描述单机器人) | 通用3D场景描述框架(支持任意复杂场景) |
核心能力 | 定义机器人关节、连杆的静态结构与运动关系 | 描述场景层级、几何/材质/光照/物理/动画等 |
扩展性 | 弱(不支持多robot、环境交互、动态对象) | 强(嵌套引用、场景实例化、分布式协作) |
跨软件兼容性 | 限于ROS生态(如RViz、Gazebo) | 跨行业标准(Pixar Omniverse、Unity、Blender等) |
物理模拟精度 | 依赖外部引擎(如Gazebo),自身无物理描述 | 原生支持物理属性(质量、摩擦、碰撞等) |
实时协作能力 | 无 | 支持多人实时编辑、增量更新(Live Collaboration) |
Isaac Lab作为面向大规模机器人强化学习(RL)的仿真平台,需要突破传统URDF的六大瓶颈:复杂场景支持、高保真物理与传感器仿真、并行仿真加速训练、无缝衔接Omniverse生态、强化学习数据流集成、工业级数字孪生需求。
可在https://gkjohnson.github.io/urdf-loaders/javascript/example/bundle/查看urdf文件以获取关节及刚体信息,也可启动sim后打开转换后的usd文件查看关节配置。
2、用类似robot创建副本,如四足基于a1/go2,双足看腿部几个自由度,有的10个有的12个,可以分别参考h1,g1,在其基础上修改配置,尤其注意关节名称及旋转方向。
/home/ye/kr1shu/IsaacLab/source/isaaclab_assets/isaaclab_assets/robots下面添加自己机器人配置文件:告诉 Isaac Sim 如何载入你的机器人模型及如何给它施加动作信号。
init_state:初始身体高度,初始关节位置姿态。
actuators(执行器即关节):关节名称,关节初始角度,PD参数等。
/home/ye/kr1shu/IsaacLab/source/isaaclab_tasks/isaaclab_tasks/manager_based/locomotion/velocity/config下面添加机器人训练配置:包括注册入口文件init;环境配置文件flat/rough;以及强化学习配置文件rsl_rl_ppo_cfg……
注册入口文件 init 可编辑 task 名称。
环境文件 flat/rough 中,奖励、终止条件、域随机化等所需参数的 body_names 和 joint_names 不一样,具体可查看 urdf 文件。
rsl_rl_ppo_cfg中,可编辑迭代步长,最大迭代数,模型保存间隔,实验名称,PPO超参等。
3、具体报错自己慢慢debug
Train 指令:
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/train.py --task=YOUR --headless (加上headless训练快很多,几乎三倍)
Play 指令:
./isaaclab.sh -p scripts/reinforcement_learning/rsl_rl/play.py --task=YOUR --num_envs = YOUR
logs/下可用tensorboard查看奖励曲线,以及训练策略,指令:
tensorboard --logdir logs/rsl_rl/YOUR/
4、跑Rough报错:AttributeError: 'RayCaster' object has no attribute '_view'
原因:prim匹配不到对应刚体,_view无法被初始化
解决办法:将rough配置中的self.scene.height_scanner.prim_path = "{ENV_REGEX_NS}/Robot/torso_link"改为对应的身体刚体
5、这里有个手撕源码的佬:https://zhuanlan.zhihu.com/p/720501914