【自动驾驶|毫米波雷达】卡尔曼滤波

news2025/1/16 11:09:40

目录

一. 滤波器分类

二.卡尔曼滤波(Kalman Filter)原理

(1)定性理解

(2)定量推导

1. 预测阶段

2. 更新阶段

3. 卡尔曼增益

1)卡尔曼增益

2)如何理解卡尔曼增益?

三.统计概念理解

(1)马尔科夫链

(2)转移矩阵

四.卡尔曼滤波代码(matlab)


一. 滤波器分类

滤波是信号处理中的一个重要概念,滤波电路的作用是尽可能减小脉动的直流电压中的交流成分,保留其直流成分,使输出电压纹波系数降低,波形变得比较平滑。
 

一般滤波器可以分为两类:经典滤波器和现代滤波器:

  • 经典滤波器:只允许一定频率范围内的信号成分正常通过,而阻止另一部分频率成分通过的电路,叫做经典滤波器。 经典滤波器通常从频率的视角,留下某些成分,削弱某些成分,达到信号纯化、目标特征提取等目的。
  • 现代滤波器:自适应滤波并不针对某一些频段来操作,而是针对从有用目标信号中分离噪声、抑制噪声的目的开展深入研究探讨。显而易见,现代滤波器、自适应滤波器更适用于雷达这样的系统。

对于雷达来说,人们感兴趣的是其能够跟踪目标。但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。

二.卡尔曼滤波(Kalman Filter)原理

卡尔曼滤波(Kalman filter)是一种高效率的递归滤波器(自回归滤波器),它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,再产生对未知变数的估计,因此会比只以单一测量量为基础的估计方式要准确。

以飞机的某一状态为例:

(1)定性理解

卡尔曼滤波主要的工作步骤有两个:预测与更新

  • 在预测阶段,滤波器使用上一状态的估计,做出对当前状态的估计。

  • 在更新阶段,滤波器利用对当前状态的观测值优化在预测阶段获得的预测值,以获得一个更精确的新估计值。

(2)定量推导

卡尔曼滤波前提假设

  1. 假设物体时匀速运动的,即v1=v2
  2. 假设所有状态(位置)的变化都是线性的
  3. 噪声服从高斯分布

卡尔曼滤波器核心估计模式

1. 预测阶段

通过第k-1时刻预测出的k时刻估计值 = k-1时刻的最优值+ 控制增益

2. 更新阶段

K时刻位置的估计最优值 = 通过k-1时刻的预测k时刻的估计值+因子a ×(测量值-上次估计值)

3. 卡尔曼增益

1)卡尔曼增益

K_k-\frac{P_{K|K-1}}{H_KP_{K|K-1}+R_K}

其中R_k表示对象噪声的方差矩阵

当前位置状态最优估计:

X_{K|K}=X_{K|K-1}+K_K(Z_K-H_KX_{K|K-1})

此时k时刻的位置表达式就是由上一时刻估计的位置与占一定权重的误差(测量值与估计值)所构成的。

2)如何理解卡尔曼增益?

卡尔曼增益实质上这个是用来调节根据上个位置估计出的当前位置值与测量值最终结果中的占比用的。

上图中红色的高斯分布表示预测的小车位置蓝色的高斯分布表示观测的小车位置; 而融合后,就是绿色的位置;这里只是做了两个高 斯分布的相乘,结果是高斯分布。

三.统计概念理解

(1)马尔科夫链

  • 定性理解:某一过程当前的状态仅仅与上一时刻的状态有关,与过去无关
  • 结合雷达:当前位置的预测只需要通过上一时刻的位置来预测,不需要更早时刻的数据。

(2)转移矩阵

  • 定性理解:矩阵各元素都是非负的,并且各行元素之和等于1,各元素用概率表示,在一定条件下是互相转移的,故称为转移概率矩阵。
  • 结合雷达:计算出每一中情况下,从k-1状态达到k状态的概率,所有的概率构成一个转移矩阵。

四.卡尔曼滤波代码(matlab)

function kalman_filter
% 初始化参数
N = 100; % 观测数据长度
dt = 0.1; % 时间间隔
T = 10; % 总时间
x = randn(N, 1); % 初始状态
P = eye(N); % 初始估计协方差
Q = randn(N, N); % 过程噪声协方差
R = randn(N, N); % 观测噪声协方差
K = zeros(N, N); % 卡尔曼增益矩阵
x_est = zeros(N, 1); % 估计状态
P_est = eye(N); % 估计协方差矩阵

% 卡尔曼滤波循环
for t = 1:T
    % 更新过程
    x_est(t) = x_est(t-1) + dt * (P_est(t-1) * x_est(t-1) + Q(t-1));
    P_est = P_est - dt * (P_est * x_est(t-1) + R(t-1));
    K(t) = P_est / (P_est + R(t)); % 卡尔曼增益计算
    % 预测部分(噪声)数据加上观测值进行修正
    y = z; % 这里的 z 是实际观测数据,根据你的应用设定,你可能需要使用一个接口或其他方式来获取这个值。
    y_hat = y - P * K; % 对预测的 y 值进行处理以获取正确的 y 值,这个处理通常包含了一些数学变换。
    % 使用新的 y 值来更新估计值和协方差矩阵
    x_est(t) = x_est(t) + K * (y - x_est(t)); % 用观测值更新估计值
    P_est = (eye(N) - K * P) * P_est; % 用观测噪声更新协方差矩阵
end
end

其中:

  • N是数据长度,也就是需要在卡尔曼滤波中处理的数据点数量
  • dt 是时间间隔
  • T 是总时间,也就是需要对数据进行的处理次数
  • x 是初始状态,P 是初始估计协方差矩阵,Q 是过程噪声协方差,R 是观测噪声协方差
  • K 是卡尔曼增益矩阵,它决定了如何使用观测值来更新估计值和协方差矩阵
  • x_est 是估计状态,它是在卡尔曼滤波过程中不断更新的值
  • P_est 是估计协方差矩阵,描述了估计状态的精度
  • 在循环中,首先进行更新过程,然后进行预测部分(噪声)数据加上观测值进行修正,最后使用新的观测值来更新估计值和协方差矩阵。这个过程会重复 T 次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1653762.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

线程理论篇1

本章问题:什么是线程?线程的使用场景?什么是线程池?线程池是如何工作的?线程池共享了哪些资源?线程安全代码怎么写?什么是线程安全? 什么是线程? 线程是为了提高进程的效率。进程的地址空间中保存了cpu…

紧跟生成式AI暴雨发布新时代推理服务器

近日,暴雨发布最新训推一体AI服务器,以大容量内存和灵活的高速互连选项满足各种AI应用场景,最大可能支持扩展插槽,从而大幅提升智能算力性能,以最优的性能和成本为企业的模型训练推理落地应用提供更好的通用算力。 AIG…

重学java 31.API 3.数学相关类

看似不起波澜的日复一日,会突然在某一天让人看到坚持的意义 —— 24.5.8 数学相关类 1.Math类介绍 1.概述 数学工具类 2.作用 主要用于数学运算 3.特点 a、构造方法私有了 b、方法都是静态的 4.使用 类名直接调用 static int abs(int a) ->求参数的绝对值 stat…

ChatGLM-Math:强化数学能力

大型语言模型(LLM)在文本摘要、问答和角色扮演对话等语言任务上表现出色,在数学推理等复杂问题上也具有应用潜力。 但目前提高 LLM 数学问题解决能力的方法,往往会导致其他方面能力的下降。例如RLHF的方法,虽然可以提…

软考系列必过资料分享-系统架构师-系统分析师-信息系统项目管理师

建议,写在前面 知识点是公用的,原则上不分新旧。每年会有少部分的题目切合当前时间段(也是通过旧的知识演变的) 信息系统项目管理师证书 系统架构师证书 系统分析师证书 资料分享 关注公众号 回复 信息系统项目管理师资料 即可获取信息系统项目管理师资…

翻译《The Old New Thing》 - The new scratch program

The new scratch program - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050422-08/?p35813 Raymond Chen 2005年4月22日 译注:此篇是 翻译《The Old New Thing》 - The scratch program 姊妹篇,对 scratch 程序作…

【通信】电子科协通信专题

数字通信 最直观的通信方式-基带通信 问题:①无限大的带宽②天线体积

[QTcreator]QT中一个cpp文件如何使用另一个界面的控件

在工作过程中将函数封装成一个类放入一个cpp文件中,但是里面的函数需要运用到其他界面的控件,以此记录昨天的学习。 首先明确一下我需要在vtkfuntion.cpp使用mainwindow.ui中的qvtkwidget控件 step1:更改mainwindow.h 添加需要应用的文件的头文件&…

python:画饼图

我现在因工作需要在写一篇中文文章,领导要我用python处理数据和画图,那我也刚好学习一下python画图。 import matplotlib.pyplot as plt # 饼图数据 labels [A, B, C, D] sizes [15, 30, 45, 10] # 每个部分的大小 # 绘制饼图 plt.figure(figsize(6,…

Spring Web MVC 快速入门

🎥 个人主页:Dikz12🔥个人专栏:Spring学习之路📕格言:吾愚多不敏,而愿加学欢迎大家👍点赞✍评论⭐收藏 目录 什么是Spring MVC? MVC模式介绍 ​编辑学习Spring MVC…

开源数据可视化大屏对接表单数据实践!

如果你需要一个表单系统,进行数据收集;可以使用tduck填鸭进行私有化部署,进行表单制作,完成数据收集。 在实际业务中,往往需要将收集的数据进行展示或分析;此时就可以使用表单数据推送到TReport中&#xf…

详细解读性能测试指标(性能指标、CPU、内存、负载、磁盘)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 性能测试指标是衡量系统性能的评价标准,常用的系统性…

remmina无法连接远程桌面,Remmina无法连接远程桌面的原因与解决办法

在解决Remmina无法连接远程桌面的问题时,我们需要考虑多种可能的原因,并采取相应的解决办法。以下是一些常见的原因及其对应的解决方案: 1、网络问题 原因:不稳定的网络连接或中断可能导致无法建立远程桌面连接。 解决办法&#x…

环保设备统一管理系统

在环保意识日益增强的今天,企业如何有效管理环保设备,确保其正常运行,减少环境污染,成为了一个重要议题。HiWoo Cloud平台以其独特的环保设备统一管理系统,为企业提供了一套完整的解决方案,帮助企业实现绿色…

量化地形处理

1: 量化地形切片:GDAL查询数据;CTB算法转mesh;高度图需要和周围高度图边界做高度融合,四顶点需要做平均值融合;法线想要在前端显示正确必须将mesh坐标转为4326或者3857; 这个使用开源即可:cesi…

肖特基二极管 SOD-123HE封装 散热性好

肖特基二极管发热问题,一直是众多电子工程师常讨论的话题之一。在实际应用中,肖特基二极管发热量真地不容忽视,其发热量大小和实际工作电流和压降大小有关。针对肖特基二极管发热问题,二三极管厂家东沃电子DOWOSEMI有几点建议&…

怎么编辑百度百科个人词条

辑百度百科个人词条是一个相对复杂的过程,需要遵循一定的步骤和规则。以下是百科优化网整理的编辑百度百科个人词条的步骤和注意事项。 1. 确定编辑资格 百度百科个人词条的编辑权主要赋予那些具有一定影响力的公众人物,或者是有一定“身份”的人物&…

STM32 GPIO介绍

每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。 通过软件配置寄…

idea修改maven项目名称及子模块名称

一、修改目录名称 shift F6修改目录,选择“rename module and dictionary”。![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/43efd9c6af6e43ad9656455db94b37a2.png)二、修改子项目pom的 三、修改父项目pom的 四、刷新maven项目

SpringBoot:SpringBoot:实战项目TILAS智能学习辅助系统1.3

登录认证 需求:输入登录请求服务器判断用户的用户名和密码 //控制层 PostMapping("/login")public Result login(RequestBody Emp emp);Overridepublic Result login(Emp emp) {Emp emp1 empService.selectLogin(emp);if(emp1 null){System.out.println("用…