郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!
arXiv:1705.05065v2 [cs.RO] 18 Jul 2017
Abstract
在现实世界中为自动驾驶汽车开发和测试算法是一个昂贵且耗时的过程。同样,为了利用机器智能和深度学习的最新进展,我们需要在各种条件和环境下收集大量带注释的训练数据。我们提供了一个基于虚拟引擎的新模拟器,它为这两个目标提供了物理和视觉逼真的仿真。我们的仿真器包括一个物理引擎,该引擎可以在高频下运行,以支持流行的协议(例如MavLink)进行实时硬件在环(HITL)仿真。该仿真器是从头开始设计的,可扩展以适应新型车辆,硬件平台和软件协议。此外,模块化设计使各种组件可以轻松地在其他项目中独立使用。我们首先通过将四旋翼飞机实现为自动驾驶汽车,然后通过实验将软件组件与实际飞行进行比较,来演示仿真器。
1 Introduction
最近,诸如RL[12],示范学习[2]和迁移学习[25]之类的范例被证明是训练各种机器人系统的自然手段。这些技术的主要挑战之一是样本复杂性高——学习有用行为所需的训练数据量通常过高。在训练阶段,自动驾驶汽车通常不安全且操作昂贵,这一事实进一步加剧了这一问题。为了在现实世界中无缝运行,机器人需要迁移其在仿真中所做的学习。当前,这是一项艰巨的任务,因为感知仿真,环境和执行器通常过于简单,并且缺乏现实世界的丰富性或多样性。例如,对于旨在在室外环境中使用计算机视觉的机器人,建模现实世界中的复杂对象(例如树木,道路,湖泊,电线杆和房屋)以及包括更精细的细节(例如柔和阴影,镜面反射,漫反射等)的渲染可能很重要。同样,开发更准确的系统动态模型也很重要,这样仿真行为才能紧密模拟现实世界。
AirSim是一个开放源代码平台[21],旨在缩小仿真与现实之间的差距,以帮助开发自动驾驶汽车。该平台旨在积极影响数据驱动的机器智能技术(例如RL和深度学习)的开发和测试。它的灵感来自先前的几个仿真器(请参阅相关工作),我们的主要目标之一是建立一个社区,以将最先进的技术推向这一目标。
2 Related Work
尽管对当前使用的仿真器进行详尽的调研超出了本文的范围,但我们提到了一些与我们的研究背景最接近并且对这项工作产生了深远影响的近期著作。
Gazebo [13]一直是研究工作中最受欢迎的仿真平台之一。它具有模块化设计,允许使用不同的物理引擎,传感器模型并创建3D世界。Gazebo超越了整体式刚体车辆的限制,可用于仿真具有链接和关节架构的更通用的机器人,例如复杂的机械手或两足机器人。虽然Gazebo具有相当丰富的功能,但很难创建更接近真实世界的大规模,复杂且视觉丰富的环境,并且它落后于由虚拟引擎或Unity等平台进行的渲染技术的各种进步。
其他值得注意的工作包括Hector [17],其主要致力于与流行的中间件ROS和Gazebo的紧密集成。它提供风洞调整的飞行动态,传感器模型包括使用高斯马尔可夫过程的偏差漂移和使用Orocos工具链的在环软件。但是,Hector缺乏对流行的硬件平台(如Pixhawk)和协议(如MavLink)的支持。由于它对ROS和Gazebo的高度依赖,因此受到如前所述的丰富模拟环境的限制。
类似地,RotorS [7]提供了一个模块化框架来设计微型飞行器,并构建可在模拟器中测试的用于控制和状态估计的算法。可以使用Pixhawk为HITL设置RotorS。RotorS还使用Gazebo作为其平台,因此限制了其与感知相关的功能。
最后,jMavSim [1]是易于使用的模拟器,旨在测试PX4固件和设备。因此,它与PX4仿真API紧密结合,使用更简单的传感器模型,并且使用简单的渲染引擎,而环境中没有任何对象。
除此之外,还有许多游戏,例如仿真器和训练应用程序,但是,这些游戏大多是商业性的开源软件,很少或没有关于模型,仿真准确性或用于自主应用程序的开发API的公共信息。
3 Architecture
我们的模拟器遵循模块化设计,着重于可扩展性。 核心组件包括环境模型,车辆模型,物理引擎,传感器模型,渲染接口,公共API层以及用于车辆固件的接口层,如图2所示。
自主飞行器的典型设置包括飞行控制器固件,例如PX4 [16],ROSFlight [10],Hackflight [15]等。飞行控制器将所需状态和传感器数据作为输入,计算当前状态的估计值 并输出执行器控制信号以达到所需状态。 例如,在四旋翼飞机的情况下,用户可以将所需的俯仰角,侧倾角和偏航角指定为所需状态,并且飞行控制器可以使用来自加速度计和陀螺仪的传感器数据来估算当前角度,并最终计算出电动机信号以达到所需角度。
在模拟过程中,模拟器会将来自模拟世界的传感器数据提供给飞行控制器。 飞行控制器输出致动器信号,该致动器信号被模拟器的车辆模型组件作为输入。 车辆模型的目标是计算由模拟执行器产生的力和扭矩。 例如,对于四旋翼飞机,在给定电机电压的情况下,我们计算螺旋桨产生的推力和扭矩。 另外,可能会由于阻力,摩擦和重力而产生力。 然后,这些力和扭矩由物理引擎作为输入,以计算模拟世界中下一个运动体的运动状态。 身体的运动状态以及重力,空气密度,气压,磁场和地理位置(GPS坐标)的环境模型为模拟传感器模型提供了地面真实性。
输入到飞行控制器的期望状态可以由人类操作员使用远程控制来设置,或者可以由伴随计算机以自主设置来设置。 伴侣计算机可能执行昂贵的高级计算,例如确定下一个所需的航路点,执行同时定位和地图绘制(SLAM),计算所需轨迹等。伴侣计算机可能必须处理由传感器(例如,视觉摄像机和 激光雷达反过来要求模拟环境要有合理的细节。这是我们利用虚幻引擎[11]等平台实现的渲染技术的最新进展所面临的挑战之一。 此外,我们还利用虚幻引擎中的基础管道来检测冲突。伴随计算机通过一组API与模拟器进行交互,该API使其可以观察传感器流,车辆状态并发送命令。 这些API的设计使其可以屏蔽伴侣计算机,使其免受在仿真环境或真实环境下运行的困扰。 这一点特别重要,因此无需更改即可在模拟器中开发和测试算法并将其部署到实际车辆中。
AirSim代码库是作为Unreal引擎的插件实现的,可以插入任何Unreal项目中。 虚幻引擎平台提供了一个精心制作的市场,其中包含数百个预制的详细环境,其中许多环境是使用摄影测量技术[18]创建的,以生成真实可信的真实场景重建。
接下来,我们提供有关模拟器各个组件的更多详细信息。
3.1 Vehicle Model
3.2 Environment
3.2.1 Gravity
3.2.2 Magnetic Field
3.2.3 Air Pressure and Density
3.3 Physics Engine
3.3.1 Linear and Angular drag
3.3.2 Accelerations
3.3.3 Integration
3.3.4 Collisions
3.4 Sensors
3.4.1 Barometer
3.4.2 Gyroscope and Accelerometer
3.4.3 Magnetometer
3.4.4 Global Positioning System (GPS)
3.5 Visual Rendering
4 Experiments
5 Conclusion and Future Work