无人驾驶汽车的研发已经成为衡量一个国家科研实力和工业水平的一个重要标志,各国政府和一些商业组织纷纷加入到无人驾驶汽车的研发和推广中,加大资金和技术投入以及引入风投等,加快了无人驾驶汽车大众化的速度。在众多的无人驾驶汽车中,我国的红旗HQ3、谷歌无人驾驶汽车、英国的Lutz Pathfinder、德国的Lux、法国的Cycab等都是近年来无人驾驶汽车的代表。无人驾驶汽车可以缓解交通压力,减轻环境污染使得人们的出行更加安全方便[3]。
无人驾驶汽车稳定性高,但在高速行驶时稳定性会下降,感知、定位和控制是无人驾驶汽车技术的三个重要问题。本文主要就定位和环境感知方面提出一个基于Android平台的定位和位姿感知信息获取实现方法,并与视觉定位信息和车辆自身定位信息融合以提高定位精度。
无人驾驶汽车主要工作在室外,对环境感知实时性要求很高,而室外环境复杂多变,使得无人驾驶汽车的环境感知变得更加困难。无人驾驶汽车通过各种各样的传感器获取外界信息,由于基于单一传感器的环境感知方法都有其难以克服的弱点[4]。因此,本文将借助Android设备的多种传感器获取智能车辆位置和方向信息。并将这些信息与智能车辆自身的传感器信息融合,以获取更高精度的智能车辆定位信息。
使用多种传感器构成环境感知系统,在克服了单一传感器带来的缺点的同时也带来了多源信息的同步、匹配和通信等问题,论文后面章节将对多传感器信息进行融合。虽然不是所使用的传感器及种类越多越好。但是由于智能车辆工作环境的复杂性和Android设备越来越强大的传感器系统,论文提出的这种方法会有广阔的应用前景。
1.2 定位方法研究现状
1.3 常用的定位传感器
1.3.1 Android平台的传感器
从Android 1.5开始Android提供了一套标准传感器以及与其相关的API。在Android2.3中,开发人员工具箱中又增加了新的传感器和工具,增加的工具包括获取旋转矩阵的方法、四元数、以及合成传感器,这些工具给开发人员提供了丰富的选择,也为智能车辆的物理导航提供了更多的硬件和软件方面的支持。Android标准传感器包括陀螺仪、加速度计、强磁计(指南针)、光线感应器、距离感应器、相对湿度传感器、压力传感器。
Android传感器大致分为两种类型,一种是原始传感器,这类传感器每个都对应着一个Android设备中实际存在的物理组件,提供的是从传感器获得的原始数据;另一类是虚拟传感器,也叫合成传感器,合成传感器通过结合多个原始传感器的原始数据,或者修改原始传感器的数据,在应用代码和底层设备组件之间提供一个抽象层。不过开发者不必严格区分传感器的类型,只需要通过使用传感器API就可以以相同的方式使用所有的传感器。Android传感器API中包含了请求和处理来自设备硬件信息的类,具体使用这些类来获取我们需要的环境与位姿信息的方法会在后面的章节介绍。
Android不仅有其与生俱来了多种传感器支持,Google还在2011年5月的Google I/O开发人员大会上发布了Android开放外设协议,也就是AOA协议[17-18],它允许Android设备与外部传感器以及执行器通过USB进行交互。在AOA API加入Android SDK的同时,Google还推出了基于流行的Arduino硬件平台的Android开发包微控制器,使得Android传感器更加强大。
1.3.2 视觉传感器
视觉传感器也就是图像传感器,主要有CMOS和CCD两种,它们都是通过感光二极管进行光电转换,将光信号转换为数字信号,其主要的差别在于数字信号的传送方式不同,在CCD传感器中,每一行中每一个像素的电荷数据都会依次传送到下一个像素中,由最底端部分输出,再经由传感器边缘的放大器进行放大传输;而在CMOS传感器中,每个像素都邻接一个放大器及A/D转换电路,用类似内存电路的方式将数据输出。产生这种差异的主要原因在于:CCD的特殊工艺可保证数据在传输时不会失真,因而各像素的数据可以汇聚到边缘再进行放大处理;而CMOS工艺的数据在传输距离较长的时候会产生噪声,因此必须先放大信号再整合各像素数据[19,20]。 基于Android平台的环境与位姿感知(2):http://www.751com.cn/jisuanji/lunwen_29842.html