AirSim笔记2:初识AirSim与简单数据录制实例

Dec 1,2021   2330 words   9 min

Tags: Simulation

1.什么是AirSim

AirSim是一款由微软推出、基于Unreal Engine的无人车/无人机仿真环境,官方网站是这里。官网介绍如下。

2.什么是Unreal Engine

上面的介绍中我们提到了Unreal Engine,也就是大名鼎鼎的虚幻引擎。这是一个由Epic Games开发的开源、免费3D游戏引擎。号称是全球最开放、最先进的实时3D创作工具,官网是这里。一些知名的3A大作就是基于虚幻引擎开发的。

3.你要做什么

上一篇博客中,我们“无脑”的介绍了AirSim的使用。这里我们要多问几个问题。你的目的是什么?你要做什么?需要用AirSim进行仿真吗?

对于机器人或者SLAM领域,也有一些仿真平台,如Gazebo(通用机器人仿真平台)、ARGoS(适用于异构群机器人的并行多引擎模拟器)、Subt(DARPA挑战赛的仿真环境)等。如果你只是想简单的模拟一下无人机飞行、避障、编队等对视觉感知要求不高的场景,那么你并没有太大的必要使用AirSim。得益于Unreal Engine,相比于其它仿真环境,AirSim的最大卖点可以认为是逼真的场景还原和真实的物理引擎。另一方面,除了视觉影像,AirSim支持多种传感器,可以同时输出场景的深度图、语义分割图等。这些是上面提到的几个仿真环境做不到的。这些数据可以广泛地被用来做SLAM、深度学习等应用。因此,可以说,如果你对视觉的要求比较高,希望场景有较高的真实性,那么选择AirSim不会错。

4.你该怎么做

如果你明确了要使用AirSim,接下来的问题自然就是如何使用。你还需要回答几个问题。官方提供的预编译场景够不够你用?是否需要对场景做很多自定义修改?这些问题的答案决定了你之后使用AirSim的不同方式。如果说你不需要自己设计场景或者对场景进行较大幅度的修改,使用一些编译好的场景就可以,那么你就无需配置AirSim的开发环境。基本就是直接下载预编译环境,双击运行,录制数据即可。你更多需要关注的是录制数据的相关设置。而如果你需要自己设计场景进行一些更复杂的操作,那么你需要从源码编译AirSim。对应的,过程就会繁琐一些。

我的诉求是,把AirSim当做是数据采集工具,模拟各种真实世界中的不同或者少见的场景(如下雪、下雨、雾霾等),以测试SLAM算法在不同场景下的鲁棒性,同时又可以提供准确的真值,以便于精确的对比精度。相比于直接拿435i出去采数据,仿真最大的优势就在于一些少见场景和真值。

因此,对于我目前的诉求而言,我并不需要对场景进行大量的自定义,只是使用即可。所以我采用下载预编译环境的方式,平台选择Windows。这个方式也就是之前在这篇博客中介绍的。采用此种方法主要包含三个步骤:下载预编译环境、配置环境参数文件(可选)、操作无人车进行录制。下面会分别进行介绍。而关于编译AirSim,和我们的目标不太相关,所以这里不多做介绍,感兴趣可以参考官方教程

5.数据采集具体步骤与实例

5.1 下载预编译环境

首先,在AirSim Github官网中下载想要的预编译环境,下载好以后解压,双击即可运行。 这里我们还是以汽车在AirSimNH这个场景为例。

5.2 配置环境参数文件

对于Windows平台,在第一次启动环境的时候,AirSim会在C:\Users\admin\Documents\AirSim路径下创建一个配置文件settings.json,如下。 默认情况下相关属性为空,如果有需要可以参考这个网页进行相关属性设置。这里我们就使用所有的默认参数。在之后的笔记中,也会更详细介绍一下相关属性。

5.3 操作无人车进行录制

在设置好相关属性以后,再次启动AirSim,就会装载修改后的参数,如下所示。 然后按照之前介绍的,通过方向键就可以控制小车的移动,按R键即可开始录制,如下所示。 录制后,数据会存放到默认C:\Users\admin\Documents\AirSim路径中,如下图所示。 我们可以打开该文件夹,可以看到主要包含images文件夹和airsim_rec.txt文件。其中images文件夹用于存放录制的图片,如下所示。 文件名对应采集时刻的时间戳。而airsim_rec.txt文件中则记录了运动的真值信息,如下所示。 可以看到,真值主要包含小车名称、时间戳、位置X、位置Y、位置Z、四元素Q、四元素X、四元素Y、四元素Z,这些是基本的内容。还有针对小车特有的观测,比如风门(Throttle)、汽车转向(Steering)、刹车(Brake)、传动(Gear)、手刹(Handbrake)、转速(每分钟多少转,RPM Speed)。以及最后对应的观测的图片文件名。

至此就是一个完整的利用AirSim采集数据的流程了,一些更为复杂的操作也是在这个基础上进行扩展的。

6.潜在问题

如果你查看录制的影像,你会发现影像都是256×144分辨率的,如下所示。 这样的分辨率给SLAM用显然是有些不合适了。这并不是你的问题,而是AirSim默认录制的影像分辨率就是这么大。如果想录制指定大小的分辨率影像,就需要修改环境配置文件中的一些属性。这在下一篇笔记中再进行介绍。

7.参考资料

  • [1] https://microsoft.github.io/AirSim
  • [2] https://www.unrealengine.com/zh-CN
  • [3] https://microsoft.github.io/AirSim/settings

本文作者原创,未经许可不得转载,谢谢配合

返回顶部