【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记

2.3的内容完全是卡尔曼滤波。涉及很多公式和练习其实阅读起来并没有那么友好。所以卡尔曼滤波的部分会简略来说,只讲overview的概念不谈细节的公式等我有空的时候再补全这个坑。


【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第1张图片
这哥们似乎叫Junior?

这一个session比较神奇讲的人是stanford的darpa团队的。我有点开始搞不清楚这个课的上课阵容了。。不过总之就是比较强大。

谷歌的第一版无人车实际上给城市做了高精度地图。这样把原来的很复杂的SLAM问题降解为了稍微简单一点的localization的问题。不过在这个系统里面仍然要考虑追踪其他车的位置和速度。这个时候就要利用卡尔曼滤波。

【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第2张图片

Kalman滤波是非常经典的Bayes滤波器。(当时大三读概率机器人的时候整个花了我好几周的时间。其实我觉得实现上面粒子滤波要容易写一些因为不容易写错。卡尔曼滤波涉及很多公式。如果写错一点其实是很难看出来甚至不影响系统运行的。。不过在追踪多个车辆的时候卡尔曼滤波在效率上有优势)

【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第3张图片

实际上无论什么Bayes滤波器都可以包括两个过程,一个是运动一个是观测。每个时刻状态都用一个概率分布来表示(先验概率)。经过一定的时间,比如机器人或者无人车运动,甚至不观测这个物体,这个概率就会发生演化,确定性一般来说会降低。这个课程把这个过程的运算说成是卷积运算其实是没毛病的。观测的时候,先验概率概率会乘上条件概率成为后验概率。然后反复运动过程和观测过程的循环。

【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第4张图片

对于卡尔曼滤波来说,状态的估计使用了高斯族。这就使得状态的更新变得异常简单。只要更新均值向量和协方差矩阵就可以了(一般更新协方差矩阵的逆)。一维的情况课程花了一段时间讲解,假设某时刻均值mu 方差sigma^2,然后做了观测,观测的条件概率是 niu , 方差r^2,那么更新后的均值和方差就如下面显示。更新后的方差会比r^2 和sigma^2都小(调和平均数的一半)。

【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第5张图片


【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第6张图片

有点反直觉的是如果mu和nu比较远,得到的后验概率仍然会有一个很小的方差,课程说这点比较反直觉。(其实这个如果加一个很小的拉普拉斯光滑就可以拉回来,不过课程没提)


【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第7张图片

一维情况的动力学过程异常简单。和玻尔兹曼游走是一样的模型,方差增加,均值也增加就行。

可以看一下老师上课写的代码。在比较简单的坐标系里面,观测和运动的sigma是常数。这个例子可以帮助大家理解Bayes Filter里面最重要的运动学和观测过程。(另外一维情况有两个问题其实被忽视了,一是高维下面线性的更新会变成X’ = AX + b ,所以A和b最后也会进入到模型中间。另外高维下面的观测会变成Y = O X , 观测矩阵也要纳入模型考虑。另外在比较复杂的坐标系下面,A, b, O其实和X是相关的,并不是固定的。)

所以高维的Kalman滤波的更新过程会稍微复杂一点,差不多是这张图的样子

【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第8张图片


【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记_第9张图片

这哥们儿说下节课教粒子滤波,不过在udacity上的课程安排下节课回复到奔驰团队教你如何用kalman滤波来融合雷达和Lidar传感器的信息。粒子滤波要到2.11才会出现。

你可能感兴趣的:(【无人驾驶笔记2.3】Session 2.3 卡尔曼滤波基础 Udacity无人驾驶 无人车笔记)