基于RflySim平台的mahony(含磁罗盘)互补滤波在pixhawk仿真及实物实验(带实验数据)

article/2025/11/11 10:19:12

写在前面

本案例实验采用RflySim平台,该平台可以高效快速编写代码,使用simulink模型搭建,可以见代码直接生成对应的C代码,并一键将代码烧录Pixhawk中,是一种快速开发平台,RflySim获取更多可以参考网站

开发需要

matlab2018b及以上版本
simulink可能需要对应版本才可以打开,我用的2018b的matlab
pixhawk2.4.8硬件
PX4 1.7.3stable版本软件代码

mahony思想

mahony互补滤波是一种高效的姿态解算方法。
mahony核心思想: 机体水平时,加速度计无法测量绕 Z 轴的旋转量,即偏航角。磁力计也有同样问题,无法测得绕磁轴的旋转量。故需要加速度计和磁力计同时对陀螺仪进行校正。

mahony算法步骤

1. 加速度计与磁力计测量值进行归一化。

对应代码:在这里插入图片描述

2. 磁力计的输出在机体坐标系下,将其转换到导航坐标系。

在这里插入图片描述
对应代码:在这里插入图片描述

3. 假定理想情况下,让导航坐标系n中x轴指向正北方向,并设这个新的导航坐标系下磁力计数据为[bx,by,bz]’, Z轴方向分量(即重力方向分量)相等,水平方向分量相等,可以将磁力计在xoy平面的投影折算到 x轴则容易得到:

在这里插入图片描述
by = 0;对应代码:在这里插入图片描述

4. 计算理论载体坐标系b下的三轴加速度大小。

在这里插入图片描述
对应代码:在这里插入图片描述

5. 将磁力计在导航坐标系n中的理想输出[bx,by,bz] 再次旋转到载体坐标系b中,得到在b系中的理想输出。

在这里插入图片描述
对应代码:在这里插入图片描述

6. 将理想输出[bx,by,bz]与原始输出[mx,my,mz]叉乘得到误差emag,将其作为补偿项送给陀螺仪进行矫正,这部分只是用来修正yaw的还要加上加速度计补偿量,加速计测量值与理论值进行叉乘得到误差eacc,两者相加得到总误差e。

对应代码:在这里插入图片描述

7. 误差e使用PI修正

对应代码:在这里插入图片描述

8. 将PI修正量补偿到陀螺仪中

对应代码:在这里插入图片描述

9. 采用一阶龙格库塔法求解四元数,并作归一化处理

对应代码:在这里插入图片描述

mahony仿真实验

1. 如果有硬件设备可以打开(e4.4\mahony仿真实验\实物采集加速度计、陀螺仪、磁力计数据)目录下的cf.slx文件。

在这里插入图片描述
上图是搭建的一个简单的读取Pixhawk的陀螺、加计、磁罗盘数据的simulink模型通过编译烧录两个步骤就可以实现将搭建的模型以一个topic形式加入到源代码中。相当于在源代码的基础上添加了一个进程,并不改变源代码。(具体PSP工具箱下载安装等操作参考这个网站)

编译模型后下载烧录代码,通过遥控器5通道控制是否开始采集数据,并通过指示灯显示当前系统是否正常运转。
写卡期间可以晃动飞控,结束操作后,先通过遥控器5通道到关闭写卡操作,再关闭遥控器,最后给飞控断电。取出SD卡,使用读卡器读出SD数据。
采集完成数据后会生成一个.bin文件,文件名字可以有数据采集模型的datalog模块更改。

2. 打开e4.4\mahony仿真实验\实物采集加速度计、陀螺仪、磁力计数据\plot_filter.m文件

在这里插入图片描述
将数二进制数据读取解包并存住在名为da.mat的文件中。
第二行读取文件的名字,这个名字是我在datalog模块中设置的名字,也可以自行更改。

3. 将第2步得到的da.mat文件复制到e4.4\mahony仿真实验,并在文件夹同目录下打开Attitude_estimator.m文件,将第二行loda 后面改成第2步生成发文件名字。

在这里插入图片描述

4. 运行

红色线是加速度计直接解算结果
蓝色线是陀螺仪直接积分解算结果
黑色线是互补滤波解算结果
Roll解算结果
Roll解算结果
在这里插入图片描述
Pitch解算结果

红色线是磁力计直接解算结果
蓝色线是陀螺仪直接积分解算结果
黑色线是互补滤波解算结果
在这里插入图片描述
Yaw解算结果
因为yaw我没有做角度限制变化,所以看到上图是±90变化,这个可以自行更改。

以上是有硬件设备的,可以自行采集数据,将数据打包进行实验。

###没有硬件设备的可以直接使用e4.4\mahony仿真实验\da.mat文件作为数据源。

mahony实物实验

1. 连接好飞控并打开e4.5\mahony实物实验\cf.slx文件

在这里插入图片描述
cf1模块是设计的mahony互补滤波器其最终输出的是已经解算好的四元数,同时vehicle_altitude模块是PX4自带的姿态解算角度输出模块,可以作为解算对比。
在这里插入图片描述
上图是CF1模块,输出是mahony解算的四元数。以上用到的所有资料、数据、详细代码下载

下载烧录代码后,通过遥控器5通道指定是否进行写卡操作,并通过指示灯判断系统是否正常运行。

2. 写卡期间可以晃动飞控,结束操作后,先通过遥控器5通道到关闭写卡操作,再关闭遥控器,最后给飞控断电。取出SD卡,使用读卡器读出SD数据(一个.bin文件)
3. 打开e4.5\mahony实物实验\plot_filter.m文件进行数据读取。

通过解算写入的四元数数据得到三轴姿态角。
在这里插入图片描述
实物解算的Roll
在这里插入图片描述
实物解算的Pitch
在这里插入图片描述
实物解算的Yaw
上图可以看出互补滤波相对于PX4内部自带的解算机制还是差一些,解算结果有毛刺。

上述用到的数据、代码下载


http://chatgpt.dhexx.cn/article/KfkEUcRG.shtml

相关文章

磁罗盘

地磁的北极在地理的南极的附近 地磁的南极在地理的北极的附近 磁体的同名磁极相斥,异名磁极相吸 所以指南针的北极总是指着地理的北极(地磁的南极) 1、红色指针指向北面,白色指针指向南面。在表盘上“北”用字母N表示,南用字母“S”表示。   2、指南针…

9轴电子罗盘工作原理,校准与应用

高精度9轴电子罗盘 目录1 概述及应用2 运用原理3 逻辑框架4 校准方法5 结语 目录 1 概述及应用 基本介绍 电子罗盘,也叫数字指南针,是利用地磁场来定北极的一种方法,作为导航仪器或姿态传感器已被广泛应用。古代称为罗经&#xff0c…

PX4 磁罗盘干扰分析

磁罗盘干扰分析 推力与磁场关系正常情况干扰情况与推力相关解决方法 与推力不相关 罗盘补偿操作流程获取用于分析的日志分析日志调整罗盘补偿参数 推力与磁场关系 无人机上的电机电流会干扰无人机上搭载的磁罗盘,PX4官方提供了一些方式,通过分析飞行日志…

陀螺仪加速度计磁罗盘的校准

一、校准加速度计 加速度计有零偏和尺度误差。还有其他误差,这里只讨论这两种误差。 六面校准法:目的是让输出的数据在9.8mss左右(可以将Xmax 9.44, Xmin -10.24代进去感受一下) 公式:以X轴为例 操作:六个面朝上的时候&…

四轴无人机那些事 番外篇 3 磁罗盘

地磁的北极在地理的南极的附近 地磁的南极在地理的北极的附近 磁体的同名磁极相斥,异名磁极相吸 所以指南针的北极总是指着地理的北极(地磁的南极) 1、红色指针指向北面,白色指针指向南面。在表盘上“北”用字母N表示,南用字母“S”表示。 2、指南针又称…

Datax-异构数据源离线同步

目录 一、介绍 1、Datax介绍 2、DataX 的设计 3、支持的数据源 4、框架设计 5、运行原理 六、优势 二、使用 1、从stream读取数据并打印到控制台 2、mysql同步到mysql 3、读取 DB2 的数据导入 MySQL 4、读取 SQLServer 的数据导入 MySQL 5、读取 MongoDB 的数据导入 …

数仓之异构数据源同步

本小结介绍下数仓数据同步常用的开源组件,具体组件如下 datax :离线数据同步工具,由阿里开源。github地址 kettle:离线ETL工具,由Pentaho公司开源。中文站点。下载地址 canal:实时binlog订阅工具&#x…

如何进行异构数据库同步

1、简介 最近一阵子笔者在进行完成同样功能的两套异构数据库系统的同步工作,有一些心得体会分享给大家,欢迎技术同仁拍砖。 该项目有一个运行若干年(5~10年)的旧系统,采用的是SQL Server数据库,…

什么是异构数据源和分布式数据库

2019独角兽企业重金招聘Python工程师标准>>> 异构数据源(disparate data source)广义上讲是指数据结构、存取方式、形式不一样的多个数据源。如,在一个系统中,同时包含由关系型数据库Oracle/SQL SERVER/MYSQL、EXCEL文…

异构数据库传输工具

异构数据库传输工具 一、国产1 QMatrix - 沃趣科技2 SuperSync - DSG3 DataX - 淘宝4 DMHS - 武汉达梦 二、国外1 OGG - Oracle2 DBSync 三、工具对比 一、国产 1 QMatrix - 沃趣科技 企业多云数据流计算平台。 相关资料链接 数随心动QMatrix产品QMatrix与传统的ETL&#xf…

异构数据比对

1 概述 BeeDI提供任意数据库间(Oracle、SQL Server、MySQL、PostgreSQL、DB2、Elasticsearch、Cassandra、MongoDB、Solr、HBase等)表的数据一致性比对校验功能,支持异构表(不同表名,目标表字段可多于源表&#xff09…

数据异构方案

1、定义 何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持久化到REDIS里面去,就是一种数据异构的方式。…

数据异构的武器-BINLOG+MQ

2019独角兽企业重金招聘Python工程师标准>>> 1、定义 何谓数据异构,上周交易部门商品的同事过来做分享,又看到这个词,他的PPT里面是 数据库异构。其实我们以前做的事情,也是可以成为数据异构。比如我们将DB里面的数据持…

LVDS差分信号深度详解

博主福利:100G电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__bizMzU3OTczMzk5Mg&hid7&snad5d5d0f15df84f4a92ebf72f88d4ee8&scene18#wechat_redirect -------------------------------------------------------------------…

lvds接口_LVDS,接口,时序讲解,非常好的文章

欢迎FPGA工程师加入官方微信技术群 点击蓝字关注我们FPGA之家-中国最好最大的FPGA纯工程师社群 1.1.1 LVDS接口分类 1.1.1.1 单路6bit LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位或18bit LVDS接口。此,也称18位或18bit…

YL芯片LVDS屏幕时序和接口介绍

接口说明 YL芯片使用LVDS接口对外输出图像,芯片支持单8和双8和2路单8同时输出的方式输出图像。 芯片支持VESA (Video Electronics Standards Association) standard and JEIDA (Japanese Electronic Industry Development Association) standard两种输出标准。 LV…

ftp软件是什么如何使用,ftp软件是什么如何使用

ftp软件是什么,ftp软件是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服…

ftp,windows ftp工具哪个好用

说起windows ftp工具,不知道你们有什么推荐。不过小编有很熟悉的windows ftp工具,多多少少也有那么几个觉得特别好用的。不过需要注意的是有很多的ftp工具只能在windows系统上面操作,也有只能在liunx系统上面操作的。在下载的时候一定要看清楚…

ftp软件,国内好用的ftp软件

对于ftp软件,你了解多少?其实一般人也接触不到这种软件ftp软件主要是针对从事网站管理的工作人员比较有利的一款工具。可以帮助他们快速的解决工作中的问题。方便、简单、快捷又明了的解决问题,小编整理了三款国内好用的ftp软件。 第一款&am…

好用的ftp工具,细数四款好用的ftp工具

ftp工具是一种文件传输下载方式,它是TCP/IP协议栈的一部分;其中FTP又由两部分组成,一部分是FTP的服务器,另一部分是FTP的客户端!它能够高效安全地进行文件传输下载操作!可以使用服务器管理工具来作为FTP的客…