imu_tk代码地址

https://bitbucket.org/alberto_pretto/imu_tk

II. S ENSOR E RROR M ODEL

对于理想的IMU,加速度计三元组的3个轴和陀螺仪三元组的3个轴定义单个共享的正交3D帧。 每个加速度计检测沿一个不同轴的加速度,而每个陀螺仪测量围绕同一轴的角速度。 不幸的是,在实际IMU中,由于组装不准确,两个三元组形成两个不同的(即,未对准的)非正交的帧。 此外,单个传感器并不完美:通常,用于以实际物理量转换传感器的数字输出的比例因子对于相同传感器的不同实例是不同的,而制造商仅提供默认的标称比例因子。 此外,输出信号几乎总是受非零可变偏差的影响。

如上所述,加速度计帧(AF)和陀螺仪帧(GF)通常都是非正交的。 我们可以通过以下方式定义两个相关的正交理想帧(分别为AOF和GOF):

•AOF的x轴和AF的x轴重合
•AOF的y轴位于AF的x轴和y轴所跨越的平面中。

对于陀螺仪情况,分别用GF和GOF替换AF和AOF缩写词就足够了。 最后,我们定义一个主体框架(BF),它是一个正交框架,表示例如IMU底盘的坐标系。 车身框架通常与AF和GF框架的角度不同,但通常它们之间没有直接关系。 对于小角度,非正交帧(AF或GF)中的测量s S可以在正交体帧中变换为(对于推导的细节,参见[18]):

其中s B和s S分别表示车身坐标和加速度计(或陀螺仪)坐标中的特定力(加速度)或等效的旋转速度。 这里βij是围绕第j个BF轴的第i个加速度计或陀螺仪轴的旋转,参见图2。

另一方面,两个正交帧BF和AOF(以及等效地,BF和GOF)通过纯旋转相关。

在所提出的校准方法中,我们假设车身框架BF与加速度计正交框架AOF一致:在这种情况下,角度βxz,βxy,βyx变为零,因此在加速度计情况下,等式1变为:

我们改变字母β,参考一般情况,字母α,指加速度计情况,而O和S分别表示AOF和AF中的特定加速度3。

如前所述,陀螺仪和加速度计测量应参考相同的参考系,在我们的例子中是AOF。 然后,使用Eq 1,对于陀螺仪,我们有:

其中ωO和ωS分别表示AOF和GF中的特定角速度。

加速度计和陀螺仪都受到偏差和尺度误差的影响。 引入了两个缩放矩阵

我们还介绍了两个偏向量

完整的传感器误差模型是

对于加速度计

对于陀螺仪,其中νg和νg分别是加速度计测量噪声和陀螺仪测量噪声。

III. B ASIC C ALIBRATION F RAMEWORK

为了校准加速度计三元组,我们需要估计以下未知参数向量:

我们定义以下函数:

在这里,我们可以忽略测量噪声,因为在我们的校准过程中,我们在每个静态间隔中应用信号平均。

与传统的多位置方案一样,我们将IMU移动到一组M个不同的,暂时稳定的旋转中。 我们可以提取M个加速度矢量Sk(在非正交AF中测量),在每个静态间隔内的时间窗口中对加速度计读数求平均。 我们用来估算加速度计参数的成本函数是:

其中|| g || 是可以从特定公共表格中容易地恢复的局部重力矢量的实际大小(例如,知道我们正在执行校准的位置的纬度,经度和高度)。 为了最小化Eq 10,我们采用Levenberg-Marquardt(LM)算法。

为了校准陀螺仪三元组,我们可以假设系统无偏置,在适当的无运动初始阶段简单地平均静态陀螺仪信号。 以下关于艾伦方差的讨论证明了这一点(参见第IV-C节)。 此外,由于我们需要使用加速度计作为已知参考,我们使用上面计算的校准参数θacc,用等式9校正加速度计读数。

我们定义运算符Ψ,它将n个陀螺仪读数的序列ωSi和由校准的加速度计给出的初始重力值ua,k-1(即表示重力方向的单位矢量)作为输入,并返回最终的重力 或者ug,k,使用第k-1和第k个静态区间之间的陀螺仪测量值计算:

Ψ可以是通过积分输入角速度来计算最终方向的任何积分算法。我们需要估计以校准陀螺仪的未知参数矢量是:

在这种情况下,我们可以将成本函数定义为:

其中M是静态区间的数量,ua,k是在时间窗口中对第k个静态区间中的校准加速度计读数进行平均测量的加速度,并且ug,k是使用等式11计算的加速度对数(即,积分 第k-1和第k个静态区间之间的角速度)。 我们获得θ陀螺,用LM最小化Eq 13。

IV. C ALIBRATION P ROCEDURE

如第二节所述。 I,所提出的校准框架需要收集具有原始加速度计和陀螺仪读数的流的数据集,当操作者在不同的静态位置移动IMU时获取该数据集,以便产生一组不同的,暂时稳定的旋转。 我们的校准协议的简单图表如图1所示。 III,为了减轻Eq 10和Eq 13最小化时的噪声影响,我们需要在适当的时间间隔内对信号求平均值。 这对静态间隔的长度施加了下限(图1中的t等待)。没有运动的初始化周期(图1中的T init)也是必不可少的:这将被用来表征陀螺仪的偏差( 第IV-C节)和静态探测器操作员(第IV-A节)。

A. Static Detector

校准的准确性很大程度上取决于静态和运动间隔之间分类的可靠性:校准加速度计我们使用静态间隔,而对于陀螺仪校准,我们还包括两个连续静态间隔之间的运动间隔。根据我们的经验, 传递基于滤波器的算子,如[8]中使用的准静态检测器,对真实数据集表现不佳:检测到的静态间隔通常包括一小部分运动。 而且,它们需要微调,因为它们取决于三个参数。

我们建议使用基于方差的静态检测器算子,它利用上面介绍的静态区间长度的下限。 我们将探测器基于加速度计信号:给定时间间隔长度为t秒(参见图1),对于每个加速度计样本(tx,a ty,tz),在时间t,我们计算方差幅度,即 方差的大小如下:

其中var t w(a t)是在以t为中心的长度为t w秒的时间间隔内计算一般信号a t的方差的算子。 我们在静态和运动间隔之间进行分类,只需检查ζ(t)的平方是否低于或大于阈值。

作为阈值,我们考虑在所有初始化时段T init上计算的方差幅度ζinit的平方的整数倍。 在所有实验中,我们使用t w = 2秒,而使用Allan方差估计T init(参见第IV-C节)。 值得注意的是,我们的静态探测器不需要任何参数调整:分类中使用的整数乘数由我们的校准算法自动估算(参见第IV-D节)。 图3报告了我们的静态滤波器如何处理实际数据的示例:在这种情况下,估计的整数乘数为6。

B. Runge-Kutta Integration

D. Complete Procedure

为了避免校准参数估计中的不可观察性,必须收集至少九种不同的高度[15](例如,图1)。 根据我们的经验,需要更多N个不同的高度来获得更好的校准结果,同时保持减少每个静态间隔的持续时间,以保持陀螺仪偏差的时间稳定性的假设。当36≤N≤50且1秒≤t等于≤4秒时,我们在校准精度,偏差稳定性和降噪之间取得了良好的平衡。

初始化时段T init的持续时间由Allan方差分析给出(参见第IV-C节)。 校准协议总结在图1中,而在算法1中,报告校准算法的伪代码。

imu_tk标定算法原理的更多相关文章

  1. imu_tk标定算法

    IMU(惯性测量单位)是机器人中非常流行的传感器:其中,它们被用于惯性导航[1],姿态估计[2]和视觉惯性导航[3],[4],也使用 智能手机设备[5]. 机器人技术中使用的IMU通常基于MEMS(微 ...

  2. Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理

    Atitit 图像清晰度 模糊度 检测 识别 评价算法 原理 1.1. 图像边缘一般都是通过对图像进行梯度运算来实现的1 1.2. Remark: 1 1.3.  1.失焦检测. 衡量画面模糊的主要方 ...

  3. 摄像头Camera 标定Calibration原理Theory

    摄像头Camera 标定Calibration原理Theory cv2.cameraCalibration Pinhole camera calibration calls camera vision ...

  4. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  5. RSA算法原理

    一直以来对linux中的ssh认证.SSL.TLS这些安全认证似懂非懂的.看到阮一峰博客中对RSA算法的原理做了非常详细的解释,看完之后茅塞顿开,关于RSA的相关文章如下 RSA算法原理(一) RSA ...

  6. LruCache算法原理及实现

    LruCache算法原理及实现 LruCache算法原理 LRU为Least Recently Used的缩写,意思也就是近期最少使用算法.LruCache将LinkedHashMap的顺序设置为LR ...

  7. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  8. OpenGL学习进程(13)第十课:基本图形的底层实现及算法原理

        本节介绍OpenGL中绘制直线.圆.椭圆,多边形的算法原理.     (1)绘制任意方向(任意斜率)的直线: 1)中点画线法: 中点画线法的算法原理不做介绍,但这里用到最基本的画0<=k ...

  9. 支持向量机原理(四)SMO算法原理

    支持向量机原理(一) 线性支持向量机 支持向量机原理(二) 线性支持向量机的软间隔最大化模型 支持向量机原理(三)线性不可分支持向量机与核函数 支持向量机原理(四)SMO算法原理 支持向量机原理(五) ...

随机推荐

  1. java.awt.headless 模式

    1. 什么是 java.awt.headless? Headless模式是系统的一种配置模式.在系统可能缺少显示设备.键盘或鼠标这些外设的情况下可以使用该模式. 2. 何时使用和headless mo ...

  2. mark 阿里支付

    开源软件企业版特惠高校版博客 我的码云 ·· 8月18日(周六)成都源创会火热报名中,四位一线行业大牛与你面对面,探讨区块链技术热潮下的冷思考. 开源项目 > WEB应用开发 > Web开 ...

  3. Nuget 配置文件的位置

    最近在 Visual Studio 中使用 Nuget 时,发现总是连接代理服务器,忘了什么时候配置的了,找了半天没找到配置位置,最后发现在这个地方: %appdata%\NuGet 找到 NuGet ...

  4. 【Linux】深入理解Linux中内存管理

    主题:Linux内存管理中的分段和分页技术 回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的.换句话说,就是程序在运行的过程中访问的都是物理地址. 如果这个系统只运行一个程序,那么只要这个 ...

  5. Sass编译时Invalid US-ASCII character解决办法

    编译scss文件时,如果出现如下错误 Error: Invalid US-ASCII character "\xC2" on line 63 of src/assets/_scss ...

  6. 再战android-语音识别1(科大讯飞)

    重新拾起刚入门的android,开发个小工具,一来不让自己离开发太远,二来看能否做出一个帮助自己管儿子学习的东西. 这次的主题是语音识别.稍微研究了下,开放的语音识别平台,本地识别的担心识别率问题,在 ...

  7. OSI网络体系结构

    为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互连起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1983年形成了开放系统互连基本参 ...

  8. (原)android系统下绑定Server的时候报MainActivity has leaked ServiceConnection的错误

    今天在android系统下根据官方的demo代码,我们需要启动一个服务,并绑定,但在程序启动以后,老是报错:   Activity MainActivity has leaked ServiceCon ...

  9. golang获取命令行参数

    部署golang项目时难免要通过命令行来设置一些参数,那么在golang中如何操作命令行参数呢?可以使用os库和flag库. 1.golang os库获取命令行参数 os可以通过变量Args来获取命令 ...

  10. Spark学习笔记——文本处理技术

    1.建立TF-IDF模型 import org.apache.spark.{SparkConf, SparkContext} import org.apache.spark.mllib.linalg. ...