Airsim是一款基于Unreal Engine构建的无人机、汽车等模拟器的开源平台,并且可以跨平台的通过PX4飞行控制器进行仿真控制,在物理和视觉上逼真的模拟环境使得它成为一款很好的平台。不仅模拟了汽车无人机等动力学模型,甚至对天气效果灯光控制也做出了非常好的模拟。并且Microsoft官方发布了很多测试环境,诸如森林、平原、乡村、山脉景观等。Airsim公开了API,可以通过Python等语言与仿真程序中的车辆或者无人机进行交互,可以使用这些API进行图像检索,获取状态,控制车辆等。相较于现实中的自动驾驶等实际应用,Airsim更好得实现了对于数据集的收集,相较于一些汽车公司动辄几百PB的数据资源,通过模拟器显然可以更好的构建网络学习而不用受制于数据收集的问题。而端到端的深度学习的提出是一种建模策咯,是对深度神经网络的成功响应。随着近些年硬件的升级进步(如GPU、FPGA等),使我们批量处理大量数据成为可能,相较于传统的ML,端到端深入学习更接近人类的学习方式,因为它允许神经网络将原始的数据直接映射到输出。本文的目的是将Airsim作为AI研究平台,收集数据进行深度学习,运用较少的数据集完成模型的建立,进而可以在Airsim平台上模拟运行自动驾驶汽车。

  1. 在VisualStudio2017上搭建Airsim

VisualStudio为Airsim提供了一个良好的编译环境,在这里,你可以访问并修改环境场景中的各种变量,包括设置遥控器或者方向盘这类与人有着更好交互体验的API。我们搭建好平台之后,就可以为我们数据收集提供一个方便的数据接口,具体结构和数据流在接下来进行介绍。

在VisualStudio2017中搭建Airsim
2. Airsim仿真软件结构
Airsim结构图
上图说明了虚幻游戏引擎如何加载和调用Airsim。

Airisim中的API接口都保存在AirLib文件下,由以下几部分组成:

f

  • 物理引擎:这是仅有导引头的物理引擎,它的设计是快速和可扩展的。旨在快速、可扩展地实现不同车辆;
  • 传感器模型:气压计,IMU,GPS和磁力计等;
  • 车辆模型:用于车辆配置的模型,目前,我们已经实现了一个多转子模型和配置的PX4四旋翼在X型布局下的配置;
  • 控件库:提供抽象的API接口,还具有RPC客户端和服务器的类;

根据功能划分,Airsim仿真程序场景显示软件由四部分组成:

  • 三维模型的建立,如无人机(Drone),汽车(Car)等应用实体以及树木、房屋、山脉、草地等仿真环境的建模以及大地形建模;
  • 模型渲染和显示,如天气场景,光照场景,风速场景等,以及对无人机或者车辆模型运动过程中的姿态和运动学表达;
  • 仿真系统中碰撞信息检测的实现,如汽车前行过程中碰到障碍物,仿真软件会把撞击信息包括但不限于碰撞时间碰撞速度位置信息转角信息等记录下来;
  • 生成具有交互性的编程应用程序,如可以通过对Python脚本链接到仿真场景进行模型驱动和交互显示。
  1. 软件接口图

数据接口软件主要包括外部数据接口、数据记录/读取、数据处理和内部数据接口等四部分。

  • 外部数据接口:外部数据接口在仿真过程中以一秒10帧的周期读取图像信息和仿真数据,由Airsim中内置的时间API提供仿真时钟进行;
  • 数据记录/读取:在仿真软件REC运行时从外部数据接口获取原始仿真数据记录到文本文件和图像文件中;
  • 数据处理:将原始文件中与实验无关的一些信息剔除,主要是节省内存和方便数据处理,同时将车辆的姿态和位置信息处理成统一坐标系下的信息;
  • 内部数据接口:将处理后的数据写入内存文件中,供以后使用。

Airsim软件提供了大量API接口,可以用于我们收集数据和进行控制仿真,下图介绍了Airism中一些软件接口图的关系,图片中只列举了与我们本文自动驾驶有关的接口项目。通过访问外部API接口,Airsim可以很好的将数据存入内部储存空间,并预先进行一些必要的处理,如文件命名和标签设定,为我们后续的工作提供了方便。

数据接口软件结构图

  1. 软件开发流程

可见,Airsim提供了不同形式不同接口的传感器,本文将运用汽车前方的单目摄像头对前方图像进行采样训练,以得到一个简单的自动驾驶模型,设计方案如下:

流程图

我们通过三部分进行实验:

1、第一部分是在人为操作下,控制车辆随机在地图内行走,通过摄像头和传感器记录图像和汽车动力学模型,并保存为/images和airsim_rec.txt文件;

2、第二部分是进行模型训练,将得到的图片和动力学模型数据分为两个子集——训练集和验证集。利用深度学习网络在训练集上训练出合适的模型,并把训练好的模型放在验证集进行测试,如果准确率高于一定阈值,则模型拟合程度较好,可以用作在测试集上继续表现,如果准确率较低,则重复一二部分;

3、第三部分是将训练好的模型连接到Airsim软件,编写Python程序,通过训练好的模型进行测试和验证,控制车辆前进速度和转弯角度,检测和分析仿真结果。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐