bigbing 发表于 2023-6-23 01:40:09

基于FPGA设计卡尔曼滤波器

公式写起来太不方便了,所以写在word,用截图的形式呈现出。本文主要内容分成6部分:
[*]卡尔曼滤波器简介
[*]卡尔曼滤波器基本原理
[*]简化卡尔曼滤波器公式
[*]基于MATLAB仿真
[*]verilog实现卡尔曼滤波器算法
[*]基于Modelsim仿真
1. 卡尔曼滤波器简介在产生、传输和接收信号的过程中,由于外界环境的不确定性,信号很容易受到干扰,而排除这些干扰的过程,称为滤波。由Wiener提出维纳滤波理论,最初应用在火炮的弹道估计。它设计滤波器的方法为分解功率谱,因为被Wiener所提出的Wiener方程的计算量超出当时计算机的运算水平,对计算机的存储性能要求极高,无法应用到工程领域,限制了Wiener滤波算法的发展。于1979年,现代Wiener滤波算法由捷克斯洛伐克国籍的科学家V.Kucere所提出,可以真正的将Wiener算法设计成滤波器,用于处理非平稳信号和多维信号,但是计算量仍然过大,而且是非递归结构,无法满足实际需求。由于递归算法可以有效的解决运算速度和内存问题,在此出发点上,具备离散随机特性的卡尔曼滤波算法被美国科学家R.E.Kalman所提出,也称KF算法。在接下来的第二年,Kalman与R.S.Bucy两位数学家共同完善卡尔曼滤波算法,将原来应用到离散领域的拓宽到连续时间系统,至此,卡尔曼滤波算法得到了完善。KF滤波算法优于Wiener滤波算法主要有两个方面,第一,KF滤波算法基于时域估计算法,并且具备状态空间与滤波理论相结合的思想的数据处理方式,可以对非平稳信号、多维信号以及时变系统进行数据处理。第二,KF算法采用递推形式,极大的提升了计算效率,降低了对计算机的存储能力的要求,可以真正的设计出滤波器原型。在接下来的几十年里,卡尔曼滤波理论快速发展,在技术领域有许多的应用,如信号处理及计量经济学、机器人运动规划及控制、轨迹最佳化和中轴神经系统运动控制建模等。卡尔曼滤波主要分为两步骤,分别为预测和更新,预测主要包括预测前一时刻的状态以及前一时刻的协方差矩阵;更新过程主要包括测量残差、测量残差的协方差和最优卡尔曼增益,根据更新的三个变量,来进一步更新本时刻状态值以及本时刻的协方差矩阵。上面的过程正是体现卡尔曼滤波器的递归特性。2. 卡尔曼滤波器基本原理https://pic2.zhimg.com/v2-f548dc22656bd0147a078147ea318505_b.jpghttps://pic2.zhimg.com/v2-f548dc22656bd0147a078147ea318505_b.jpghttps://pic1.zhimg.com/v2-0b667f67fb7214b110d74fed4716ab78_b.jpg
https://pic2.zhimg.com/v2-c0e5dd2d828945a0993f899f14c40e4d_b.pnghttps://pic2.zhimg.com/v2-2c55556b3b47a6cf99c5d8fc3f404121_b.jpghttps://pic2.zhimg.com/v2-4688f065914a40031207ee2ef4277d15_b.jpghttps://pic2.zhimg.com/v2-77aee289bc768164442a118501533335_b.pnghttps://pic4.zhimg.com/v2-f1778267c0b0bbee6ecc9cf311933287_b.jpg3. 简化卡尔曼滤波器公式https://pic2.zhimg.com/v2-04ef5f484c12b71a9370df498917b81d_b.jpg4. 基于MATLAB仿真https://pic2.zhimg.com/v2-8601c34fbbc47484267df5cb26dd65f9_b.jpg5. verilog实现卡尔曼滤波器算法整体框架如图(根据简化后的卡尔曼滤波器进行编写,包含卡尔曼滤波器五个公式的数据流向):https://pic2.zhimg.com/v2-13d35f754d764484589eb13f9e5c6bb5_b.jpg(1)Kalman_1https://pic3.zhimg.com/v2-0a1ef563efc9dedd3f2d3f74928d4afe_b.jpghttps://pic3.zhimg.com/v2-6baf1fbb2a7034275cbaf37116b130ce_b.jpg(2)Kalman_2_3https://pic1.zhimg.com/v2-1a0f075baf06bde4af846e0cac35d7c0_b.jpghttps://pic1.zhimg.com/v2-2385502da0a6b3998675b11b0c688f00_b.jpghttps://pic1.zhimg.com/v2-b67cf52d3a31c8ca050298ba4ff4c5c8_b.jpg(3)Kalman_4_5https://pic3.zhimg.com/v2-0249cee858846824162b1609d7ea04d2_b.jpghttps://pic1.zhimg.com/v2-f3b05d9cca78c14bfe66378e57223018_b.jpghttps://pic3.zhimg.com/v2-3d0f4b3d8f8d022dc88228ca5feef85e_b.jpg其它的模块不一一贴出,可以点击下面链接进行下载,包括卡尔曼滤波算法推导和Verilog代码源文件。卡尔曼滤波算法与FPGA实现方法.rar-电信文档类资源-CSDN下载​download.csdn.net/download/qq_43017318/21406120https://pic1.zhimg.com/v2-2d848d0f3929686dda9eda7a557482e8_120x160.jpg
https://pic1.zhimg.com/v2-020d7dd5561f7947cf2efed17b0fa440_b.png源文件:https://pic2.zhimg.com/v2-0f426b99e9c17ea7d466266b7c05dc31_b.jpg仿真文件:https://pic4.zhimg.com/v2-bb73246078de627629ff1a8b94dc4b5f_b.png6. 基于Modelsim仿真仿真时直接tb_jingdu.v即可,图中的in_date是输入带有高斯白噪声的数据,通过Kalman_ctrl.v输入我们需要仿真的数据;date是滤波后的数据。https://pic2.zhimg.com/v2-cc6ef69b09a28bd3f861b06d1b6d7d05_b.jpghttps://pic4.zhimg.com/v2-0c31b6f63a29473947ac4774adf0c71f_b.jpg以上阐述的内容有问题可以评论或私信我,欢迎交流~
页: [1]
查看完整版本: 基于FPGA设计卡尔曼滤波器