image.png
自动驾驶系统先通过起点终点规划出全局路径(routing);然后在行驶过程中感知(perception)当前环境(识别车辆行人路况标志等),并预测下一步发展;然后把已知信息都传入规划模块(planning),规划出之后的轨道;控制模块(control)将轨道数据转换成对车辆的控制信号,通过汽车交互模块(canbus)控制汽车.
image.png
Apollo是基于高精地图的解决方案,所以重定位,定位也分很多种,该模块主要是提供定位服务,默认下的情况一般有两种方法,
其输入主要有: 输入:
或者:
image.png
激光雷达可以结合高精地图实现特征匹配定位,摄像机可以结合高精地图进行特征匹配从而实现定位,通过GPS实现定位,通过IMU实现定位,GPS+IMU实现定位,GPS+IMU+Lidar+Radar也可以实现定位。
Apollo平台是IMU+RTK GPS为主,其他定位方法为辅的定位模式。
除了这些交叉定位以外,还有一种定位方式是利用街景给车辆定位[。
image.png
Waymo利用谷歌强大的街景数据线下定义出路牌号码,商店标志,红绿灯等等静态数据来确定自身车辆所在的位置。
大体的思路就是,只要车辆本身知道摄像机识别到的商店牌匾,红绿灯和其他特征的全球坐标系的话,通过透视原理或者相对距离就可以知道自身车辆的全球坐标。
这种方法简单又直接,但是涉及到的问题是巨大的数据量和人工标注。这种方法的优点是如果地图都标记好了,那么车辆本身有个摄像机就可以实现精准的定位和导航。
Waymo的这种方式或许可以提供一种新的思路,但暂时无人车定位还是要依赖RTK GPS的帮助来完成精准定位。
image.png
激光雷达可以精确的获取车辆和周边环境的相对距离信息。同时激光雷达还可以辅助相关的算法可提供基于点运数据的物体识别。现在学术界普遍利用摄像机,激光雷达,IMU等传感器进行融合。
Apollo的激光雷达定位方案通过事先采集的定位地图,反射值地图和高度值地图,最大限度的搜集物理世界的特征。
然后通过车辆上的传感器实时匹配自身获取的数据和来自云端的数据。
在匹配过程中,所有数据都是数值,所以也可以看做是optimization问题。只要定义好cost function,那么让cost function最小的点就是车辆最可能在的位置。
image.png
image.png
RTK GPS可以为无人车提供相当高的定位精度。
普通的GPS是通过计算和卫星的三角距离来确定自己的位置的。这里最重要的就是波的传播速度。只要波的传播速度是理想状态,那么用最基本的GPS也是没什么问题的。
问题就在于波从人造卫星发出,会受到大气层、卫星轨道、卫星钟差和多路径等影响。所以单纯的GPS不能提供准确的位置信息。
而RTK则是通过建立基站的方式先找出载波的偏差,然后GPS的处理器再通过这个偏差来修正接收的数据。
但是目前为止,这个方案的问题是需要建立大量的基站,才能覆盖无人车的移动范围。不仅如此,基站建立的设备,人力昂贵也是一大问题。
不过,暂时这个方案的鲁棒性和准确性很好,所以广泛应用在无人车的定位算法上。
抛开价格和部署密度,还需要考虑的是RTK GPS的定位更新频率和定位精度。
如果说,RTK GPS可以以(假设)100hz的频率更新,那么无人车则不需要额外的设备。
但是实际上无人车的GPS只能以(假设)10hz的频率更新。但是0.1s对于车辆来说太长了。
采样时间里0.1s内,无人车能知道的只有t-1时间的位置数据。对于无人车来说,他的定位是要每个时间点都要更新才能保证车辆安全。所以还需要IMU(惯性测量单元)。
image.png
IMU是利用陀螺仪和加速度计来测量车辆的姿态数据的。为
什么需要姿态数据?
因为我们可以通过卡尔曼滤波和粒子滤波器等融合算法对姿态数据进行转换,最终可以以100hz的频率估计出车辆的位置信息。也就是说时间t到时间t+0.1的时间里,IMU会通过算法提供车辆的实时位置信息。
这种方式就叫做组合导航系统。