788|0

44

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

控制之美(卷2)第六节——卡尔曼滤波器的实际仿真 [复制链接]

本帖最后由 Zhao_kar 于 2024-3-2 21:01 编辑

控制之美(卷2)第六节——卡尔曼滤波器的实际仿真

声明:

  • 本节是结合前面的理论的一个实例仿真,后续最后一节再补充一个矩阵求导的实例
  • 本节以无人机的高度观测为例展示,即为本书的代码仿真

仿真:

  • 首先状态空间方程根据之前的章节已知:Xk+1=Axk+Buk,这里不写了
  • 接着构建一个矩阵,也就是A,这个是系统矩阵A = [0 1 0; 0 0 1 ;0 0 0];
  • 然后再构建输入的,其中三个变量,本例以高度、速度、重力加速度
  • 再把过程噪声w补上,也就是最开始的方程,前面的文章提到了
  • 此时要考虑第二个测量zk,所以接下来是Hm,也就是测量矩阵,定义H_m = [1 0 0; 0 1 0; 0 0 1];
  • 采样时间设为0.1s,两个协方差分别设为
  • R_c = [1 0 0; 0 1 0; 0 0 0];
  • Q_c = [0.01 0 0; 0 0.01 0; 0 0 0];
  • 同时要换成离散系统,sys_d = c2d(ss(A,B),Ts);使用c2d函数进行转换
  • 然后设定初始值,本例为一个0,1,-10,也就是说高度0,1m/s的速度上升,加速度直接当成10
  • 然后设定输入为g,也就是加速度抵消,实则为一个匀速上升的运动
  • 接下来就是设定后验的三个参数,以及运行次数,然后跑个循环
  • 本例运行步数设定是100次,定义过程噪声协方差矩阵 Q_c 和测量噪声协方差矩阵 R_c
  • 然后是初始化,有两个
  • 初始化系统状态 x0 和后验估计 x_hat0
  • 初始化后验估计误差协方差矩阵 P0
  • 定义系统状态和测量的噪声矩阵 w 和 v
  • 然后数据是随机生成的,这个不用管
  • 定义完之后就可以跑循环仿真了,主要的过程如下:
  • 计算系统的实际状态 x 和测量值 z
  • 使用线性卡尔曼滤波器(函数 F8_LinearKalmanFilter)更新状态估计和估计误差协方差,这个实际上是作者在前面讲算法的时候的一个函数文件
  • 将系统状态、测量值、先验估计和后验估计保存到相应的矩阵中
  • 这部分的代码就不放出来了,总之可以得到一个系统,详见仿真图,通过卡尔曼滤波器的使用,可以有效地对无人机高度进行预测,并且能够减少传感器测量误差和系统噪声对预测结果的影响
  • 这里可以顺便看看工作区的变量数值,其实稍微对比一下是可以发现规律是对的,预测结果没有什么问题

     

 

此帖出自汽车电子论坛
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表