基于机器人开发实现对Deformable Objects(如衣服)的各项操作,整理+实践出了各仿真平台的性能对比,如有问题欢迎指正orz!!
1. Pybullet
Pybullet是Python的一个模块,可用于机器人视觉效果和机器学习的物理模拟。除了物理模拟之外,还具有渲染绑定,包括CPU渲染器(TinyRenderer)和OpenGL可视化,并支持HTC Vive和Oculus Rift等VR设备。Pybullet还具有执行碰撞检测查询并添加调试渲染(调试行和文本)的功能。
Pybullet的具体特点:
• 开源
• 支持加载URDF,SDF,Mujoco的MJCF等文件格式
• 采用python编程,具有跨平台的优势,能较好地对控制代码进行移植
• 编辑、修改模型的过程较复杂,只能采用Blender等3D建模工具先画出模型,再将其转化为URDF格式导入
• 支持创建和加载Soft body模型,可加载VTK和OBJ格式,提供了结合Rigid body和Soft body的两种方式——Position Based Dynamics (PBD) 和 Finite Element Method (FEM) 。
• 吃内存,实际运行速度在GPU加持下会好很多
2. V-REP (Coppelia Sim)
参考V-REP和Gazebo的对比论文:
http://www.dca.fee.unicamp.br/~gudwin/courses/IA889/2014/IA889-02.pdf
这篇原作者在相同环境下对ROS的兼容度、环境建模、机器人模型修改、可编程控制、CPU占用率等方面详细对比了Gazebo和V-REP,得出结论——Gazebo的优势在于与ROS完全兼容、开源,而V-REP更为直观、方便使用,集成了更多的特性,可拓展性强。
V-REP的具体特点:
• 教育版可免费使用
• 支持的物理引擎:Bullet,ODE,Vortex
• 对ROS的兼容性要差一些,V-REP提供了插件去和ROS交互,不过需要使用默认的Lua脚本去生成话题订阅器和发布器。
• 集成了常见模型格式(OBJ,STL,URDF,DXF,3DS,Collada),内置多种模型(如机械臂、机械爪以及日用品、家具等),物体属性及参数可调,并自带多种场景,使建模更加快捷,可视化更优。
• 可在仿真环境里对模型进行修改,插入各类传感器方便,用户体验较好。
• 可编程方式:支持嵌入式脚本(Embedded Scripts)、加载项(Add-ons)、插件、远程API等。嵌入式脚本默认为lua语言。提供了充足的API来满足开发需求。
• CPU占用率较低
3. Gazebo
• 开源
• 支持的物理引擎: ODE, Bullet, Simbody, Dart
• 支持云仿真,有实现云服务器建模的可能。
• 对ROS完全兼容,是ROS默认的仿真框架,在ROS的官方仓库里就有一个Gazebo专属的包,把Gazebo打包成一个节点,方便通过话题的订阅和发布来连接ROS。
• 无法高效地编辑模型,只能采用Blender等3D建模工具先画出模型,再将其转化为SDF格式。
• 无法将数据库里的两种模型进行合并,只能使用基于XML的SDF格式,修改、调整模型的步骤比较复杂。
• 在可编程性上,同样提供了充足的API来满足开发需求。
• CPU占用率较高,响应速度快。
4. Unreal Engine4
中文官网 https://www.unrealengine.com/zh-CN/
• 免费下载,需要注册账号(体积庞大orz,毕竟开发游戏商用比较多)
• 有材质编辑器,支持编辑颜色、纹理、布料等多种属性,集成性非常高,建模方便。还有专属的布料工具来创建布料,可直接使用虚拟引擎来编写内容,不需要依赖外部程序。
• 通过行为树设置AI控制器和任务节点,有专属的模型文件格式uasset,支持蓝图/C++开发(可执行事件的复杂度和精确度还没来得及仔细看orz,之后试一下再来改)
5. Blender
Blender是一种可仿真的开源计算机图形软件工具包。它支持3D管道建模,索具,动画,仿真,渲染,合成和运动跟踪,甚至视频编辑和游戏创作。
参考项目 https://sites.google.com/view/fabric-smoothing
自2017年以来,Blender在布料的物理和真实感方面有了明显改进,但这些改进只支持Blender 2.80,在2.80中不支持无头(headless)图像渲染,因此无法运行大量数据。建议使用Blender 2.79,支持无头渲染,可以创建从特定的fabric simulator中生成的图像。除此之外,Mujoco 2.0可提供另一个fabric simulator,但是在并行运作之前不支持OpenAI gym布料操作环境。
• 开源
• 渲染逼真,建模迅速,最新的Blender版本可支持现实材料,完整的节点支持完全定制
• Blender中包含一个完整的游戏引擎,可让您在Blender内部创建一个功能齐全的3D游戏。它能够将模型移植到任何第三方引擎,创建或编辑自己的控制逻辑,全子弹物理学整合,用于创建AI的Python脚本API等。
• 支持多种文件格式导入:图像、视频、3D文件,修改模型方便。
附:V-REP的开源项目RLBench
RLBench是基于V-REP,由帝国理工开源的一个机器人学习benchmark,包含100+种内置已经设计好的task和simulator。
使用前需要先安装PyRep,再装RLBench。
Project:https://sites.google.com/view/rlbench