Airsim是一款基于Unreal Engine构建的无人机、汽车等模拟器的开源平台,并且可以跨平台的通过PX4飞行控制器进行仿真控制,在物理和视觉上逼真的模拟环境使得它成为一款很好的平台。不仅模拟了汽车无人机等动力学模型,甚至对天气效果灯光控制也做出了非常好的模拟。并且Microsoft官方发布了很多测试环境,诸如森林、平原、乡村、山脉景观等。Airsim公开了API,可以通过Python等语言与仿真程序中的车辆或者无人机进行交互,可以使用这些API进行图像检索,获取状态,控制车辆等。相较于现实中的自动驾驶等实际应用,Airsim更好得实现了对于数据集的收集,相较于一些汽车公司动辄几百PB的数据资源,通过模拟器显然可以更好的构建网络学习而不用受制于数据收集的问题。而端到端的深度学习的提出是一种建模策咯,是对深度神经网络的成功响应。随着近些年硬件的升级进步(如GPU、FPGA等),使我们批量处理大量数据成为可能,相较于传统的ML,端到端深入学习更接近人类的学习方式,因为它允许神经网络将原始的数据直接映射到输出。本文的目的是将Airsim作为AI研究平台,收集数据进行深度学习,运用较少的数据集完成模型的建立,进而可以在Airsim平台上模拟运行自动驾驶汽车。
- 在VisualStudio2017上搭建Airsim
文章图片
2. Airsim仿真软件结构
文章图片
上图说明了虚幻游戏引擎如何加载和调用Airsim。
Airisim中的API接口都保存在AirLib文件下,由以下几部分组成:
f
- 物理引擎:这是仅有导引头的物理引擎,它的设计是快速和可扩展的。旨在快速、可扩展地实现不同车辆;
- 传感器模型:气压计,IMU,GPS和磁力计等;
- 车辆模型:用于车辆配置的模型,目前,我们已经实现了一个多转子模型和配置的PX4四旋翼在X型布局下的配置;
- 控件库:提供抽象的API接口,还具有RPC客户端和服务器的类;
- 三维模型的建立,如无人机(Drone),汽车(Car)等应用实体以及树木、房屋、山脉、草地等仿真环境的建模以及大地形建模;
- 模型渲染和显示,如天气场景,光照场景,风速场景等,以及对无人机或者车辆模型运动过程中的姿态和运动学表达;
- 仿真系统中碰撞信息检测的实现,如汽车前行过程中碰到障碍物,仿真软件会把撞击信息包括但不限于碰撞时间碰撞速度位置信息转角信息等记录下来;
- 生成具有交互性的编程应用程序,如可以通过对Python脚本链接到仿真场景进行模型驱动和交互显示。
- 软件接口图
- 外部数据接口:外部数据接口在仿真过程中以一秒10帧的周期读取图像信息和仿真数据,由Airsim中内置的时间API提供仿真时钟进行;
- 数据记录/读取:在仿真软件REC运行时从外部数据接口获取原始仿真数据记录到文本文件和图像文件中;
- 数据处理:将原始文件中与实验无关的一些信息剔除,主要是节省内存和方便数据处理,同时将车辆的姿态和位置信息处理成统一坐标系下的信息;
- 内部数据接口:将处理后的数据写入内存文件中,供以后使用。
文章图片
- 软件开发流程
文章图片
我们通过三部分进行实验:
1、第一部分是在人为操作下,控制车辆随机在地图内行走,通过摄像头和传感器记录图像和汽车动力学模型,并保存为/images和airsim_rec.txt文件;
2、第二部分是进行模型训练,将得到的图片和动力学模型数据分为两个子集——训练集和验证集。利用深度学习网络在训练集上训练出合适的模型,并把训练好的模型放在验证集进行测试,如果准确率高于一定阈值,则模型拟合程度较好,可以用作在测试集上继续表现,如果准确率较低,则重复一二部分;
【Airsim仿真平台介绍】3、第三部分是将训练好的模型连接到Airsim软件,编写Python程序,通过训练好的模型进行测试和验证,控制车辆前进速度和转弯角度,检测和分析仿真结果。
推荐阅读
- AirSim|AirSim 自动驾驶仿真 (5) - 图片 APIs
- AirSim|AirSim 自动驾驶仿真 (4) - 核心 APIs - C++
- AirSim|AirSim 自动驾驶仿真 (7) - AirSim 多载具
- UE4|AirSim里的那些坑
- airsim-lidar使用
- airsim之settings解析
- 基于深度学习网络在Airsim中的自动驾驶
- Airsim|Airsim Python API文档整理(1.3.1版本)
- Airsim|Airsim(1.3.1版本)setting.json帮助文档解析