Kalman详尽原理介绍合集

article/2025/10/5 22:07:06

目录

前言

1.线性kalman(LKF)

1.1LKF原理简介

1.2 适用场合

2.扩展kalman(EKF)

2.1EKF原理简介

2.2 适用场合

2.3 使用注意事项

3.无迹kalman(UKF)

3.1UKF原理简介

3.2 UT变换

3.3 适用场合

4.粒子滤波PF

4.1 PF原理简介

4.2 适用场合


前言

除了无模型控制和输出反馈的少部分系统,实际系统设计控制器时都是状态反馈,但是状态的获取往往是很困难的,这就需要利用量测量的信息,也就是传感器量测到的信息对状态变量进行估计,也就是我们所说的观测状态,对于目前主流的主要有扩张状态观测器、高增益观测器、Kalman滤波器,有的文章还会介绍扰动观测器等,但个人为扰动观测器和高增益观测器都可以归结为扩张状态观测器,扩张观测器又可以细分为线性扩张观测器LESO和非线性扩张观测器NLESO,对于LESO可以用高老师提出的宽带法调节,所有的观测器理论上可以无限还原名义模型。

对于往期也有部分文章介绍了扩张观测器:

基于扩张观测器(LESO)的滑模控制_Mr. 邹的博客-CSDN博客

VSC/SMC(八)——基于慢时变干扰观测器的滑模控制(含程序模型)_Mr. 邹的博客-CSDN博客

VSC/SMC(七)——基于高增益观测器的滑模控制(含程序模型)_Mr. 邹的博客-CSDN博客

自抗扰控制ADRC之扩张观测器_adrc扩张状态观测器_Mr. 邹的博客-CSDN博客

对于kalman的应用类型很多,可以做数据融合、参数辨识,本篇文章介绍其作为观测器上的应用,;kalman系列算法的基础都是贝叶斯滤波。

好了,本篇文章正式介绍Kalman这种类型的观测器,并且将其应用到2、4、7自由度悬架上进行仿真分析。

1.线性kalman(LKF)

1.1LKF原理简介

可以精简理解为:两步预测(状态和协方差阵)+两步更新(状态和协方差阵)+Klaman增益

由于kalman增益与预测和更新状态无直接关系,所以可以离线计算。

1.2 适用场合

①优点:计算迅速;程序稳定不容易崩溃

②缺点:适用于线性高斯模型;过程噪声和量测噪声局限于高斯白噪声。

2.扩展kalman(EKF)

2.1EKF原理简介

由于LKF局限于线性模型,所以提出EKF,可以精简理解为:将非线性模型进行一阶泰勒展开,其余算法部分仍与LKF一致,即两步预测、两步更新和离线Kalman增益计算。

一阶线性化即计算两个雅克比矩阵f()和h():

2.2 适用场合

①优点:不在使对象局限为线性模型;计算时间和LKF无差异,以及程序也很稳定

②缺点:需要人为事先计算好雅可比矩阵,即计算好泰勒一阶线性化模型;同样对于噪声只能是高斯白噪声;对于线性化后的模型还原真实的非线性模型差异很大,毕竟只能做到一阶线性化,从原理上可以理解为具有原系统的一阶精度,即存在线性化误差

2.3 使用注意事项

对于建模时使用的是非线性模型(未经泰勒线性化模型),只是在作为滤波器时使用线性化模型。

3.无迹kalman(UKF)

3.1UKF原理简介

综述上述EKF线性化误差很大的原由本质在于用泰勒展开时只是离散化到一阶,所以这部分误差不可避免地存在,而且很大。

剖析Kalman的本质,可以知道就是在玩转概率分布和方差,所以引出无迹变换(UT)代替一阶泰勒线性化,UT变换的原理可以理解为用符合正态分布的sigma点近似原系统的概率密度函数,这样只需要计算sigma点的期望和方差便可以还原实际非线性系统的期望和方差,由于通过这种方法计算对于二阶系统期望和方差一致,所以可以理解为UKF具有至少二阶精度。有的资料上也会说对于高斯分布模型具有3阶以上精度,具体读者感兴趣可以推导。

对于具体的算法流程部分读者可以可以相关资料,暂时没时间补充,谢谢理解!

3.2 UT变换

UT变换是基于先验期望和协方差阵来得到的,一般将sigma点按对称分布选取。其实可以理解为选取sigma点位置和权重两个部分,其中权重是固定的,也可以理解为是可以离线计算的。

3.3 适用场合

①优点:相较于计算精度而言比LKF和EKF有很大的提升;不再局限于线性模型

②缺点:程序不稳定(由于需要LL'分解,所以协方差阵需要一直保证为正定阵,而软件的计算精度有限会导致丢失精度最终导致矩阵非正定);计算时间较长

4.粒子滤波PF

4.1 PF原理简介

由于计算期望和方差都需要∞积分,但是实际中不存在,就会导致无可行解的问题。PF提出的最大精髓在于利用大数定律的思想:将频率近似为概率,所以只要频率足够大,那么概率就足够准确。

对于算法流程部分,主要包括:重要性采样(即粒子初始位置的选择和初始权重选取)、重采样机制。很复杂这里就不去编辑叙述了,读者查阅相关资料阅读,谢谢理解!

4.2 适用场合

①优点:相较于LKF、EKF和UKF,它不再局限于白噪声,噪声可以是有色噪声,其期望不为0的噪声;精度最高,理论上只要粒子数量足够多,那么便能绝对还原非线性模型

②缺点:计算内存最大。

对于应用部分放到下篇文章进行仿真分析,敬请关注!

好了,以上便是个人对于LKF、EKF、UKF和PF的理解,如有错误欢迎指导交流!发文不易,如果有帮助请帮忙点个小爱心,谢谢!


http://chatgpt.dhexx.cn/article/uIv8HSJs.shtml

相关文章

对Kalman(卡尔曼)滤波器的理解

分类: 计算机视觉 转载过来的,觉得不错,原文 http://blog.csdn.net/lanbing510/article/details/8828109 1.简介(Brief Introduction) 在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅…

Kalman滤波通俗理解+实际应用

一、Kalman用于解决什么的问题? 卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。 人话&#xff1…

IDEA开发及运行第一个Android项目

IDEA自动下载SDK、Gradle,保证能访问网络。 原来eclipse能使用的sdk,配到idea报错,就换成自动下载最新的了。 之前没成功可能是我防火墙禁用了上网。 新建项目 提示安装SDK 等待下载完成 继续建项目 选择手机或平板及目标设备API版本 选择…

怎么导入别人的android项目

到期末了好多同学都问我怎么把别人的安卓项目导进自己电脑里面,今天我来统一解答一下,希望有所帮助。 1.删除项目中原有的自动构建的文件 去到要导入项目的目录下把 .idea .gradle与build 三个文件夹,*.iml,local.properties删除…

android 开源项目:

android 开源项目: https://github.com/white-cat/ThinkAndroid 转自:http://glblong.blog.51cto.com/3058613/1354953 Android开源:数据库ORM框架GreenDao学习心得及使用总结 2014-01-26 23:40:01 标签: sqllite Android 开源…

Android项目工程结构介绍

Android项目工程结构介绍 (1)gradle和.idea Android Studio自动生成的文件,打包的时候一般会删掉再进行打包 (2)app 项目的代码资源都在其中,也是我们工作的核心目录 build :编译生成文件。生…

Android项目如何真机运行?

很多初学者在刚开始写Android项目的时候,会使用Android Studio自带的模拟器去运行项目,但是自带模拟器一般占内存大(占2G都算少的);运行慢(运行一个项目要启动半天);卡顿等等&#x…

26、Android创建项目

利用 Android Studio,您可以轻松地为各种类型的设备(例如手机、平板电脑、电视和可穿戴设备)创建 Android 应用。本页介绍了如何启动新的 Android 应用项目或导入现有项目。 如果您未打开项目,Android Studio 会显示欢迎屏幕&…

创建的第一个Android项目

Package name:项目的包名,一定要具有唯一性! 静待。。。 创建模拟器 版本问题找不到具体信息,就选择这一个把。相似度比较高。紧跟着后边我也配置了安卓10(Q) 提示你的反病毒程序可能会影响你的构建性能。…

Android开源项目

阿里巴巴 项目名称功能描述freelineFreeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,也可以从 Freeline 官方主页来获取更多的信息。Freeline 由蚂蚁聚宝 Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅…

Android项目框架搭建(一)

本篇先记录下当前项目中涉及的主要技术要点。也算是对所作项目的一次总结。如果这个过程能对你有些许的帮助,那可能就显得有意义点了。 一个完整的Android项目会涉及后台和前端。我们只关注于前端,也就是我们的app本身。 下面列出项目架构需要具备的技…

创建安卓项目工程

安卓项目工程 前言一创建工程的步骤newproject找到empty配置相关信息创建成功 二、项目相关的文件1.llayoyt文件这个文件位于app\src\res\layout它运行的结果是,这个APP如果在手机上运行的话,会是什么样的界面 前言 说清楚这么创建一个安卓工程 并且运行…

2.Android Studio创建安卓项目及项目结构

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 上一篇Android Studio搭建完成了,接下来我们就用Android Studio创建我们的安卓项目吧! 目录: 一、使用Android Studio 图形用户界面创建安卓工…

Android项目结构

Android项目结构 新建个空的安卓项目,打开,切换到project模式: 一、工程结构 1/ .gradle和.idea 这两个目录下都是AS自动生成的,无须关心,也不要手动编辑。 2/ app 项目中的代码、资源等几乎都在这里,…

Android项目工程目录简介

主工程目录: 一、.gradle 此文件夹是构建工具 Gradle 的配置文件夹,也会存储一些项目的构建缓存信息,在首次build项目时,会根据配置文件去下载这些文件,此文件夹是自动生成的文件夹,我们无需关心里面的内容…

Android创建项目

目录 创建Android项目 配置项目结构 创建安卓模拟器 模拟器运行 HelloWorld 应用 真机运行 HelloWorld 应用 创建Android项目 打开 Android studio 工具,选择Project,选择 New Project 由于现在是教程博客,所以我们随便选择 一个 空 Ac…

Android Studio创建安卓项目工程

Android Studio创建安卓项目工程 前言 因为想抽出时间复习考研因此提前接触安卓的一些开发,在实训的时候就可以不用再听讲学习,节省时间 随着前端混合开发和小程序技术的兴起,安卓开发的需求在日益减少。更多的学习是出于兴趣的缘故吧。 创…

八个Android项目源码

Android项目源码分享 给大家分享几个Android开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 Android Studio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了。…

Android开发-创建安卓工程项目+安卓程序的运行

文章目录 前言一、为什么学习Android1.1、什么是Android1.2、Android的特点1.3、Android开发的前景 二、Android studio三、创建安卓工程项目四、第一个安卓程序的运行总结 前言 Android是基于linux平台的开源手机操作系统,该平台由操作系统,中间件&…

1、创建第一个Android项目

1.1、创建Android工程项目: 双击打开Android Studio。 在菜单栏File中new-->new project 3、在界面中选择Empty Activity,然后选择next 4、在下面界面中修改工程名称,工程保存路径选择java语言,然后点击finish Android studio自…