IMU 互补滤波器


本文主要介绍《Keeping a Good Attitude: A Quaternion-Based Orientation
Filter for IMUs and MARGs》一文的互补滤波算法

论文下载地址https://www.mdpi.com/1424-8220/15/8/19302,文中带了基础知识的讲解,比较全面。
如果下载不到,可尝试使用https://download.csdn.net/download/weixin_41469272/15005220

源代码使用介绍:http://wiki.ros.org/imu_tools
源代码(C++)地址:https://github.com/ccny-ros-pkg/imu_tools

1 算法介绍

使用imu数据,解析获得姿态角。作者是基于四元数的解析运算。
算法主要思路:使用陀螺仪输出的角加速度,积分获得角度。然后通过加速度计的输出,修正该角度的滚转角和俯仰角;最后通过磁力计修正偏航角。
在这里插入图片描述

算法框图:

  1. 当imu数据只有三轴加速度计和3轴陀螺仪,即输出只有3轴线加速度和3轴角速度
    在这里插入图片描述
  2. 当imu数据只有三轴加速度计、3轴陀螺仪、以及磁力计
    在这里插入图片描述

2 算法实现

2.1 陀螺仪角速度预积分

本文一律使用四元数来表述旋转,离散系统下的第k时刻的姿态角四元数可通过下式计算获得:
G L q w , t k = G L q t k − 1 + G L q ˙ w , t k Δ t ^L_Gq_{w,t_k}= ^L_Gq_{t_{k-1}} + ^L_G\dot q_{w,t_k} \Delta t GLqw,tk=GLqtk1+GLq˙w,tkΔt
其中,G代表世界坐标系,L代表当前坐标系(body坐标系)
G L q w , t k ^L_Gq_{w,t_k} GLqw,tk乘以一个向量,可将该向量从世界坐标系旋转到当前坐标系。
G L q ˙ w , t k ^L_G\dot q_{w,t_{k}} GLq˙w,tk表示k时刻时,四元数的导数。

四元数的导数计算公式:
在这里插入图片描述
使用前向差分计算 G L q ˙ w , t k ^L_G\dot q_{w,t_{k}} GLq˙w,tk
在这里插入图片描述
圈乘的公式定义:
在这里插入图片描述

将圈乘化为普通的点乘运算:
在这里插入图片描述
在这里插入图片描述

2.2 加速度计线加速度修正

使用2.1角速度得到的 G L q w , t k ^L_Gq_{w,t_k} GLqw,tk,将3轴线加速度转换到世界坐标系下,利用转换后的世界坐标系下的加速度(合加速度单位化为1),与真值 [ 0 , 0 , 1 ] T [0,0,1]^T [0,0,1]T(重力加速度)对比,得到 Δ q a c c \Delta q_{acc} Δqacc

由于利用3轴线加速度数据,只能计算出滚转角及俯仰角,因此 Δ q a c c \Delta q_{acc} Δqacc只包含滚转角和俯仰角的修正。

因为偏航角,不会改变加速度计的读数,详见https://www.zhihu.com/question/68156189解释。

  • 利用陀螺仪得到的 G L q w {^L_Gq_w} GLqw,将 L a {^La} La转换到世界坐标系下:
    R ( L G q w ) L a = G g p = R ( G L q w ∗ ) L a R(^G_Lq_w){^La}={^Gg_p}=R(^L_Gq^*_w){^La} R(LGqw)La=Ggp=R(GLqw)La
    与该文章保持一致, G L q w ∗ {^L_Gq^*_w} GLqw表示 ( L G q w ) (^G_Lq_w) (LGqw)反变换四元数。

  • 将第一步得到的世界坐标系下加速度的估算 G g p {^Gg_p} Ggp,和实际的重力加速度作对比。计算出 G L q w {^L_Gq_w} GLqw的误差四元数:
    在这里插入图片描述
    R ( q ) R(q) R(q)表示四元数q对应的旋转矩阵,具体公式如下:
    在这里插入图片描述
    整理得:
    在这里插入图片描述
    关于四元数求解,上述方程为欠定方程,作者认为,上述方程有唯一的滚转角和俯仰角,但是任意的偏航角,为得到确定的解,因此,作者令 Δ q a c c = 0 \Delta q_{acc}=0 Δqacc=0,最后解得:
    在这里插入图片描述
    该解有一个奇点,当 g z = − 1 g_z=-1 gz=1,由于 g z g_z gz接近1,因此这个解可以使用,如果更严格的公式,需使用文章中的公式(25)分段解。
    在这里插入图片描述

  • 加速度计解算四元数修正
    由于加速度计含有高频噪声,尤其是在高动态情况下,加速度计会受其他外力的影响,因此,需要对该解算进行滤波:
    作者通过在0值四元数和 Δ q a c c \Delta q_{acc} Δqacc之间线性插值并标准化,得到最后的修正四元数:
    Δ q 0 a c c > ϵ \Delta q_{0acc}>\epsilon Δq0acc>ϵ时,即旋转角度接近0时,使用线性插值法如下:此时在这里插入图片描述
    在这里插入图片描述
    Δ q 0 a c c < = ϵ \Delta q_{0acc}<=\epsilon Δq0acc<=ϵ时,使用球面插值法,如下:
    在这里插入图片描述
    其中: q I q_I qI为旋转角为0的四元数
    在这里插入图片描述
    其中的 α \alpha α值,需要根据物体的高动态情况来做调整。
    1)当物体运动处于运动高动态时,加速度计的输出就不够准确,但是陀螺仪的输出所受物体高动态的镜像较小,因此高动态时,增大陀螺仪角度的权重,减少加速度计的影响。即使 α \alpha α接近0。
    2)当物体长时间静止时,陀螺仪的静差等会产生累积误差,但是加速度计对角度的计算在物体静止时,比较准确,因此,需要增大加速度计计算的角度影响,即使 α \alpha α接近1。
    α \alpha α接近1,采用加速度数据计算的角度。
    α \alpha α接近0,采用陀螺仪数据得到的角度。
    这里的高通和低通的概念并不明显。
    通过以下方法计算 α \alpha α
    在这里插入图片描述
    其中, ∣ ∣ L α ~ ∣ ∣ ||^L \widetilde{\alpha} || Lα ∣∣表示物体加速度总和。 e m e_m em越大,表明除重力加速度之外,物体受的其他外力越大,加速度结果得到的角度不准确。此时:
    在这里插入图片描述
    α ‾ \overline{\alpha} α为常数项, f ( e m ) f(e_m) f(em)为gain factor。f函数:在这里插入图片描述

  • 叠加 Δ q ^ a c c \widehat{\Delta q}_{acc} Δq acc
    在这里插入图片描述
    关于普通线性插值和球面插值的区别:也可参考四元数球面插值
    在这里插入图片描述

2.3 磁力计修正

由于加速度计只能修正滚转角和偏航角,采用磁力计修正偏航角。
磁力计的输出可以理解为磁线与机体坐标系3轴夹角的表彰或者投影。

  • 利用线加速度修正后得到的 G L q ′ {^L_Gq'} GLq将磁力计数据转换到中间坐标系下:
    该中间坐标系与世界坐标系z轴一致,但是x,y轴不确定(因为经过加速度计不能修正偏航角)。
    在这里插入图片描述
  • 再计算 Δ q m \Delta q_m Δqm使 l l l可以转到世界坐标系下,其中我们定义世界坐标系的 x x x轴指向北极,即,世界坐标系下的磁极线处在xz平面上,y轴上数据为0。得:
    在这里插入图片描述
    世界坐标系与中间坐标系之间转换只差偏航角运动。因此,令:
    在这里插入图片描述
    整理得:
    在这里插入图片描述
    解得:
    在这里插入图片描述
    *修正加速度修正后的姿态,加入偏航角修正:
    在这里插入图片描述

3 其他算法

其实上述方法个人测试挺实用的,但是文中对互补滤波的部分并不明显。有其他互补滤波的算法,通过过滤加速度计的高频干扰和陀螺仪的低频干扰,最后叠加得到姿态角。
原理解释:

  • 加速度计对加速度比较敏感,取瞬时值计算倾角误差比较大;加速度计测倾角,其动态响应较慢,在高频时信号不可用,所以可通过低通抑制高频;

  • 陀螺仪积分得到的角度不受加速度的影响,但是随着时间的增加积分漂移和温度漂移带来的误差比较大。陀螺响应快,积分后可测倾角,不过由于零漂等,在低频段信号不好。

  • 互补滤波就是在短时间内采用陀螺仪得到的角度做为最优,定时对加速度采样来的角度进行取平均值来校正陀螺仪的得到的角度。就是,短时间内用陀螺仪比较准确,以它为主;长时间用加速度计比较准确,这时候加大它的比重。
    加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号。
    通过高通滤波可抑制低频噪声。将两者结合,就将陀螺和加表的优点融合起来,得到在高频和低频都较好的信号,互补滤波需要选择切换的频率点,即高通和低通的频率。
    鉴于加速度计低频特性比较好,因为加速度的角度可以直接算出来,没有累积误差,所以长时间后也比较准。而陀螺仪长时间后由于积分误差的累加,会造成输出误差比较大,甚至无法使用。所以用互补滤波法根据他们的特性取长补短进行姿态解算,每过一段时间就让加速度计去校准一下陀螺仪。互补滤波就是在短时间内采用陀螺仪得到的角度做为最优值,定时对加速度采样来的加速度值进行取平均值来校正陀螺仪的得到的角度。短时间内用陀螺仪比较准确,以它为主;长时间用加速度计比较准确,这时候加大它的比重,这就是互补了,不过加速度计要滤掉高频信号,陀螺仪要滤掉低频信号,互补滤波器就是根据传感器特性不同,通过不同的滤波器(高通或低通,互补的),然后再相加得到整个频带的信号。互补是给他们不同的权重加权求和。–来自参考链接3

互补滤波器:
在这里插入图片描述
加速度计数据输入给低通滤波,当输入频率大于截止频率 1 / τ 1/\tau 1/τ时,输出幅值大幅度减少,相位延迟增大;陀螺仪数据输入给高通滤波,当输入频率小于截止频率 1 / τ 1/\tau 1/τ时,输出幅值大幅度减少,相位超前;看Bode图示例: τ = 1 \tau=1 τ=1,红线为低通滤波器,黄线为高通滤波器。
trick:一阶高通滤波分子有s,一阶低通滤波分子无s,因为有s会超前相位,增大幅值。
在这里插入图片描述
以上部分来自参考链接1

参考链接
https://zhuanlan.zhihu.com/p/108101458
https://blog.csdn.net/Gen_Ye/article/details/52522721?locationNum=10
https://blog.csdn.net/superrunner_wujin/article/details/55809648

  • 8
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个企业Spark案例是关于出租车轨迹分析的。通过使用Spark技术,可以对出租车的轨迹数据进行处理和分析,从而得出有关出租车行驶路线、速度、拥堵情况等方面的信息。这些信息可以帮助企业优化出租车调度和路线规划,提高出租车服务的效率和质量。同时,这个案例也展示了Spark在大数据处理和分析方面的强大能力,为企业提供了更高效、更准确的数据分析解决方案。 ### 回答2: 出租车轨迹分析是一种典型的企业Spark案例,它运用大数据技术对城市出租车运行轨迹进行分析,旨在更好地了解城市交通流向、拥堵情况、客流量等,为城市规划和交通管理提供决策支持。 该系统的数据来源主要是出租车GPS定位数据和交通系统数据,运用Spark技术将海量数据进行处理和分析,获取有价值的信息。具体来说,该系统主要分为三个模块:数据采集、数据处理和数据展示。 在数据采集方面,系统需要获取城市出租车的实时位置信息,需要对出租车进行GPS定位和追踪,将出租车行驶的轨迹数据实时传输至数据处理模块,实现数据的实时收集和传输。 在数据处理方面,系统采用Spark Streaming技术实现实时流处理,对实时采集到的轨迹数据进行处理,筛选出有用的信息,如城市交通流向、热门拥堵路段、客流高峰时段等,并将这些信息实时传输到数据展示模块。 在数据展示方面,系统采用可视化技术,将通过实时处理得到的信息展示在地图上,包括城市交通热力图、热门拥堵点、客流高峰路段等,使用户可以直观地了解城市交通情况,帮助决策者提高交通效率,创造更好的城市交通生活。 总之,企业Spark案例——出租车轨迹分析,运用大数据技术提升城市交通管理水平,为城市交通建设和规划提供有力支持,具有很大的价值和应用前景。 ### 回答3: 出租车轨迹分析是一项十分重要的技术,对于城市交通规划和出租车业务管理,以及出租车司机日常工作都有着重大的意义。通过对出租车轨迹数据进行分析,可以获得很多有用的信息,比如出租车的行驶模式、常用行驶路线、交通拥堵情况等,这些信息可以帮助出租车公司优化出租车调度、提高业务效率,提高乘客满意度。 企业 Spark案例——出租车轨迹分析,利用 Spark 进行数据处理和分析,实现对大规模出租车轨迹数据的实时处理和可视化,为出租车公司和城市交通规划部门提供了非常有价值的技术支持。 出租车轨迹分析的具体流程如下: 1、数据采集:利用 GPS 定位技术,对出租车进行实时定位,将出租车的实时位置信息记录下来,形成出租车轨迹数据。 2、数据预处理:对采集到的出租车轨迹数据进行清洗和预处理,去除异常点和误差数据,形成完整的轨迹数据。 3、数据存储:将预处理后的轨迹数据存储到 Hadoop 集群中,利用 Spark 进行数据处理和分析。 4、数据分析:通过 Spark 进行实时的数据处理和分析,对出租车轨迹数据进行聚类分析、热度分析等多种分析方法,计算出不同时间段和不同区域内的出租车数量、出租车行驶速度、常用行驶路线等信息。 5、数据可视化:将分析结果可视化展示,利用地图等工具将轨迹数据绘制成热力图、聚类图等形式,为城市交通规划部门、出租车公司和出租车司机提供有用的参考信息。 通过企业 Spark案例 —— 出租车轨迹分析,可以实现对大规模出租车轨迹数据的实时处理和可视化展示,为城市交通规划和出租车业务管理提供了非常有用的技术支持。随着城市交通的发展和数据采集技术的不断进步,出租车轨迹分析技术将越来越受到重视,企业需要积极采用这一技术,将其应用于出租车业务管理和城市交通规划中,促进城市交通的发展和出租车业务的提升。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值