type
status
date
slug
summary
tags
category
icon
password
摘要:仿真软件在机器人研究中的使用非常广泛,为该领域的大部分最新进展奠定了基础。现在,研究人员有比以往更多的选择,然而在众多选择中找到合适的仿真软件往往是非常困难的。根据研究领域和需要模拟的场景,通常会有一系列适合的物理仿真软件,很难确定最相关的仿真软件。本文是关于机器人研究主要领域中物理仿真软件的综述。更具体地说,我们遍览了关键子领域,并根据各自的研究群体对不同仿真软件的特点、优势、应用和使用案例进行了讨论。我们的综述为机器人科研人员提供了一个适用的物理仿真软件的广泛索引,并旨在帮助他们选择最适合其案例的仿真软件。
1. 简介
仿真软件可以大大促进机器人研究。在实际机器人通常昂贵、易损坏且稀缺的情况下,将理论方法最初或仅在仿真软件中进行测试和验证已经成为常见做法。仿真软件能够解决这些问题,因为它们提供了一个廉价的环境,使用户能够访问各种所需的机器人,而不会使实际平台受到磨损或损坏。模拟可以比实际运行速度更快(这对于基于学习的方法尤其重要),可以进行并行计算,并且不需要物理上重置环境。
现有文献中有许多研究比较了物理引擎的真实世界物理精度和约束满足度,但这些研究通常只比较了少数几个仿真软件,并且通常只关注特定任务或子领域,而没有考虑整个机器人学 。许多研究总结了从仿真软件网站和论坛上可以轻松获取的信息,而没有从研究的角度添加重大价值 。这些仿真软件在各种机器人特定任务中的功能并没有被探索或相互比较。研究人员可用的商业和开源模拟选项的格局处于不断变化的状态,因为新的仿真软件被添加来支持最新的研究趋势,而其他仿真软件则被弃用。因此,对于给定的机器人项目,选择合适的仿真软件自然很困难,而目前的文献报告缺乏任何全面的指南来帮助研究人员找到适合其特定目的的仿真软件。
通过这篇综述,我们旨在填补上述研究空白。我们聚焦于七个子领域,这些子领域共同涵盖了涉及仿真软件的机器人工作的大部分内容。在每个子领域中,讨论了该领域的当前挑战,突出该领域中使用的机器人仿真软件所需的能力,并描述该子领域文献中机器人仿真的现有方法。最后,我们在每个部分中提供一个总结表,详细列出了我们已确定为子域机器人仿真相关的特征方面的众多机器人仿真软件的能力。
我们将机器人仿真软件定义为一个满足以下所有功能的终端用户软件应用程序:(i)用于真实建模物理现象的物理引擎;(ii)碰撞检测和摩擦模型;(iii)图形用户界面(GUI);(iv)导入场景和网格的功能;(v)针对机器人社区使用的编程语言(C++/Python)的API;(vi)各种关节、执行器和传感器的现成模型。本综述仅涵盖正在积极开发、使用或维护的仿真软件。此外,本综述关注的是机器人仿真软件,而不是物理引擎。物理引擎是每个机器人仿真软件的组成部分,但仅有物理引擎并不能构成机器人仿真软件,除非它满足我们定义机器人仿真软件的所有标准。
这篇综述旨在为研究人员提供指南,帮助他们筛选出与特定应用最相关的仿真软件。我们通过对积极维护的仿真软件进行分类,绘制了当前机器人仿真软件的格局,并提供每个仿真软件在特定领域或子领域中的示例任务和功能。对于每个类别,我们还提供了一个标准化的总结表格,用于简明扼要地传达仿真软件和特性信息。图1展示了机器人领域所需的多样化仿真环境。图2直观地显示了在第二到第八节中讨论的机器人仿真软件的受欢迎程度。
引用来自Google Scholar,使用了仿真软件的研究论文、参考手册或其他引用类型中的一个或多个,然后根据机器人关键字进行过滤。
我们建议研究人员将本文作为选择仿真软件的指南。我们首先建议用户对他们想要模拟的特定机器人平台(例如UR10、Husky等)、机器人平台的驱动方式、他们计划使用的传感器以及物理操作环境(例如空气、水下、沙地、城市街道等)有一些了解。然后,用户从指定的平台推断出相关的机器人研究领域,例如机械臂属于机械臂操作领域。从这里,我们识别出一些可能为所需的驱动方式、传感器和操作环境提供支持的仿真软件子集。如果计划的研究工作跨领域,例如水下机械手操作,我们建议考虑所有相关章节。总之,在选择仿真软件时,根据研究的机器人平台、驱动方式、传感器和环境条件限定可能的选项子集,跨领域研究要综合考虑多个方面。本文可以作为选择仿真软件的重要参考。
2. 移动机器人
自主地面移动机器人研究包括腿式、轮式和履带式机器人,是机器人学中研究最广泛的领域之一。这个子领域涵盖了许多领域,包括导航、运动、认知、控制、感知、定位与建图等。为了阐明移动机器人仿真软件的应用案例,我们首先研究当前正在进行的挑战和竞赛,这些挑战和竞赛代表了移动机器人研究的一些应用。最著名的挑战是国防高级研究计划局(DARPA)组织的机器人挑战,从2003年的自主驾驶挑战开始,2012年进行了一项搜索与救援挑战赛,现在从2018年开始进行的是地下竞赛。当前最新的要求是一个机器人团队协作在地下受GPS限制的环境中进行导航与制图,以找到人类幸存者。这个竞赛甚至举办了一个虚拟比赛,需在Gazebo仿真环境中完成。
DJI从2015年开始举办了一个以移动机器人为特色的机器人竞赛。任务是使用一支机器人队伍在竞技场上用投射物与对手队伍作战。RoboCup是另一个突出的挑战赛,多支移动机器人球队进行足球比赛。根据不同的联赛,机器人可以是多足的或轮式的。这些挑战都要求多机协作:在同一环境中共存,可能相互交互;在不规则的地形中导航和交互;用激光雷达、立体相机、GPS或IMU等各种机载传感器感知机器人在环境中的状态。这些竞赛代表了移动机器人研究中的一些应用方向,需要机器人具备环境感知、自主导航、多机协作等能力,这为移动机器人仿真的用例提供了参考。
Gazebo是一个广泛应用于移动地面机器人最新研究的机器人仿真软件,既用于腿式机器人,也用于轮式机器人。Gazebo提供的机器人操作系统(ROS)接口使得该仿真软件备受欢迎,并简化了在仿真中测试控制软件并将其转移到物理系统的过程。Gazebo还为许多常用传感器(如相机、GPS和IMU)提供了模型库。Gazebo可以从数字高程模型、SDF网格和OpenStreetMap导入环境。还可以从通用机器人描述格式(URDF)文件导入机器人模型。作为刚体仿真软件,该仿真软件运行速度快,可以实时模拟多个机器人。尽管Gazebo本身不提供运动规划功能,但与ROS的紧密集成允许使用ROS路径规划器。
CoppeliaSim(之前称为V-Rep)是仿真地面移动机器人的另一种流行选择。最新研究使用CoppeliaSim进行双足机器人的导航规划、差分驱动机器人和差分驱动机器人的视觉轨迹跟踪。与Gazebo类似,CoppeliaSim是一个刚体仿真软件,能够实时仿真多个机器人。它还提供了常见移动机器人平台和传感器的大型模型库,包括2D/3D激光雷达、加速度计、立体相机、相机、事件相机、GPS和陀螺仪。CoppeliaSim通过常用的OMPL库提供路径规划功能,并支持高程字段来指定地形。
Webots是另一个流行的选择,在最新研究中被用来研究非完整约束机器人轨迹跟踪的性能以及进化双足机器人的步态。Webots拥有大量的移动机器人、环境和传感器的模型数据库。传感器包括加速度计、相机、罗盘、GPS、惯性测量单元、激光雷达和雷达。Webots还支持使用openDrive文件格式导入地图。
Raisim是由苏黎世联邦理工大学开发的刚体物理仿真软件,用于研究多足平台的动态策略学习。Raisim允许使用高程图像导入不规则地形。Raisim的功能不如其他移动机器人仿真软件全面,但提供了高保真的接触动力学模型,这对于从仿真向现实迁移控制器很关键。
使用PyBullet仿真软件将四足机器人的运动策略从仿真转移到现实世界平台的最新研究,以及在turtlebot平台上进行视觉导航的研究。PyBullet适用于大多数移动机器人应用,因为它支持刚体仿真,可以实现多个机器人的快于实时的仿真速度。它还支持导入高程字段来指定地形几何。与其他更专门的移动机器人仿真软件相比,PyBullet支持的传感器非常有限,仅支持相机和一些不太相关的传感器。
最近对自动驾驶汽车的大规模投资已经产生了相当数量的自动驾驶汽车领域研究,而 CARLA 仿真软件是这一成果的副产品。许多最先进的论文使用 CARLA 来学习驾驶策略 [26] 并将在 CARLA 中训练的策略转移到现实世界 [27]。CARLA 是一个针对自动驾驶汽车研究的仿真软件,因此具有与此目标一致的功能。它通过分布式架构实现可扩展性,以支持大型场景,并包括 ROS 集成。CARLA 支持通过 openDRIVE 文件格式导入环境。可以使用 GPS、IMU、LIDAR、雷达和摄像头等多种传感器。CARLA 使用 PhysX 来计算车辆物理,但用户可用的设置受到限制。
表 2 提供了对讨论的用于移动地面机器人的机器人仿真软件在被认为对该领域至关重要的领域的功能的比较。确定的关键功能包括能够模拟该领域常用的传感器,以及常见的运动形式、导入各种环境的能力和内置 ROS 支持。如果用户希望真实地模拟复杂的环境,包括沙子、水和砾石,Project Chrono 通过内置的离散元方法 (DEM) 模型提供了此功能。
3. 操作机器人
机器人学中的操作(manipulation)领域庞大而多样,涵盖了从机械臂和夹具的物理设计到运动规划和控制算法的各个方面。最近的竞赛和标准测试为我们了解当前的研究方向提供了线索,并以此延伸了仿真软件在机械臂操作研究社区中的应用场景。
其中最有影响力的年度竞赛之一是Robocup,该竞赛设有名为Robocup@home的联赛,旨在模拟家庭环境中的辅助机器人。比赛任务要求进行刚性和可变形物体的操作。国际机器人与自动化会议(ICRA)2018年的“整理我的房间”挑战赛和“Fetch it! 移动操纵挑战赛”是另外两个类似的挑战,它们都需要多个移动操纵平台完成包括操纵刚性物体在内的多步骤任务。其他相关挑战还包括2015年至2017年举办的亚马逊拣选挑战赛,要求机器人完成看得见和看不见的物体的拣选任务,其中一些物体是可变形的,另一些物体是透明的。最近出现的“真实机器人挑战赛”(Real Robot Challenge)关注于在模拟环境和真实环境中对物体进行灵巧操纵。在操纵社区中提出了许多用于评估物理和算法进展的标准测试,与我们的综述相关的标准测试包括基于任务的拣选-放置、装配、销孔配合和可变形物体。
从这些信息可以看出,该领域正在模拟多任务或多步骤的场景,需要精确地模拟刚性物体的细微运动和接触。这与对稳定物理模拟的需求相结合,使可行的仿真软件数量减少。为了在操作研究中有用,仿真软件必须包括用于位置控制、速度控制和力矩控制的执行器模型,因为这些是机械臂实际应用中最常用的控制模式。仿真软件还需要支持力矩传感器和视觉传感器,以及机械臂特有的内置功能包括逆运动学和正运动学求解器以及路径规划。并且随着计算变得更高效,对于建模可变形物体的需求也越来越重要。
最近的研究成果使用了一系列仿真软件来产生结果。表 3 总结了这些仿真软件在机器人操作相关领域的功能。
MuJoCo 是一种常用于研究的仿真软件,其稳定的物理接触是其受欢迎的原因之一。它被应用于手中操纵环境中,用于解决一个由24自由度的机械手通过腱激励操纵魔方的问题。最近的研究成果使用 MuJoCO 在模拟中训练机器人操作器的策略,无论只是为了概念验证还是为了以后转移到现实世界系统 。从一个好的操作仿真应该具备的特性列表来看,MuJoCO 支持大多数特性,但缺乏逆运动学和路径规划的支持。
PyBullet 用于研究对象碰撞 、拾取和抓取动力学 以及可变形物体操作(例如布料)。PyBullet 针对机器人研究具有强大的目标,并为机器人研究人员实现了特定功能。可能有助于操作研究人员的功能包括:正/逆运动学;强化学习(RL)环境;虚拟现实(VR)集成(用于任务演示);以及可变形物体和布料仿真(有限元方法)。
Gazebo用于机器人操作研究。尽管这些研究都没有依赖 Gazebo 来进行灵巧的操作,但其中一项研究确实明确地将外部算法添加到模拟中以处理非刚性物体。Gazebo 提供了一个带有必要的执行器和传感器的机器人操作仿真环境。它还支持 ROS,ROS 提供了用于正/逆运动学和路径规划的软件包。
CoppeliaSim 是一个具有一系列用户友好功能的机器人仿真软件,包括传感器和执行器模型、运动规划以及正/逆运动学支持。PyRep 是最近基于 CoppeliaSim 构建的用于机器人学习的 Python 工具包,已被证明可以用于操作,例如使用 Kinova 机械臂明确地拾取和放置立方体。
SimGrasp 用于一项研究中,用于设计和仿真腱驱动的水下机器人手 。它是一个建立在 Klampt’t 仿真软件之上的仿真软件包,Klampt’t 声称其碰撞处理比之前提到的机器人操作仿真软件更好。Klampt’t 通过仿真执行器和传感器的运动学、动力学和路径规划,为机器人操作的快速部署提供了便利。
有一些研究使用仿真软件来模拟可变形物体的操作,但这个综述并没有将这些仿真软件归类为机器人仿真软件。其中一项研究使用Blender进行布料模拟,然而这个研究只模拟了布料和抓取的坐标位移。另一项研究使用Nvidia Flex来模拟流体和可变形物体,但抽象掉了机器人的交互。此外,另一项使用Nvidia Flex的研究模拟了一个7自由度的Yumi机器人完成一个摆动的插孔任务。Flex可以通过ISAAC仿真软件获得。
4. 医疗机器人
医疗机器人是机器人研究的一个子领域,将自动化和机器人技术应用于手术、治疗、康复和医院自动化等领域。与其他机器人子领域的比赛不同,医疗机器人没有针对特定任务的比赛,而是通常根据提交作品的创新性来评判比赛。医疗机器人比赛的例子包括英国机器人与自治系统医疗机器人对传染病挑战赛和 Kuka 医疗机器人挑战赛。
医疗机器人学的广泛应用范围限制了可以用来确定医疗机器人学仿真软件要求的基准数量。因此,我们将医疗机器人仿真软件的要求建立在该领域最近进行的研究需求之上。由于治疗和康复干预的性质,研究通常只在现实中进行。相反,我们将重点放在用于机器人手术的仿真上,包括使用机器人手术系统进行真实手术的培训和练习,以及在安全环境中训练自主代理进行手术。
最常用的机器人手术系统是Intuitive公司的达芬奇系统,它由多个具有旋转关节和肌腱驱动关节的臂组成。已经开发了一些与达芬奇系统类似硬件的用于研究的机器人平台,包括 Raven II。要真实地模拟这些平台,仿真软件必须能够模拟旋转关节和 直线关节,并最好模拟这两种机器人的肌腱以提高准确性。
使用机器人手术系统进行的手术通常由外科医生进行远程操作。最先进的远程操作控制具有触觉反馈,可直接从机器人向用户提供力/扭矩反馈。用于医疗机器人研究的机器人仿真软件从能够提供用于触觉设备的模拟力/扭矩反馈中受益。用于远程操作的仿真软件必须实时运行,否则用户输入将导致环境中的延迟操作。
用于医疗机器人的研究的机器人仿真软件还需要可变形物体模拟。由于人类主要由非刚性组织组成,因此逼真的模拟需要能够模拟可变形物体。
有几种仿真软件提供机器人手术所需的部分或全部功能。医疗机器人领域的最新研究使用了诸如 Simulation Open Framework Architecture (SOFA)、CHAI3D、Asynchronous Multi-Body Framework (AMBF)、CoppeliaSim 和 UnityFlexML 等机器人仿真软件。表 4 总结了在外科机器人领域相关领域中识别的仿真软件的功能。
SOFA 是一种用于研究微创手术的力和热反馈方法的医疗仿真软件。SOFA 提供了一个用于远程操作和触觉控制的插件,支持实时可变形物体模拟,并通过机器人插件支持肌腱驱动关节。这些功能加上对医疗应用的强烈关注使 SOFA 成为需要模拟的医疗机器人研究的理想候选者。
CHAI3D 是另一个用于医学机器人研究的模拟框架,用于在模拟中学习用于自主组织操作的神经网络。CHAI3D 支持多自由度远程操作控制器和触觉反馈系统、实时模拟和可变形物体模拟。
AMBF 是由伍斯特理工学院自动化和介入医学机器人研究实验室开发的用于医疗应用的仿真软件,它基于 CHAI3D 和 bullet 物理引擎。AMBF 可实现快速运行的模拟,该模拟使用 CHAI3D 进行远程操作支持和触觉反馈,使用 bullet 进行软体物体模拟和 prismatic 关节。
UnityFlexML 是一个为机器学习应用开发的仿真软件。它基于 Unity,Unity 有一个庞大的支持插件网络,包括 Nvidia Flex 用于可变形物体模拟和带触觉的远程操作控制。
用于医疗机器人研究的其余仿真软件提供所识别的必要功能的有限子集。例如,CoppeliaSim 被用作深度强化学习环境来训练手术机器人的 pick 和 reach 策略,其中不需要可变形物体。CoppeliaSim 确实通过 CHAI3D 插件支持远程操作和触觉反馈,并支持 prismatic 关节以实现手术机器人关节的逼真模拟。
另一个用于医疗研究的模拟环境是使用 Open Dynamics Engine (ODE) 的定制实现。ODE 被用于展示用于训练用户进行机器人手术的框架。虽然 ODE 是一个物理引擎而不是机器人仿真软件,但用户为 Raven II 手术机器人添加了额外的远程操作和触觉反馈支持。
5. 海洋机器人
海洋机器人仿真软件可分为两类:用于水下(AUV、ROV 等)和适用于表面(USV、船舶、船只等)的仿真软件。新加坡 AUV 挑战赛(SAUVC)、RoboSub、RobotX和 MATE ROV等竞赛专注于实际的、具有挑战性的任务。感兴趣的读者请参考,该文对海洋机器人领域的此类竞赛进行了出色的评论,并在表 5 中总结了评测仿真软件的功能。
海洋机器人的设计在导航、航点跟踪、海底地图绘制和基于传感器的控制等方面都得到了高保真仿真的极大帮助。一个好的仿真软件应该支持不同类型的可控车辆、机械手、传感器和复杂环境,并准确地表示水动力/水静力学力。UWSim和 UUV Simulator是水下仿真的两种最广泛使用的选项。
无人水下航行器 (UUV) 仿真软件是 Gazebo 的扩展,支持多种水下航行器(ROV 和 AUV)和机械手,并以高保真度表示水静力学和水动力学力。包括了一些常用的传感器,例如水下摄像头、压力传感器、IMU、磁力计、多普勒速率标 (DVL) 等。还包括用于执行的鳍和推进器模型。UUV 允许研究人员创建复杂的水下环境,其中已经包含了海底、湖泊、沉船等的模型。UUV 仿真软件已被用于应用程序,例如地图绘制和路径跟踪。
其他值得注意的 Gazebo 扩展/软件包包括 RockGazebo和 freefloating-gazebo。ROCK-Gazebo 是 Gazebo 和 Robot Construction Kit (ROCK) 框架之间的集成,以实现实时仿真。这涉及使用 OpenSceneGraph(OSG) 扩展 ROCK 可视化工具来渲染水下环境,而 Gazebo 用于物理仿真。Rock-Gazebo 有许多限制,包括不支持多机仿真。freefloating-gazebo 将 Gazebo 的动态仿真能力与 UWSim的逼真水下渲染相结合。这使其能够模拟水动力学力。freefloating−gazebo 缺少的是稳定性问题,它不包括附加质量力计算。Rock-Gazebo 和 freefloating-gazebo 都具有有限的传感器支持。
UWSim是另一个开源选项,它是在Jaume-I大学的交互与机器人系统实验室开发的。它利用Bullet和OpenSceneGraph(OSG)进行接触物理模拟,并支持各种模拟传感器,如压力传感器、力传感器、GPS、测距相机/传感器、IMU、DVL等。可以同时加载和管理多个载具,使用OSG和其他第三方工具(如Blender)可以建模复杂的环境。水下渲染非常逼真,并且已经包含了girona500和ARM5E机械臂的默认模型。UWSim已经在许多应用中被使用,包括控制器设计、路径规划]、3D地图制作等。然而,在车辆的动力学和水动力学模拟精度方面,UWSim落后一些。它也不支持机械臂动力学(仅支持运动学)的模拟。
与UWSim和UUV Simulator最可靠的替代方案是新提出的StoneFish Library,它是基于Bullet的一个封装,支持标准传感器,如相机、压力传感器、DVL、多波束等。所有的水动力学计算都基于实际物体的几何形状,从而更好地近似水动力学力。模拟效果包括添加质量、浮力和阻力。可用于建模更复杂设置的水下推进器和车辆机械臂系统。该仿真软件支持高级的水下场景渲染,包括散射和光吸收。然而,高级渲染在计算上是昂贵的,并且需要较新的GPU。
Unity ROS 仿真软件(URSim)使用 ROS 和 Unity 3D 游戏引擎。它具有摄像头、IMU 和压力传感器模型,以及传感器输入的噪声模型。该仿真软件能够模拟 SAUVC 和 RoboSub 等比赛中使用的环境。Unity 允许模拟水动力力,例如浮力和阻力。ROS 提供了控制、通信、视觉和感知所需的功能,目标应用包括感知、建图、路径规划、定位、避障和目标捕获。URSim 正在积极开发中,计划添加新的传感器(DVL、侧扫声纳等)和机械手。
海洋表面机器人模拟相对较少 ,主要原因是模拟环境因素(如波浪、风和水流)的复杂性。USVSim是一个专门用于此应用的仿真软件,它是 Gazebo的扩展。freefloating 插件通过改进水动力学和浮力效果来支持 USV 模拟。lift-drag 插件用于计算表翼动力学。UWSim提供了准确的波浪和水面视觉效果建模。通过重用和改进上述工具中的元素,作者得以开发出一个鲁棒的仿真软件,已用于路径规划。
6. 空中机器人
在本节中,我们将重点关注无人机(uav),这是空中机器人中最受欢迎的研究领域。
无人机挑战赛和国际空中机器人竞赛 (IARC)是该领域的开放式竞赛。在无人机挑战赛中,目标是展示无人机在现实世界任务中的实用性,例如医疗救援或必需品配送。IARC 是运行时间最长的大学无人机竞赛,重点关注与人机交互、机器人与机器人交互以及机器人与复杂环境交互相关的任务。NASA SAND (Safeguard with Autonomous Navigation Demonstration)竞赛旨在解决在美国空域飞行无人机时相关的安全关键风险。
现代无人机仿真软件允许研究人员通过模拟湍流、空气密度、风切变、云层、降水和其他流体力学约束来复制复杂的现实世界环境 。它们还支持各种传感器,例如激光雷达、GPS、摄像头等。数字高程模型或高度图也用于模拟无人机下方的地形。
空中机器人仿真软件包括 Gazebo、AirSim、Flightmare、jMAVSim 和 Webots,它们都包含在表 6 中,并附有对空中机器人研究所需的重要功能的比较。
Gazebo [46] 是一种适用于室内和室外应用的流行仿真软件。Gazebo 依靠 LiftDrag 插件来模拟空气动力学特性,并支持许多常见传感器,例如立体摄像头和激光雷达。Hector 插件添加了无人机专用传感器,例如气压计、GPS 接收器和声纳测距仪。Gazebo 支持广泛的无人机模型,以及开源硬件控制器,例如 Ardupilot 和 PX4,可以集成到硬件在环仿真中。然而,与 Unity 和 Unreal Engine 相比,Gazebo 的渲染能力有限。Gazebo 已被用于自主导航、在移动平台上着陆、多无人机仿真和视觉伺服应用中。
Microsoft 的 AirSim基于 Unreal 引擎,支持 IMU、磁力计、GPS、气压计和摄像头传感器。AirSim 提供了一个名为 simple_flight 的内置控制器,还支持开源控制器,例如 PX4。AirSim 资源密集型,因此与其他仿真软件相比,运行时需要大量的计算资源。它已被用于无人机竞赛、野生动物保护 和从视觉图像中获取深度感知。
Flightmare将灵活的物理引擎与 Unity 渲染引擎结合在一起,形成了一个功能强大的仿真软件。Flightmare 模拟了包括仓库和森林在内的高保真环境。提供 IMU 和带有地面真实深度和语义分割的 RGB 摄像机的传感器模型。该仿真软件非常适合深度/强化学习应用。
jMavSim是另一个广泛使用的仿真软件,主要由于其与开源 PX4 控制器的紧密耦合,这归因于其最初的目标是测试 PX4 固件和设备。jMavSim 支持基本感知和渲染。
Webots是一个开源仿真软件,支持广泛的传感器,包括摄像机、LIDAR、GPS 等。用户可以添加自定义物理来模拟风等现象,并集成 OpenStreetMap 数据来创建更逼真的环境。支持与 Adrupilot 飞行控制器的集成。Webots 已用于多代理模拟、鸟击缓解和着陆应用。
7. 软体机器人
软机器人比其他机器人领域(这些领域通常假设机器人和其操作的世界都是机械刚性的)的仿真问题更难。软机器人需要仿真可变形物体,并支持非传统的驱动方式,包括肌腱或电缆、气动和热传递。仿真软件还必须支持软机器人与软/固体材料或流体之间的接触动力学。
作为一个新兴的研究领域,软机器人竞赛起步相对较晚。2016 年 Robosoft 大挑战赛包括三个团队挑战:操作、陆地运动和水下运动 。年度软机器人大赛在 2015 年至 2018 年间每年举办一次。它包括几个类别,评审团根据贡献和设计颁发奖项。表 7 提供了不同机器人仿真软件在软机器人领域相关领域仿真能力的比较。
软机器人通常使用 Multiphysics 软件包,例如 COMSOL、ANSYS 和 Abaqus,这些软件包通过有限元法 (FEM) 解决问题,并模拟热传递、电导、磁性和流体流动等方面。它们通常缺乏传感功能,但完全能够模拟软驱动机制,并用于更基础的研究(例如不包括环境建模)。它们提供了一系列模块来支持不同的物理,但通常价格昂贵。
例如,Abaqus 用于模拟层流堵塞结构、带静电驱动器的软机器人的 3D 运动、由热传导产生的软机器人的偏转和软机器人抓手。Abaqus 可以很好地模拟非线性行为,并通过材料模型库支持广泛的材料属性。Abaqus FEM 仿真被认为是业界标准。ANSYS 是另一个用于软机器人研究的建模软件包,它在仿真中模拟电、热和结构特性。ANSYS Fluent 是一个用于流体仿真的成熟软件包,在水下软机器人建模方面很受欢迎。
COMSOL 比 Abaqus 具有更多的用户可定义的材料属性,这使得它适用于使用具有独特特性的材料的研究方法。它也被认为比 ANSYS 更易于使用。在最先进的研究中,Comsol 用于模拟磁场驱动的柔性寸步虫和光驱动的毛毛虫状机器人。
SOFA 是一个流行的开源仿真软件,已用于模拟电缆驱动的软机器人 [3] 和四足软机器人的 FEM 仿真。SOFA 具有许多对机器人有用的功能,包括 ROS 桥接和用于建模和驱动的软机器人插件。软机器人插件的驱动器包括肌腱驱动器和气动驱动器。SOFA 由一个活跃的开源社区支持,该社区定期在其内部开发的同时添加新模块和功能。
Evosoro是一种基于Voxelyze物理引擎的软体机器人仿真软件。它使用弹簧-质量模型来模拟基于体素的软体机器人,并包括可变体积驱动,但不具备感知功能。Evosoro是一个相对快速的软体机器人仿真软件,已经与进化算法结合起来设计机器人形态[117],并作为实际部署软体机器人的设计工具[118]。然而,由于(快速、相对不准确的)弹簧-质量模型,在将解决方案转移到现实世界时,仿真软件发现存在显著差距。
8. 基于学习的机器人
机器人学习在过去十年中一直是一个重要的研究课题。由于当前强化学习 (RL) 算法的样本效率低,以及在训练过程中需要探索可能导致机器人失败或损坏的状态-动作空间,深度 RL 的大部分工作都首先在仿真中学习,然后再部署到硬件上。由于机器人深度学习的相对新颖性,机器人学习领域的比赛相对较少。Real Robot Challenge是一个值得注意的例外,在该比赛中,参赛者学习使用并联机械臂进行灵巧的对象操作,他们的学习策略在比赛的第一阶段在仿真中进行比较,在后面的阶段在硬件上进行比较。该挑战赛的任务包括将物体推到目标位置、将其抬到指定高度和将其移动到目标位置和方向。
虽然针对机器人学习的挑战很少,但学习方法已被应用于许多其他机器人挑战中。例如,最近在 DARPA 地下挑战赛中部署了一种用于四足机器人的学习行走控制器。
机器人学习与本文涵盖的其他部分不同,因为它关注的是机器人上的实现,而不是机器人的类型或机器人部署的环境。由于机器人学习的流行,本工作包含了一个仿真软件选择指南。
学习方法可以应用于机器人领域的广泛范围,因此应考虑与这些领域相关的功能以及学习本身所需的功能。例如,将学习方法应用于软机器人需要支持软接触和材料,以及快速迭代策略学习的能力。
OpenAI Gym 是一个流行的用于训练和评估 RL 算法的工具包,它提供了 MuJoCo (图 3) 中的环境,这些环境通常用于评估文献中新 RL 算法和方法的基础。OpenAI Gym 被用于许多仿真软件中来训练和评估学习到的策略,这证明了这些仿真软件对于学习方法的有效性。与 OpenAI Gym 一起使用的仿真软件包括:PyBullet (图 3) 、Webots、Nvidia Flex、Nvidia Isaac、CARLA、Project Chrono、Raisim和 Gazebo (图 3)。
深度学习的一个常见应用是学习操作和抓取策略。对于这些任务,刚体或软体接触动力学的保真度很重要,还需要有传感器来支持这些任务的策略。
另一个应用是在粗糙地形上使用移动机器人进行路径规划或运动,因此研究人员可能需要对复杂地形进行建模。许多仿真软件,如 Gazebo、Raisim、MuJoCo 和 PyBullet,允许从高度图图像或网格文件导入非平坦刚性地形,但无法在足够大的尺度上模拟土壤、砾石或流体地形。Project Chrono 是一个替代方案,它具有内置的变形地形、颗粒地形和流体仿真支持,并且可以并行化。Raisim、Flightmare和 Gazebo 等仿真软件已实现了四旋翼等空中机器人的运动和路径规划策略。
在每个描述的应用中,传感器支持都是研究人员在选择合适的仿真软件时需要考虑的重要因素。力-力矩传感器和视觉传感器是常见的要求,在 Gazebo、PyBullet 和 CoppeliaSim 等仿真软件中得到支持。Gazebo 提供对噪声模型的支持,可以应用于传感器输出。由于仿真是现实世界条件的抽象,在将仿真中学习到的策略转移到硬件上时,通常会下降。克服这种现实差距是研究人员在选择仿真软件时需要考虑的最重要的考虑因素之一。更重要的是仿真环境在不同 episode 之间变化,通常使用称为域随机化的技术,以多样化训练数据并允许机器人正确探索共享的状态-动作空间。许多仿真软件都具有内置支持,例如,能够在不关闭整个仿真软件的情况下重置仿真环境,以及可以变化仿真中机器人、摄像机和物体的初始位置和方向。MuJoCo 内置了对仿真中渲染对象纹理和用于渲染它们的摄像机特性进行随机化的功能。此功能在 Gazebo 中并非内置支持,但已经创建了一个外部插件来实现它。随机化物体质量和惯量以及摩擦系数是另一种在许多考虑的仿真软件中常见的域随机化方法。应用小随机力到机器人也有助于克服现实差距,但并非所有仿真软件都支持。支持多个物理引擎是另一种域随机化技术,可以防止学习到的策略过拟合仿真环境。Gazebo、V-Rep 和 Pybullet 支持多个后端物理引擎,而 Raisim 和 MuJoCo 等一些其他仿真软件则不支持。对于依赖视觉数据的学习策略,渲染质量也是一个重要因素。
由于训练神经网络参数和正确探索状态-动作空间需要大量的数据,因此选择的仿真软件也应能够及时收集这些数据。有几种仿真软件功能可以帮助在及时的情况下进行深度学习,包括:支持并行仿真,通过在一个环境中模拟多个机器人或通过多线程或多进程并行运行多个仿真来实现;能够以无头模式运行;快速的动力学求解器,允许仿真运行得比实时更快。由于 Nvidia Flex 的 GPU based 物理引擎(可作为 Nvidia Isaac 机器人仿真软件的物理引擎使用),在单个 CPU 和 GPU 上只需 16 分钟即可学习人形机器人的行走策略。Flex 还支持分布式 GPU 仿真,可以在某些任务上将训练时间进一步减少 8 倍 [130]。Flightmare 能够同时模拟 150 架四旋翼无人机,每秒保持 200,000 步,从而能够比实时更快地训练四旋翼无人机的运动策略 [100]。在 Gazebo、V-Rep 和 Webots 中运行类似的人形机器人仿真表明,Gazebo的CPU负荷比其他两个仿真软件更重,而Webots是三者中负荷最轻的。计算负荷对于考虑使用仿真软件进行学习的研究人员很重要,因为重要的是要同时进行尽可能多的并行仿真,或者尽快运行仿真,以便缩短训练时间。
进化机器人学是学习的一个子集,与大多数深度强化学习方法有所不同,尽管在仿真深度强化学习环境方面的许多挑战在进化机器人学领域也是共同存在的。改善现实差距对于通过进化技术开发的运动策略和零部件设计来说同样重要,这与通过深度强化学习开发的策略是一样的,进化方法也需要运行大量的时间步长或仿真。文献中用于进化方法的仿真软件包括ODE 、Nvidia Physx、Bullet,V-Rep,Gazebo和Webots,voxcad和Project Chrono。表8比较了用于机器人学习中常用仿真软件的相关特性。对于这个领域来说,重要的特性包括:能够实现域随机化的特性,例如对机器人施加随机外力和使用多个物理引擎;学习策略所需的常见传感器,如RGBD、LiDAR和力传感器;以及依赖于视觉数据的学习策略的逼真渲染能力。
9. 发展趋势
物理仿真与机器人研究的持续进步紧密相连。它越来越重要,特别是在机器人深度学习等领域。
在最近的一个关于从仿真到真实的辩论研讨会上,辩论者提出了仿真软件准确性的进展是推进仿真软件技术的重要步骤(图4)。提高准确性可以尝试多种方法,因为仿真软件将真实现象抽象化,使世界的表示更加粗略。最需要很好建模的现象是与接触有关的现象,通过改进碰撞检测和解决方法,可能会看到较大的改进。碰撞检测需要很大的计算资源,并且常常是仿真软件中不稳定性的原因之一。一种选择是用可以高精度地复制该现象特性的神经网络替换难以在仿真中建模的现象,并将其集成到仿真软件中。
可微分仿真软件是与机器人紧密相关的一个快速发展的研究领域。自动微分库的可用性使得该领域的新论文数量大幅增加。可微分仿真软件的主要优势在于能够使用基于梯度而不是黑盒优化方法,承诺提高效率,并将以前无法解决的问题开放给基于学习的优化方法。一些论文已经证明了此类仿真软件在系统识别、策略生成和将物理嵌入神经网络(图4)方面的适用性。
目前在一些仿真软件中已经支持的插件和工具很可能会变得更加常见和普遍。最有可能被更多仿真软件采用的特性包括对ROS中间件的支持,以及与外部渲染器(如Unity或UnrealEngine)的集成,以实现更逼真的相机图像流(图4)。我们可能会看到更多的机器人仿真软件也集成基准工具,例如域随机化、系统识别和黑盒优化。
我们还可能会在基准测试和算法框架中看到更深入的集成。例如,OpenAI Gym 、spinningup和robosuite等强化学习框架。基准测试和算法实现很可能会嵌入到仿真软件框架中,就像路径规划器和运动学求解器已经是如此一样。我们还可能看到基准测试和算法框架的进一步整合。
最后,我们预测将会有更多关于估计和建模仿真软件不确定性的研究。具有能够衡量仿真软件是否准确预测真实世界的指标非常有利。它为研究人员提供了一个评估在仿真中创建的解决方案在实际世界中转移的可能性的估计,并指导额外的模型建模工作。
10. 结论
仿真软件在机器人研究中以多种方式发挥作用。其好处包括降低成本、更好地管理时间,在处理复杂环境时提供更高的安全性。本综述文章详细总结了在七个不同的主要领域的机器人研究中,为研究人员提供的仿真软件类型。每个部分都涵盖了一系列方面,包括比赛、仿真软件对每个领域所需功能的支持-传感器、执行器、环境-以及当前的最新。第九部分还讨论了我们可以预计在不久的将来会看到的发展。
据我们所知,这是关于机器人仿真软件的首篇综述文章,涵盖了机器人研究领域的多个领域。它对于新研究人员来说是一个很好的起点,对于经验丰富的研究人员来说是一个有用的参考指南。因此,我们希望在未来几年中能够发表更多像这样的研究,随着新的仿真软件进入领域,一些老旧的仿真软件变得过时。
- Author:Lianzhao
- URL:https://lianzhao.vercel.app//article/simulator_review
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!