自动驾驶融合定位:IMU内参模型及标定

自动驾驶融合定位:IMU内参模型及标定

一、 概述

标定的本质是参数辨识。首先明确哪些参数可辨识,其次弄清怎样辨识。

参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。

辨识就比较丰富了,如果让各位先不局限于标定任务,想一想你了解的辨识方法有哪些,常见的回答应该有这样几个:

1)解析法或最小二乘

2)滤波(kalman等)

3)梯度下降迭代优化

确实没错,标定里用的就是这些方法。这说明标定其实就是一个普通的参数辨识问题,它和你遇到的其他参数辨识任务比,并没有特殊在哪里。

本篇文章我们先分析标定的误差参数、误差模型,然后介绍两种标定方法,一种是基于转台的方法,使用解析法或最小二乘法进行参数辨识,另一种是不转台的方法,使用迭代优化的方法进行参数辨识。

基于滤波的方法我们并不打算讲,一是因为从参数辨识的精度讲,滤波和优化比,还是有比较大的劣势,另一个是我过去所基础的基于滤波的标定,都是高精度惯性导航里面使用的,这类方法在自动驾驶或机器人里所用的这种精度的IMU上,并不能很好地work。当然,现在也有一些基于kalman的slam系统里在标内参,那就是另外一个事情了,在这里我们不做讨论。

image

附赠自动驾驶学习资料和量产经验:链接

二、标定参数分析

1.参数项

1) 零偏

这个比较好理解,就是输出比输入多了一个常值误差。

需要注意的是,我们之前通过Allan方差分析,得到了器件的量化噪声、角度随机游走、角速率随机游走、零偏不稳定性噪声、速率斜坡,仔细看,这些都是对零偏质量的分析,也可以直观的理解为零偏的波动和漂移程度,这里面并没有分析零偏本身的大小,而这个才是我们标定里要去估计的那个常值误差。

加速度计的零偏在这里表示为

image

陀螺仪的零偏在这里表示为

image

2) 标度因数误差

也叫刻度因数误差。假设器件输出的是标准单位角速度(rad/s),那么输出和输入的比就是1。如果不是,就得需要标定,修正这个比例。

image

3) 安装误差

一图胜千言,上图吧。

image

这里面b坐标系是正交的imu坐标系,g坐标系的三个轴是分别对应三个陀螺仪。由于加工工艺原因,陀螺仪的三个轴并不正交,和我们导航中使用的正交轴不重合。我们需要仔细想一想,这个安装误差怎么在陀螺输出中体现出来的,因为我们标定时只能采集到陀螺的输出,而无法直接去测量安装误差。理论上,在陀螺坐标轴和b系重合的情况下,我们沿b系某一个坐标轴旋转,那么其他两个轴是不会有角速度输出的,而有了安装误差以后,便有了输出,据此,我们就可以建立输出和误差之间的关系了。以图中一项误差为例,Sgxy表示的就是y轴的单位输入,在x陀螺上由安装误差造成的输出。由此,我们可以把所有的安装误差都成矩阵形式,即:

image

这样一共有12项安装误差参数。有的时候,可以简化为9项,具体什么情况下简化,以及怎样简化,我们会在本文的后面讲。

2. 误差模型

image

三、标定方法

1. 基于转台的标定

1.1 标定原理

在说标定之前,我们先看几个简单的小问题。

第一个问题,假如给你下面的方程组,你会怎么解

image

应该都能想到,用2式减去1式,得到y=1,然后带入1式,得到x=0。

第二个问题,下面的式子里,你可以随意给定a和b的值,并同时会得到c的结果,这个x和y怎么解。

image

也很简单,首先a=1,b=0,得到x,然后把a=0,b=1得到y。

第三个问题,下面式子,同样是输入a和b,得到c1和c2,怎么解。

image

其实就是前两个问题的结合,先让a=0,转成问题1,得到x和y,随后让a=1,得到z。

第四个问题,给你下面的式子,可以随意更改ax、ay和az,怎么解。

image

想必凭各位的冰雪聪明,一定知道我在说什么了。到这里,虽然还没讲标定,但你已经懂标定了。标定就是通过改变输入,来构建方程组,去解这个方程。

1.2 参数辨识方法

其实标定的过程就是在不停构建方程的过程,这里构建方程使用的就是转台(如下图)。

image

1) 加速度计内参标定

当IMU固定在转台上以后,通过翻滚转台框架,停在不同的位置(所谓不同位置,指的是转台的内外框架处在不同的角度时,IMU的姿态不一样,下图给出的是一个十二位置的标定方案示意图),就可以得到不同的加速度输入(IMU姿态不同,重力在IMU上的投影不同),从而构建方程组,去求解加速度计的内参。

image

a. 解析法

image

b. 最小二乘法

由于实际标定过程中,在一个位置采集得到的数据会有噪声,并且由于转台控制误差的存在,仅依靠联立两个位置去求解参数的方法精度有限,因此想通过联立更多位置去求解,这就是最小二乘法的目的。

对于加速度计误差模型,我们可以转换一下形式,写成

image

其中

image

image

这便是待求的标定参数。

c. 讨论

通过以上两种标定方法的介绍,可以看出,这里默认前提是转台是经过调平的,所谓调平,指的是转台水平面与地球水平面之间是平行的。调平的目的是,直接得到重力在IMU上的投影(各位可以很容易地想到,若两个水平面不平行,当IMU水平向上放置时,三个加速度计的输入就不是0,0,g了)。调平的方法也比较简单,使用水平仪做基准,去调整转台即可。当然,不依赖调平的方法也有,而且很普遍,只是方法复杂一些,我们在这里不做介绍,相信从此处讲的一个简单方法入手,再去查此类文献,你会很快弄懂那些相对高级的方法。

2) 陀螺仪内参标定

其实,明白了加速度计的内参标定方法以后,陀螺仪的内参标定方法就很容易想到了。让转台提供真实输入,通过改变真实输入,得到不同的方程组,最后用解析法或者最小二乘法去辨识参数。

这里需要说明的一点是,陀螺仪的输入是角速度,但是转台一般角速度不如角度精度高,因此不是直接以角速度作为真值,而是以积分得到的角度作为真值。

a. 解析法

以绕IMU的z轴逆时针旋转为例,计算得到输出与输入的关系为

image

展开并忽略二阶小量(指的是,我们通常认为零偏、安装误差、标度因数误差都是小量,任何两个小量相乘,都认为是二阶小量,小到可以直接忽略),可得

image

image

b. 最小二乘法

对于最小二乘法,经过加速度计中解析法和最小二乘法之间联系的了解,相信各位已经明白在陀螺仪标定中该怎么用这种方法了,此处就不啰嗦了。

c. 讨论

在这里,我们并没有考虑地球自转角速度(简称地速),它的大小约为15°/h,当我们要标定的陀螺仪的精度小于这个水平很多的时候,那么不考虑也无所谓,反之,就必须考虑了。一个比较简单的方法是,找到转台坐标系与地球坐标系之间的转换关系,这样,当转台处在任意一个位置的时候,地速在IMU上的投影都是已知的,在输入和输出中直接剪掉它的影响即可,这种方法叫转台对准。

各位可以理解一下转台对准和转台调平之间得联系。调平是为了找到IMU和重力之间得联系,对准是为了找到IMU和地速之间得联系,而重力和地速都是地理系下天然存在的输入。因此,可以概括为,调平和对准都是为了找到转台和地理系之间得转换关系。

但是,对准并不像调平那么简单,调平使用一个水平仪即可,而对准往往需要借助全站仪来操作,流程很复杂。实际上,陀螺仪的标定方法中,也有可以通过联立更多位置,把未知的地速投影直接抵消掉的方法,这样就不需要转台对准了。与加速度计标定的讲解思路类似,此处只是借助讲解简单情况下的方法,让大家理解原理和过程,至于这些相对高级的方法,仍然希望大家通过阅读文献去自己扩展。

2. 不依赖转台的标定

1.1 标定思路

基于转台的标定方法简单、精度高,但是有一个最大的缺点,就是这个方法太贵了。对于一些低精度的IMU,本身精度不高,那么也就不需要使用这么高精度的标定方法,因此,如果能为这种需求去寻找一些不依赖转台的标定方法,那就再好不过了。

再进一步想下去,好是好,可是怎么实现呢。标定的前提是要有真值,因为我们测量到的是IMU的输入,输入和真值之间的差异是由内参误差引起的,有了真值才能有内参的辨识。自然界天然的真值输入是重力加速度,但是,借助转台的时候,才能知道重力在IMU上的投影是多少,而我们此处想找的是不依赖转台的方法,那怎么搞?其实,不防换一种思路,寻找输入和真值之间得差异,一定需要知道重力在IMU每个轴上的投影是多少吗?当没有内参误差的时候,加速度计三个轴的矢量和必然和重力矢量大小相等,反之,则不等,这不也是找到二者的差异了吗,并且和内参误差建立了联系。

当然,这些只是用文字描述的思路,具体到实现上,还得用数学模型表示。

以下的标定思路、流程是来自于论文:A Robust and Easy to Implement Method for IMU Calibration without External Equipments

并且该文章有对应的开源代码:https://github.com/Kyle-ak/imu_tk

由于符号以及内参模型上有一些差异,因此本文与该论文在表达与公式上会有一些差异,但并不矛盾。

1.2 内参模型

内参模型不是讲过了吗,为什么还要再讲一次?这就又得费一点口舌了,理解起来可能要费点劲,我希望能讲得明白一些。

回顾基于转台的标定方法,我们定义了12项安装误差,他们表示的是加速度计、陀螺仪的各个敏感轴与IMU的坐标轴(即直角坐标系b系)之间的关系,那这里有一个疑问,b系是怎么来的?或者说,为什么把它规定在现在这个方向,而不是别的方向?此处的意思是指,如果我把一个和现在的b系非常接近,只差0.1°的一个直角坐标系规定为新的b系,有问题吗?好像没什么问题。也就是说b系是可以人为规定的。

在基于转台的标定方法里,IMU的b系其实默认被规定成了和转台的坐标系重合,因为这样转台的输入,才真的是IMU的输入,上面的各种基于转台标定的模型和方法才成立。

而当标定方法脱离转台时,这种约束关系就不存在了,而b系又是可以认为规定的,那么就有一种规定方法,可以简化内参模型。

在规定坐标系时,若令IMU坐标系(b系)的 𝑋𝑏 轴与加速度计的 𝑋𝑎 轴重合,且 𝑋𝑏𝑂𝑌𝑏 与 𝑋𝑎𝑂𝑌𝑎 共面(如下图)

image

则此时,加速度计的安装误差只剩下三个参数

image

另外,当满足这种关系时,b系就已经完全固定了,因此此时陀螺仪的三个轴和b系之间的安装误差仍为 6 个。

1.3 标定方法

1)加速度计标定

按照前述思路,我们需要建立测量的加速度矢量与重力加速度矢量之间的误差,并以此误差为基础,反推出内参模型中的参数。

image

image

有了模型,接下来就是参数的辨识了,此处采用的是高斯牛顿法进行辨识,这里不会高斯牛顿法的一些基础知识进行展开,各位可以自行搜索一些资料去了解。暂时不懂的,也不影响理解,我们只需要知道,有了残差函数以及残差对代估参数的雅可比之后,便可以进行优化,求解出参数,残差函数,我们已经给出了,雅可比指的是残差函数对 𝜃𝑎𝑐𝑐 中的每一项求偏倒,这都是一些基本的技能,也不详细展开了。

最后,需要注意的是,由于待求解参数很多,而只静止在一个位置是无法求解出全部参数的,因为解不唯一,这和基于转台标定中,要用多个方程联立求解参数的本质是一样的,只是此处的方程不一样,辨识方法也不一样。

具体停留几个位置,以及各个位置怎样放置,答案并不唯一,各位可以自己思考一下这里面的问题,看看至少几个位置可以把参数求解出来。下图给出的是一种方案,根据其中加速度计的测量值(这里的测量值并不直接是 𝑚/𝑠2 为单位,而是乘了一个比例系数,可以直接认为最大值对应的就是 𝑔0=9.8𝑚/𝑠2 ,然后简单换算一下)。

image

在这样的旋转方案下,论文种给出的具体流程如下图

image

2)陀螺仪标定

陀螺仪标定在加速度计标定之后进行,因此在这一步,可以认为加速度计是无误差的。另外,在这种方法中,我们并不使用优化的方式标定陀螺仪的零偏,主要原因还是因为零偏造成的影响偏小,标不准。而且零偏的标定,可以使用前述静止的方法去求解,简单易行。因此,此处陀螺仪的待估参数为

image

image

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HCIP-Datacom-ARST必选题库_BGP【道题】

1.关于summary automatic命令和BGP聚合的描述,错误的是? 该命令用于实现自动聚合,其优先级高于手动聚合 配置该命令后,BGP将按自然网段聚合路由 该命令用来使能对本地引入的路由进行自动聚合 配置该命令后,BGP只向对等体发送聚合后的路由 1.关于summary automatic命令和BGP聚…

C++初阶学习第五弹——类与对象(下)——类与对象的收官战

类与对象(上):C初阶学习第三弹——类与对象(上)——初始类与对象-CSDN博客 类与对象(中):C初阶学习第四弹——类与对象(中)——刨析类与对象的核心点-CSDN博…

Linux环境下的事件驱动力量:探索Libevent的高性能I/O架构

hello !大家好呀! 欢迎大家来到我的Linux高性能服务器编程系列之《Linux环境下的事件驱动力量:探索Libevent的高性能I/O架构》,在这篇文章中,你将会学习到Libevent的高性能I/O原理以及应用,并且我会给出源码…

云仓酒庄携手央视共筑品牌新高度,酒类行业广告战略迈向新征程

随着酒类市场的日益繁荣与竞争的加剧,品牌宣传与推广在酒类行业中的地位愈发凸显。近日,云仓酒庄宣布与中视中州(央视代理机构)达成2024-2025年度央视广告战略合作,云仓酒庄副总裁周玄代表云仓酒庄签约,这一…

Ubuntu系统安装nvfortran详细步骤【笔记】

实践设备:华硕FX-PRO(NVIDIA GeForce GTX 960M) Ubuntu系统安装NVFORTRAN(NVIDIA Fortran Compiler)步骤如下: 安装依赖项:在安装NVFORTRAN之前,你需要确保系统已经安装了一些必要…

Linux学习(一)-- 简单的认识

目录 1. Linux的诞生 2.Linux发行版 拓展: (1)什么是Linux系统的内核? (2)什么是Linux系统发行版? 1. Linux的诞生 Linux创始人: 林纳斯 托瓦兹 Linux 诞生于1991年,作者上大学…

Java特性之设计模式【享元模式】

一、享元模式 概述 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式 享元模式尝试重用现有的同类对…

LeetCode 226.翻转二叉树(全网最多的解法)

LeetCode 226.翻转二叉树 1、题目 题目链接:226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1]示例 2&#…

Unity 性能优化之遮挡剔除(Occlusion Culling)(六)

提示:仅供参考,有误之处,麻烦大佬指出,不胜感激! 文章目录 前言一、遮挡剔除是什么?二、静态遮挡剔除的使用步骤1.标记为遮挡剔除对象2.创建Occlusion Area组件3.烘焙4.Occlusion窗口Bake的参数Smallest Oc…

MYSQL基础架构、执行过程分析、事务的实现、索引的选择、覆盖索引

本文是mysql45讲的1-5的总结 文章目录 基础架构连接器分析器优化器执行器SQL查询执行过程详细执行步骤 SQL更新执行过程重要的日志模块:redo log重要的日志模块:binlog阶段性提交 事务事务隔离的实现启动 索引数据库索引模型InnoDB索引组织结构主键选择…

[Unity常见小问题]打包ios后无法修改模型透明度

问题 在Editor下可以使用如下代码去修改模型的材质的透明度,但是打包ios后无法对透明度进行修改且没有任何warning和error using System.Collections; using System.Collections.Generic; using UnityEngine;public class NewBehaviourScript : MonoBehaviour {[R…

订票系统|基于Springboot+vue的火车票订票系统(源码+数据库+文档)

订票系统目录 基于Springbootvue的火车票订票系统 一、前言 二、系统设计 三、系统功能设计 1会员信息管理 2 车次信息管理 3订票订单管理 4留言板管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍…

【RAG 论文】SKR:Self-Knowledge 指导下的 RAG

论文:Self-Knowledge Guided Retrieval Augmentation for Large Language Models ⭐⭐⭐⭐ Tsinghua, arXiv:2310.05002 文章目录 一、论文速读二、实现细节2.1 数据的收集2.2 引出 LLM 的 Self-Knowledge 的方法1)Direct Prompting2)In-Cont…

正则将段落分割成句子

这里分割段落不区分中英文标点,你可以根据需求改 分割后标点跟随句子后面 def split_sentences_keep_delimiter(text):pattern r[^。!!??::;;,,][。!!??::;&#xff…

记录DemoApplication.java不变蓝问题

问题 解决方案 一、点击右下角加载 二、右键项目 勾选maven

计算机毕设

随着社会和国家的重视,大学对于大学生毕业设计越来越重视。 做软件设计设计方面,前后端分离是必不可少的,代码管理工具,前后端接口测试是项目中必须要用到的工具。做大数据设计方面,主要是要用到爬虫进行数据爬取&…

多选择性更容易理解!基于可选择性遗传算法的微电网经济-低碳协调优化程序代码!

前言 随着能源危机和环境污染日益严重,传的能源已不再满足人们日益增长的能源需求,丰富清洁的可再生能源是未来的发展方向,分布式可再生能源发电技术获得了飞速进步。然而,在引入分布式可再生电源后,微电网的复杂性以…

音频智能切换器JR-AR42-A

憬锐JR-AR42-A音频自动智能切换器(四切一),具备四路模拟卡侬立体声音频输入,两路模拟卡侬立体声音频输出,其中输入第1路和输出第1路为断电直通通道。具有输入音频信号幅度判别,可设置门限电平和切换延时时间,可以根据需…

通信系列:通信中如何度量消息中所包含的信息量?如何评估通信系统的性能?

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等 本节目录 一、通信中如何度量消息…

代码随想录训练营31day-动态规划4

一、完全背包(参考博客) 和01背包区别在于物品可以无限次放入背包。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 因此在需要在遍历顺序上进行区别,参考代码随想录: 二、518.零钱兑换II 题目求的是组…