机器人学 —— 机器人感知(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 ...
随机推荐
- Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
前情提要(Previously) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Andr ...
- 在Action中以Struts2的方式输出JSON数据
参考地址;http://blog.csdn.net/itdada/article/details/21344985
- django-CSRF verification failed. Request aborted
现象: 解决办法1: 在view.py文件中设置如下: from django.views.decorators.csrf import csrf_exempt @csrf_exempt #再写下面的 ...
- WebService相关概念介绍
最近重新拾起WebService,之前用过Axis2开发过服务,但是非常具体的概念还不是很清楚,在此粗略总结一下. 本文重点研究以下几个问题: 1.WebService以及相关的概念介绍 ...
- poj 1330 Nearest Common Ancestors LCA
题目链接:http://poj.org/problem?id=1330 A rooted tree is a well-known data structure in computer science ...
- JS模板引擎 :ArtTemplate (1)
1.为什么需要用到模板引擎 我们在做前端开发的时候,有时候经常需要根据后端返回的json数据,然后来生成html,再显示到页面中去. 例如这样子: var data = [ {text: " ...
- Curse of Dimensionality
Curse of Dimensionality Curse of Dimensionality refers to non-intuitive properties of data observed ...
- AC 自动机在这里
HDU 3065,模板(备忘录) #include<stdio.h> #include<string.h> #include<math.h> #include< ...
- Unity3D 将 Unity 嵌入WPF中的一些研究笔记
一. 在 WPF 中使用 WebBrowser,直接打开 WebPlayer.html 以这种方式有一个问题是. 无法在 WebBrowser 的上面 放置其它的控件, 在运行时,都不会显示 . 以 ...
- Java 8怎么了:局部套用vs闭包
[编者按]本文作者为专注于自然语言处理多年的 Pierre-Yves Saumont,Pierre-Yves 著有30多本主讲 Java 软件开发的书籍,自2008开始供职于 Alcatel-Luce ...