几个常见机器人仿真软件的比较(详细版)

描述

 

写在前面:本文是一篇关于 CoppeliaSim 与其他主流仿真工具(如 MuJoCo、Gazebo、Webots 等)的详细对比分析,内容全面、观点清晰。康谋作为 CoppeliaSim 的合作伙伴,看到这样实用的文章,特地联系作者,转载与大家分享,希望能帮助机器人仿真领域的开发者更好地理解各工具的特点与适用场景。

作者 | huyoust

原文链接:https://zhuanlan.zhihu.com/p/12193176654

一、CoppeliaSim vs. Mujoco

Mujoco只是一个用于仿真多体动力学的物理引擎,是完全开源的,其主要特点是接触动力学,这从起名字上就可以看出:MuJoCo stands for Multi-Joint dynamics with Contact。CoppeliaSim可以理解为编程中的IDE,而它集成的物理引擎可以理解为编译器,CoppeliaSim已经集成了Mujoco物理引擎,因此两者其实不是竞争关系,而是包含关系。

由于Mujoco只是物理引擎,相比于集成了许多额外功能的CoppeliaSim更加轻量化、专业化。Mujoco最常用的地方是深度强化学习,在人形机器人,四足机械狗等复杂机器人的强化学习中应用广泛,这也是得益于DeepMind团队的加持。对于强化学习系统来说,最重要的就是步进控制仿真,能根据当前时刻的输入计算系统下一时刻的输出。Mujoco中提供了与强化学习能完美适配的mj_step函数,实际上在CoppeliaSim中也有相应的API函数sim.step可以步进控制仿真,也可以像Mujoco一样无界面启动,所以两者都可以用于强化学习的仿真训练。

不过Mujoco只能依靠xml格式文件编辑仿真环境,而CoppeliaSim中可以直接鼠标操作进行场景的编辑,因此对于新手而言Mujoco没有那么友好。实际上,Mujoco的发行包也带了一个可视化的GUI,可以用于浏览模型,对仿真模型进行简单的控制与操作,但是不能直接编辑模型。个人感觉Mujoco中默认的场景渲染比CoppeliaSim更好看点。

仿真软件

二、CoppeliaSim vs. Gazebo

Gazebo虽然是独立的机器人仿真软件,支持开源的ODE,Bullet物理引擎,但是实际使用中,Gazebo通常与ROS深度绑定。ROS+Gazebo的优势非常明显,因为ROS强大的社区生态中有各种高质量的开源代码,尤其是在SLAM领域,ROS+Gazebo应该还是难以替代的。Gazebo的缺点在于其编辑器还是不太友好,既不直观也不方便,仿真场景的编辑也需要URDF文件,而且只在原生的Linux系统下有比较好的体验,在Windows下使用不便。

CoppeliaSim也可以与ROS1/ROS2通信,simROS与simROS2插件提供了一些基础的API可用于与ROS1/ROS2系统进行通讯,但是显然还是比不了ROS+Gazebo。但从机器人仿真软件的功能来看,从各方面看Gazebo都是没有CoppeliaSim全面以及易用的,但是有了ROS的加持,ROS+Gazebo就比ROS+CoppeliaSim更加专业了,对于工作学习中需要深度使用ROS系统的人来说,肯定首选是Gazebo。

仿真软件

三、CoppeliaSim Vs. Matlab,Simscape Multibody

这个其实不用对比,因为两者不是竞争而是互补。Matlab主要的强项是算法设计,但是在仿真的可视化方面差点。实际上,CoppeliaSim可以无缝地与Matlab以及Simulink通信,两者可以互补可以实现各种算法的设计与仿真。当然如果只是纯粹想学习机器人算法而不关心可视化,只需使用Matlab就行(甚至都不一定需要用Simscape Multibody,像直接用Matlab的机器人工具箱就行)。不过可视化可以帮助理解算法,毕竟大脑对图像的记忆能力远比对公式数字等的记忆能力强。当然,CoppeliaSim也有一些Matlab仿真中不太好实现的功能,比如视觉传感器,距离传感器,在Matlab/Simulink中都不好实现。另外,如果想要在Simulink中实现比较好的显示效果需要费很多心思编辑场景。CoppeliaSim与Simscape Multibody都可以导入URDF文件。

Simscape Multibody功能比较非常强大,顾名思义是多体动力学,优势在于可以将Simscape中其它产品例如液压、电气、气动等模块一起集成到模型中实现多物理场仿真。所以如果是想深入钻研某个算法或者想严苛优化某个系统,还是推荐使用Matlab+Simulink进行建模与仿真。而且在精度方面,Matlab的求解器会比ODE, Bullet等开源的物理引擎更加精确(因为物理引擎本质上就是大规模求解、优化各种用于物理建模的微分方程,Matlab在数值计算这方面无可比拟)。

题外话一句,如果是多物理场仿真,比如声光电磁热等多物理场耦合的仿真,结构强度相关的有限元仿真,流体力学仿真等,又会有其它专业的仿真软件,像大名鼎鼎的comsol,ansys,fluent等,他们在某些领域可能比Matlab更全能,更专业。

仿真软件

四、CoppeliaSim Vs. OpenSim

刚好昨天回答一个问题时提到OpenSim,这个文章收藏的挺多的,所以再补充一下,没准能给不同的人一点启发。CoppeliaSim与OpenSim基本上没有什么重叠关系,基本上这两个软件谁也无法替代谁的任何工作,所以根据自己的实际需求使用就行。

很多做传统的机械臂/机器人的可能不知道这个专门做肌肉骨骼运动系统仿真的软件,但是对于做仿生机器人的研究者来说,可能OpenSim也并不陌生。OpenSim是由斯坦福大学的 Bioengineering Department 领导开发的,用于建立、分析和仿真人体肌肉骨骼系统(musculoskeletal system)的开源平台。它可以构建肌肉骨骼模型(Musculoskeletal modeling),模拟运动(如行走、跑步、跳跃等),进行动力学分析(反动力学、前馈动力学、优化运动控制等),主要的适用人群是生物力学研究人员、康复工程师、神经科学家等。OpenSim最强大的就是模拟腱传动与肌肉模型,这点比Mujoco更专业。由于OpenSim专业性太强,它的软件操作与界面比较拉跨,不容易上手。OpenSim Creator是基于 OpenSim开发的,一个基于图形界面的轻量级建模和可视化工具,专注于 OpenSim 模型的创建与编辑提供直观的图形界面来编辑肌肉骨骼模型(不像 OpenSim 需要写 XML 或脚本),能实时反馈和可视化建模,更易于新手快速上手,而且与 OpenSim 模型文件(.osim)兼容,可用于后续在 OpenSim 中运行仿真。OpenSim Creator 可以看作是一个用于 OpenSim 的辅助建模和可视化工具。

仿真软件

五、CoppeliaSim Vs. Webots

之前没想写Webots是因为这个软件我使用不多,但是很早之前也用过几次,后面具体是什么原因放弃了也想不起来了,好像一开始它并不是完全开源的,现在Webots是开源了。Webots也是跨平台的,里面自带的模型比较多,尤其是无人机模型,在CoppeliaSim自带的模型中就一个简陋的四旋翼,但是Webots应该是不支持真正的空气动力学的,因为它的物理引擎是ODE,做无人机模拟推荐用AirSim。在API方面,Webots支持 C/C++、Python、MATLAB、ROS、Java 等,印象中它对Matlab/Python的支持做的很好,直接就可以再软件内编程,都不用安装什么复杂的插件。要说缺点,Webots的物理引擎只支持ODE,不像CoppeliaSim支持Bullet、ODE、Vortex、Newton、Mujoco等,虽然界面友好,但在自定义物理参数、传感器时可能不如 CoppeliaSim 直观,同时和 CoppeliaSim 比,插件机制不够灵活,不能运行多个完全独立的仿真环境。总的来说,Webots已经很好,尤其是现在也完全开源,但与CoppeliaSim相比没有特殊优势,因此还是推荐CoppeliaSim,更加灵活点。

仿真软件

六、CoppeliaSim适合做什么?

CoppeliaSim的主要特点是功能全面,软件易用性好,API接口丰富,扩展性好。CoppeliaSim可感知的主要优势如下:

(1)跨平台(Windows,Linux,MacOs)。而且所有的仿真场景只需保存在一个文件中,同一个文件可以在不同系统下打开,不像URDF格式那样既需要保存xml描述文件,又要保存各个连杆的外观形状文件、碰撞文件,纹理文件等;

(2)支持5种常见的物理引擎,MuJoCo, ODE, Bullet, Vortex, Newton。虽然都叫物理引擎,但是实际上它们之间还是有区别的,比如对于摩擦力、软体、腱-轮等的支持;

(3)有丰富详尽的API,超过400个API函数,可以实现对当真对象的各种精细的操作,可以控制步进仿真,也可以实现一些高级功能,例如路径规划(基于OMPL库),图像处理等(基于OpenCV);

(4)不仅可以在软件内部编写控制脚本(Python与Lua),还能与其它编程语言或环境通信实现联合仿真,支持C/C++,Python,Java,Lua,Matlab,Octave;

(5)具有简单的的图形编辑功能,可以交互式编辑一些基本形状,以及编辑STL文件;

(6)能仿真视觉传感器,力传感器,距离传感器,可以实现碰撞检测等。

所以总结一下,CoppeliaSim主要还是适合机器人相关技术的学习。它足够易用、界面友好、功能全面,学习曲线平缓,关键还有无阉割的免费教育版,因此用来学习各种机器人相关的初等知识是再好不过的选择与Matlab之间的配合也足够友好。而到了需要深入研究某种算法,比如对某个算法进行优化或者提出全新算法,根据自己的专业领域去选择使用Matlab/Simulink,或者ROS,跟随本行业或者自己学术圈的大流即可。

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分