Gazebo模拟器是一个免费的开源平台,可用于设计,开发,测试和可视化几乎任何类型的机器人。Gazebo可在Linux,Windows和Mac上运行,并且内置了对ROS(机器人操作系统)的支持。Gazebo支持多种高性能物理引擎,例如ODE,Bullet,Simbody和DART。它还使用ORGE 3D图形引擎来渲染具有准确照明,阴影和纹理的高质量环境。Gazebo模拟器还附带了一些机器人模型,例如PR2,DX,Irobot Create和TurtleBot,因此即使没有自己的机器人模型,也可以快速上手。它还支持广泛的传感器,并且可以模拟噪声和传感器故障,以准确模拟实际问题。甚至可以在云中运行Gazebo,并使用简单的Web浏览器与模拟器进行交互。如果想在笔记本电脑上工作,这是完美的选择,因为可以租用AWS实例来快速测试和设计机器人
Gazebo物理引擎:支持ODE、Bullet、Simbody和DART,其默认引擎为ODE
Gazebo支持的平台:完美支持Linux、MacOS,Windows需使用源码自行构建
Gazebo编程接口:最最常用的是通过gazebo_ros_control与ROS建立通信,通信过程已经被封装好了,我们只需要配置文件就可以实现,而当单独使用时可使用==C++==编写控制器插件来完成机器人的动作控制;Gazebo的数据输出是通过topic来实现的,与MATLAB联合仿真时可利用ROS Toolbox来实现,其本质还是通过ROS框架作为中介来完成的;与ROS联合仿真时,Gazebo当然是最佳选择,与ROS嵌合如此之深,大概就是新手的误区来源吧~
Webots是瑞士公司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通信是通过调用ROS API,然后将所使用的语言对应的控制器代码封装成ROS topic的形式来完成,自定义ROS控制器时建议使用Python,使用C/C++需要自行构建MakeFile文件,这对于新手而言绝对是个糟糕的选择;R2020版本已经大大简化了ROS的使用过程,当然也可借MATLAB为中介,通过ROS Toolbox来实现,这就显得过于繁琐了。如果与Simulink联合仿真,以笔者个人的使用经验来看,建议通过To Workspace 和 From Workspace模块来实现,既简单又实用
(Webots由于刚开源不久,本身处于版本快速迭代期,时常有些小BUG,所以目前来看稳定性是三者中最差的一款仿真器,移动机器人的地表最强仿真软件)
V-REP(现在更新命名为CoppeliaSim)是免费的,用于教育目的,如果计划将其用于商业项目,则可以升级到专业版。可以在Windows,Linux或macOS上运行V-REP,并且可以使用六种不同的编程语言对其进行编程。它还具有ROS&BlueZero支持,因此可以只使用3D模拟器并使代码在另一个平台上运行。V-REP支持四种不同的物理引擎(Bullet, ODE, Newton, and Vortex Dynamics)。它可以准确地处理对象的交互,例如碰撞,接触点和抓取。V-REP还支持粒子物理学来模拟空气和水,因此可以准确地对喷气发动机和螺旋桨建模。V-REP还可以模拟各种传感器,甚至可以通过插件将新传感器添加到模拟器。V-REP甚至支持路径和运动规划,甚至可以计算正向和逆向运动学。它还支持网格编辑,因此可以在模拟器中对设计进行小的调整,或者可以轻松导入任何五种不同3D模型格式(Obj,STL,URDF等)的模型
V-REP物理引擎:支持Bullet 2.78、Bullet2.83、ODE、Vortex和Newton,默认引擎为Bullet 2.78
V-REP支持的平台:Windows、MacOS、Linux全平台支持
V-REP编程接口:支持C/C++、Python、Java、Matlab、Octave及ROS,默认使用Lua脚本语言,最大的特点在于,不管使用哪种编程语言,其函数名称几乎一模一样,这大大降低了用户的上手难度,也便于控制器的各种编程语言的转换。它的实现思路是通过Socket来完成的,其中V-REP作为服务器,控制器程序相当于客户端,且访问模式有阻塞式、非阻塞式等四种操作模式,使用时还需仔细弄明白。当然,也可以通过共享内存的方法实现与Simulink的联合仿真
在NVIDIA ISAAC平台是由领先的显卡厂商这也是迅速成为AI行业的大玩家之一的NVIDIA开发。它可以在启用GPU的桌面上运行,也可以在AWS,Google Cloud或Azure上的云中运行。它还支持NVIDIA Jetson AGX Xavier,Jetson TX2和Jetson Nano。由于ISAAC机器人技术平台是由NVIDIA制造的,因此它提供了所有机器人模拟仿真器中最好的图形。它还对更复杂的任务(例如机器学习和数据处理)具有更好的GPU支持。NVIDIA ISAAC机器人平台也支持称为GEM的软件模块。这些模块可使开发者快速向机器人添加功能,例如关键字检测,LIDAR,立体视觉和预先训练的神经网络视觉识别系统。ISAAC模拟器还运行在虚幻引擎4的增强版上,虚幻引擎4是一个开放源代码游戏引擎,可为PC和控制台上的某些顶级视频游戏提供支持。NVIDIA ISAAC机器人技术平台和虚幻引擎都是开源平台,因此,如果是经验丰富的C++程序员,则可以使用自己的自定义代码来增强其功能。
Robot Virtual Worlds是功能齐全的模拟器,可让用户对虚拟LEGO Mindstorms机器人进行编程。它具有免费试用版,或者,如果想使用所有高级选项,则可以升级并支付完整的许可证费用。该模拟器的主要目的是用作教育平台,向年轻人介绍机器人技术的基础知识。它具有内置的3D仿真器,可以在其中构建和测试LEGO机器人,然后在类似游戏的环境中竞争挑战。Robot Virtual Worlds还支持使用NXT-G或LabVIEW对LEGO Mindstorms机器人进行编程。还可以使用内置扩展系统在模拟器中创建自定义机器人模型或级别。该模拟器对于教师也非常有用,因为“机器人虚拟世界”提供了适合所有年龄和技能水平的学生的课程。教师还可以设置各种机器人竞赛,以在完全虚拟的环境中挑战和评估学生。
Simscape 是 Simulink 的一个模块,而 Simscape Multibody 又是 Simscape 的一个模块
Simscape Multibody: (前身为 SimMechanics)提供了适用于 3D 机械系统(例如机器人、汽车悬架、建筑设备和飞机起落架)的多体仿真环境。您可以使用表示刚体、关节、约束、力元件和传感器的模块对多体系统进行建模。Simscape Multibody 会建立整个机械系统的运动方程并进行求解。您可将完整的 CAD 装配件(包括质量、惯性、关节、约束和 3D 几何结构)导入到模型。您可在自动生成的 3D 动画中查看系统动态。Simscape Multibody 可帮助您开发控制系统并测试系统级性能
物理引擎大致可分为两种:一种是以游戏为中心的物理引擎,侧重于实时近似,占用计算资源少,;另一种是用于科学仿真的物理引擎,侧重于精确计算,仿真结果精度高,当然也需要更多的计算资源,比如ADAMS、ANSYS等。
ODE:开源物理引擎,全称Open Dynamics Engine,它是一款模拟刚体动力学的基于C/C++高性能库,功能稳定,常被用于计算机游戏和虚拟现实等技术上;
Bullet:开源物理引擎,世界三大物理模拟引擎之一,由C++编写,与ODE相同,被广泛应用与游戏开发、电影制作中;
Simbody:开源物理引擎,由C++编写,为多体动力学模拟的高性能库;
DART:开源物理引擎,全称Dynamic Animation and Robotics Toolkit,以准确性和稳定性著称;
Newton:开源物理引擎,精确的3D物理库,用于物理环境的实时仿真;
Vortex:商业物理引擎,由CM-Labs开发,计算精度上可以说是上面介绍这几个物理引擎中的佼佼者,由于这是一款商业物理引擎,因此教育版的V-REP只能用来仿真20秒的过程,对于一些力控算法的验证倒也够用。
**移动机器人仿真:**Webots是最强移动机器人仿真软件;
**机械臂仿真:**Gazebo是神器,上手难度大;Webots可实现一些简单的抓取,如果需要精度高点的动力学仿真,笔者建议食用V-REP;此外还有一些其他的仿真软件,诸如Simscape Multibody、Adams等软件,前者可以快速搭建Simulink仿真模型,后者一般机械臂的设计厂商使用较多;
**结合机器学习的仿真:**理论上来讲,任何一款仿真软件都能实现,只不过需要自己整合控制器和机器学习相关API罢了;目前最常用的有PyBullet、MuJoCo等,前者开源,后者商用;
**水下机器人:**Webots只需要添加一个Fluid节点即可实现流体环境的添加;