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

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、最大后验估计

  

 

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

  

  卡尔曼滤波器的设计技巧在于,如果物体不是匀加速运动(如足球的滚动),那么位置方差可以给的较小(认为我们的运动跟踪算法帧率足够高,且相机检测够准),但是!!!速度方差一定要给的够大,以保证能够模拟变加速状态!!!

  

转载于:https://www.cnblogs.com/ironstark/p/5537219.html

机器人学 —— 机器人感知(Kalman Filter)相关推荐

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

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

  2. 一文图解卡尔曼滤波(Kalman Filter)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 译者注:这恐怕是全网有关卡尔曼滤波最简单易懂的解释,如果你认真的读 ...

  3. Kalman Filter 学习笔记

     Intro 最近在学习伟大的Kalman Filter,这篇笔记主要是对国外的两篇介绍Kalman Filter的博客的翻译和一些个人理解,博客链接:Kalman Filter For Dumm ...

  4. 卡尔曼滤波器(Kalman Filter) 理解

    卡尔曼滤波器 1 简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫"卡尔曼".跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是 ...

  5. 图解卡尔曼滤波(Kalman Filter)

    背景 关于滤波 首先援引来自知乎大神的解释. "一位专业课的教授给我们上课的时候,曾谈到:filtering is weighting(滤波即加权).滤波的作用就是给不同的信号分量不同的权重 ...

  6. 卡尔曼滤波算法-Kalman Filter Algorithm

    1.简介 1.1 滤波是什么 所谓了滤波,就是从混合在一起的诸多信号中提取出所需要的信号. 1.2 信号的分类: (1)确定性信号:可以表示为确定的时间函数,可确定其在任何时刻的量值.(具有确定的频谱 ...

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

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  8. 无人驾驶算法学习(三):扩展卡尔曼滤波器Extended Kalman Filter

    文章目录 1.引言 2. 扩展卡尔曼滤波数学理论 3. 代码实战 3.1 python实现 3.2结果分析 1.引言 当系统状态方程不符合线性假设时,采用卡尔曼滤波无法获得理想的最优估计.高斯分布在非 ...

  9. Quaternion kinematics for the error-state Kalman filter 资料整理

    Quaternion kinematics for ESKF-预测 Quaternion kinematics for ESKF-更新 文章翻译-基于误差状态卡尔曼滤波器的四元数运动学-前言 ESKF ...

最新文章

  1. 天池供应链大赛来了!
  2. PHP 核心知识要点
  3. C++_引用变量探究
  4. Mac没有winnt格式_8款优秀软件,让你使用mac更舒适
  5. Unity 5 中的全局光照技术详解
  6. [周赛第200场][Leetcode][第5477题][第5478题][JAVA][双指针][贪心]
  7. 【技巧】LeetCode 86. Partition List
  8. 游戏设计规则探秘之提高动词的健壮性
  9. 215.数组中的第K个最大元素
  10. 军职在线大学生计算机基础答案,大学计算机基础试题-及答案~完整版.doc
  11. postgis学习(二)之几何图形
  12. Android,六款安卓车机大PK
  13. 前端 后端 MD5加盐
  14. 肩周炎的治疗方法哪个最有效
  15. linux ptp时钟同步
  16. 共阴极数码管,学号显示实验
  17. 《人生只有一次,去做自己喜欢的事》读书笔记
  18. 油画的发展过程经历了几个时期?
  19. linux安装globalsign证书,GlobalSign 普通 OV 代码签名证书提取教程
  20. 数据库子查询 含义-分类-语句

热门文章

  1. CentOS 上snmp的安装和配置
  2. 11-17网页基础--表单
  3. 用Python写一个简单的监控系统
  4. linux下svn服务器的安装配置和使用
  5. Python之isinstance
  6. Ruby 对字符串进行转码
  7. vue 递归组件多级_Vue 递归组件构建一个树形菜单
  8. 1092 最好吃的月饼 (20 point(s))- PAT乙级真题
  9. 全局变量只能初始化不能赋值
  10. oracle自定义函数返回一个表,oracle 自定义函数 返回一个表类型