0.前言
之前为了实现绳驱动机器人的仿真,对一些常见的仿真物理引擎均进行了学习和效果测试,现将各引擎的支持效果做一个简单的总结,方便日后学习补充。
PS:因为目的是为了实现与强化学习有关的实验,所以涉及的引擎均支持Python,对于不支持Python的引擎未有尝试,因此在这里不做讨论。
1.PyBullet
1.1 简介
PyBullet 基于著名的开源物理引擎 bullet 开发,封装成了 Python 的一个模块,用于机器人仿真和学习。
PyBullet 支持加载 URDF、SDF、MJCF 等多种机器人描述文件,并提供正/逆向运动学、正/逆向动力学、碰撞检测、射线相交查询等功能。除此之外,还提供了不少机器人的例程和实用的调试工具(滑动条、按钮、文本)等。
1.2 绳驱动支持效果
PyBullet作为一个简单易用上手快的仿真引擎,深受我的喜爱。对于刚性机械臂的仿真,其支持效果非常好,且支持并联结构的仿真(虽然有点缺陷,只能通过速度控制,无法采用位置控制....),但对于柔索或者说柔性物体的仿真有点一言难尽。
SoftBody: modeling a rope from trimesh
目前要在PyBullet实现类似绳索的效果,还是采用通用的方法,即将绳子抽象化成一节一节的圆柱体,中间采用万向球关节连接。
但是这样的方法在面对较长的绳索时,仿真的算力要求会有很大提升,使仿真很难进行下去。同时如果仿真模型中有滑轮需要绳索搭上,绳索拉动后滑轮被带着转动,PyBullet很难实现这样的效果。
1.3 Python强化学习支持效果
光看名字和简介也知道PyBullet就是专门为Python环境而生的,所以PyBullet对Python环境的支持非常友好。但是值得注意的是,使用PyBullet仿真时不建议创建多个仿真环境,否则过多的仿真环境会导致PyBullet报错,多智能体就放在一个环境里训练就行。
1.4 总结
绳驱动支持:★☆☆☆☆
Python强化学习支持: ★★★★★
2. Mujoco
2.1 简介
Mujoco表示Multi-Joint dynamics和Contact,它是一个通用的物理引擎, 旨在促进机器人、生物力学、图形和动画、机器学习和其他需要快速准确地模拟与其环境相互作用的铰接结构的领域。 它最初由 Roboti LLC 开发,于 2021 年 2022 月被 DeepMind 收购并免费提供,并于2022 年 5 月开源。 MuJoCo代码库可在GitHub上的deepmind/mujoco存储库中找到。
2.2 绳驱动支持效果
Mujoco对柔性物体的仿真效果挺不错,它能够仿真例如弹簧、海绵和绳索之类的柔性物体,具体可以从Mujoco官网的官方文档了解: