卡尔曼滤波器(二):Simulink卡尔曼滤波器模块使用

news/2024/9/24 11:22:30/

观看MATLAB技术讲座笔记,该技术讲座视频来自bilibili账号:MATLAB中国。

本节在Simulink中用卡尔曼滤波器来滤除传感器噪声,准确估算单摆摆角。

一、单摆模型简介

不考虑摩擦时,下图所示的单摆力学平衡方程为:
m l 2 d 2 θ d t 2 + m g l s i n θ = τ ml^2\frac{d^2\theta}{dt^2}+mglsin\theta=\tau ml2dt2d2θ+mglsinθ=τ
在这里插入图片描述
简单做变化为:
d 2 θ d t 2 + g l s i n θ = 1 m l 2 τ \frac{d^2\theta}{dt^2}+\frac{g}{l}sin\theta=\frac{1}{ml^2}\tau dt2d2θ+lgsinθ=ml21τ
当摆角 θ \theta θ较小时,有 s i n θ ≈ θ sin\theta\approx\theta sinθθ,系统近似为线性系统。用状态空间形式表示这个线性系统,系统输入 u = τ u=\tau u=τ,状态 x = [ θ , θ ˙ ] T x=[\theta,\dot{\theta}]^T x=[θ,θ˙]T,测量量 y = θ y=\theta y=θ。则有:
x ˙ = A x + B u \dot x=Ax+Bu x˙=Ax+Bu
y = C x + D u y=Cx+Du y=Cx+Du
A = [ 0 1 − g l 0 ] A=\begin{bmatrix} 0 & 1 \\ -\frac{g}{l} & 0 \\ \end{bmatrix} A=[0lg10]
B = [ 0 1 m l 2 ] B=\begin{bmatrix} 0\\ \frac{1}{ml^2}\\ \end{bmatrix} B=[0ml21]
C = [ 1 0 ] C=\begin{bmatrix} 1 & 0\\ \end{bmatrix} C=[10]
D = 0 D=0 D=0
使用预制的单摆模块,在这里下载模型和代码。模型如下图所示。

在这里插入图片描述
模型有两个输入,第一个为施加的扭矩,将其设置为0。第二个输入为过程噪声,在这里假设其仅作用于角加速度。过程噪声的协方差Q在脚本中定义。
在这里插入图片描述
过程噪声参数设置如下:
在这里插入图片描述
双击单摆模块设置其状态初始值:
在这里插入图片描述
设置一个较小的初始角度,使其近似为线性系统。

二、线性卡尔曼滤波器使用

单摆模块输出真实摆角,让其与测量噪声相加得到测量值。然后用控制系统工具箱的卡尔曼滤波器模块来输出最佳状态估算值。
在这里插入图片描述
其中,测量噪声参数设置如下:
在这里插入图片描述

卡尔曼滤波器参数设置如下,设置初始状态与真实初始状态略有差异,观察卡尔曼滤波器在初始状态不确定时会不会收敛。由于假设过程噪声仅作用于角加速度,故Q的设置如下。交叉协方差矩阵N表示过程噪声和测量噪声的相关性,这里为0,即不相关。
在这里插入图片描述
运行以下脚本来提供参数:

matlab">g = 9.81;
m = 1;
L = 0.5;A = [0, 1; -g/L, 0];
B = [0; 1/(m*L^2)];
C = [1, 0];
D = 0;Q = 1e-3;
R = 1e-4;
Ts = 0.01;

运行Simulink仿真:
在这里插入图片描述
可见,虽然初始条件与模型本身略有不同,卡尔曼滤波器在大约5s处收敛,有效滤除了测量噪声,提供了准确的状态估计值。

三、非线性卡尔曼滤波器使用

当初始角度较大时,上述KF无法准确估算状态值,需要使用非线性卡尔曼滤波器…待续


http://www.ppmy.cn/news/1435046.html

相关文章

TypeScript基础入门(一、常用类型)

目录 第一章 前言 1.1 介绍TypeScript 1.2 TypeScript相比Js的优势 1.3 使用TypeScript的准备工作 第二章 TypeScript的数据类型 2.1 TypeScript的常用类型 2.1.1 概述 2.1.2 TS使用JS基本数据类型 2.1.2.1 number 2.1.2.2 string 2.1.3.3 boolean 2.1.2.4 null 2…

借鉴行业巨头,构建策划知识体系,助你成为下一个营销天才

策划是一门理论与实践结合的学问,而策划人需要将理论和实践有机的结合起来,才能实现策划理论知识与实际操作相结合的目的。 很多策划人并不会系统的学习策划知识体系,只是将学到的理论知识碎片化的了解一下,如果没有完整的理论体…

数据结构与算法-砖墙问题

砖墙问题 你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和相等。 你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过…

使用 hiredis 客户端库封装一个简单的 Redis 类

目录 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 封装 Redis 的 C 类的过程可以分为以下几个步骤: 一个完成发布订阅功能的 Redis 类 思考一下redis编程的整个过程。 我们作为redis客户端。需要跟redis服务器交互。 那说白了…

QTableView获取可见的行数

场景 当我们需要实时刷新QTableView时&#xff0c;而此时tableView的数据量较大&#xff0c;如果全部刷新显然不合理&#xff0c;如果可以只对用户看的到的数据进行刷新那就最好了&#xff0c;经过一番摸索找到了几种方式&#xff0c;可供参考 代码 方法1 QVector<int>…

Syncovery for Mac:高效文件备份和同步工具

Syncovery for Mac是一款专为Mac用户设计的文件备份和同步工具&#xff0c;凭借其高效、安全和易用的特点&#xff0c;深受用户好评。 Syncovery for Mac v10.14.2激活版下载 该软件具备强大的备份功能&#xff0c;支持多种备份方案和数据格式&#xff0c;用户可以根据需求轻松…

简单工厂、工厂方法、抽象工厂对比

简单工厂、工厂方法和抽象工厂是三种常见的工厂设计模式&#xff0c;它们在软件设计中各有其独特的应用场景和优缺点。因为三种设计模式都属于工厂模式&#xff0c;在实际应用中可能存在误用的场景&#xff0c;这里对其做下对比&#xff0c;以便更好的理解这三种设计模式。 简…

【期末复习向】智能信息系统前4章梳理

第四章 不确定性推理 [了解即可]4.1 不确定性概述 不确定性推理概念 所谓推理&#xff0c;就是从已知事实出发&#xff0c;运用相关的知识&#xff08;或规则&#xff09;逐步推出结论或者证明某个假设成立或不成立的思维过程。 不确定性方法分类 1.模型方法 a&#xff0…