基于扩展卡尔曼滤波(EKF)和低成本传感器的AHRS实现
文章目录
- 传感器
- 观测向量
- 观测矩阵
- 状态向量
- 系统矩阵
- 测试结果
传感器
使用华为honor7手机采集加速度计,陀螺仪和磁力计数据。
加速计数据在使用前经过低通滤波器。滤波结果如下图:
观测向量
如四元数姿态表示所述,载体姿态主要有三种表示方法。此处使用三个欧拉角度作为观测向量
[ ϕ ; θ ; ψ \phi;\theta;\psi ϕ;θ;ψ]
通过加速度计和磁力计数据计算姿态角观测量:
ϕ = t a n − 1 ( a y a z ) \phi=tan^{-1}(\frac{a_y}{a_z} ) ϕ=tan−1(azay)
θ = − t a n − 1 ( a x a z ) \theta=-tan^{-1}(\frac{a_x}{a_z}) θ=−tan−1(azax)
ψ = − t a n − 1 M y ∗ c o s ( ϕ ) − M z ∗ s i n ( ϕ ) M x ∗ c o s ( θ ) + M y ∗ s i n ( θ ) ∗ s i n ( ϕ ) + M z ∗ s i n ( θ ) ∗ c o s ( ϕ ) \psi=-tan^{-1}\frac{M_y*cos(\phi)-M_z*sin(\phi)}{M_x*cos(\theta) + M_y*sin(\theta)*sin(\phi) + M_z*sin(\theta)*cos(\phi)} ψ=−tan−1Mx∗cos(θ)+My∗sin(θ)∗sin(ϕ)+Mz∗sin(θ)∗cos(ϕ)My∗cos(ϕ)−Mz∗sin(ϕ)
观测矩阵
欧拉角与四元数转化关系如下:
ϕ = t a n − 1 2 ∗ ( q 0 ∗ q 1 + q 2 ∗ q 3 ) 1 − 2 ∗ ( q 1 ∗ q 1 + q 2 ∗ q 2 ) \phi= tan^{-1}\frac{2 * (q0 * q1 + q2 * q3)}{1 - 2* (q1 * q1 + q2 * q2)} ϕ=tan−11−2∗(q1∗q1+q2∗q2)2∗(q0∗q1+q2∗q3)
θ = s i n − 1 ( 2 ∗ ( q 0 ∗ q 2 − q 3 ∗ q 1 ) ) \theta = sin^{-1}(2\ast (q0 \ast q2 - q3 \ast q1)) θ=sin−1(2∗(q0∗q2−q3∗q1))
ψ = t a n − 1 ( 2 ∗ ( q 0 ∗ q 3 + q 1 ∗ q 2 ) , 1 − 2 ∗ ( q 2 ∗ q 2 + q 3 ∗ q 3 ) ) \psi = tan^{-1}(2* (q0 * q3 + q1 * q2), 1- 2*(q2 * q2 + q3 * q3)) ψ=tan−1(2∗(q0∗q3+q1∗q2),1−2∗(q2∗q2+q3∗q3))
可以看出,[ ϕ ; θ ; ψ \phi;\theta;\psi ϕ;θ;ψ]与[ q w , q x , q y , q z , δ b x , δ b y , δ b z q_w,q_x,q_y,q_z,\delta_b^x,\delta_b^y,\delta_b^z qw,qx,qy,qz,δbx,δby,δbz]为非线性关系,需要线性化。
方法如matlab求解雅克比矩阵或者使用python求解雅克比矩阵
状态向量
状态向量选取为
[ q w , q x , q y , q z , δ b x , δ b y , δ b z q_w,q_x,q_y,q_z,\delta_b^x,\delta_b^y,\delta_b^z qw,qx,qy,qz,δbx,δby,δbz]
q w , q x , q y , q z q_w,q_x,q_y,q_z qw,qx,qy,qz为四元数向量, δ b x , δ b y , δ b z \delta_b^x,\delta_b^y,\delta_b^z δbx,δby,δbz为机体坐标系下的陀螺零偏。
系统矩阵
系统矩阵参照四元数与载体姿态
测试结果
https://github.com/akstuki/INSFusion.git
下图为解算结果,AHRS为本文模型滤出的结果,ekf为手机输出姿态信息。
从结果中可以看出,AHRS是要优于ekf的。
本文中AHRS实际上也是用的ekf方法,手机输出的姿态信息为了作区分起了个名字而已
基于扩展卡尔曼滤波(EKF)和低成本传感器的AHRS实现相关推荐
- 基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发
基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现. MATLAB 基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现. MATLAB(工程项目线上支持 ...
- 基于扩展卡尔曼滤波(EKF)的机器人状态估计
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 EKF的目的是使卡尔曼滤波器能够应用于机器人等非线性运动系统,EK ...
- 扩展卡尔曼滤波EKF与多传感器融合
Extended Kalman Filter(扩展卡尔曼滤波)是卡尔曼滤波的非线性版本.在状态转移方程确定的情况下,EKF已经成为了非线性系统状态估计的事实标准.本文将简要介绍EKF,并介绍其在无人驾 ...
- python卡尔曼滤波室内定位_基于扩展卡尔曼滤波算法的室内定位跟踪系统
基于扩展卡尔曼滤波算法的室内定位跟踪系统 凌海波,周先存 [摘 要] 摘要:为了解决无线室内定位系统实时跟踪位置坐标误差较大问题, 提出一种基于扩展卡尔曼滤波 (EKF) 算法的室内定位方法.系统采用 ...
- ## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)***
## ***电池SOC仿真系列-基于扩展卡尔曼(EKF)算法的SOC估计(内含代码等资料)*** ## 1 研究背景 电池的荷电状态(SOC)代表的是电池当前的剩余容量,数值定义是电池剩余电量与电池额 ...
- 控制算法学习 四、扩展卡尔曼滤波EKF
控制算法学习 四.扩展卡尔曼滤波EKF 前言 非线性系统 状态/观测方程线性化 扩展卡尔曼滤波EKF 后记 前言 经典卡尔曼滤波的使用场景是线性系统,但现实应用时,大多数系统都是非线性的.扩展卡尔曼滤 ...
- 基于扩展卡尔曼滤波的自适应智能无人车辆行驶matlab仿真,输出三维动态行驶动画
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 EKF扩展卡尔曼滤波要解决的是卡尔曼滤波不适用于非线性模型的问题.其和卡尔曼滤波算法结构相同,只是将 ...
- 卫星轨道的估计问题(Matlab)(二):扩展卡尔曼滤波(EKF)对新问题的尝试
前言 在前面的问题中我们已经考虑到了用微分方程来描述卫星运动轨迹的方法: r¨=rθ˙2−GMr−2θ¨=−2r−1r˙θ˙\ddot r = r\dot \theta^2-GMr^{-2}\\\dd ...
- 基于扩展卡尔曼滤波的SOC估计(附MATLAB代码)
1.卡尔曼滤波原理 原理可以参考我之前学习的笔记,使用goodnote完成的. 我认为,对于公式的推导不需要做太多深入的了解,我之前也对公式进行推导的理解,但是没过几天就忘了,只需要掌握住那重要的5个 ...
最新文章
- java 线程 通过interrupted_Java线程的传说(1)——中断线程Interrupted的用处
- 设计模式 -- (7)外观模式
- Git的使用(快速入门)
- Python查看、修改pip install 默认使用的pip库
- 讯达机器人_科大讯飞新品频发完善场景布局“双11”斩获三大平台25项冠军
- NanShan作者:风景未变人已变
- mysql 连接查询分组_详解MySQL中的分组查询与连接查询语句
- Objective-C Memory Management Being Exceptional 异常处理与内存
- remote: 认证失败,请确认您输入了正确的账号密码。 fatal: Authentication failed
- 关于SQL中Between语句查询日期的问题
- Linux跨平台编译安卓版本protobuf库——趟坑记录
- 神奇宝贝服务器服务器修改器,pkhex修改器最新版
- 小程序组件传值解决页面数据刷新
- 博士应该采取什么策略读文献?
- React中文文档 9. 表单
- Linux下CAN总线通信调试记录
- 中国顶级黑客,你所不知的内幕
- 中国企业家如何立太子
- 给研一同学们的深度学习学习规划
- Go后端博客项目实战_持续更新ing