实际工程项目中是怎么用卡尔曼滤波的?

共 2324字,需浏览 5分钟

 ·

2023-08-10 21:40

点击下方卡片,关注“新机器视觉”公众号

   

重磅干货,第一时间送达


计算机视觉life整理

原文链接:https://www.zhihu.com/question/358334095

就比如飞行器姿态估计,导航定位,目标跟踪,图像处理等的实际项目中,是如何先把问题抽象成数学模型,然后再一步步解决的?最后又封装成产品

作者:李崇

两大难题,一是运动学模型的建立,也就是预测方程。这个一方面可以通过比较细的系统辨识来做,这方面要结合具体的应用背景,不一而足,也是普遍做的比较差的地方。

另一方面可用某个传感器的输出来做预测,比较典型的就是用加速度计做预测,再用陀螺做更新。

另一大问题就是噪声的统计特性咯。因为建模误差不知道。观测方程到还可以测一下ZRO算一下均值和方差。然后下一步就是大家喜闻乐见的调参的阶段咯,据说是群魔乱舞花样百出。

我现实中只用过mems加速度计和陀螺的融合,还有就是无模型的跟踪咯。也就是预测方程是0,纯靠建模误差的那个方差来做预测,效果咋说呢,稳态下看噪声统计特性是好了些,但是动态特性明显滞后和变形了。应该是我经验不足吧

作者:雁集

先啰嗦一下在工程中卡尔曼滤波要解决的问题是什么。

我们得到了2(或多个)个反馈同一件事的信息A和B,但不知道该相信哪个结果,所以简单的,将两个信息相加除以2(加权平均),得到一个结果0.5A+0.5B。但这个方法过于粗暴,不能反映出水平。现在知道了其中一个信息可靠度更好,而另一个可靠度不好,就要更相信好的信息,如,现在给可信度好的B更大的权重,得到0.2A+0.8B,这个结果会好于第一个。但仍然觉得low,因为A与B的参数是根据经验设置的,并不知道是否是最合理的,是否是最优化的。所以高级的,用优化的方法,根据A与B的高斯分布特征,去融合A和B信息,这个就是卡尔曼。

所以,我们看到,要利用卡尔曼,需要不同的信息源(大于等于2个)。最常见的信息源是什么?就是我们根据系统模型或动力学模型计算出来的结果,可以通过仿真的形式得到。第二个或第三个信息是什么?在飞行器姿态估计,导航定位,目标跟踪(几个问题的本质一样,都是状态估计)的问题中,这个信息一般来自惯导或GPS或雷达等。有了2个信息数据,就可以根据Kalman的公式进行融合。下面举一个机器人运动估计的例子,来自《Probabilistic Robotics》。

首先假设你的机器人长这样(一个圆,比较简单),在二维笛卡尔坐标系中运动。

根据这个图,可以得到它的运动学模型

经典的速度、角速度、角度模型,飞行器、轮式机器人、AUV都可以这样简单描述

得到以上模型还不能直接用,这个模型有变量的乘积和三角函数,是个非线性模型,但要利用卡尔曼公式,需要满足EKF(实际工程应用中,我还没见过直接用KF的)的线性化条件。所以要将非线性的模型线性化。

到这一步,得到的Gt可以直接代入EKF公式去更新协方差矩阵了,经过推算会得到增益矩阵K。EKF公式包括预测与更新,这里就不啰嗦了。

同时,用状态的迭代形式,可以得到初步推算的位置

最后,EKF公式中有一项

(z是最终的观测值,最简单的,观测矩阵可以是单位阵,反应的是全状态)

其中两个z,代表了2个信息,比如其中一个是通过动力学得到的机器人位置,另一个通过雷达得到的机器人位置。

通过以上的计算,会得到一个靠谱的结果。

Kalman的其它公式都是用优化理论去解算高斯函数的,在此不啰嗦了。

     

声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。

—THE END—

浏览 158
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报