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

2023-05-16

摘自: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

阅读原文

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • PID很多是放在过程控制系统里面讲的,自动控制原理不讲

    自动控制原理讲的都是那种要建立系统方程进行分析的 包括串级PID也是过程控制系统里面讲的 你在TB搜PID出来的结果也是过程控制系统这类书 我看一本写智能车的书 十天学会智能车 后面参考的书目录就有两本过程控制系统 xff0c 说明我之前认
  • 异常检测检测之集成学习

    因为你会到最后发现每种方法有自己善于识别的异常也有不善于识别的一场 xff0c 单个算法没法尽善尽美 哪怕HTM也是如此 xff0c 而实际运维人员是用很苛刻的眼光来看待的 传统时间序列分析有他们的长处 xff0c 也有他们的短处 深度学习
  • 无论是无人机还是平衡车,姿态环的频率都是远高于外环的

    毕竟姿态环是前提中的前提 xff0c 调PID也是先调好姿态环再说 只要姿态环稳住 xff0c 其他都好说 多旋翼飞行器设计与控制 这里面说了内环的带宽比外环高4到10倍 还可以去看看之前说平衡车的角度环和速度环的这篇博文 https bl
  • 基于异质图神经网络的未知恶意程序检测

    PaperWeekly 原创 作者 xff5c 张安琪 学校 xff5c 东华大学硕士生 研究方向 xff5c 隐私保护 Security 论文标题 xff1a Heterogeneous Graph Matching Networks f
  • 无人机循迹的流程好好整理一下

    OpenMV给无人机发送的是什么信息 xff1f 无名这好像也是返回偏差和倾角 xff08 去看无名的飞控使用说明书 xff09 openmv巡线教程里也是返回偏差和倾角 xff0c 那么无人机巡线就是要对偏差和倾角进行控制了 xff0c
  • 特征提取和深度学习的KPI异常检测方法—组合模型(转载)

    摘自 xff1a https blog csdn net qq 34219959 article details 102859646 utm medium 61 distribute pc relevant t0 none task blo
  • 为什么从自动化运维到智能运维

    还有KPI量大 xff0c 异常种类复杂 xff0c 很难通过传统的基于规则的运维来弄 xff0c 很难通过有限的规则去描述了 xff0c 那就通过机器学习深度学习让它自动去发掘挖掘特征 达到百万KPI曲线一人挑的地步 所以为什么要从自动化
  • 三总线原则

    数据总线 xff0c 地址总线 xff0c 控制总线 xff0c 这是学单片机时讲的
  • 用C++写数据结构 STL!!!!!!

    我猜想一下 xff0c 用C 43 43 写数据结构 xff0c 那可能就是用面向对象的思想写了 xff0c 用类操作 还有不是任何一个数据结构都有逻辑结构 xff0c 存储结构 xff0c 操作么 xff0c 我感觉操作就对应着类里面的方
  • 我觉得你可以早点找工作面试,一方面可以倒逼自己学习,另一方面可以清楚别人考察的是什么。

    我觉得你可以早点找工作面试 xff0c 一方面可以倒逼自己学习 xff0c 另一方面可以清楚别人考察的是什么 就像复试面试 xff0c 你会发现你折腾了这么久的无人机 xff0c 花费了这么大精力的无人机 xff0c 居然根本一个问题都没有
  • 路由器开发

    路由器我看了下还是有几本专门的书讲了讲的 xff0c meybe可以像无人机一样弄透彻些 我记得华清的课里面也有谈到过路由器 xff0c 记不清好像是再驱动还是系统移植的课程里面 路由器openwrt我发现可以集成到无人机项目里面 可以看我
  • C 语言实现 FTP 服务器

    这个有专门的课程讲解我看到 xff0c 百度也能搜到不少相关的 我觉得你可以去把这个弄懂
  • 找找网络编程,多线程编程的面试题

    我看到嵌入式软件招聘里面不少要求网络编程 xff0c 多线程编程的 xff0c 我想去找找这方面的题库 xff0c 好更好地准备 这样好针对性地准备一下 xff0c 不然真的不太好准备 1
  • 关于推流软件

    他们好像就叫OBS xff0c 是开源的 xff0c 可以自己改 https www cnblogs com csuftzzk p OBS Plugins Development html linux上推流似乎是可以用ffmpeg http
  • 复旦大学邱锡鹏教授团队:Transformer最新综述

    PaperWeekly 原创 作者 王馨月 学校 四川大学本科生 研究方向 自然语言处理 Transformer 在自然语言处理 计算机视觉 音频处理等许多人工智能领域都取得了巨大的成功 xff0c 也吸引了学术界和行业研究人员的大量兴趣
  • 通过子网掩码判断两个IP地址是否在同一子网中

    IP地址分为两部分 xff0c 网络部分和主机部分 xff0c 子网掩码就是用来给你指明哪些是网络部分 xff0c 哪些是主机部分 xff0c 如果网络部分相同 xff0c 那主机就在同一网络里 一个IPv4地址 xff0c 由32位二进制
  • 拉流软件

    当初OZO电脑端用的VLC 手机端用的insta360player 媒体播放器三大底层架构 MPC MPLAYER VLC 下面截图自 FFmpeg从入门到精通 播放VR视频当时好像用的暴风影音 1
  • 当自己选导师,当自己招聘,能感受到很多东西。

    当自己选导师的时候很多东西就能体会到了 xff0c 这跟面试一样 xff0c 你从面试官的角度 xff0c 很多就合情合理了 老师选学生肯定也是愿意选做过自己领域相关项目的学生嘛 xff0c 你千万不要这么想 xff0c 就是一味表现自己很
  • 直立车模控制中三种滤波算法简单分析

    摘自 xff1a https mp weixin qq com s WbCh0NFAnsf9y2blQenf7g 让我想起余义的一篇文章也是说到平衡车有三种滤波 xff0c 我想和卓晴说的是一样的吧 直立车模控制中三种滤波算法简单分析 原创
  • 直立车模控制中三种滤波算法简单分析(清华卓晴)

    摘自 xff1a https mp weixin qq com s WbCh0NFAnsf9y2blQenf7g 让我想起余义的一篇文章也是说到平衡车有三种滤波 xff0c 我想和卓晴说的是一样的吧 https blog csdn net