【IMU】 温度零偏标定

温度标定

IMU的零偏随着温度的变化而变化,在全温范围内形状各异,有些可能是单调的,有些可能出现拐点。

多项式误差温度标定

目的是对估计的参数进行温度补偿,获取不同温度时的参数值(零偏、尺度、正交),绘制成曲线。

  • soak method:控制恒温室的温度,然后读取传感器数据进行标定。
  • ramp method:记录一段时间内线性升温、降温时传感器的数据进行标定

温度误差模型,B是bias,T是温度, ∆T 是变温率(温度变化快慢)

B=f(T,∆T)

f靠尝试,通常多项式即可

 

通过改变温度,得到对应温度下的标定参数,用上面的多项式模型进行拟合即可。或者这些数据绘制曲线,用最小二乘多项式去拟合。如果曲线不规则,也可以分段拟合。

拟合是解方程的过程。构建方程时,各未知量的系数要提供足够的变化,这个方程才可解,才能解的好,或者说,才能正确辨识。

如果模型里有变温率的因素存在,而拟合时只提供一组升温的数据,那效果不会太好,因为提供的数据里,每一个温度点只对应一个变温率。

因此,要反复升温降温,而且使用不同的升降温速率,提供丰富变化的数据,才是一个好的样本数据。

图 1为bias在0~60摄氏度温度区间的变化情况。红色线为rawdata,蓝色线为多项式拟合值。

图 1

图2为温漂补偿后的输出:

参考matlab代码如下:

clear;								% 删除工作区中项目,释放系统内存
clc;								% 清空命令行窗口
close all;							% 关闭句柄可见的所有图窗
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function y = tFun(a,X)y = a(1)*X(:,1).^2+a(2)*X(:,1)+a(3)*X(:,2).^2+a(4)*X(:,2)+a(5)*X(:,2).*X(:,1)+a(6);;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Read in our toolboxes
addpath('tool');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%mat_path = './IMUDATA/03#/20240408am1101_static_3#_0.csv';fprintf('opening the mat file.\n')
data_imu = csvread(mat_path);imu_wy = data_imu(:,5);
imu_T = data_imu(:,7);
time = data_imu(:,8);
deta_T = data_imu(:,9);x = imu_T(1:1:end);
y = deta_T(1:1:end);
z = imu_wy(1:1:end);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
aveX = ImuDataSum(x, 500)';
N = length(aveX);
aveX = aveX(1:1:N-1);
aveY = ImuDataSum(y, 500)';
aveY = aveY(1:1:N-1);
aveZ = ImuDataSum(z, 500)';
aveZ = aveZ(1:1:N-1);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
input = [aveX,aveY] ;
output = aveZ;a0=rand(1,6);
func=@(a,X)a(1)*X(:,1).^2+a(2)*X(:,1)+a(3)*X(:,2).^2+a(4)*X(:,2)+a(5)*X(:,2).*X(:,1)+a(6);;
a=lsqcurvefit(func,a0,input,output);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
testVal = tFun(a,input);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[aveXX,aveYY]=meshgrid(aveX, aveY);%三维绘图
testValZZ = a(1)*aveXX.^2+a(2)*aveXX+a(3)*aveYY.^2+a(4)*aveYY+a(5)*aveYY.*aveXX+a(6);
##figure;
mesh(aveXX, aveYY, testValZZ);
hold on;%散点图
plot3(aveX,aveY,aveZ,"b-",'LineWidth',1);
hold on;
plot3(aveX,aveY,testVal,"r*",'LineWidth',1);
hold on;M = length(testVal);
##% 计算均方根误差
RMSE = sqrt(sum((aveZ - testVal).^2) / M);
fprintf('RMSE:  %d\n', RMSE);

tool

%Purpose:average
%Author name:Yanjh
%date:2024.02.06function aveData = ImuDataSum(data, fs)leng = length(data);%%aveData=zeros(floor(leng/200));for i=1:floor(leng/fs)aveData(i) = sum(data(fs*(i-1)+1:fs*i))/fs;% 每200行取一次平均
endendl = floor(leng/fs) + 1;aveData = [aveData, mean(data(endl:end))];
end

多项误差温度标定

考虑到将加速度计、陀螺的零偏和标度因数统一进行温度建模,那么可以认为加速度、角速度测量误差为陀螺输出电压 V、器件温度 Ti、器件温度变化率 Ti、环境温度 To 和环境温度变化率 ∆To 的函数,即 ω=g(Vg,Ti,∆Ti,To,∆To);加速度测量误差为加速度计输出电压和温度的函数 a=g(Va,Ti,∆Ti,To,∆To),假设二者都是四输入一输出的高阶多项式,这样就可以转化为多因素回归问题标定. 如果多项式中温度和加速度计、陀螺输出电压和温度最高都取二阶,则多因素回归模型中有21 个因素,加速度计和陀螺相应的模型为:

每个惯性元件温度误差模型中需要标定的参数恰巧为 21 项,总共需要做 21 次完整的标定编排。因此,温度误差模型中温度 T 和输出电压 V 都取二阶。 至于 21 次试验数据是否足够能辨识出 21 项参数,这需要通过试验的结果来验证. 如果标定结果发散,那只能再降低 T 和 V 的阶次。

在处理陀螺、加速度计测量数据时,大多按经验直接选择模型变量进行建模,从统计意义而言这样的模型并不一定是最优的. 一般来说,系统所要求的精度不同,需要的误差模型也不同,随着要求精度的提高,需要考虑的误差模型项数也得增多. 因此,需要对模型方程进行优化,从而使 MIMU 的测量模型更趋合理. 从统计学角度出发,对实验数据的处理,应采用 一种有效的方法从众多的影响因素中,挑选对响应 变量贡献大的因素,从而建立最优模型. 由于复相关系数反映了响应变量与回归变量之间的密切程度,因此可以把 R2值最大作为寻优条件来选择自变量,以此选择最优变量,从而建立最优回归方程。

在对加速度计、陀螺温度误差模型进行优化时,考虑到程序设计的简便性和计算量等因素采用逐步回归分析方法,得IMU的加速度计和陀螺分段优化模型(以X轴为例)。

该方法利用R2值来裁剪参数,是一个可以借鉴的方法,具体还未测试过。

参考文献:

MEMS 惯性测量组件的温度误差补偿模型研究

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

程序员日志之DNF手游强化20攻略

目录 传送门正文日志1、概要2、炭的获取3、强化 传送门 SpringMVC的源码解析(精品) Spring6的源码解析(精品) SpringBoot3框架(精品) MyBatis框架(精品) MyBatis-Plus SpringDataJP…

QT案例-通过QCustomPlot库绘制Window系统CPU温度实时折线图

之前项目中涉及到了获取硬件信息内容,对CPU的温度监控有点兴趣,观察和百度发现鲁大师和驱动人生的CPU温度监控貌似是用驱动实现的,有点太高大上了,搞不懂。后面经过到处查找资料终于找到了Qt在Windows 环境下监控CPU等硬件温度/运…

2024年浙江省高考分数一分一段数据可视化

下图根据 2024 年浙江高考一分一段表绘制,可以看到,竞争最激烈的分数区间在620分到480分之间。 不过,浙江是考两次取最大,不是很有代表性。看看湖北的数据,580分到400分的区段都很卷。另外,从这个图也可以…

Java项目:基于SSM框架实现的中小型企业财务管理系统【ssm+B/S架构+源码+数据库+答辩PPT+开题报告+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的中小型企业财务管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

【方法】如何打开设置了密码的ZIP文件?

对于重要的ZIP文件,很多人会设置密码保护,那要如何打开设置了密码的ZIP文件呢?今天我们一起来看下,在记得密码和忘记密码的情况下,如何打开ZIP文件。 情况1: 如果知道ZIP文件原本设置的密码,我…

tessy 单元测试:小白入门指导手册

目录 1,创建单元测试工程目录 2,导入单元测试源文件 一:创建测试文件夹(最好和代码目录一一对应,方便查找) 二:选择测试环境 三:添加源文件 四:分析源文件 3,编写单元测试用例 一:设置函数参数的传输方向 二:添加单元测试用例 三:编辑单元测试用例数据 …

Qt开发 | Qt绘图技术 | 常见图像绘制 | Qt移动鼠标绘制任意形状 | Qt绘制带三角形箭头的窗口

文章目录 一、基本绘图技术介绍二、常见的18种图形、路径、文字、图片绘制三、Qt移动鼠标绘制任意形状四、Qt绘制带三角形箭头的窗口 一、基本绘图技术介绍 Qt提供了绘图技术,程序员可以在界面上拖动鼠标,或者在代码里指定参数进行绘图。 Qt绘图技术介绍…

vue3 antdv Modal通过设置内容里的容器的最小高度,让Modal能够适当的变高一些

1、当收款信息Collapse也折叠的时候,我们会发现Modal的高度也变成了很小。 2、我们希望高度稍微要高一些,这样感觉上面显示的Modal高度太小了,显示下面的效果。 3、初始的时候,想通过class或者style或者wrapClassName来实现&#…

【软件分享】气象绘图软件Panoply

气象是大气中的物理现象,气象要素则是表明大气物理状况的要素,主要的气象要素有降水、风、气压、湿度等。为了研究气象要素在空间上的分布和运动状况,我们需要对气象要素进行空间上进行可视化,这个时候就需要气象领域的一些的绘图…

大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数

用语言介绍一下Transformer的整体流程 1. 输入嵌入(Input Embedding) 输入序列(如句子中的单词)首先通过嵌入层转化为高维度的向量表示。嵌入层的输出是一个矩阵,每一行对应一个输入单词的嵌入向量。 2. 位置编码&…

火柴棒图python绘画

使用Python绘制二项分布的概率质量函数(PMF) 在这篇博客中,我们将探讨如何使用Python中的scipy库和matplotlib库来绘制二项分布的概率质量函数(PMF)。二项分布是统计学中常见的离散概率分布,描述了在固定次…

聚类分析方法(二)

目录 三、层次聚类方法(一)层次聚类策略(二)AGNES算法(三)DIANA算法 四、密度聚类方法(一)基本概念(二)算法描述(三)计算实例&#xf…

OpenFWI代码

重点关注文章第4部分 一、代码模块概览 这一部分了解代码主要实现的功能有哪些。 二、运行 这一部分关注如何跑通。 三、数据集 12个数据集(11个2D1个3D) 对计算机而言,上述输入、输出维度大小是按次数定义的。 以“Vel,F…

宏碁F5-572G-59K3笔记本笔记本电脑拆机清灰教程(详解)

1. 前言 我的笔记本开机比较慢,没有固态,听说最近固态比较便宜,就想入手一个,于是拆笔记本看一下有没有可以安的装位置。(友情提示,在拆机之前记得洗手并擦干,以防静电损坏电源器件&#xff09…

国芯方案|珠宝口袋秤芯片方案

口袋秤顾名思义就是可以放进口袋里面的电子秤。可能这个目前在国内使用的人比较少,但在西方国家口袋秤却是可以用来送礼的物品。因为口袋秤的外观跟手机外观大多相似,所以也有人称口袋秤为手机秤。口袋秤主要是用在珠宝、科研、工厂等小物件的高精度测量…

电脑管理软件是什么?电脑管理软件能做什么?

电脑管理软件是一种专门设计用于管理和优化计算机系统的软件工具。它涵盖了多个方面,从系统维护、资源分配到安全防护,都有着广泛的应用。以下是对电脑管理软件及其功能的详细解析: 一、电脑管理软件的定义 电脑管理软件是一种管理类型的软…

品牌文化五大维度,构建品牌竞争力的秘诀!

品牌文化对于企业的发展和成功至关重要。 品牌文化不仅是企业和消费者之间的纽带,也是企业内部员工的凝聚力。 在当今竞争激烈的市场环境中,建立一个有活力和影响力的品牌文化是每个企业都需要认真思考和实践的事情。 品牌文化的五大维度包括价值观、…

JavaScript中的拷贝技术探秘:浅拷贝与深拷贝的奥秘

最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ 前言 JavaScript中的浅拷贝和深拷贝是非常重要的概念,它们在处理对象和数组时具有不同的作用。在编程中,经常需要复制数据以便进行各种操作,但必须注…

红酒知识百科:从入门到精通

红酒,这个深邃而迷人的世界,充满了无尽的知识与奥秘。从葡萄的选择、酿造工艺,到品鉴技巧,每一步都蕴藏着深厚的文化底蕴和精细的技艺。今天,就让我们一起踏上这场红酒知识之旅,从入门开始,逐步…

初识数组(二)

目录 1. 二维数组的初始化 1) 不完全初始化 2) 完全初始化 3) 按照行初始化 4) 初始化时省略行,但是不能省略列 2.二维数组的使用 1) 二维数组的下标 2)二维数组的输入和输出 3. 二维数…