The website uses cookies. By using this site, you agree to our use of cookies as described in the Privacy Policy.
I Agree

说说我所理解的卡尔曼滤波器

敢于坚持自己的想法,虽然思想的差异是如此之大。

前言:

刚开始入门卡尔曼滤波器的时候,觉得这玩意还是没那么简单的,于是问导师,自动化计算机这些专业会讲卡尔曼滤波器吗,导师说应该也没有,都是需要自己学习的。其实到了大学阶段,最重要的还是培养自学能力,包括信息检索、信息甄别等。这里建议如果是本科生的话尽可能早的加入实验室,不一定是机器人实验室,而是自己感兴趣的方向。本科四年时间,你有大把时间去试错,去发现自己真正喜欢什么,如果发现不喜欢,就迅速的换其他方向。大部分人的本科由于各种原因被安排的明明白白,无法选择自己喜欢的方向,越往后去试错,时间成本就越大。

如果一开始就选择做机器人,这里有一篇机器人工程师养成计划,写的很不错,分享给大家。我在做本科阶段也在不断选择,一开始参与国家大学生创新训练项目做材料,发现还是不太喜欢,后来毕设就开始搞机器人了。不过搞这个材料项目让我和我室友遇到一个超级好的导师,帮我们手把手批改论文,让我和我室友最终都通过论文成功保研,真是感激贵人相助。

正文:

一开始接触卡尔曼滤波器的时候,就是一堆感觉很复杂的公式,然后没办法只能到处找资料去理解。直到有一天,我看了知乎的一个回答,问滤波的本质是什么?那个答案是滤波即加权。这句话还真是醍醐灌顶。比如高通滤波器,就是将高于截至频率的部分置为1,低于截止频率的部分置为0。

打个比方,你需要测室内温度,你只有一个温度计,你觉得测一次不太准,那你现在怎么办,相信大部分人都会再测一次,对结果取平均值;假如你现在有两个同款温度计,那你必然会选择各测一次取平均值;那假如这两个温度计一个准一个不准呢,那就取加权平均,对准的那个温度计取更高的置信度。这就是用卡尔曼滤波器融合两个传感器数据的原理。

假如我现在没有两个传感器,我也可以用上一阶段的测量值来预测此刻的状态量(预测阶段)得到先验状态量,结合这一时刻测得的传感器测量值,融合成后验状态量(更新阶段)。具体过程如下图所示,阐释的很清楚。

卡尔曼滤波器的增益k,本质上就是表明更相信预测阶段还是更新阶段,也就是这里的权值。那如何计算这个权值呢,那就是根据先验协方差和测量协方差进行计算,协方差越大,则表明不确定性越大,对应的传感器越不可靠。下图中为卡尔曼滤波器经典论文An Introduction to the Kalman Filter中给出的公式,其中左边式(2)中的先验协方差Pk-是通过上一阶段协方差Pk-1和预测协方差Q计算出来的,卡尔曼增益k是右边式(1)中的先验协方差Pk-和测量协方差R得出。Q和R都需要根据传感器的特性自己设参数,越不可靠则越大。这也是在使用robot_pose_ekf的时候/VO、/odom这些话题里面要包含协方差的原因,不然滤波器无法计算。如果在某一阶段你的某个传感器忽然失效了,例如视觉里程计忽然检测到一面纯白的墙壁,此时你可以将其协方差调到一个很大的值,这样可以避免短时间内滤波器的值不出现较大的误差,这应该也算是一种动态卡尔曼滤波器。

卡尔曼滤波器有一定的约束条件,就是必须是线性高斯,也就是状态转移方程和测量方程必须是线性的。因为如果不是线性变换,原先的高斯分布在变换后不再满足高斯分布。因此,要解决此问题,方法就是在后验的均值处对方程进行一阶泰勒展开,也就是线性化,这就是扩展卡尔曼滤波器,如下图所示。

再或者,我采用足够多的采样点(蒙特卡洛方法)去模拟分布情况,使得不需要再满足高斯分布的条件,这就是粒子滤波。

其实这两种滤波的方法本质都是贝叶斯滤波,都是不断进行预测更新的过程。这边文章中没有涉及到公式推导,对公式推导感兴趣的可以去看看概率机器人。

最后,打个广告,我们实验室是华南理工大学移动机器人实验室,属于机械与汽车工程学院。实验室主要方向为视觉检测和移动机器人。实验室零几年就开始搞AGV了,只不过那时候一台二十多万基本上没人用。现在实验室有工业级磁导航AGV,主控制器、驱动器、磁导航传感器PCB包括其中的控制固件还有上位机作业规划系统均为实验室自己研发,有一定的技术实力。另外,基于激光slam的第二代物流分拣平台正在研发,实验室13年就买了turtlebot,现在velodyne激光雷达、UR5机械臂、sick激光雷达、MTI-700惯导、zed双目相机也都有,各种电子元器件(下图一大筐一大筐的)和工具齐全,欢迎对移动机器人感兴趣的硕士加入我们,感兴趣私聊。

参考书籍:

[1]概率机器人(中文版和英文版)

[2] An Introduction to the Kalman Filter

Measure
Measure
Summary | 1 Annotation
本质上就是表明更相信预测阶段还是更新阶段
2021/01/05 13:10