各类免费的的机器人仿真软件优缺点汇总
1、GazeboGazebo模拟器是一个免费的开源平台,可用于设计,开发,测试和可视化几乎任何类型的机器人。Gazebo可在Linux,Windows和Mac上运行,并且内置了对ROS(机器人操作系统)的支持。Gazebo支持多种高性能物理引擎,例如ODE,Bullet,Simbody和DART。它还使用ORGE3D图形引擎来渲染具有准确照明,阴影和纹理的高质量环境。Gazebo模拟器还附带了一些机器人模型,例如PR2,DX,IrobotCreate和TurtleBot,因此即使没有自己的机器人模型,也可以快速上手。它还支持广泛的传感器,并且可以模拟噪声和传感器故障,以准确模拟实际问题。甚至可以在云中运行Gazebo,并使用简单的Web浏览器与模拟器进行交互。如果想在笔记本电脑上工作,这是完美的选择,因为可以租用AWS实例来快速测试和设计机器人
Gazebo物理引擎:支持ODE、Bullet、Simbody和DART,其默认引擎为ODE
Gazebo支持的平台:完美支持Linux、MacOS,Windows需使用源码自行构建
Gazebo编程接口:最最常用的是通过gazebo_ros_control与ROS建立通信,通信过程已经被封装好了,我们只需要配置文件就可以实现,而当单独使用时可使用==C++==编写控制器插件来完成机器人的动作控制;Gazebo的数据输出是通过topic来实现的,与MATLAB联合仿真时可利用ROSToolbox来实现,其本质还是通过ROS框架作为中介来完成的;与ROS联合仿真时,Gazebo当然是最佳选择,与ROS嵌合如此之深,大概就是新手的误区来源吧~
blog.csdn.net/ZhangRelay/article/details/1005470112、WebotsWebots是瑞士公司Cyberbotics发布的一种用户友好型机器人模拟仿真器。它可以在Windows,Linux或macOS上运行,并且支持大多数编程语言,例如C/C++,Java,URBI,MATLAB和Python。还可以使用API或任何标准TCP/IP网络从外部控制Webots模拟器。Webots模拟器使用ODE(开放动力引擎)在逼真的3D环境中模拟物理。它还支持对碰撞和接触点进行精确建模,这可以使用虚拟机器人测试各种场景。Webots甚至附带一个机器人模型库,可使用PR2,Atlas,Aibo甚至是某些NASA机器人。Webots还支持VRML97,因此可以使用大多数建模软件(Solidworks,AutoCAD,Blender和Inventor)导入机器人设计。还可以导入地图和地形数据以在测试环境中创建准确的世界表示。
Webots物理引擎:基于改进的ODE
Webots支持的平台:Windows、MacOS、Linux全平台支持
Webots编程接口:支持C/C++、Java、Python、MATLAB、ROS以及TCP/IP完成控制器编程,不同的编程语言需要查阅不同的API,函数命名接近但风格不同,ROS通信是通过调用ROSAPI,然后将所使用的语言对应的控制器代码封装成ROStopic的形式来完成,自定义ROS控制器时建议使用Python,使用C/C++需要自行构建MakeFile文件,这对于新手而言绝对是个糟糕的选择;R2020版本已经大大简化了ROS的使用过程,当然也可借MATLAB为中介,通过ROSToolbox来实现,这就显得过于繁琐了。如果与Simulink联合仿真,以笔者个人的使用经验来看,建议通过ToWorkspace和FromWorkspace模块来实现,既简单又实用
(Webots由于刚开源不久,本身处于版本快速迭代期,时常有些小BUG,所以目前来看稳定性是三者中最差的一款仿真器,移动机器人的地表最强仿真软件)
blog.csdn.net/ZhangRelay/article/details/1005191833、V-REP(CoppeliaSim)V-REP(现在更新命名为CoppeliaSim)是免费的,用于教育目的,如果计划将其用于商业项目,则可以升级到专业版。可以在Windows,Linux或macOS上运行V-REP,并且可以使用六种不同的编程语言对其进行编程。它还具有ROS&BlueZero支持,因此可以只使用3D模拟器并使代码在另一个平台上运行。V-REP支持四种不同的物理引擎(Bullet,ODE,Newton,andVortexDynamics)。它可以准确地处理对象的交互,例如碰撞,接触点和抓取。V-REP还支持粒子物理学来模拟空气和水,因此可以准确地对喷气发动机和螺旋桨建模。V-REP还可以模拟各种传感器,甚至可以通过插件将新传感器添加到模拟器。V-REP甚至支持路径和运动规划,甚至可以计算正向和逆向运动学。它还支持网格编辑,因此可以在模拟器中对设计进行小的调整,或者可以轻松导入任何五种不同3D模型格式(Obj,STL,URDF等)的模型
V-REP物理引擎:支持Bullet2.78、Bullet2.83、ODE、Vortex和Newton,默认引擎为Bullet2.78
V-REP支持的平台:Windows、MacOS、Linux全平台支持
V-REP编程接口:支持C/C++、Python、Java、Matlab、Octave及ROS,默认使用Lua脚本语言,最大的特点在于,不管使用哪种编程语言,其函数名称几乎一模一样,这大大降低了用户的上手难度,也便于控制器的各种编程语言的转换。它的实现思路是通过Socket来完成的,其中V-REP作为服务器,控制器程序相当于客户端,且访问模式有阻塞式、非阻塞式等四种操作模式,使用时还需仔细弄明白。当然,也可以通过共享内存的方法实现与Simulink的联合仿真
blog.csdn.net/ZhangRelay/article/details/1033535284、NVIDIAISAACPlatformforRobotics在NVIDIAISAAC平台是由领先的显卡厂商这也是迅速成为AI行业的大玩家之一的NVIDIA开发。它可以在启用GPU的桌面上运行,也可以在AWS,GoogleCloud或Azure上的云中运行。它还支持NVIDIAJetsonAGXXavier,JetsonTX2和JetsonNano。由于ISAAC机器人技术平台是由NVIDIA制造的,因此它提供了所有机器人模拟仿真器中最好的图形。它还对更复杂的任务(例如机器学习和数据处理)具有更好的GPU支持。NVIDIAISAAC机器人平台也支持称为GEM的软件模块。这些模块可使开发者快速向机器人添加功能,例如关键字检测,LIDAR,立体视觉和预先训练的神经网络视觉识别系统。ISAAC模拟器还运行在虚幻引擎4的增强版上,虚幻引擎4是一个开放源代码游戏引擎,可为PC和控制台上的某些顶级视频游戏提供支持。NVIDIAISAAC机器人技术平台和虚幻引擎都是开源平台,因此,如果是经验丰富的C++程序员,则可以使用自己的自定义代码来增强其功能。
5、RobotVirtualWorldsRobotVirtualWorlds是功能齐全的模拟器,可让用户对虚拟LEGOMindstorms机器人进行编程。它具有免费试用版,或者,如果想使用所有高级选项,则可以升级并支付完整的许可证费用。该模拟器的主要目的是用作教育平台,向年轻人介绍机器人技术的基础知识。它具有内置的3D仿真器,可以在其中构建和测试LEGO机器人,然后在类似游戏的环境中竞争挑战。RobotVirtualWorlds还支持使用NXT-G或LabVIEW对LEGOMindstorms机器人进行编程。还可以使用内置扩展系统在模拟器中创建自定义机器人模型或级别。该模拟器对于教师也非常有用,因为“机器人虚拟世界”提供了适合所有年龄和技能水平的学生的课程。教师还可以设置各种机器人竞赛,以在完全虚拟的环境中挑战和评估学生。
6、SimscapeMultibodySimscape是Simulink的一个模块,而SimscapeMultibody又是Simscape的一个模块
SimscapeMultibody:(前身为SimMechanics)提供了适用于3D机械系统(例如机器人、汽车悬架、建筑设备和飞机起落架)的多体仿真环境。您可以使用表示刚体、关节、约束、力元件和传感器的模块对多体系统进行建模。SimscapeMultibody会建立整个机械系统的运动方程并进行求解。您可将完整的CAD装配件(包括质量、惯性、关节、约束和3D几何结构)导入到模型。您可在自动生成的3D动画中查看系统动态。SimscapeMultibody可帮助您开发控制系统并测试系统级性能
付费仿真软件:FANUCROBOGUIDEABBRobotStudioRoboDK物理引擎:物理引擎大致可分为两种:一种是以游戏为中心的物理引擎,侧重于实时近似,占用计算资源少,;另一种是用于科学仿真的物理引擎,侧重于精确计算,仿真结果精度高,当然也需要更多的计算资源,比如ADAMS、ANSYS等。
ODE:开源物理引擎,全称OpenDynamicsEngine,它是一款模拟刚体动力学的基于C/C++高性能库,功能稳定,常被用于计算机游戏和虚拟现实等技术上;
Bullet:开源物理引擎,世界三大物理模拟引擎之一,由C++编写,与ODE相同,被广泛应用与游戏开发、电影制作中;
Simbody:开源物理引擎,由C++编写,为多体动力学模拟的高性能库;
DART:开源物理引擎,全称DynamicAnimationandRoboticsToolkit,以准确性和稳定性著称;
Newton:开源物理引擎,精确的3D物理库,用于物理环境的实时仿真;
Vortex:商业物理引擎,由CM-Labs开发,计算精度上可以说是上面介绍这几个物理引擎中的佼佼者,由于这是一款商业物理引擎,因此教育版的V-REP只能用来仿真20秒的过程,对于一些力控算法的验证倒也够用。
关于不同类型机器人的仿真**移动机器人仿真:**Webots是最强移动机器人仿真软件;
**机械臂仿真:**Gazebo是神器,上手难度大;Webots可实现一些简单的抓取,如果需要精度高点的动力学仿真,笔者建议食用V-REP;此外还有一些其他的仿真软件,诸如SimscapeMultibody、Adams等软件,前者可以快速搭建Simulink仿真模型,后者一般机械臂的设计厂商使用较多;
**结合机器学习的仿真:**理论上来讲,任何一款仿真软件都能实现,只不过需要自己整合控制器和机器学习相关API罢了;目前最常用的有PyBullet、MuJoCo等,前者开源,后者商用;
**水下机器人:**Webots只需要添加一个Fluid节点即可实现流体环境的添加;
ROS:机器人软件平台(一)
ROS:机器人软件平台(一)导论ROS简介“ROS是一个开放源代码的机器人元操作系统。它提供了我们对操作系统期望的服务,包括硬件抽象、低级设备控制、常用功能的实现、进程之间的消息传递以及功能包管理。它还提供了用于在多台计算机之间获取、构建、编写和运行代码的工具和库。”换句话说,ROS包括一个类似于操作系统的硬件抽象,但它不是一个传统的操作系统,它具有可用于异构硬件的特性。此外,它是一个机器人软件平台,提供了专门为机器人开发应用程序的各种开发环境。
我们为什么要学习ROS这个新的概念?这是在线下的ROS研讨会中经常听到的用户们的提问。片面来讲是为了缩短开发时间。我们常说为了学习新的概念所花费的时间太可惜了,因为要修改已经建立好的系统和现有的程序,所以想维持现有的方式。但ROS不需要完全重新开发已有的系统和程序,而是通过加入一些标准化的代码就能对已有的非ROS程序进行ROS化的转化。并且很多通用的工具和软件都有提供,因此可以专注于自己感兴趣或想贡献的部分,这反而可以节省开发和维护所需的时间。让我们来了解一下这种方式的五种特点吧。
第一,程序的可重用性。专注于自己想要开发的部分,对剩下的功能可以下载相关功能包来使用。相反,也可以将自己开发出来的程序和其他人分享,让他们也可以使用。比如,美国的NASA为了控制宇宙空间站里使用的Robonaout29机器人,除了使用自行开发的程序,还结合了可以在多种操作系统使用的ROS和具有实时控制、消息通信修复、可靠性等特点的OROCOS,得以在宇宙中执行任务。前面介绍的Robotbase公司的例子也是充分发挥可重用性的案例。
第二,是基于通信的程序。为了提供一种服务,很多时候在同一个框架里编写很多程序:从传感器或舵机的硬件驱动到传感、识别和动作等所有种类的程序。但为了重用机器人软件,根据每个处理器的用途将其分成更小的部分。根据平台的不同,我们将此称为组件化或节点化。必须由划分为最小执行单元的节点之间发送和接收数据,而平台具有关于该数据通信的所有一般信息。而且,这与最小的单位进程连接到网络的物联网(IoT)的概念一致,因此可以用作物联网平台。并且,被划分成最小执行单元的程序可以进行小单元的调试,这非常有助于找出错误。
第三,提供开发工具。ROS提供调试相关的工具-2维绘图和3维视觉化工具RViz,所以无需亲手准备机器人开发所需的开发工具,可以直接拿来使用。例如,在机器人开发中,可视化机器人的模型的情况比较多,通过遵守规定的信息格式,可以直接确认机器人的模型,并且还提供3D仿真器,因此易于扩展到仿真实验。另外,最近比较受人关注的点云(pointcloud)形式也可以从英特尔RealSense或微软的Kinect获得的3D距离信息转化过来。此外,实验中使用的数据可以被记录下来,因此需要的时候随时都可以重现实验当时的情况。像这样,ROS的一个重要特点是通过为机器人开发提供必要的软件工具,使开发的便利性达到最大化。
第四,活跃的开发者社区。至今比较封闭的机器人学界和机器人业界都因为前述的功能而走向重视互相之间的合作的方向。其目的可能各自相异,但实际的合作正在通过这种软件平台发生着。其核心是开源软件平台的社区。例如,以ROS为例,到2017年自愿开发和共享的功能包数量超过了5,000个,而解释如何使用它的wiki页面超过1.7万个,这些都由用户个别参与。而在社区中非常重要的问题和答案已有超过24,000个,用户们通过这些建立着互惠互利的开发者社区。讨论超越了单纯的对于用法的议题,人们在寻找机器人工程软件的必要因素,并摸索出规则。
第五,生态系统的形成。前面提到的智能手机平台革命是由Android和iOS等软件平台创造的生态系统造成的。这一趋势在机器人领域延续着。起初,各种硬件技术泛滥,却没有能整合它们的操作系统。在这种情况下,如上所述,各种软件平台已经出现,最受瞩目的ROS现在已经开始构建生态系统。这个正在形成的生态系统里,机器人硬件领域的开发者、ROS开发运营团队、应用软件开发者以及用户也能像机器人公司和传感器公司一样从中受益。起步虽然微不足道,但考虑到逐渐增多的用户数量和机器人公司,以及急剧增加的相关工具和库,我期待在不久的将来将会形成一个圆满的生态系统。
ROS是RobotOperatingSystem的缩写,因此会认为是一种操作系统。尤其是那些对ROS不熟悉的人会认为ROS和上面提到的操作系统一样。当我第一次遇到它时,我也认为ROS是一个新的机器人操作系统。
然而更确切地说,ROS是一个元操作系统(Meta-OperatingSystem)。元操作系统不是一个明确定义的术语,而是一个利用应用程序和分布式计算资源之间的虚拟化层来运用分布式计算资源来执行调度、加载、监视、错误处理等任务的系统。
ROS不是传统的操作系统,如Windows、Linux和Android,反而是在利用现有的操作系统。使用ROS前需要先安装诸如Ubuntu的Linux发行版操作系统,之后再安装ROS,以使用进程管理系统、文件系统、用户界面、程序实用程序(编译器、线程模型等)。此外,它还以库的形式提供了机器人应用程序所需的多数不同类型的硬件之间的数据传输/接收、调度和错误处理等功能。这个概念也被称为中间件(Middleware)或软件框架(Softwareframework)。
ROS开发、管理和提供基于元操作系统的各种用途的应用功能包,并拥有一个负责分享用户所开发的功能包的生态系统(Ecosystem)。如图2-1所示。ROS是在使用现有的传统操作系统的同时,通过使用硬件抽象概念来控制机器人应用程序所必需的机器人和传感器,同时也是开发用户的机器人应用程序的支持系统。
ROS数据通信可以在一个操作系统中进行,但也适用于使用多种硬件的机器人开发,因为可以在不同的操作系统、硬件和程序之间交换数据。
ROS具有以下特征: