摘自:https://mp.weixin.qq.com/s/WbCh0NFAnsf9y2blQenf7g

让我想起余义的一篇文章也是说到平衡车有三种滤波,我想和卓晴说的是一样的吧。

https://blog.csdn.net/u011992534/article/details/53557984

直立车模控制中三种滤波算法简单分析

原创 卓晴 TsinghuaJoking 今天

前几天,有参加智能车竞赛的同学在公众号上询问一个关于直立车模控制中角度融合算法的问题。感觉这是所有初次准备智能车模竞赛的同学都会碰到的问题。

卓大大,请问您可以针对卡尔曼滤波、互补滤波、清华滤波的原理与异同做一个推送吗?最近在查阅相关的资料学习滤波算法,感觉好难理解呀/::<

▲ 平衡双轮自行车

01惯性传感器


在车模直立控制中被广泛使用的惯性传感器通常是由加速度计和陀螺仪组成。价格比较便宜的惯性测量传感器,输出的信号往往包含有各种噪声。陀螺仪输出车模倾角

的变化率(角速度)信号。它通常包括缓慢变化的偏移量和高斯白噪声

其中偏移量的导数是随机的,通常描述为一个白噪声信号:

在重力场中,加速度传感器正交的两个输出,通过求反正切可以传感器相对于重力加速度的倾角。但传感器的运动所产生的加速度也会叠加在输出信号中,进而产生干扰信号。$$\theta _M  = \theta T  + n\theta$$

▲ 采集数据及其显示

通过滤波器算法将陀螺仪和加速度计所得到的角度信息进行融合,最大限度抑制噪声对测量角度的影响。

前面提问中所提到的三种滤波算法,分别利用传感器噪声不同特点来抑制噪声的影响。看似这些方法原理相差很大,借助于以下条件,能够便于我们进行分析和比较:

  • 这三种算法都属于线性滤波算法;

  • 在稳态下,可以借助于输入输出之间的传递函数来比较算法的特性;

  • 针对车模直立控制,所涉及到的角度只有一个;

02三种滤波算法


1.参考滤波方案

在2012年直立车模组别首次引入智能车竞赛的,竞赛秘书处给出了一个 参考设计方案[1] 。它是在对陀螺仪信号进行积分的基础上,使用加速度计得到的角度信号对输出进行负反馈调节,从而抑制积分中存在的发散问题。下图是参考设计方案中相应的原理框图和程序实现。

▲ 参考滤波方案软件实现

加速度传感器的Z周输出电压,经过偏移量,比率调整之后,形成算法的输入:

陀螺仪的输出电压经过偏移量,比率调整之后,形成算法输入:

算法的输出为角度:

(g_fCarAngle)。

▲ 参考滤波方案的核心算法

根据参考程序代码,算法可以使用迭代方程描述为:

输出角度

其中:

通过上面的化简公式可以看出,实际上角度输出信号是陀螺仪和加速度计信号经过一级低通滤波后叠加在一起,所以陀螺仪和加速度计输出信号中如果存在直流分量的漂移,都会引起输出角度信号的零点漂移。

2. 互补滤波器

互补滤波器的基本结构如下图所示。假设两个测量信号

都包含了实际信号以及噪声。在信号中的噪声主要分布在高频,而在信号

中的噪声主要分布在低频。

代表着低通滤波器,那么对应的就是互补的高通滤波器。它们分别提取

中的低频和高频成分,然后叠加在一起。

▲ 左:基本互补滤波器的结构。右:基本结构的变形,只对噪声进行低通滤波

在上图右边给出了互补滤波器基本结构的恒等变形。将

与相减之后,就剩下了高频噪声与低频噪声相减。再经过低通滤波器,就剩下去抵消

中的低频噪声了。

只所以讨论这个变形,就是因为前面参考方案就是变形的互补滤波器。将陀螺仪信号

的积分看做带有低频噪声(积分漂移信号)的观察信号。它与加速度计信号(带有高频运动噪声)相减,后面有比例、积分组成的负反馈组成一个一阶低通滤波器,滤波之后与

叠加,形成最后的输出信号。

▲ 参考滤波方案本质上是变形后的互补滤波器

通过上面讨论可以看出,如果在互补滤波器中的低通滤波器的阶次为一阶的话,那么就和前面的参考方案是一致了。

在实际应用中,可以增加滤波器的阶次,来提高角度计算的精度。比如在陀螺仪输入信号中,再增加一级高通滤波,可以进一步抑制陀螺仪信号中的直流分量的漂移。

3. 卡尔曼滤波

使用卡尔曼滤波的方法来融合来自陀螺仪和加速度计的信号,不在频率范围内考虑它们各自噪声的特点,而是将这两个信号从功能上分为两类。陀螺仪信号

是过程驱动变量,它激动系统状态(车模倾角,角速度)发生变化;加速度计得到的角度

则是观察变量,是来修正系统状态。。

选择车模倾角

和陀螺仪偏变化量

作为系统状态变量,得到离散系统状态方程为:

令:

则对应卡尔曼滤波方程为:

在这个过程中,如果系统噪声协方差矩阵

以及观测噪声方差始终为常量。那么由上面方程2、3、5迭代之后,误差协方差矩阵和卡尔曼增益矩阵

就会逐步收敛到一个常量。

在下面参数下,经过迭代1000次之后,卡尔曼增益矩阵参数

的变化曲线。可以看去它逐渐曲线与常数

▲ K参数迭代数值

为常量的时候,对方程1、4再联立起来,就形成关于状态变量的差分方程。考虑到,都比较小,将化简过程中涉及到这些小量乘积(二阶小量)都省略掉,那么最终可以将输出角度与输入

之间的差分方程化简为:

其中

分别是

的z变换。对照上面简化的输入输出之间的关系与前面参考方案中对应的方程,可以看到卡尔曼滤波器本质上和互补滤波器是相同的。如果不省略那些参数小的项数,滤波算法就变成二阶的互补滤波器的形式了。

观察噪声

来自于加速度计传感器,系统内部噪声来自于陀螺仪。当远远大于的时候,所计算出的卡尔曼滤波增益

的数值比较小,这样才能够进行上述的算法简化。

03算法关系


可以看出。当所使用的惯性传感器,陀螺仪的噪声远远低于加速度传感器的噪声时,低通滤波器的阶次取一阶滤波器的情况下,三种滤波器的算法效果在平稳状态下是相同的。

从原理上,参考方案与互补滤波器比较接近,它们是利用不同传感器噪声在频率上的差别抑制噪声的。卡尔曼滤波器则根据传感器对倾角影响的机制不同,通过构造系统状态变量将信息进行融合。

在车模直立控制应用中,互补滤波器和参考方案所需要的计算量小,参数只有滤波时间常数

,调试相对比较简单。但该算法对于陀螺仪工作点的漂移无法抑制,使用时,可以对陀螺仪信号再通过一个高通滤波器,消除陀螺仪信号工作点变化对输出角度的影响。

卡尔曼滤波器计算量相对较大,需要MCU的算力强才行。由于卡尔曼滤波器内部变量包括有对陀螺仪工作点的估计,所以陀螺仪的工作点的缓慢变化不会影响计算角度的变化。

▲ RECORD1数据

在使用滤波器算法的时候,都会涉及到算法的初始状态的设置问题。对于互补滤波器相对比较简单,将内部积分累加变量初始化为0便可以适应大部分情况。对于卡尔曼滤波器,它的参数矩阵

则需要选择恰当的初始值,以使得算法尽快达到收敛的目的。比如可以将算法收敛后的

矩阵的值作为程序下一次运行的初始值,这样就可以更快使得算法进入稳定状态。

此外,需要根据传感器输出信号的实际情况,合理的确定卡尔曼滤波器中的

参数,这样才能够在算法的收敛以及滤波效果方面取得良好的平衡。

关于这三种算法在理论上的分析就到这里,它们在实际控制中的效果以后在给出。

参考资料

[1]

参考设计方案: https://wenku.baidu.com/view/74481d2ff5335a8102d220b5.html

阅读原文

直立车模控制中三种滤波算法简单分析(清华卓晴)相关推荐

  1. 对比直立车模控制中的互补滤波、Karlman滤波和参考滤波方案

    前几天,有参加智能车竞赛的同学在公众号上询问一个关于直立车模控制中角度融合算法的问题.感觉这是所有初次准备智能车模竞赛的同学都会碰到的问题. 卓大大,请问您可以针对卡尔曼滤波.互补滤波.清华滤波的原理 ...

  2. 数学建模matlab 优化模型,数学建模实验中三种优化模型的分析

    1. 引言 在20世纪中期,数学建模 [1] 就在欧美国度首次被发现,而在中国的呈现稍晚些,但是大约在80年代初始咱们国家也就有了.它的核心即是创立数学模型 [2] ,使得问题获得最优化的解决.而数学 ...

  3. 三种滤波算法针对不同噪声处理

    平均值滤波测试 中值滤波测试 卡尔曼滤波测试 1.生成噪声数据 (1)高斯噪声,由测量误差产生的,传输过程中产生的,高斯噪声服从高斯分布,0处概率最大,越到两边越低 ,期望值为0 2.椒盐噪声(脉冲噪 ...

  4. 9. PKI - 三种密钥交换算法详解(RSA DHE ECDHE)及他们在SSL/TLS协议中的应用

    9. PKI - 三种密钥交换算法详解(RSA& DHE& ECDHE)及他们在SSL/TLS协议中的应用 RSA密钥交换算法 DHE密钥交换算法 ECDHE密钥交换算法 参考 密钥交 ...

  5. 常用的三种线性模型算法--线性回归模型、岭回归模型、套索回归模型

    常用的三种线性模型算法–线性回归模型.岭回归模型.套索回归模型 线性模型基本概念 线性模型的一般预测模型是下面这个样子的,一般有多个变量,也可以称为多个特征x1.x2.x3 - 最简单的线性模型就是一 ...

  6. Xdelta3 bsdiff Courgette三种差分算法比较

    今天介绍常用的三种差分算法,分别是Xdelta3 bsdiff Courgette. Xdelta3 官网地址: http://xdelta.org 源码地址:https://github.com/j ...

  7. 回声消除中的自适应滤波算法综述

    作者:凌逆战 博客园地址:https://www.cnblogs.com/LXP-Never/p/11773190.html 自适应回声消除原理 声学回声是指扬声器播出的声音在接受者听到的同时,也通过 ...

  8. 在java中三种编程思想(OOA,OOD,OOP)

    在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...

  9. zynq学习03 zynq中三种实现GPIO的方式

    http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...

最新文章

  1. linux上面的sz,rz命令与ssh的配合
  2. LeetCode 873. 最长的斐波那契子序列的长度 题目详解
  3. mybatis04--Mapper动态代理实现
  4. Microsoft将在UWP上支持React Native,同时为VS Code添加工具软件
  5. flash影响中文输入
  6. 头像星球html,HTML5 Canvas 星球大战黑武士头像
  7. idea 2020版的Default Setting
  8. 巧用 PHP 数组函数 1
  9. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_6 mybatis中的事务原理和自动提交设置
  10. ajax返回的java list_ssm+ajax异步请求返回list遍历
  11. 随机信号功率谱估计方法matlab仿真
  12. PDF转CAD格式步骤再简单
  13. 【SharePoint】通过CAML Query查询SharePoint User or Group列(人员和用户组字段)
  14. 90后新晋父母的根据地——万物心选
  15. Mybatis新增获取Id
  16. ubuntu16.04版本系统清理和美化
  17. 电脑使用android手机摄像头,电脑怎么使用安卓手机摄像头 电脑使用手机摄像头的方法...
  18. Docker+Ovs构建SDN网络
  19. 日志瘦身神操作:从5G优化到1G到底是怎么做到的!(荣耀典藏版)
  20. 盛大退市背后的故事:华尔街不懂陈天桥

热门文章

  1. 关于各大输入法词库格式之间的转换
  2. 《PyTorch深度学习实践》
  3. Lync 2010与Lync 2013共存及迁移部署参考v1.0
  4. 无名(有名)管道,读写文件内容范例
  5. 机智云移植STM32标准库
  6. node.js实现编码转GBK转UTF8,中文乱码方案!!!
  7. ubuntu安装libpng12-0:i386失败问题解决
  8. 电脑桌面一刷新图标就空出来一个
  9. 在线模拟c语言编程,c语言模拟编程学习软件v2019
  10. PGS,史上最大的超级玛丽来了