工欲善其事必先利其器,对于机器人开发者来说,使用真实机器人开发和测试应用程序既昂贵又费时,因此机器人仿真软件愈发重大。
时至今日,诞生了许多机器人仿真软件,那么常用软件都有哪些?这些软件都有什么特点?“机器人开发圈”今天就盘点一下工程师必须了解的那些仿真软件。
Webots
官网:https://cyberbotics.com/
GitHub地址
:https://github.com/cyberbotics/webots
官方文档:
https://cyberbotics.com/doc/guide/index
Webots 是一个开源、跨平台的3D机器人仿真软件,拥有高性能的物理仿真引擎和强劲的开发环境。它最初是作为研究移动机器人中各种控制算法的研究工具开发的。自2018年12 月起,Webots在Apache 2.0许可下作为开源软件发布。它支持对多种机器人行为的建模与仿真,如导航、路径规划、多机器人协作等。
Webots特点体目前全方位的仿真能力和灵活开发接口上。Webots 使用 Open Dynamics Engine (ODE) 提供准确的物理模拟,包括碰撞检测、摩擦力模拟以及刚体动力学计算;支持激光雷达、IMU、GPS、摄像头等多种传感器,同时可模拟执行器如轮式、关节式电机等;用户可通过 Webots 内置的 PROTO 文件定义复杂的机器人和环境模型;支持实时仿真和离线数据分析,便于算法开发和测试;通过Webots ROS 2插件支持与ROS通信。
多年来,许多机器人项目在以下领域都依赖 Webots:
- 移动机器人原型设计(学术研究、汽车工业、航空、真空吸尘器行业、玩具行业、业余爱好者等)
- 机器人运动研究(有腿机器人、类人机器人、四足机器人等)
- 多智能体研究(群体智能、协作移动机器人组等)
- 适应性行为研究(遗传算法、神经网络、人工智能等)
- 机器人教学(机器人讲座、C/C++/Java/Python编程讲座等)
- 机器人竞赛(例如Robotstadium或Rat's Life)

对开发者要求:要对自己的机器人控制器进行编程,必须具备 C、C++、Java、Python或MATLAB编程语言的基本知识。但是,即使您不了解这些语言,依旧可以使用一种称为BotStudio的简单图形编程语言对e-puck和Hemisson机器人进行编程。如果不想使用Webots中提供的现有机器人模型,并希望创建自己的机器人模型,或在模拟环境中添加特殊对象,将需要3D 算机图形学和VRML97描述语言的基本知识。
Mujoco
官网:https://mujoco.org/
GitHub地址:
https://github.com/google-deepmind/mujoco
官方文档:
https://mujoco.readthedocs.io/en/stable/overview.html
Mujoco是完全开源的仿真多体动力学的物理引擎,其主要特点是接触动力学,这一点从其名字上就可以看出:MuJoCo stands for Multi-Joint dynamics with Contact。由于Mujoco只是物理引擎,相比于集成了许多额外功能的CoppeliaSim更加轻量化、专业化。
Mujoco最初由Roboti LLC开发,于2021年10月被DeepMind收购并免费提供,并于5月开源2022. MuJoCo代码库。得益于DeepMind团队的加持,Mujoco常用于深度强化学习,在人形机器人,四足机械狗等复杂机器人的强化学习中应用广泛。
在诸多的机器人仿真环境中,MuJoCo是在复杂动力学仿真上做得超级出色的一个,其提供的诸多接口便于配置强化学习环境,是学习机器人强化学习必不可少的工具。
传统物理引擎(如ODE、PhysX、Bullet等)在处理多关节系统(如人形机器人)时,存在准确度和效率不足的问题,尤其在计算连接动力学时,需手动调整参数并使用极小的时间步长来保持稳定性。基于广义坐标的引擎(如SD/FAST、OpenSim)则要么忽略连接力,要么使用弹簧阻尼方法,导致碰撞处理不准确或系统过于刚性。
MuJoCo通过改善这些问题,提供了更高的仿真精度和效率,并集成了多种实用功能,如支持并行计算、逆向运动学分析、执行器动力学建模(如液压、气压、生物肌肉等),以及灵活的XML和C++ API支持,便于实际应用和扩展。

CoppeliaSim
官网:
https://www.coppeliarobotics.com/
CoppeliaSim是基于物理引擎的多体动力学模拟软件,号称机器人仿真器里的“瑞士军刀”,以灵活的脚本编写和一套内置函数而闻名,既适用于仿真简单的机器人系统,也适用于仿真复杂的机器人系统,2019年前名称是Vrep。
可以将其理解为编程中的IDE,而它集成的物理引擎可以理解为编译器,用户可以根据需要选择MuJoCo、ODE、Bullet、Vortex或Newton等五个不同的物理引擎,以模拟不同的物理环境和效果。
CoppeliaSim包括三个版本:第一,player版本,拥有完整模拟功能,但编辑功不全;第二,edu版本,拥有完整模拟和编辑功能,免费学习不能商用;第三,pro版本,完整模拟和编辑功能,收费,可商用。
物理仿真方面,CoppeliaSim集成多个物理引擎,包括ODE、Bullet、Vortex和Newton,能够根据物体的物理属性计算运动、旋转和碰撞,提供逼真的仿真效果。此外,它还提供了完整的运动学解算器,支持任何机构的逆运动学和正运动学计算,使得仿真结果更加准确。 机器人仿真方面,它功能十分强劲,内置丰富的机器人模型和控制接口,支持路径规划、图像处理、动态颗粒仿真等多种高级功能。通过详细的API和脚本功能,用户可以轻松地将各种功能集成和组合,实现复杂的机器人仿真任务。 除了上述功能外,CoppeliaSim还提供了丰富的视觉化工具,如数据记录与可视化(时距图、X/Y图或三维曲线)、图形编辑模式等,方便用户实时查看和分析仿真结果。此外,V-REP还支持多层撤销/重做、影像记录、油漆仿真等功能,提高了用户的操作效率。
用户可以选择六种不同的编程方法(嵌入式脚本、插件、附加组件、ROS节点、远程客户端应用编程接口)和六种编程语言(C/C++、Python、Java、Lua、Matlab、Octave)来进行仿真编程,满足了不同用户的需求和偏好。CoppeliaSim可以与ROS1/ROS2通信,simROS与simROS2插件提供了一些基础的API可用于与ROS1/ROS2系统进行通讯。

Gazebo
官网:
https://gazebosim.org/home
官方文档:
https://gazebosim.org/docs/latest/getstarted/
教程:
https://classic.gazebosim.org/tutorials
Gazebo是强劲的开源机器人仿真工具,它提供了一个逼真的物理仿真环境,可以模拟各种机器人和传感器的行为,是关注复杂场景和室外环境的研究人员的首选工具。虽然Gazebo是独立的机器人仿真软件,支持开源ODE,Bullet物理引擎,但实际使用中,Gazebo一般与ROS深度绑定。尤其在SLAM领域,ROS+Gazebo难以替代。
在性能上,Gazebo支持使用多个服务器来提高性能,可以自动加载和卸载仿真资产,从而显著提高性能,同时可以控制仿真时间步长。在集成方面,Gazebo支持跨平台集成,也支持云集成,同时也支持ROS集成。其拥有丰富的机器人模型和环境模型库,方便用户直接使用或修改。即支持多种移动机器人、机械臂、无人机等机器人模型,也可以自定义机器人模型,设置关节、传感器、控制器等。支持多种传感器的仿真,如激光雷达(LiDAR)、摄像头、IMU、GPS 等。传感器数据可以实时获取,用于机器人导航、定位、避障等任务使用物理引擎(如 ODE、Bullet、DART)来模拟真实世界中的物理现象,包括重力、摩擦、碰撞等。支持复杂的物理交互,可以模拟机器人与环境之间的相互作用。
Gazebo缺点在于其编辑器还是不太友善,既不直观也不方便,仿真场景的编辑也需要URDF文件,而且只在原生的Linux系统下有比较好的体验,在Windows下使用不便。

RoboDK
官网:
https://robodk.com/download
RoboDK是一款通用的Robot(机器人)SDK,它最大的特点就是不局限于某个机器人品牌,方便用户在不同的机器人、不同的外围工具(机器人外轴、夹具等等)中切换。RoboDK集成了程序编辑器、仿真器、编译器、机器人驱动器于一身,友善的3D图形操作界面,让对编程零基础的用户也能编写出机器人程序。
RoboDK就是Robot SDK两个单词的合体。所以RoboDK软件,实际上就是一款用于工业机器人的软件开发工具。
RoboDK功能比较单一,主要面向生产加工环境。其主要解决的也是一些点位示教,焊接路径仿真等运动学相关的实际生产需求。RoboDK没法自己定义机器人结构,只能用他们库中的各种工业机械臂模型。不过RoboDK基本上常见的工业机械臂都能在Robot Library中找到,而且有方便的关节示教与末端拖动示教功能,可以用来查找常见工业机械臂的参数。
Isaac Sim
官网:
https://developer.nvidia.cn/isaac/sim
官方文档:
https://docs.omniverse.nvidia.com/isaacsim/latest/index.html
英伟达是人形机器人领域很难绕开一家企业,目前人形机器人发展迅速本身与英伟达的技术突破有很大关系。NVIDIA Isaac Sim就是英伟达官方的机器人仿真平台,它是基于 NVIDIA Omniverse 构建的参考应用程序,使开发人员能够在基于物理的虚拟环境中模拟和测试 AI 驱动的机器人解决方案。
Isaac Sim基于NVIDIA Omniverse构建,完全可扩展。这意味着可以构建自己的基于通用场景描述 (OpenUSD) 的自定义模拟器,或将核心 Isaac Sim 技术集成到现有的测试和验证流程中。
Isaac Sim在数据方面也具备很大优势。值得一提的是,2月25日,智元机器人宣布推出自主研发的大型仿真框架AgiBot Digital World,为机器人操作提供灵活的仿真数据生成方案、预训练的大规模仿真数据和统一的模型评测标准,同步开源海量仿真数据。(可参见网站:
https://agibot-digitalworld.cn)

Unity和Unreal Engine
官方网站:
https://microsoft.github.io/AirSim/
Github地址:
https://github.com/microsoft/AirSim
Unity和Unreal Engine本身是游戏开发领域的代表,不过目前也已经扩展到机器人领域。提供高保真的可视化和物理效果,这对于机器人领域的VR和AR应用尤为有益。
稚晖君就用Unity做过仿真。对于Unity而言,其拥有超级完备的物理特性,这对于机器人仿真是超级有用的。此外,Unity Robotics软件包带有许多现成的接口,能轻松与ROS或ROS 2的交换信息。
Unity-Robotics-Hub Github:https://github.com/Unity-Technologies/Unity-Robotics-Hub

AirSim是基于Unreal Engine的一个开源的跨平台仿真器,它可以用于无人机、无人机车等机器人的物理和视觉仿真。得益于游戏引擎的优秀的视觉渲染效果,AirSim 仿真平台在具备物理仿真的同时也具备了逼真的视觉仿真效果,这是其一大亮点,超级适用于进行基于深度学习等视觉AI仿真验证。

Matlab和Simulink
官网:
https://www.mathworks.com/products/robotics.html
Matlab和Simulink本身是比较经典的仿真软件,许多例程都基于Matlab。其也提供了大量的机器人开发资料。Matlab主要的强项是算法设计,以其强劲的计算能力而闻名,可用于对机器人进行详细建模和仿真,以执行算法开发、测试和系统分析。Matlab在其官网上提供的工具主要的内容包括系统建模、运动学、运动规划和轨迹生成、场景构建和仿真等内容。
更重大的是,许多仿真软件也都支持与Matlab和Simulink协同仿真,列如上述所说的平台,几乎全都支持与Matlab协同工作。

MathWorks旗下还有一款产品值得关注——Simscape Multibody。Simscape是Simulink 的一个模块,而Simscape Multibody又是Simscape的一个模块。Simscape Multibody功能比较超级强劲,顾名思义是多体动力学,优势在于可将Simscape中其它产品例如液压、电气、气动等模块一起集成到模型中实现多物理场仿真。简言之,Simscape是以超级直观的形式对物理系统进行仿真的,而Simscape Multibody是其中专门用来对机械系统进行仿真。

Genesis
开源地址:
https://github.com/Genesis-Embodied-AI/Genesis
项目页面:
https://genesis-embodied-ai.github.io/
文档地址:
https://genesis-world.readthedocs.io/en/latest/
Genesis是一个新兴的平台,意为创世纪,在2024年12月正式亮相,并且轰动一时。它是CMU联合其他20多所研究实验室开源发布了一个生成式物理引擎。
Genesis是一个综合物理模拟平台,专为通用机器人、具身AI和物理AI应用而设计。其具备以下多个功能:一个从零开始重新构建的通用物理引擎,能够模拟多种材料和物理现象;一个轻量级、超快速、Python化、用户友善的机器人仿真平台;一个强劲且快速的真实感渲染系统;一个生成数据引擎,能够将用户输入的自然语言描述转化为各种数据形式。
Genesis由从头开始重新设计和重新构建的通用物理引擎提供支持,将各种物理求解器及其耦合集成到一个统一的框架中。该核心物理引擎通过上层运行的生成代理框架进一步增强,旨在为机器人及其他领域实现完全自动化的数据生成。

值得关注的机器人框架
除了上述比较常见的机器人仿真软件,目前具身智能领域进展也超级迅速,诞生了许多具身智能机器人框架,其中值得关注的一些框架包括:
Pybullet
GitHub地址:
https://github.com/bulletphysics/bullet3
PyBullet是一款开源物理仿真库,广泛应用于机器人学、游戏开发及图形研究领域。它以 Bullet Physics SDK 这一成熟且被广泛使用的开源物理引擎为基础,提供了Python接口。借助该接口,开发者既能运用 Bullet 强劲的物理仿真能力,又能享受Python的易用性。
PhyScene
GitHub地址:
https://physcene.github.io/
北京通用人工智能研究院创新提出了一种专门用于“生成物理可交互3D场景”的新方法PhyScene,其生成场景包括铰链物体的物理环境,为具身智能提供多种物理交互,从算法创新和模拟应用上实现了对传统智能体训练场景搭建的显著优化。
RoboGen
GitHub地址:
https://robogen-ai.github.io/
CMU、MIT、清华联合发布了全球首个生成式机器人智能体RoboGen,可以无限生成数据,让机器人7*24小时永不停歇地训练。为机器人进入通用场景迈出坚实一步。据官方介绍,RoboGen是一种自动学习多样化的生成式机器人仿真,通过生成模拟大规模提高机器人技能。RoboGen 利用最新的基础模型和生成模型的进步,而不是直接使用或 调整这些模型以制定策略或低级行动一种生成方案,使用这些模型自动生成多样化的任务、场景和训练监督,从而在最少的人工监督下扩展机器人技能学习。
ThreeDWorld
GitHub地址:
https://www.threedworld.org/
MIT、哈佛、斯坦福和IBM组成的科研团队现有的仿真技术基础上,还开发了一种更加灵活、合成内容更丰富的虚拟场景合成系统:ThreeDWorld。ThreeDWorld(TDW)是一个用于交互式多模态物理模拟的平台。TDW能够在丰富的3D环境中模拟移动agent与物体之间的高保真感官数据和物理交互。其独特属性包括:实时接近照片级真实的图像渲染;目标和环境的库,以及用于自定义它们的例程;用于高效构建新环境类别的生成程序;高保真音频渲染;包括布料、液体和可变形物体在内的多种材料类型的真实物理交互;体现AIagent的可定制agent;以及对人类与VR设备交互的支持。TDW的API允许多个agent在模拟中交互,并返回一系列代表世界状态的传感器和物理数据。
iGibson
GitHub地址:
https://svl.stanford.edu/igibson/SAPIEN
iGibson是李飞飞团队推出的机器人模拟训练场。iGibson是一个仿真环境,可基于Bullet提供快速的视觉渲染和物理仿真。iGibson配备了15个完全交互式的高质量场景,从真实的房屋和办公室重建的数百个大型3D场景,并与CubiCasa5K和3D-Front等数据集兼容,提供了8000多个附加的交互式场景。iGibson的一些功能包括域随机化,与运动计划器集成以及易于使用的工具来收集人类演示。借助这些场景和功能,iGibson允许研究人员训练和评估使用视觉信号来解决导航和操纵任务(例如开门,捡起和放置物体或在橱柜中搜索)的机器人代理。
SAPIEN
GitHub地址:https://sapien.ucsd.edu/
SAPIEN是加州大学圣地亚哥分校、斯坦福大学和 SFU 的研究人员之间的合作成果器。它为机器人、刚体和铰接物体提供物理模拟。它通过纯Python接口支持强化学习和机器人技术。此外,它还提供了多种渲染模式,包括深度图、法线图、光流、活动光和光线追踪。
Habitat
GitHub地址:
https://github.com/facebookresearch/habitat-sim
Habitat是Meta(原Facebook)推出的用于研究具身人工智能(AI)的平台。Habitat能够在高度逼真的3D模拟环境中训练具身agent(虚拟机器人)。它包括两部分:一是Habitat-Sim:一个灵活、高性能的3D模拟器,具有可配置的agent、传感器和通用的3D数据集处理能力;二是Habitat-API:一个模块化的高级库,用于具身AI算法的端到端开发——定义任务(如导航、指令跟随、问题回答)、配置、训练和评估具身agent。




