mpu6050姿态解算与卡尔曼滤波(5)可应用于51单片机的卡尔曼滤波器

博客4中给出的滤波器状态维数为4维,测量量为3维,每次滤波需要做不少矩阵乘法和求逆运算。如果想在51单片机上实现,计算耗时会比较长。考虑应用场合可以对滤波器适当做一些简化,计算量会大大减小。
首先,陀螺和加速度计融合只能保证俯仰和滚转角收敛,而且从测量方程来看,加速度计的测量只与俯仰和滚转角有关。因此可以考虑滤波器状态选取为俯仰角 θ \theta θ和滚转角 γ \gamma γ,这样状态维数会减少。选取状态为俯仰角和滚转角带来的问题是状态方程必须使用欧拉角微分方程,而欧拉角微分方程中包含三角函数计算,反而增加了计算量。
[ ψ ˙ θ ˙ γ ˙ ] = 1 cos ⁡ θ [ − sin ⁡ γ 0 cos ⁡ γ cos ⁡ γ cos ⁡ θ 0 sin ⁡ γ cos ⁡ θ sin ⁡ θ sin ⁡ γ cos ⁡ θ − sin ⁡ θ cos ⁡ γ ] [ ω n b x b ω n b y b ω n b z b ] \begin{bmatrix}\dot\psi\\\dot\theta\\\dot\gamma\end{bmatrix}=\frac{1}{\cos\theta}\begin{bmatrix}-\sin\gamma&0&\cos\gamma\\ \cos\gamma\cos\theta&0&\sin\gamma\cos\theta\\ \sin\theta\sin\gamma&\cos\theta&-\sin\theta\cos\gamma\end{bmatrix}\begin{bmatrix}\omega_{nbx}^b\\\omega_{nby}^b\\\omega_{nbz}^b\end{bmatrix} ψ˙θ˙γ˙ =cosθ1 sinγcosγcosθsinθsinγ00cosθcosγsinγcosθsinθcosγ ωnbxbωnbybωnbzb
这种情况下考虑滤波器的应用场合。如果在滤波器运行过程中能保证 θ \theta θ γ \gamma γ基本保持在0±5°附近,那么欧拉角微分方程可以简化为
[ ψ ˙ θ ˙ γ ˙ ] = [ − γ 0 1 1 0 γ θ γ 1 − θ ] [ ω n b x b ω n b y b ω n b z b ] \begin{bmatrix}\dot\psi\\\dot\theta\\\dot\gamma\end{bmatrix}=\begin{bmatrix}-\gamma&0&1\\ 1&0&\gamma\\ \theta\gamma&1&-\theta\end{bmatrix}\begin{bmatrix}\omega_{nbx}^b\\\omega_{nby}^b\\\omega_{nbz}^b\end{bmatrix} ψ˙θ˙γ˙ = γ1θγ0011γθ ωnbxbωnbybωnbzb
这样状态方程就变得十分简单,可以只取 θ \theta θ γ \gamma γ。对于 θ \theta θ γ \gamma γ保持在0±5°附近的假设在一些场合下是适用的,比如平衡车、自动保持水平模式的四轴,当然前提是控制可以闭环。
对于测量方程,也可简化为
[ a x a y a z ] = [ − g γ g θ g ] \begin{bmatrix}a_x\\a_y\\a_z\end{bmatrix}=\begin{bmatrix}-g\gamma \\g\theta\\g\end{bmatrix} axayaz = gγgθg
测量量只取 a x a_x ax a y a_y ay
这样一来状态和测量方程都变得十分简单,计算量也大大减小,应用在51这样的单片机上也能在10ms内完成姿态解算。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/1328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OracleDay01

ORACLE 简介 什么是 ORACLE ORACLE 数据库系统是美国 ORACLE 公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或 B/S 体系结构的数据库之一。 ORACLE 通常应用于大型系统的数据库产品。 ORA…

NLP预训练模型-GPT-3

ChatGPT GPT-3是OpenAI开发的一个自然语言处理(NLP)预训练模型。GPT代表“生成式预训练变换器”(Generative Pretrained Transformer)。GPT-3是GPT系列的第三代模型,是一种采用了深度学习技术的强大语言模型&#xff…

mapreduce中的ReduceTask工作机制(Hadoop)

ReduceTask 是 Hadoop 中的一个重要组件,负责对 MapTask 的输出进行合并、排序和归并,最终生成最终的输出结果。 ReduceTask 的工作机制 1. 分组(Shuffle)阶段: 在分组阶段,ReduceTask 会从多个 Mapper …

(救命)Kali Linux或者其他linux系统的触控板右键按下没反应,失效的解决办法

我每次安装kali的时候都会选择gnome桌面,每次安装好右键都是禁用的,按下和左键效果一样,每次都得去调鼠标右键,原来就不好找到那个选项,这次踏马居然连那个选项都没了,如果你去网上找教程你会发现网上根本没…

CX5120-0125倍福CPU模块维修PLC控制器CX5120全系列主机电脑深圳捷达工控维修

工业计算机服务与维修 为任何品牌的工业计算机、显示器、人机界面 (HMI) 和面板计算设备提供服务、维修和改造。您可以信赖我们延长生命周期,包括不再投放市场的产品。 工业计算机维修与保养 您的工业计算机专家 工业计算机维修服务 深圳捷达工控维修深知做好工业…

详解 C++ 实现K-means算法

一、K-means算法概述 K-means算法是一种非常经典的聚类算法,其主要目的是将数据点划分为K个集群,以使得每个数据点与其所属集群的中心点(质心)的平方距离之和最小。这种算法在数据挖掘、图像处理、模式识别等领域有着广泛的应用。 二、K-means算法的基本原理 K-means算法…

【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】掌握Spring Boot:深入解析配置文件的使用与管理 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 Spring Boot 配置文件一. 配置文…

基于SpringBoot+Vue的幼儿园管理系统 免费获取源码

项目源码获取方式放在文章末尾处 项目技术 数据库:Mysql5.7/8.0 数据表:19张 开发语言:Java(jdk1.8) 开发工具:idea 前端技术:vue 后端技术:SpringBoot 功能简介 (有文档) 项目获取关键字&#…

Vue实现多角色登录,Vue-Router路由守卫控制权限页面

实现页面侧边栏和头部不变,当点击某个功能时,只有主体部分发生变化,这要用到子路由技术 我的项目结构如上,其中包含侧边栏和头部的文件是Manage.vue,主页面是Home.vue,个人页面是Person.vue,用户…

每日三个JAVA经典面试题(四十四)

1.什么是反应式编程?它如何优化Web应用的性能? 反应式编程是一种编程范式,它通过异步数据流的方式处理事件和数据,以实现高效的数据处理和事件驱动的程序设计。在反应式编程中,数据流可以被观察(Observabl…

固态硬盘数据都不能恢复吗?

固态硬盘的数据在某些特定情况下是可以被成功恢复的。 尽管固态硬盘的工作原理与机械硬盘不同,数据恢复方面相对困难,但并不意味着所有情况下都无法恢复数据。 例如,当固态硬盘发生逻辑损坏时,数据恢复的几率会相对较高。此外&am…

回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测

回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测 目录 回归预测 | Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-HKELM蜣螂算法优化混合核极限学习机多变量…

二分答案算法

基本概念 将最值问题转换为判定 与二分查找的区别 二分查找:在一个已知的有序数据集上进行二分地查找 二分答案:答案有一个区间,在这个区间中二分,直到找到最优答案 如何判断一个题是不是用二分答案做的 1、答案在一个区间内…

【GIS面试】GIS算法介绍

作者:后端小肥肠 1. 前言 在地理信息系统(GIS)的领域中,算法扮演着极其重要的角色,它们使得复杂的空间数据分析成为可能。无论是在环境科学、城市规划,还是在灾害管理等众多领域,高效和精确的算…

Zabbix监控Oracle归档日志空间

1、oracle查看归档日志空间的sql语句 select sum(PERCENT_SPACE_USED) from v$recovery_area_usage; 2、交互式查看oracle归档日志空间的命令&#xff0c;可以手动执行一下&#xff0c;注意要用oracle用户 sqlplus -S "/ as sysdba" << EOF select sum(PER…

解决“ImportError: DLL load failed while importing _rust: 找不到指定的程序的问题

运行 scrapy startproject wikiSpider 报错&#xff1a;ImportError: DLL load failed while importing _rust: 找不到指定的程序。 经过尝试 可以更换Python解释器版本来解决 1、点击crtlalts打开设置 点击项目>解释器 选择3.11解释器 &#xff08;我原来报错用的3.9的解…

企业车辆违章查询工具,批量查询企业名下车辆违章情况,专为网约车/出租车管理公司而生

功能介绍 功能分为&#xff1a;违章管理、车辆管理、任务管理 违章管理如图&#xff1a; 搜索条件为车牌号 筛选条件为&#xff1a;时间区间、企业选择、是否处理违章、是否缴纳罚款、所属车管员 车牌管理如图&#xff1a; 可以新增车牌 查询条件为&#xff1a;车牌信息、车…

【无人机路径规划】基于改进差分算法实现三维多无人机协同航迹规划附matlab代码

于改进差分算法实现三维多无人机协同航迹规划的课程设计大纲的示例: 研究背景 研究背景: 随着无人机技术的快速发展,无人机在各个领域中的应用越来越广泛,如监测、搜索救援、物流等。在一些任务中,需要多个无人机进行协同工作,例如进行搜索与救援任务时,多个无人机可以…

为什么Redis使用单线程 性能会优于多线程?

前言 在计算机领域&#xff0c;性能一直都是一个关键的话题。无论是应用开发还是系统优化&#xff0c;我们都需要关注如何在有限的资源下&#xff0c;实现最大程度的性能提升。Redis&#xff0c;作为一款高性能的开源内存数据库&#xff0c;因其出色的单线程性能而备受瞩目。那…

项目之旅(第三周)

文章目录 项目学习总结一、form表单的提交1&#xff09;、提交跳转型2)、ajax异步提交form表单&#xff0c;前端控制下一步走向型 二、.gitignore文件用法及如何配置三、点击除盒子之外的地方盒子隐藏四、thymeleaf复用div 项目总结生活总结 项目学习总结 一、form表单的提交 …