实际工程项目中是怎么用卡尔曼滤波的?
共 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的其它公式都是用优化理论去解算高斯函数的,在此不啰嗦了。
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。