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

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|x的 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)的更多相关文章

  1. 机器人学 —— 机器人感知(Gaussian Model)

    机器人感知是UPNN机器人专项中的最后一门课程,其利用视觉方法来对环境进行感知.与之前提到的机器人视觉不同,机器人感知更侧重于对环境物体的识别与检测.与计算机视觉不同,机器人视觉所识别的物体往往不需要 ...

  2. 机器人学 —— 机器人感知(Location)

    终于完成了Robotic SLAM 所有的内容了.说实话,课程的内容比较一般,但是作业还是挺有挑战性的.最后一章的内容是 Location. Location 是 Mapping 的逆过程.在给定ma ...

  3. 机器人学 —— 机器人感知(Mapping)

    对于移动机器人来说,最吸引人的莫过于SLAM,堪称Moving Robot 皇冠上的明珠.Perception 服务于 SLAM,Motion Plan基于SLAM.SLAM在移动机器人整个问题框架中 ...

  4. 无人驾驶技术之Kalman Filter原理介绍

    基本思想 以K-1时刻的最优估计Xk-1为准,预测K时刻的状态变量Xk/k-1,同时又对该状态进行观测,得到观测变量Zk,再在预测与观之间进行分析,或者说是以观测量对预测量进行修正,从而得到K时刻的最 ...

  5. 卡尔曼滤波(Kalman Filter)在目标边框预测中的应用

    1.卡尔曼滤波的导论 卡尔曼滤波器(Kalman Filter),是由匈牙利数学家Rudolf Emil Kalman发明,并以其名字命名.卡尔曼出生于1930年匈牙利首都布达佩斯.1953,1954 ...

  6. 泡泡一分钟:Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter

    张宁 Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter 使用自适应无味卡尔曼滤波器进行姿态估计链接:https: ...

  7. 一文搞懂 SLAM 中的Extension Kalman Filter 算法编程

    作者 | Doreen 01 问题描述 预先知道事物未来的状态总是很有价值的! √ 预知台风的路线可以避免或减轻重大自然灾害的损失. √ 敌国打过来的导弹,如果能够高精度预测轨迹,就能有效拦截. √ ...

  8. 卡尔曼滤波器 Kalman Filter (转载)

    在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”.跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人! 卡 尔曼全名Rudolf Emil ...

  9. 卡尔曼滤波—Simple Kalman Filter for 2D tracking with OpenCV

    之前有关卡尔曼滤波的例子都比较简单,只能用于简单的理解卡尔曼滤波的基本步骤.现在让我们来看看卡尔曼滤波在实际中到底能做些什么吧.这里有一个使用卡尔曼滤波在窗口内跟踪鼠标移动的例子,原作者主页:http ...

随机推荐

  1. 团队开发——Alpha版总结会议

    本组目前存在的问题: 1.在选题的时候,题目选的比较有难度,造成后期工作量较大,实现有难度(未能正确估计项目的难度). 2.最初规划时,设计的功能较多,但是技术水平达不到,导致目前完成功能较少. 3. ...

  2. 卷积神经网络CNN介绍:结构框架,源码理解【转】

    1. 卷积神经网络结构 卷积神经网络是一个多层的神经网络,每层都是一个变换(映射),常用卷积convention变换和pooling池化变换,每种变换都是对输入数据的一种处理,是输入特征的另一种特征表 ...

  3. [转载]ubuntu的版本

    http://bbs.chinaunix.net/thread-2126589-2-1.html  希望他说的是对的 ubuntu 发布的linux里面有一个非常具有迷惑性的版本-desktop.因为 ...

  4. 在线自动下载最新版本jquery

    <script src="http://code.jquery.com/jquery-latest.js">

  5. python-面向对象(指数对象举例)

    class Index(object): def __init__(self,index_name,index_code,closePrice_yesterday,closePrice_today): ...

  6. hdu 3157 Crazy Circuits 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3157 You’ve just built a circuit board for your new r ...

  7. Leetcode#59 Spiral Matrix II

    原题地址 相比于Spiral Matrix(参见这篇文章)要简单一些,因为是方阵,所以代码简洁一些. 注意当n是奇数的时候,中心小块要单独赋值(代码21行) 代码: vector<vector& ...

  8. CRC16校验

    C++中的代码如下:传入字节(byte)数组引用和数组长度 unsigned short CTcpClient::Crc16(const char *pBuf, unsigned short nLen ...

  9. 小试牛刀MVC简单网页

    上次我们创建了第一个MVC的网站,没用下,这次就简单来运行下,首先大家要去理解下MVC模式到底什么关系.在这里我就不多说,直接创建一个网页,用来显示一些数据,数据库的话我就先简单用这样创建先,为了方便 ...

  10. Ckeditor 中一些核心的对象的作用

    1.CKEditor CKEditor对象用于掌管全局,他是一个单例对象,管理着所有实例化了的编辑框. 通过replace方法创建编辑框实例. 2.CKEditor.editor 表示一个编辑框实例, ...