2.6 这次主要会先讲一个切向速度+曲率的运动模型(CTRV),然后会讲UKF(Unscented Kalman Filter)。UKF应该是和EKF不一样的一种近似非线性函数的方式。
胖得认不出来的DavidSilver我突然意识到这个左边的哥们就是David Silver,已经胖得认不出来了。然后这次课是右边的矮帅小哥讲的。介绍视频的时候羞涩小哥镜头感不足看着他然后在抠手。
首先是CTRV模型,这个模型是为了解决我们之前那个线性匀速模型对于曲线运动fitting不足的问题而提出的。
CTRV的参数表达思路很简单,就是把速度表达为切向速度和角度,另外再引入角度变化率。
运动过程这样运动模型就会变成一个相对比较复杂的东西。第二项比较简单直接可以从图上得到。关键是误差项在这张图的第三项。如果按照之前的框架,我们需要计算第三项的均值和协方差。在这个session,课程考虑使用UKF模型
UKF的动机考虑运动模型是一个非线性的映射。(上个session匀速运动模型是线性的)有可能会把高斯分布的状态随机变量,映射成任意分布。这个时候我们希望仍然找到映射后的均值和方差。如果按照之前的EKF框架,直接对映射函数求导数作线性化。不过UKF的提出就是因为这种线性化并不是很准确。
引入采样点来计算均值方差UKF希望引入采样点(sigma point)的方式。来重新计算映射后的均值和方差。这里需要发生三个步骤选取sigma point, 计算映射,重新计算均值。后面两部是纯天然的,第一步比较难。课程进行了着重讲解
如果状态变量有n_x维,那么需要选取2 n_x +1 个sigma point。(原因没说,怕是经验公式吧)
然后建议选取的点的公式在这张图的第一行。Sqrt(P_{k|k})意味着对当前状态的协方差矩阵做Cholesky分解。课程没有讲解这个公式选取的原因,然后lambda又是一个神奇的经验参数。从公式来看这样选取的点能够差不多分布在同一个置信椭球上。并且各个轴张开能够‘撑起’这个置信椭球。
如果考虑随机变量的自由度,sigma point要额外再选取2*随机变量自由度个。再这个case里面有线加速度和角加速度作为噪音。所以要对他们进行sample。
然后就可以加权得到一个运动过程之后的均值和方差。
除了中心点之外的sigma点在统一个椭球上对于观测模型也是一样的,因为我们有观测函数h和观测随机变量w,所以可以得到观测结果空间的期望均值和协方差矩阵。需要注意这个时候这个协方差矩阵是基于信念的。还没有真正进行观测。
当真正的观测值z_{k+1}得到之后,我们就可以重新估计每个simga点的后验概率,计算后验的均值和方差了。可以发现UKF的过程不需要计算观测模型和运动模型的协方差。甚者那两个函数是有地方不连续的,应该还勉强可以继续使用。
假设这个车的最大加速度绝对值这个session有一个干货内容是讲了不确定度怎么选取。比如你认为线加速度最大是某个值的话,那么sigma经验上取一半就可以。当然这和你想要一个光滑的结果还是一个追得更紧的结果有关系。
sigma过小的情况另外教了怎么观察sigma的选取是过大还是过小。如果观测值总是在置信椭球的外面,那么就可以说明观测的误差被低估了。反之是高估。
NIS变量所以引入了一个非常重要的度量叫做NIS。这个变量服从卡方分布。可以用来监测协方差的参数设定是否合适。
一个真实的自行车例子这是他们无人车的一个真实数据,利用激光和雷达来追踪一个骑自行车的哥们。可以看到真实数据的噪音是非常巨大的。通过UKF加上CTRV模型,追踪的结果还是比较喜人的。(我不太清楚的是Ground Truth咋拿到)
如果所有数据点低于这个线说明sigma被高估了这个时候看每个时候的NIS值。蓝线是一个95%置信区间的判定阈值,可以看到大多数时候NIS值都要小于这个判定阈值。所以说参数的设计非常合理。另外每个传感器的NIS值是独立可以看的。
小哥还分析了各个变量追踪的紧凑程度。说引入雷达传感器之后,对于角度变换非常敏感。对于无人车这是非常重要的。
UKF的好处一共有三点。一是可以考虑噪音的输入,滤波后得到光滑的输出。有较少的延迟。二是可以解决非常复杂的观测函数和运动函数,甚至再这两者不能求导的时候也能得到结果。第三点就是可以得到观测的协方差矩阵(而不是用解析的形式)。这个在无人车的应用里面也是很重要的。
出来一个自我介绍时候都不敢看镜头的羞涩大哥课程后面还加了个八卦说为什么UKF叫UKF,反正一开始搞工程的人琢磨出了UKF,然后EKF人觉得没必要,两派就开始吵起来了。。
话说UKF看概率机器人的时候我没有认真看,所以通过这个视频看一下还是很不错的。做RoboCup的时候最终选取了粒子滤波因为容易实现。但是如果要估计非常多物体的状态,UKF在效率上可以达到粒子滤波和EKF的平衡。这章还是算挺多干货的。
网友评论