【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记

2.6 这次主要会先讲一个切向速度+曲率的运动模型(CTRV),然后会讲UKF(Unscented Kalman Filter)。UKF应该是和EKF不一样的一种近似非线性函数的方式。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第1张图片
胖得认不出来的DavidSilver

我突然意识到这个左边的哥们就是David Silver,已经胖得认不出来了。然后这次课是右边的矮帅小哥讲的。介绍视频的时候羞涩小哥镜头感不足看着他然后在抠手。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第2张图片

首先是CTRV模型,这个模型是为了解决我们之前那个线性匀速模型对于曲线运动fitting不足的问题而提出的。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第3张图片
CTRV的参数表达

思路很简单,就是把速度表达为切向速度和角度,另外再引入角度变化率。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第4张图片
运动过程


这样运动模型就会变成一个相对比较复杂的东西。第二项比较简单直接可以从图上得到。关键是误差项在这张图的第三项。如果按照之前的框架,我们需要计算第三项的均值和协方差。在这个session,课程考虑使用UKF模型



【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第5张图片
UKF的动机


考虑运动模型是一个非线性的映射。(上个session匀速运动模型是线性的)有可能会把高斯分布的状态随机变量,映射成任意分布。这个时候我们希望仍然找到映射后的均值和方差。如果按照之前的EKF框架,直接对映射函数求导数作线性化。不过UKF的提出就是因为这种线性化并不是很准确。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第6张图片
引入采样点来计算均值方差

UKF希望引入采样点(sigma point)的方式。来重新计算映射后的均值和方差。这里需要发生三个步骤选取sigma point, 计算映射,重新计算均值。后面两部是纯天然的,第一步比较难。课程进行了着重讲解


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第7张图片

如果状态变量有n_x维,那么需要选取2 n_x +1 个sigma point。(原因没说,怕是经验公式吧)



【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第8张图片

然后建议选取的点的公式在这张图的第一行。Sqrt(P_{k|k})意味着对当前状态的协方差矩阵做Cholesky分解。课程没有讲解这个公式选取的原因,然后lambda又是一个神奇的经验参数。从公式来看这样选取的点能够差不多分布在同一个置信椭球上。并且各个轴张开能够‘撑起’这个置信椭球。

【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第9张图片

如果考虑随机变量的自由度,sigma point要额外再选取2*随机变量自由度个。再这个case里面有线加速度和角加速度作为噪音。所以要对他们进行sample。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第10张图片

然后就可以加权得到一个运动过程之后的均值和方差。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第11张图片
除了中心点之外的sigma点在统一个椭球上





【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第12张图片

对于观测模型也是一样的,因为我们有观测函数h和观测随机变量w,所以可以得到观测结果空间的期望均值和协方差矩阵。需要注意这个时候这个协方差矩阵是基于信念的。还没有真正进行观测。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第13张图片

当真正的观测值z_{k+1}得到之后,我们就可以重新估计每个simga点的后验概率,计算后验的均值和方差了。可以发现UKF的过程不需要计算观测模型和运动模型的协方差。甚者那两个函数是有地方不连续的,应该还勉强可以继续使用。



【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第14张图片
假设这个车的最大加速度绝对值


这个session有一个干货内容是讲了不确定度怎么选取。比如你认为线加速度最大是某个值的话,那么sigma经验上取一半就可以。当然这和你想要一个光滑的结果还是一个追得更紧的结果有关系。



【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第15张图片
sigma过小的情况

另外教了怎么观察sigma的选取是过大还是过小。如果观测值总是在置信椭球的外面,那么就可以说明观测的误差被低估了。反之是高估。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第16张图片
NIS变量

所以引入了一个非常重要的度量叫做NIS。这个变量服从卡方分布。可以用来监测协方差的参数设定是否合适。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第17张图片
一个真实的自行车例子

这是他们无人车的一个真实数据,利用激光和雷达来追踪一个骑自行车的哥们。可以看到真实数据的噪音是非常巨大的。通过UKF加上CTRV模型,追踪的结果还是比较喜人的。(我不太清楚的是Ground Truth咋拿到)


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第18张图片
如果所有数据点低于这个线说明sigma被高估了

这个时候看每个时候的NIS值。蓝线是一个95%置信区间的判定阈值,可以看到大多数时候NIS值都要小于这个判定阈值。所以说参数的设计非常合理。另外每个传感器的NIS值是独立可以看的。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第19张图片

小哥还分析了各个变量追踪的紧凑程度。说引入雷达传感器之后,对于角度变换非常敏感。对于无人车这是非常重要的。


UKF的好处一共有三点。一是可以考虑噪音的输入,滤波后得到光滑的输出。有较少的延迟。二是可以解决非常复杂的观测函数和运动函数,甚至再这两者不能求导的时候也能得到结果。第三点就是可以得到观测的协方差矩阵(而不是用解析的形式)。这个在无人车的应用里面也是很重要的。


【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记_第20张图片
出来一个自我介绍时候都不敢看镜头的羞涩大哥

课程后面还加了个八卦说为什么UKF叫UKF,反正一开始搞工程的人琢磨出了UKF,然后EKF人觉得没必要,两派就开始吵起来了。。

话说UKF看概率机器人的时候我没有认真看,所以通过这个视频看一下还是很不错的。做RoboCup的时候最终选取了粒子滤波因为容易实现。但是如果要估计非常多物体的状态,UKF在效率上可以达到粒子滤波和EKF的平衡。这章还是算挺多干货的。

你可能感兴趣的:(【无人驾驶笔记2.6】UKF Unscented Kalman Filter Udacity无人驾驶 无人车笔记)