SLAM重要概念,通俗讲解(持续更新中)
来源:互联网 发布:linux操作系统教程 pdf 编辑:程序博客网 时间:2024/06/05 00:22
卡尔曼滤波
什么是卡尔曼滤波?在知乎上见到一些有趣的回答。参考原文
假设,你有两个传感器,测量同一个信息,可是他们每次的读数都不太一样,怎么?
取平均
再假设,你知道其中那个贵的传感器应该更加准确一些,便宜的那个应该差一些,那有比取平均更好的办法吗?
加权平均
那么,怎么加权呢?假设两个传感器的误差都符合正态分布,假设你知道两个正态分布的方差,利用这两个方差,你可以得到一个最优的权重。
接下来重点来了,假设你只有一个传感器,但是你还有一个数学模型,模型可以帮助你算出一个值,但是这个值也不是那么准,怎么办?
把模型算出来的值和传感器测量的值,(就像两个传感器一样),取加权平均
OK,最后说明一点:你的数学模型其实只是一个迭代的。也就是说,知道x(k),才可以求出x(k+1)。问题是x(k)是多少呢?答案是:x(k)就是你上一步卡尔曼滤波得到的值
这就是卡尔曼滤波。
还有第2种,有趣的回答:
假设在轨道上,有一辆小车,在无外力的作用情况下,小车在t时刻的状态量x(t)只与x(t-1)有关
t=0时,小车位置服从红色的正态分布
我们通过数学模型,预测t=1时刻的小车位置应该是
为什么正态分布变得矮胖了,原因很简单,因为叠加了一层噪声(或者说不确定性)。
为了避免数学模型带来的误差。我们使用激光雷达在t=1时刻,进行了测量,下面图中的蓝色的部分
好了,我们现在得到两个不同的结果,那么,我们现在进行卡尔曼滤波融合,找到相应的权值。就像下面这个图所示。红色和蓝色合并为下面的绿色部分。
并且真正的牛逼的之处,在于加权值之后的绿色部分,仍然符合正态分布,可以作为第二次位置估计的初值,一次迭代下去。
航迹推演
航迹推演涉及的是小车的运动学模型,在这里涉及到的航迹推演算法是,已知左右轮的速度,而来的(还有其他航迹推演的方法,例如已知角速度)
假设两轮间距是
已知
主要的公式:
位移量
补充:
注:这些公式不难,直接在STM32当中计算出来
有了上面的推导公式,不难写出小车的线速度是多少,角速度是多少,然后在代码里面,只需要对上面的数值进行累加即可。
附 编码器计算里程:
购买的电机:点击这里
配套的驱动器:点击这里
重要结论,电机转一圈 产生32000QC(也就是32000个脉冲)
计算过程如下:
编码器500线,通过16:1的减速器,之后两相输入驱动器,一个周期有4个上升沿,因此电机转一圈,产生32000个脉冲。
上面的公式当中
假定
注:在实际写代码的时候,千万要注意单位
例如:
贝叶斯准则
目前,我还么有找到一种很好的方式来解释。不如公式推导:
条件概率的定义:
贝叶斯准则:
这一步,可以通过条件概率逆推过去。称为两个恒等式
在上面的公式当中,我们通过y来求x的估计量。这里y一般是指的data.也就是传感器的测量值。p(x)称为先验概率分布,p(x|y)称为后验概率分布。p(y|x)称为生成模型。由于p(y)是相同的变量,因此1/p(y)可以被写成贝叶斯准则中的统一化变量。,通常用n来表示,因此上面公式表示为:
在移动机器人运动的过程中,如果我们想求x点在t时刻的位置。那么我们需要知道x在t-1时刻的位置,t-1时刻的测量值和t 时刻的控制动作。用数学公式表达就是:
这里的0:t-1表示的是,从0时刻到t-1时刻。
- SLAM重要概念,通俗讲解(持续更新中)
- Hibernate官方文档学习之重要概念(持续更新中)
- JAVA核心技术卷一重要概念回顾(持续更新中)
- 回调函数的通俗理解(持续更新中)
- 重要知识结构-持续更新中
- DButils工具中重要的类与接口 讲解 后续持续更新
- TCP/IP协议重要知识点汇总(持续更新中)
- 重要的事情看三遍!!!!!(持续更新中
- 数据库专题讲解/持续更新中
- Java 各种概念总结--持续更新中
- ORB SLAM中几个重要概念, 翻译自ORBSLAM作者主论文
- 深度学习常规概念(持续更新)
- 重要开发网站-持续更新
- 数据结构与算法各种概念总结-持续更新中
- 术语(更新持续中。。。)
- 名人名言(持续更新中)
- 记录(持续更新中)
- 书单(持续更新中...)
- 国内主流云服务器价格概览
- java基础(io流)
- 第十二周项目(4)
- 可变参数的使用
- 【题解/2016提高】P1563 玩具谜题
- SLAM重要概念,通俗讲解(持续更新中)
- 数据库中的三种链接策略 hash join、merge join、 nested loop
- sql的select出现堵塞导致程序卡死的解决方法(在事务中查询)
- QTP11破解后恢复30天使用方法(win7 64bit)
- 第十二周项目(5)
- JDBC事务
- Hadoop安装教程_单机配置_Hadoop1.2.1/Ubuntu16.04
- 每天回顾linux命令(dirname)
- NOIP2017提高组被虐酱油记