作者单位:UZH—RPG
文章类型:2020年机器人学习会议
目录
摘要
一、引言
二、相关工作
2.1 RotorS and Hector
2.2 AirSim and CARLA
2.3 FlightGoggles
三、方法
3.1 系统概览
3.2 渲染引擎
3.3 动力学建模
四、实验
4.1 仿真速度
4.2 学习四旋翼控制的感觉运动策略
4.3 点云和路径规划
4.4 虚拟现实和安全人机交互
五、总结和讨论
最先进的四旋翼仿真器具有刚性和高度专业化的结构:它们要么速度快,物理精度高,要么逼真。在这项工作中,我们提出了一种新的四旋翼模拟器:Flightmare。Flightmare由两个主要组件组成:基于Unity构建的可配置渲染引擎和用于动力学仿真的灵活物理引擎。这两个组件完全解耦,可以彼此独立运行。这使得我们的仿真器速度极快:渲染速度高达230 Hz,而在笔记本电脑上的物理仿真速度高达200000 Hz。此外,Flightmare还具有几个理想的功能:(i)大型多模式传感器套件,包括用于提取场景三维点云的接口;(ii)强化学习API,可并行数百个四旋翼;以及(iii)与虚拟现实设备集成,以便与仿真环境交互。我们通过将Flightmare用于两个不同的机器人任务来证明它的灵活性:使用深度强化学习的四旋翼控制和复杂3D环境中的无碰撞路径规划。
关键词:四旋翼模拟器,逼真渲染
仿真器是机器人研究人员的宝贵工具。它们允许以安全和廉价的方式开发和测试算法,而不必担心处理真实世界硬件的耗时和昂贵的过程。理想的仿真器是:(1)快速,在有限的时间内收集大量数据并进行计算;(2)物理精确,以高保真度表示真实世界的动力学;(3)照片逼真,最大限度地减少仿真和真实之间的差异世界传感器的观测。这些目标在本质上通常是冲突的:例如,仿真越真实,它就越慢。因此,在单个模拟器中实现所有这些目标是具有挑战性的。
目前可用的模拟器的格局是零散的:一些模拟器速度极快,例如Mujoco [1],而另一些模拟器具有真正精确的动力学 [2,3] 或高度照片逼真的渲染 [4] 。这些模拟器的主要限制之一是它们的刚性。具体而言,他们委托仿真器开发人员而不是最终用户来权衡速度的准确性。然而,这个范式留下了一些问题:如果我们想动态地改变基础物理模型,该怎么办?如果我们想在灵活权衡逼真程度和仿真速度呢?在这项工作中,我们在四旋翼仿真的背景下回答了这些问题。为此,我们提出了Flight mare,一种新的灵活的仿真器,它将速度和精度的权衡放在终端用户手中。
Flightmare由两个主要模块组成:基于Unity[5]的渲染引擎和物理模型。这些模块完全解耦,可以彼此独立运行。此外,每个区块的设计都是灵活的。事实上,渲染块可以在广泛的3D逼真环境中使用,并生成从低到高的照片逼真度的视觉信息。以最小的额外计算成本,还可以模拟传感器噪声,例如运动模糊、环境动力学(例如风)和镜头畸变[5]。类似地,物理模块为用户提供所需机器人动力学和相关传感方面的完全控制。根据应用,用户可以轻松地在基本(无噪声)四旋翼模型和更高级的刚体动力学(包括摩擦和旋翼阻力)之间切换,或者直接使用真实的平台动力学,如[4]。直接依赖于物理模型的惯性传感和电机编码器也可以无噪声或包含不同程度的噪声[3,6]。
除了照片真实感渲染和快速四旋翼动力学仿真外,Flightmare还具有一些与当前可用的四旋翼模拟器相关的理想功能。与FlightGoggles[4]不同,我们提供了与流行的机器人仿真器Gazebo的接口以及不同的高性能物理引擎。与AirSim[7]不同,我们将渲染模块与物理引擎分离,当不需要渲染时,物理引擎可以提供快速而准确的物理模拟。此外,Flightmare(i)可以并行仿真多达数百个agent,这不仅适用于多无人机应用,还可以实现极快的数据收集和训练,这对于开发深度强化学习(RL)应用至关重要,(ii)为多个RL任务提供标准包装器(OpenAI Gym)[8],以及最先进的RL算法的流行OpenAI基线[9],(iii)提供丰富且可配置的传感器套件,以及以点云形式提取环境完整3D信息的API。表1总结了我们和其他四旋翼模拟器之间的主要区别。
我们定量评估了Flightmare在各种设置下的渲染速度和动力学模块。这项研究表明,使用商用多核笔记本电脑CPU,渲染块的速度可达230 Hz,动态块的速度可达200000 Hz。此外,我们还通过在两项具有挑战性的机器人任务中使用模拟器来证明模拟器的通用性:学习四旋翼的传感器运动控制策略,可能会出现传感器故障;以及复杂3D环境中的路径规划。这两项任务对仿真堆栈提出了完全不同的要求,Flightmare可以提供灵活的接口。然而,我们的仿真器并不局限于这些问题,可以应用于广泛的任务。
我们回顾了机器人学和机器学习研究人员广泛使用的几种现有开源仿真器。我们强调每个仿真器的重要特性和局限性。我们从先前工作的成功中获得灵感,设计了一个灵活的四旋翼仿真器,该仿真器结合了它们的理想特性,同时解决了它们的局限性。
Rotor[3]和Hector[6]都是在Gazebo[10]上构建的流行微型飞行器(MAV)模拟器,
gazebo[10]是一个通用机器人仿真平台,通常与流行的机器人操作系统(ROS)一起使用。Hector是一个开源模块的集合,主要用于救援机器人的自主建图和导航。RotorS提供了多种多旋翼直升机模型,如AscTec蜂鸟、鹈鹕和Fire Fly。这些基于Gazebo的模拟器能够访问多个高性能物理引擎并模拟各种传感器,从激光测距仪到RGB摄像机。特别是,RotorS已广泛应用于机器人技术中,用于开发微型飞行器上的算法,如无人机竞赛[11]、探索[12]、路径规划[13]或绘图[14]。然而,Gazebo的渲染能力有限,并且不是为高效的并行动力学仿真而设计的,这使得开发基于学习的系统变得困难。
AirSim[7] 和 CARLA [15] 都是基于虚幻引擎构建的自动驾驶汽车的开源逼真模拟器。 CARLA 主要用于自动驾驶研究,仅提供地面车辆的动力学。 相反,AirSim 提供了一个接口来为四旋翼飞行器配置多种车型,并支持硬件在环 (HITL) 以及软件在环 (SITL) 与飞行控制器,如 PX4。 车辆被定义为一个刚体,其动力学模型使用 NVIDIA 的物理引擎 PhysX 进行模拟,PhysX 是当今绝大多数视频游戏使用的流行物理引擎。 然而,这个物理引擎并非专门用于四旋翼飞行器(或机器人),它与渲染引擎紧密耦合以模拟环境动态。 由于渲染和物理模拟之间存在这种严格的联系,AirSim 只能实现有限的模拟速度。 这种限制使得模拟器难以应用于具有挑战性的无模型强化学习任务,例如 在苛刻的初始化姿势下训练端到端控制策略以实现四旋翼稳定[16]或飞过快速移动的门[17]。
FlightGoggles [4] 是一种用于感知驱动机器人车辆的逼真传感器仿真器。 FlightGoggles 由两个独立的组件组成:一个基于 Unity 的逼真渲染引擎和一个用 C++ 实现的四旋翼动力学模拟。 此外,它还在动作捕捉系统中提供了与现实世界车辆和actor的接口。 FlightGoggles 对于根据现实世界中飞行设备的轨迹和惯性测量值渲染相机图像非常有用,其中收集的数据集 [18] 用于测试基于视觉的算法。 Flightmare 与 FlightGoggles 具有相同的动机,即将动态建模与照片级逼真的渲染引擎分离。 然而,我们的仿真器提供了更大的传感器观测套件、一个用于提取环境点云的 API,以及一个更加结构化的物理接口,允许并行仿真多个agent。 这些特征为机器人和机器学习研究开辟了几个新的机会(见第 4 节)。
除了上述模拟器之外,还有更多现有的模拟器已被其他研究团体广泛采用。 例如,MuJoCo [1] 已被强化学习社区广泛用于基准比较。 同样,RaiSim [2] 是用 C++ 编写的用于机器人和人工智能研究的物理引擎,支持大规模并行动力学模拟。 但是,这两个模拟器都不支持复杂的 3D 环境和照片般逼真的图像渲染。 Sim4CV [19] 是一个逼真的模拟器,但仅用于计算机视觉应用。
Flightmare 是一个模块化且灵活的四旋翼模拟器,主要由两个独立的组件组成:使用 Unity 编辑器构建的逼真渲染引擎和四旋翼动力学模拟。 我们将四旋翼飞行器的动态建模与渲染引擎解耦,以便通过使用并行编程实现快速准确的动态仿真 [20]。 Flightmare 为用户提供了一个灵活的界面,可以在各种复杂的接近现实的 3D 环境中模拟不同的传感器。 渲染引擎和四旋翼动力学之间的接口使用高性能异步消息传递库 ZeroMQ 2 实现。此外,我们使用 python 包装器 [21] 为强化学习任务实现 OpenAI-Gym 风格的接口。 Flightmare 的系统概览如图 1 所示。
(1)3D环境。Flightmare 的渲染引擎采用 Unity 构建,Unity 是流行的跨平台游戏引擎和人工智能通用平台 [5]。 Unity 支持高保真图形渲染,包括逼真的预烘焙或实时照明、不同网格、材料、着色器和 3D 对象纹理的灵活组合,用于生成逼真的场景中的环境照明和相机后期处理。Flightmare 提供各种高质量的 3D 环境:从简单的仓库到复杂的自然森林,其中的环境由静态和动态对象的高分辨率 3D 模型组成。 可以轻松创建或直接从 Unity Asset Store3 购买新环境或资产。 因此,用户只需对 Unity 编辑器的了解非常有限,就可以直接扩展或更改环境。
(2)传感器。渲染引擎提供了传感器套件的灵活配置。 目前,Flightmare 可以通过真实深度和语义分割、测距仪以及代理与其周围环境之间的碰撞检测来模拟 RBG 摄像机。 特别是,Flightmare 允许用户更改相机的内在特性,例如视野、焦距和镜头失真。 此外,它还可以模拟相机上的物理效果,包括运动模糊、镜头污垢和光晕。 可以离线或在线定义任意数量的传感器及其与机身坐标系相关的外部参数。 此外,我们提供图形用户界面 (GUI) 和 C++ 应用程序编程接口 (API) 供用户提取环境的真实点云,然后将其导出为二进制多边形文件格式 (PLY) . PLY 文件通过检查特定点的占用情况来存储有关环境的真实三维信息。 点云文件可以通过 Open3D [22] 库读取并用于路径规划算法(参见第 4 节)。
(3)脚本。Unity通过C#提供了丰富灵活的脚本系统,用户可以定义复杂的仿真任务,如创建图形效果和控制对象的物理行为。我们为不同的任务使用一系列C#脚本,包括场景管理、对象控制、图像合成、传感器实例化和模拟。所有脚本都是独立于模拟的3D环境开发的,因此很容易添加到其他现有的Unity项目中。
Flightmare 为三种四旋翼动力学提供了一个灵活的接口:基于Gazebo的四旋翼动力学 [3]、现实世界动力学和经典四旋翼动力学的并行实现 [23]。 每种动力学都适用于不同的应用程序。 例如,我们可以并行仿真数百个竞速无人机,并在一分钟内收集数百万个状态转换。 这种并行采样方案对于大规模强化学习应用非常有用。 基于Gazebo的动力学速度较慢,但有高保真物理引擎。 最后,Flightmare 提供了将真实世界动力学与照片级渲染相结合的界面,类似于之前的工作 [4] 中已经展示的内容。
四旋翼飞行器被建模为一个由四个电机驱动的刚体。 我们使用在实际四旋翼实验中用于设计控制算法的四旋翼动力学[24,23, 25]:
是位置,是四旋翼在世界坐标系W下的线速度,是常对角矩阵,对四旋翼的速度是线性影响。我们用单位四元数表达四旋翼的方向,用定义机体系下的角速度。这里,
我们设计实验来回答以下问题。 为什么我们需要将动力学模拟与渲染引擎解耦? 四旋翼动力学和渲染引擎的模拟速度是多少? 我们如何使用模拟器进行机器人学习? 我们可以将模拟器用于哪些其他应用程序?
我们使用配备 12 核 Intel(R) Core(TM) i7-8850H CPU、频率高达 2.60GHz 的笔记本电脑评估 Flightmare 的模拟速度。 评估结果如图3所示。 我们首先通过使用多个CPU线程并行仿真多个四旋翼飞行器来评估四旋翼动力学的速度
图3:使用Python API进行交互时的性能模拟与仿真。左:Quadrotor动力学仿真速度与不同数量的并行仿真Quadrotor和不同数量的线程。右:RGB图像渲染速度的比较在不同的环境中与不同的图像大小。
Flightmare 速度极快——当仿真 150 个四旋翼飞行器与随机采样动作并行时,它在 CPU 上实现了每秒超过 200,000 步。 它允许用户在一分钟内收集数百万个样本。 例如,当在采样循环中使用具有两个 128 个单元的隐藏层的全连接多层感知器 (MLP) 时,我们实现了每分钟约 200 万个样本的平均采样率。 由于我们使用的笔记本电脑总共最多有 24 个线程,因此将线程数量增加到某个阈值以上(例如 15 个线程)进行并行化会导致性能下降。 此外,在单个四旋翼飞行器仿真中使用多个线程会增加额外的计算和内存成本,因此会导致较低的采样率。 我们使用 Unity 应用程序测试模拟摄像机的 RGB 图像渲染速度,其中模拟的 3D 场景范围从轻量级车库环境到复杂的自然森林环境。 通过利用并行化方案和灵活的 API 来配置任意数量的模拟摄像机,Flightmare 可以提供高于实时的渲染速度。 例如,我们使用 5 个并行仿真四旋翼飞行器测试渲染速度(每秒帧数),每个四旋翼飞行器都连接了一个 RGB 摄像头(见图 3)。 对于 Garage 环境中较小的图像尺寸,我们实现了高达 230 Hz 的帧速率。
Flightmare 提供了几个示例任务以及用于强化学习的 OpenAI 健身房风格 [27] 功能包。 这些 Gym 功能包为研究人员提供了一个用户友好的界面,用于 Flightmare 和围绕 Gym 界面设计的现有 RL 基线之间的交互。 这些任务既可用于对 RL 算法进行基准测试,也可用作解决更复杂问题的模板。 我们在表 2 中列出了 RL 任务及其输入状态和输出控制动作。它包括以下任务:1)从随机初始化的姿势中稳定四旋翼飞行器(类似于 [16]); 2)在单个电机故障下从随机初始化的姿态稳定四旋翼飞行器; 3) 控制四旋翼飞行器尽可能快地飞过静态门。 这些任务的特点是机器人和强化学习中的有趣研究问题,例如使用神经网络的四旋翼飞行器控制和在无人机比赛中学习时间最优控制器。 我们使用近端策略优化 (PPO) 算法 [28] 和 OpenAI 稳定基线实现 [9] 为每个任务训练神经网络控制器。 在训练期间,我们并行模拟 100 个四旋翼飞行器进行轨迹采样,并为每个任务收集总共 2500 万个时间步长。 这些任务的学习曲线如图 5 所示。图 4 显示了使用单个预训练神经网络控制器并行控制 100 个四旋翼的屏幕截图。
现有的仿真器不提供有效的 API 来访问环境的 3D 信息。 然而,一大类算法需要这些信息,例如 路径规划。 为了促进这个方向的研究,Flightmare 提供了一个界面,可以将整个环境(或其一个区域)的 3D 信息导出为具有任何所需分辨率的点云(可通过 UI 配置,图 6)。 鉴于其与开源库 Open3D [22] 的兼容性,点云以二进制多边形文件格式 (PLY) 保存。 我们在图 6 中展示了一个生成点云的示例,其中我们说明了复杂的自然森林环境的一部分。 该点云大小为 100m×100m×30m,分辨率为 0.1m,包含森林的详细 3D 结构信息,例如小树枝和树叶的簇。 作为示例应用程序,我们打算计算两点之间的最短无碰撞路径:从 A 点到 B 点。我们在从森林中提取的点云上运行开放运动规划库 (OMPL) [29] 路径规划的默认求解器。 尽管环境复杂,求解器在 1.0 秒内找到了解决方案。
随着自主飞行机器人和消费无人机市场的蓬勃发展,安全的人机交互变得越来越重要。 与地面机器人相比,高速无人机的运动在最近的人机交互研究领域提出了不同的挑战。为了为这个新的研究社区开放 Flightmare,我们将仿真器与流行的 Oculus 虚拟现实偏移集成(图 7)。 这个机会为 HRI 的现实世界实验提供了一个有利的替代方案。 事实上,它允许在大量配置下与无人机进行交互,包括一些极端的、潜在危险的情况。 其他可能受益于 Flightmare 虚拟现实功能的应用程序包括人类感知机器人导航、无人机安全着陆和安全飞行员培训。
Flightmare 不限于上述应用程序,它可以用于其他几个应用程序。 鉴于其能够并行仿真数百个四旋翼飞行器,我们的模拟器可用于研究大型多机器人系统的影响。 此外,鉴于其灵活的结构和通过 Unity Store 提供的数百个模拟环境的可用性,我们相信 Flightmare 对于测试里程计和同步定位和映射 (SLAM) 系统非常有用。 在机器人学习的背景下,Flightmare 也可用于通过模仿学习来学习深度感觉运动策略 [25]。
针对特定任务或功能进行优化,例如 照片般逼真的渲染,目前可用的四旋翼模拟器已经开发出具有刚性结构。 但是,这种设计选择限制了这些模拟器可用于的应用程序集。 具体来说,它消除了让用户或自动算法根据手头的任务对模拟器进行微调的可能性。 我们的工作摆脱了这种僵化的范式,并提出了一种灵活的模块化结构,使用户能够完全控制模拟特性。
根据这个想法,我们设计了一个新颖的四旋翼仿真器:Flightmare。 在 Flightmare 中,物理建模和视觉传感器渲染由两个独立的块管理。 物理模拟可以适用于以任何精度跟踪机器人动力学,从最简单的点质量到真实世界的四旋翼动力学。 同样,渲染可以配置为适应用户的不同需求,范围从非常快速但简单的版本到更逼真但更慢的配置。 此外,Flightmare 与以前的工作相比具有几个有利的特性:适合大多数机器人和机器学习应用程序的大型传感器套件,一个 API 可以有效地并行模拟多个四旋翼飞行器并通过强化学习训练控制器,以及交互的可能性 通过虚拟现实耳机使用模拟器。
我们的工作为未来的工作开辟了许多机会。 在系统方面,将提议的灵活设计应用于其他机器人会很有趣,例如 操纵器或地面车辆。 我们的实验结果目前仅限于四旋翼飞行器的背景,很可能会推广到这些其他平台。 在算法方面,开发新方法以端到端的方式优化任务的模拟会很有趣。 最终,Flightmare 不仅为自主导航创造了新的研究机会,也为人机交互社区创造了新的研究机会。