机器人学 —— 机器人感知(Kalman Filter)
对于机器人感知任务而言,经常需要预判物体的运动,保证机器人在物体与自身接触之前进行规避。比如无人机与障碍物的碰撞,足球机器人判断足球的位置。预判的前提是对当前状态进行准确的估计,比如足球的速度,障碍物靠近的速度。一般认为,测量是存在误差的 —— 眼见未必为实。

1、物体的运动学模型
物体的运动学模型使用状态向量来表达。以2维空间的质点运动为例,物体的运动学模型可以表达为 x = [ px py vx vy ]' 。其中 px py 表示物体的位置,vx vy 表示物体的速度。如果能够准确估计物体当前状态x 就可以对其一段时间后的状态进行判断。然而当前状态的测量噪声会对x 的估计产生干扰。Kalman Filter 的作用就是去除这些干扰。
卡尔曼滤波器的原理是使用马尔科夫链来对随机变量进行推测。马尔科夫链是一种特殊的贝叶斯网络,所以卡尔曼滤波器实际上是一种贝叶斯滤波器。其Graph Model 如下所示:


这里需要指出的是 Xt-1 实际是未知的,但是我们以其估计量来作为实际值的最优估计。对于给定PGM,我们使用高斯分布来对随机变量进行建模 —— 高斯分布的几大优点见上篇博客。在不考虑子节点(还没有发生),父节点又被认为是给定的情况下,当前节点的CPD可以认为是父节点与观测节点的Factor product. 如果我们使用高斯模型进行建模,则factor 如下:



其中,A代表转移矩阵,给定 t 时刻的状态,t+1时刻则由转移矩阵确定。vm 则表示转移噪声 —— t+1 时刻与 t 时刻中,速度不是常量。 vo 表示观测噪声 —— 我们对测量的肯定程度。使用高斯模型建模后,我们可以得到p(xt+1|xt) 与p(zt|xt) 的分布。第一个定义了xt+1|xt 的 factor ,第二个定义了观测模型的factor. 于是,我们可以用贝叶斯公式求取 p(xt|xt-1, zt-1 ) .


这里需要指出的是,一旦给定了zt 的父节点 xt , 那么zt 和 xt-1 是 d- Seperate 的。所以 P(zt|xt,xt-1) = P(zt|xt).
2、最大后验估计





最大后验估计对象如上,按照上述公式即可实现卡尔曼滤波器。实现后的误差及预测结果如图:

卡尔曼滤波器的设计技巧在于,如果物体不是匀加速运动(如足球的滚动),那么位置方差可以给的较小(认为我们的运动跟踪算法帧率足够高,且相机检测够准),但是!!!速度方差一定要给的够大,以保证能够模拟变加速状态!!!
机器人学 —— 机器人感知(Kalman Filter)的更多相关文章
- 机器人学 —— 机器人感知(Gaussian Model)
机器人感知是UPNN机器人专项中的最后一门课程,其利用视觉方法来对环境进行感知.与之前提到的机器人视觉不同,机器人感知更侧重于对环境物体的识别与检测.与计算机视觉不同,机器人视觉所识别的物体往往不需要 ...
- 机器人学 —— 机器人感知(Location)
终于完成了Robotic SLAM 所有的内容了.说实话,课程的内容比较一般,但是作业还是挺有挑战性的.最后一章的内容是 Location. Location 是 Mapping 的逆过程.在给定ma ...
- 机器人学 —— 机器人感知(Mapping)
对于移动机器人来说,最吸引人的莫过于SLAM,堪称Moving Robot 皇冠上的明珠.Perception 服务于 SLAM,Motion Plan基于SLAM.SLAM在移动机器人整个问题框架中 ...
- 无人驾驶技术之Kalman Filter原理介绍
基本思想 以K-1时刻的最优估计Xk-1为准,预测K时刻的状态变量Xk/k-1,同时又对该状态进行观测,得到观测变量Zk,再在预测与观之间进行分析,或者说是以观测量对预测量进行修正,从而得到K时刻的最 ...
- 卡尔曼滤波(Kalman Filter)在目标边框预测中的应用
1.卡尔曼滤波的导论 卡尔曼滤波器(Kalman Filter),是由匈牙利数学家Rudolf Emil Kalman发明,并以其名字命名.卡尔曼出生于1930年匈牙利首都布达佩斯.1953,1954 ...
- 泡泡一分钟:Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter
张宁 Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter 使用自适应无味卡尔曼滤波器进行姿态估计链接:https: ...
- 一文搞懂 SLAM 中的Extension Kalman Filter 算法编程
作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ ...
- 卡尔曼滤波器 Kalman Filter (转载)
在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡 尔曼全名Rudolf Emil ...
- 卡尔曼滤波—Simple Kalman Filter for 2D tracking with OpenCV
之前有关卡尔曼滤波的例子都比较简单,只能用于简单的理解卡尔曼滤波的基本步骤.现在让我们来看看卡尔曼滤波在实际中到底能做些什么吧.这里有一个使用卡尔曼滤波在窗口内跟踪鼠标移动的例子,原作者主页:http ...
随机推荐
- 深入理解CSS3 animation的steps
在应用 CSS3 渐变/动画时,有个控制时间的属性 <timing-function> .它的取值中除了常用到的三次贝塞尔曲线以外,还有个让人比较困惑的 steps() 函数. steps ...
- 我是IT小小鸟,老师我之前上传了!!!!老是请您看到我
我是IT小小鸟读后感 世界上没有一蹴而就的成功者,只有头悬梁锥刺股的奋斗者.蜉蝣向往大鹏的辉煌,却不曾知大鹏以往的汗水.蜉蝣之所以为蜉蝣,是因为它犹如井底之蛙,目光短浅,之盲目地羡慕成功者,而大鹏之所 ...
- xml给提示
1. FAQ:不给提示: a) window – preferences – myeclipse – xml – xml catalog b) User Specified E ...
- add some template for ec-final
二维rmq 离线 init O( n*n*logn*logn ) query O(1) http://www.cnblogs.com/kuangbin/p/3227420.html 求1-n有多少个 ...
- 聊一聊js中的null、undefined与NaN
零.寒暄 翻翻自己的博客,上一篇竟然是六月26号的,说好的更新呢?回顾刚刚过去的这个七月,整天都是公司的入职培训加上自己的小论文,每天奋战到凌晨1点多,这是要挂的节奏啊!但是不论怎么说,自己的时间管理 ...
- 查看Centos系统信息命令
linux命令行具有强大的功能,我们安装vps后,首先应该知道系统信息,查看这些信息,你会发现Linux命令很简单,你可以按照下面的命令练习. linux系统信息 # uname -a # 查看内核/ ...
- .NET设计模式(9):桥接模式(Bridge Pattern)(转)
概述 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?这就 ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- 一道题DP
Problem Description 小明明又被大威鱼抓住了,大威鱼把小明明关在地牢里,地牢由n * n 个房间组成,小明被困在地牢的最左上角的房间中,出口在最右下角,他想逃出这个诡异的地牢,但是他 ...
- Why we have to use epsg:900913 in OpenLayers
reference:http://docs.openlayers.org/library/spherical_mercator.html epsg:900913 is spicfy the Soher ...