卡尔曼滤波算法详细推导(全网最详细的推导过程)

2023-05-16

本文是来源于B站Dr_CAN的视频的学习笔记,有需要详细了解的,可以到B站看相关视频DR_CAN的个人空间

1、递归算法

例:
假设测一段距离,第一次测 z 1 z_1 z1=50.1mm,第二次测 z 2 z_2 z2=50.4mm,第三次测 z 3 z_3 z3=50.2mm,若想得到准确的值,可以计算这几次测量的平均值,
据此,可以定义估计真实数据等于平均值,可得到如下公式
x ^ k = 1 k ( x 1 + x 2 + ⋯ x k ) \hat{x }_k=\frac{1}{k }(x_1+x_2+⋯x_k ) x^k=k1(x1+x2+xk)
= 1 k ( x 1 + x 2 + ⋯ x ( k − 1 ) ) + 1 k x k =\frac{1}{k }(x_1+x_2+⋯x_(k-1) )+\frac{1}{k } x_k =k1(x1+x2+x(k1))+k1xk
= ( k − 1 ) k ( k − 1 ) ( x 1 + x 2 + ⋯ x ( k − 1 ) ) + 1 k x k =\frac{(k-1)}{k(k-1)} (x_1+x_2+⋯x_(k-1) )+\frac{1}{k } x_k =k(k1)(k1)(x1+x2+x(k1))+k1xk
= k − 1 k x ^ k − 1 + 1 / k x k =\frac{k-1}{k} \hat{x }_{k-1}+1/k x_k =kk1x^k1+1/kxk
= x ^ ( k − 1 ) − 1 / k x ^ ( k − 1 ) + 1 k x k =\hat{x }_(k-1)-1/k \hat{x }_(k-1)+\frac{1}{k } x_k =x^(k1)1/kx^(k1)+k1xk
于是有 x ^ k = x ^ k − 1 + 1 k ( x k − x ^ k − 1 ) \hat{x }_k=\hat{x }_{k-1}+\frac{1}{k } (x_k-\hat{x }_{k-1}) x^k=x^k1+k1(xkx^k1)
据此可分析得到,随着k的数值增大,测量结果不再重要,可将上式描述为:
x ^ k = x ^ k − 1 + k k ( x k − x ^ ( k − 1 ) ) \hat{x}_k=\hat{x}_{k-1}+k_k (x_k-\hat{x}_{(k-1)}) x^k=x^k1+kk(xkx^(k1))

当前的估计值=上一次的估计值+系数×(当前测量值-上一次估计值)

该式即为卡尔曼滤波的递归公式,可以对系数进行重新定义

k k = E e k − 1 E e k − 1 + M e k k_k=\frac{Ee_{k-1}}{Ee_{k-1}+Me_k } kk=Eek1+MekEek1
E e E_e Ee是估计误差
M e M_e Me是测量误差

2、数据融合、协方差矩阵、状态空间方程、观测器

(1)数据融合
例:假设两个传感器测得一物体的重量分别为z_1=30g,z_2=32g,其标准差分别为σ_1=2g,σ_2=4g,估计真实值 z ^ \hat z z^
z ^ = z 1 + k ( z 2 − z 1 ) \hat z=z_1+k(z_2-z_1) z^=z1+k(z2z1)
求k,使 z ^ \hat z z^的标准差 σ z ^ σ_{\hat z } σz^最小;
在这里插入图片描述

为了求使 σ z ^ σ_{\hat z} σz^最小的k值,可以对其进行求导:
即:
在这里插入图片描述

(2)协方差矩阵

3卡尔曼增益推导

已知状态空间:

在这里插入图片描述
实际状态空间模型:
在这里插入图片描述
在这里插入图片描述
于是有
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

卡尔曼滤波算法详细推导(全网最详细的推导过程) 的相关文章

  • 烟台大学参加2011移动开发者大会和参观CSDN

    第一天 每年一度的中国移动开发者大会如期举行 xff0c 这次在潘永强老师的帮助下 xff0c 幸运的获得了此次大会的门票 xff0c 激动万分 xff0c 这是我们第一次北京之行 xff0c 带着无限的幻想和憧憬 xff0c 踏上了前往北
  • Linux的信号量

    信号量 xff08 semaphore xff09 与已经介绍过的 IPC 结构不同 xff0c 它是一个计数器 信号量用于实现进程间的互斥与同步 xff0c 而不是用于存储进程间通信数据 1 特点 1 信号量用于进程间同步 xff0c 若
  • 21 kubesphere安装部署

    文章目录 一 kubersphere1 KuberSphere简介2 全栈的 Kubernetes 容器云 PaaS 解决方案3 为什么选择 KubeSphere xff1f 4 主要功能 二 kubespshe 安装 xff08 Kube
  • 关于AlreadyExistsError: Another metric with the same name already exists.的解决方案

    这项错误发生在我刚安装完tensorflow xff0c 想import keras包的时候发生了如下的错误 xff1a Tensorflow python framework errors impl AlreadyExistsError
  • uC/OSIII在Cortex-M3的任务切换和中断退出分析

    uC OSIII在任务中执行OSSched相关的函数和在中断退出后都会开始执行调度 xff0c 这是它的调度机制 而按uC OSIII书中所讲 xff0c 普通任务切换和从中断中退出后的任务切换应该是不同的函数 xff0c 因为普通任务切换
  • 每天一个adb命令:dumpsys命令详解

    dumpsys是一个能帮助我们对手机进行性能分析的命令 xff0c 它可以帮助我们获取电池 内存 cpu 磁盘 wifi等等信息 xff0c 具体能查询的信息可以通过命令 xff1a adb span class hljs built in
  • vs2017如何创建一个asax文件

    VS2017无法为网站创建Global asax文件 xff0c 导致出现错误WebForms UnobtrusiveValidationMode 需要 jquery ScriptResourceMapping 解决方案如下 xff1a 勾
  • Spring Security OAuth2.0认证授权

    文章目录 1 基本概念1 1 什么是认证1 2 什么是会话1 3什么是授权1 4授权的数据模型1 4 RBAC1 4 1 基于角色的访问控制 2 基于Session的认证方式3 整合案例3 1 SpringMVC 43 Servlet3 0
  • 浏览器不显示favicon.ico怎么办?

    原因1 xff1a 连接文件的路径不对 如上图路径的话href连接路径应该写成 xff1a href 61 34 img favicon ico 34 xff0c 具体如下 xff1a span class token operator l
  • VNCViewer连接树莓派失败、显示超时的部分原因

    刚入手树莓派 xff0c 在用VNCViewer这款软件实现树莓派的图形化桌面时遇到了一些坑 xff0c 在这里分享 xff0c 希望能对大家有所帮助 1 在文本框内输入IP地址之后一定要记得加上 端号 xff0c 如下图所示 这个端号在P
  • Kubernetes中文手册

    Kubernetes中文手册 https www kubernetes org cn kubernetes pod
  • JSP中文乱码问题终极解决方案

    在介绍方法之前我们首先应该清楚具体的问题有哪些 xff0c 笔者在本博客当中论述的 JSP 中文乱码问题有如下几个方面 xff1a 页面乱码 参数乱码 表单乱码 源文件乱码 下面来逐一解决其中的乱码问题 一 JSP 页面中文乱码 在 JSP
  • JS表白代码

    简单的JS弹窗表白代码 思路 xff1a 只有当用户输入1 xff08 表示喜欢你 xff09 才有进一步浏览的资格 如果用户输入2 xff08 不喜欢你 xff09 就会陷入死循环进行撒娇 xff0c 只有当用户输入1 xff0c 才可以
  • Quartz框架详解

    Quartz框架可以实现 异步定时任务 Quartz框架下载地址 注意1版本和2版本写法完全不一样 xff0c 本文采用的是2 x版本 下载完毕后进入进入lib文件夹 xff0c 然后将下面的几个jar引入项目 xff1a 基本实现步骤 x
  • 前端的端口问题

    本文 xff0c 将以通俗易懂的方式剖析 服务器 电脑 是怎么访问html文件 先说一下前置知识 xff1a 首先我们得知道一件事情 xff1a 电脑中每个运行的程序都对应着某个端口 xff0c 举个例子 xff1a 我们都知道mysql默
  • 湖北师范大学java习题汇编(超详细!已经进行了章节划分)

    表达式和流程控制语句 1 验证歌德巴赫猜想 一个充分大的偶数 xff08 大于或等于6 xff09 可以分解为两个素数之和 试编程序 xff0c 将 6至50之间全部偶数表示为两个素数之和 span class token keyword
  • OPENCV(五) 对给定的车牌进行字符分割

    下面有这样的一个车牌号 xff1a 现在的任务是将每一个字符区分开来 xff0c 并方框圈出来 完成这个功能需要以下的步骤 xff1a 1 灰度处理 span class token comment 读取图片 span image1 spa
  • SpringBoot整合forest(调用彩云API获取所有城市的实时天气)

    Forest简介 xff1a Forest是一个高层的 极简的轻量级HTTP调用API框架 相比于直接使用Httpclient您不再用写一大堆重复的代码了 xff0c 而是像调用本地方法一样去发送HTTP请求 环境配置 xff1a 因为本项
  • JAVA操作Kafka

    一 环境说明 1 电脑或你的服务器需要安装zookeeper和kafka 可以参考我的这篇博客 xff1a 请点击这里 xff01 2 项目中需要下面的依赖 xff1a span class token tag span class tok
  • Gradle使用本地maven仓库

    一 基本配置 在repositories下添加mavenLocal 方法 plugins span class token punctuation span id span class token string 39 java 39 spa

随机推荐

  • Docker容器编排

    一 简介和下载安装 1 简介 docker compose是Docker官方的开源项目 xff0c 可以管理多个docker容器组成的一个应用 你需要定义一个YAML格式的配置文件docker compose yaml xff0c 写好多容
  • 若依微服务(ruoyi-cloud)保姆版容器编排运行

    一 简介 项目gitee地址 xff1a https gitee com y project RuoYi Cloud 由于该项目运行有很多坑 xff0c 大家可以在git克隆拷贝到本地后 xff0c 执行下面的命令使master版本回退到本
  • 深入学习Tomcat----自己动手写服务器(附服务器源码)

    相信大多 Web 开发者对 Tomcat 是非常熟悉的 xff0c 众所周知 Tomcat 是一款非常好用的开源 Servlet 容器 xff0c 您一定对这个最流行的 Servlet 容器充满好奇 xff0c 虽然它并不像一个黑盒子那样让
  • Docker图形界面

    一 Portainer Portainer是一款轻量级的应用 xff0c 它提供了图形化界面 xff0c 用于方便地管理Docker环境 xff0c 包括单机环境和集群环境 官网 xff1a https www portainer io 运
  • Docker网络

    一 简介 从其架构和运行流程来看 xff0c Docker是一个C S模式的架构 xff0c 后端是一个松耦合架构 xff0c 众多模块各司其职 docker运行的基本流程为 xff1a 1 用户是使用Docker Client和Docke
  • NOKOV Seeker2.2动作捕捉软件与ROS的通信

    一 动捕软件安装与数据准备 1 在操作系统为Windows系统 xff0c 且位数为64位的电脑上 xff0c 以鼠标右键点击 以管理员身份运行 的方式 xff0c 运行 Seeker2 2 Tracker setup exe 文件 xff
  • NOKOV度量动捕软件教程(1):软件安装与设置

    一 软件安装 1 在操作系统为 64 位的 Windows 系统上 xff0c 关闭防火墙退出杀毒软件 xff08 360 电脑管家等 xff09 xff0c 以鼠标右键点击 以管理员身份运行 的方式 xff0c 运行 XINGYING 1
  • Pixhawk+PX4+NOKOV+C++SDK动捕飞控方案

    一 PX4配置 1 参数设置 xff0c 保存重启后生效 EKF2 AID MASK 61 24 EKF2 HGT MODE 61 2 二 动捕软件设置 1 配置参考 xff08 1 xff09 mocap nokov ROS Wiki 三
  • Pixhawk+PX4+NOKOV+VRPN动捕飞控方案

    一 PX4 配置 1 参数设置 xff0c 保存重启后生效 EKF2 AID MASK 61 24 EKF2 HGT MODE 61 2 二 VRPN配置 1 Nokov 动捕软件正确配置参数并启动 VRPN 2 使用 vrpn clien
  • JS-DOM— —节点操作

    五 节点操作 5 1 节点操作的作用 获取元素通常使用两种方式 1 利用DOM提供的方法获取元素 document getElementByld document getElementsByTagName0 document querySe
  • 立创EDA专业版入门经验分享(1)——对标AD的快捷操作

    作者团队在近期从Alitum Designer转战到立创EDA专业版 在习惯AD的工作方式后 xff0c 转到立创EDA专业版后磨合了很长一段时间 现将原来AD中的功能对应到立创EDA中的高级功能像大家分享 欢迎大家一起交流学习 本帖将作为
  • c语言中字符数组的理解

    数组的理解参考该文 对于字符数组 xff0c 当最后一个元素是 0 xff0c 则这个字符数组是一个字符串 xff1b 字符串可以通过首地址来打印输出 1 对于一维数组 int pack 3 61 1 2 3 printf 34 d 34
  • 如何减小与“大牛”的差距

    为什么同样的时间有的人可以漂亮的完成工作 xff0c 而有些人废了很大的力气也没有完成 xff1f 前者我们常常称之为 大牛 xff0c 后者我们常常叫他们 菜鸟 当然 大牛 都是相对而言的 xff0c 大牛 也不可能方方面面都非常厉害 x
  • 利用字符串的最后一个字符为‘\0‘的特性操作字符串

    利用末尾为 0 特性 xff0c 求字符串长度 xff0c 实现strlen int len 61 0 char str 61 34 hello 34 char p 61 str while p len 43 43 计算字符串的长度 p 4
  • 信号量sem_init,sem_wait,sem_post

    本篇文章是信号量的简单入门 xff0c 主要学习关于信号量四个函数的使用 文章综合整理了两篇文章 xff1a http blog csdn net qyz og article details 47189219 http blog csdn
  • readdir函数

    readdir会不断读取目中的文件及目录 xff0c 但不会读子目录中的文件 include lt sys types h gt include lt dirent h gt include lt stdio h gt include lt
  • fwrite写文件是乱码

    fwrite写的二进制文件 xff0c 所以我们打开所写的文件是乱码 xff0c 但数据是正确的 xff0c 我们通过fread函数按照原来的数据格式读取即可 可以参考该文 include lt sys types h gt include
  • 经典面试题 动态链接库与静态链接库的区别

    经典面试题 动态链接库与静态链接库的区别 面试轻松学习 xff0c offer快点拿 文章目录 经典面试题 动态链接库与静态链接库的区别一 动态链接库是什么 xff1f 二 静态链接库是什么 xff1f 三 区别1 静态链接库速度快 xff
  • Docker占用的磁盘空间清理

    Docker占用的磁盘空间清理 1 docker system命令 在谁用光了磁盘 xff1f Docker System命令详解中 xff0c 我们详细介绍了docker system命令 它可以用于管理磁盘空间 docker syste
  • 卡尔曼滤波算法详细推导(全网最详细的推导过程)

    本文是来源于B站Dr CAN的视频的学习笔记 xff0c 有需要详细了解的 xff0c 可以到B站看相关视频DR CAN的个人空间 1 递归算法 例 xff1a 假设测一段距离 xff0c 第一次测 z 1 z 1 z 1 61 50 1m