航位推算(DR)的三种计算方式及优劣势对比
1. 简介
DR的全称为dead reckoning航位推算,航位推算算法是开环定位算法,主要是通过车轮脉冲、方向盘角度,结合车辆角速度、车速,推演出车辆在每个时刻的位置和姿态;是路径规划和路径跟踪环节的依赖项。
附赠自动驾驶最全的学习资料和量产经验:链接
2. 实现方式
实际工程中有三种实现方式:
(1)根据方向盘转角计算车辆半径和theta值
(2)根据双轮速差计算车辆每个瞬态走过的theta值
(3)根据YawRate积分或Yaw得到theta值
下面详细描述其原理,并结合工程中的使用心得列举其优缺点。
3. 详细描述
3.1 根据方向盘转角计算车辆半径和theta值
3.1.1 原理
根据阿克曼几何关系,
可以得到车辆前轮。
根据方向盘转角计算车辆半径和theta值
3.1.2 优势
不依赖IMU传感器(比如角速度的获取)
3.1.3 劣势
因为是 依赖实车标定的,所以存在一定的标定工作量,并且对车辆一致性要求较高;
由于转向系统间隙,轮胎侧偏特性的影响,方向盘为0时的半径不为无穷大,工程中会有向左偏或者向右偏的情况,角度在0附近时,容易引入较大的误差。
3.2 根据双轮速差计算车辆每个瞬态走过的theta值
3.2.1 原理
根据双轮速差计算车辆每个瞬态走过的theta值
3.2.2 优势
不依赖IMU传感器(比如角速度的获取)、方向盘角度不参与计算,所以不受转向系统间隙的影响。
3.2.3 劣势
算法默认两个轮子走过的距离是相同的,且为定值,所以胎压不均/不足/过足的时候,对于theta的推算有影响。
3.3 根据YawRate积分(或Yaw值)得到theta值
3.3.1 原理
3.3.2 优势
不受方向盘间隙和胎压的影响。
3.3.3 劣势
依赖IMU传感器(比如角速度的获取),需要车辆实装IMU传感器,而且IMU有温漂和零漂,检测精度(前进/后退),所以单独使用 积分的方式需要对温漂和精度进行修正和验证。
4 必要的验证场景
按照单一变量原则,可以在这些场景下进行比较(根据实际的DR应用场景删减):减速带、上下坡、直线、大转角、不同车速、刹车、起步。
只有这些场景验证后,才能给出一个相对公平公正的结论。
5 实车的一些坑
5.1 对于方法1根据方向盘转角计算车辆半径和theta值
阿克曼角的存在一方面是保证在转弯时左右车轮同心,二方面使得前后车轮的转弯中心在后轴的延长线上,所以理论上阿克曼角的存在不会有轴向的阿克曼偏移量;
但在工程实际中,由于转向系统间隙,轮胎侧偏特性以及一些外界干扰因素的存在,使得阿克曼角成了产生阿克曼偏移量的一个起始因素,所以在处理这个问题时,由于影响因素较多,因此阿克曼偏移量一般是工程标定出来的。但是不同车辆之间的差异较大,而且标定工作较多,所以这个方法渐渐被弃用。
5.2 对于方法2根据双轮速差计算车辆每个瞬态走过的theta值
因为其是使用轮脉冲来计算theta的,所以有几个弊端:体现在过减速带、上下坡、包括如果传感器精度不够(比如有的车只有48齿),都会影响DR精度。
实车还有一个往往会被忽略的坑,就是在车辆即将刹停和即将起步的时候,此时车辆轮胎畸变明显,所以轮脉冲包括其方向,都会有失真的可能性。此时,可以过滤或者直接赋0处理掉。
5.3 根据YawRate积分(或Yaw值)得到theta值
实车中,用RTK与其积分值对比过,受温度、零漂、安装角度影响,其精度随着时间的累积而降低。这里最难的就是进行零漂和温漂的矫正,否则无法使用,矫正之后,效果是比1和2要好的,但是矫正过程中,要花些心力。
6 总结
在嵌入式资源不多的情况下,建议直接用2,加一些滤波可以满足使用需求;
如果嵌入式资源较多,可以用KF,因为三种方式的误差是独立的,KF后,可以得到比单个方式更优的解。两个相互独立的高斯分布相加,结果仍是一个高斯分布。