VIO外参标定方法总结

一、前言

VIO外参标定是指相机和IMU之间的转移矩阵的确定,包括3×3的旋转矩阵和3维平移向量。整体上分为离线标定和在线标定两类方法,这篇文章做一个总结,主要是经典的方法,记录其思想。

二、博文链接

1、离线标定方法

最基本的当然就是人工手动标定了,但这样不仅费力,并且误差大不够准确,作为初始猜测还可以。

VIO最知名的离线标定工具就是Kalibr了。

GitHub - ethz-asl/kalibr: The Kalibr visual-inertial calibration toolboxThe Kalibr visual-inertial calibration toolbox. Contribute to ethz-asl/kalibr development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/ethz-asl/kalibrKalibr标定的基本原理

https://www.cnblogs.com/mybrave/p/9675936.htmlicon-default.png?t=N7T8https://www.cnblogs.com/mybrave/p/9675936.html

camera-imu内外参标定 - 知乎在vio系统中,camera-imu间内外参精确与否对整个定位精度起着重要的作用。所以良好的标定结果是定位系统的前提工作。 目前标定算法主要分为离线和在线标定,离线标定以kalibr为代表,能够标定camera内参、camera-i…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/68863677Camera-IMU联合标定原理 | AI技术聚合Camera-IMU联合标定原理一.相机投影模型二.IMU 模型三.Camera-IMU标定模型(一) 相机-IMU旋转(二) 相机-IMU平移(三) 视觉惯性代价函数四. camera-imu联合标定(一) 粗略估计camera与imu之间时间延时(二) 获取imu-camera之间初始旋转,还有一些必要的初始值:重…icon-default.png?t=N7T8https://aitechtogether.com/python/142928.html手眼标定

机器人视觉标定(二)手眼标定 - 知乎在(一)中已经介绍了线结构光标定,通过线结构光可以得到物体被照射激光部分的相机三维坐标。当机械手臂安装了线结构光传感器后,相当于被安装了眼睛,得到相机三维坐标相当于眼睛看到了物体的位置,这时就需要眼睛…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/78855930

2、在线标定方法

VINS-mono外参标定原理
https://zhuanlan.zhihu.com/p/413096765icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/413096765解放双手|教你进行相机与IMU外参的在线标定 - 计算机视觉life的文章 - 知乎
https://zhuanlan.zhihu.com/p/70760958icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/70760958

三、VIO在线外参标定典型方法详解

1、自动标定:

单目相机通过对极几何和随机采样一致性确定两帧图像之间的相对旋转,IMU可以得到自己坐标系下的前后两帧图像之间相对旋转,根据手眼标定方法,结合多帧数据,可以得到关于旋转的超定方程,利用优化方法则可以得到相机和IMU之间的旋转外参。

2、在线估计:

求外参残差关于位移和旋转的雅可比

四、VINS-mono的外参标定

VINS-mono上使用的外参自动标定与在线标定算法,来自Monocular_VisualInertial_State_Estimation_With_Online_Initialization_and_CameraIMU_Extrinsic_Calibration这篇论文。整体的流程方法如下:

手眼标定原理:

结合上图, 相邻Camera关键帧对应pose可以由两种方式(为后面构建方程铺垫):

a.八点法算法(solveRelativeR)

b.Imu预积分并与结合

标定转换

红色线蓝色线得到的变换值理论上应该相同,则可通过假设从Camera坐标系到Imu坐标系相对旋转量为即q和R ,进一步可构建方程并求解(vins-mono使用SVD求解方法)

根据手眼标定原理与上述原理,得到(4),转换成四元数格式,经过整理得到形如Ax=0的(7)式。

在求解过程中,因为上面在求解帧间的R、T变换时是用对极约束算法,该方法避免不了有错误的匹配等(outlier),因此对Ax=0中A矩阵加权计算从而增加在线标定结果鲁棒性,加权的计算方式(近似the Huber norm计算方式)参考作者引用的标定论文中的式8、9,如下

为什么奇异值大于0.25才认为标定成功?

代码中ric_cov(1) > 0.25,为倒数第二小的奇异值。最小的奇异值接近0(奇异值大于0,且通常前面几个大的奇异值总和能占所有奇异值总和的一大部分),这里给了个阈值,看其是否足够大,每个奇异值大小可以理解为分方向的力度大小。这边用0.25来限定倒数第二小的奇异值,是判断不为0的奇异解中,最终求解的奇异值是否是只有一个接近于0,最优解只有一个,如果有多个接近0,都很小的话,那么该最小奇异解很可能不是最优,从而间接可以判断在标定过程中是否有充足的旋转等。

速度,姿态,特征深度和相机- IMU平移的线性初始化:一旦相机- IMU旋转固定,我们可以估计相机- IMU的平移,同时初始化速度,姿态和特征深度,以及IMU相对于初始参考帧的姿态。线性初始化通过最小化滑动窗口内IMU和单目相机所有测量误差的马氏范数之和进行最大似然估计。

值得注意的是,在这个线性初始化阶段,我们重用了用于相机- IMU旋转标定的传感器测量值,但

固定为常数。我们还直接使用陀螺仪测量值短期积分得到的增量和相对旋转。由于这种线性初始化通常只能在几秒内完成,直接使用IMU旋转不会造成明显的漂移。

进一步细化:

VINS-Mono在获得旋转变换之后,在进行VIO的过程中,将相机与IMU外参作为优化参数在整个算法运行过程中进行矫正,从而保证外参的准确性。

在状态初始化和获得相机- IMU标定后,进行了滑动窗口非线性估计器,以进行高精度的状态估计和标定优化。这是文献[ 7 ]和文献[ 8 ]的扩展,将相机- IMU标定纳入非线性优化中。由于非线性优化中的大量参数与线性初始化中的参数具有相同的物理意义,这里我们通过重用符号来表示状态向量( X )、雅克比矩阵( H、F、G)、协方差矩阵( P , Q)和信息矩阵( A ),从而引入了符号的轻微滥用。

全状态的定义类似于线性情况,除了全6 - DOF相机- IMU变换包含在状态向量中。同样将重力矢量替换为四元数,对IMU平动和转动(转置再次被忽略)进行联合优化,我们最小化所有测量残差的马氏范数之和以获得最大后验估计。

我们使用误差状态表示法[ 6 ]将非线性系统( 23 )线性化,并使用具有Huber范数的Gauss - Newton算法[ 30 ]求解,以实现鲁棒的异常值剔除。位置、速度和特征深度等线性分量的残差可以很容易地定义为最新状态估计的补充。

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

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

相关文章

p0级故障-nptd和ntpdate用法

一、背景 绝对真实的大厂线上P0级故障经历分享。 某日凌晨3点,企业微信群变得热闹起来,想都不用想,作为互联网人,特别是运维相关的同学知道,肯定又是出故障了,并且这个故障还很大。 当前晚上我睡着了&#…

【Java EE】 文件IO的使用以及流操作

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

【Qt】error LNK2001: 无法解析的外部符号 “__declspec(dllimport)

参考:Qt/VS LNK2019/LNK2001:无法解析的外部符号_qt lnk2001无法解析的外部符号-CSDN博客 微软官方报错文档-链接器工具错误 LNK2019 __declspec error LNK2001: 无法解析的外部符号 "__declspec(dllimport) 原因 以这种为前缀的基本上跟库相关…

Visual Studio安装MFC开发组件

MFC由于比较古老了,Visual Studio默认没有这个开发组件。最近由于一些原因,需要使用这个库,这就需要另外安装。 参考了网上的一些资料,根据实际使用,其实很多步骤不是必须的。 https://zhuanlan.zhihu.com/p/68117276…

HarmonyOS开发实战(黑马健康系列一:欢迎页)

系列文章目录 (零)鸿蒙HarmonyOS入门:如何配置环境,输出“Hello World“ (一)鸿蒙HarmonyOS开发基础 (二)鸿蒙HarmonyOS主力开发语言ArkTS-基本语法 (三)鸿蒙…

沐风老师3DMAX一键相框生成插件安装使用方法教程

3DMAX一键相框生成插件使用教程 3DMAX一键相框生成插件,用于根据导入的图像文件以正确的比例从选定的图像中快速创建相框。只需点击几下鼠标,它就可以同时创建多个相框,在尺寸、轮廓、颜色和玻璃方面有许多选项。 支持Corona、Vray和标准材质…

Java基础(运算符)

运算符 运算符和表达式 运算符:对字面量或者变量进行操作的符号 表达式:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式;不同运算符连接的表达式体现的是不同类型的表达式。 算术运算符(加…

Unity 按下Play键后,Scene View里面一切正常,但是Game View中什么都没有 -- Camera Clear Flags的设置

问题如下所示。 最先遇到这个问题是我想用Unity开发一个VR 360-degree Image Viewer。在Scene View中可以看到球体,但是Game View什么都看不到。最后找到的原因是,我使用的shader是Skybox/Panorama, 需要把Main Camera的Clear Flags设置成Do…

灌区信息化解决方案-大型灌区信息化改造

系统方案 灌区信息化解决方案主要对灌区的水情、渠道流量、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据&#xff…

多组学+机器学习+膀胱癌+分型+建模

这是一个基于多组学机器学习的分型建模文章,这里我们大概介绍一下,这篇文章做了啥 一、研究背景 1、尿路上皮癌是高度恶性的肿瘤,预后差,死亡率高 2、没有明显有效的治疗方法,多数患者在免疫治疗中无法受益&#xf…

Java混淆的重要性

在软件开发领域,安全性与代码保护一直是备受关注的问题。特别是在Java这样的跨平台语言中,保护源代码的机密性和完整性显得尤为重要。Java混淆作为一种代码保护技术,其在现代软件开发中的地位日益凸显。本文将详细探讨Java混淆的重要性&#…

【网络安全】网络安全协议和防火墙

目录 1、网络层的安全协议:IPsec 协议族 (1)IP 安全数据报格式 (2)互联网密钥交换 IKE (Internet Key Exchange) 协议 2、运输层的安全协议:TLS 协议 3、系统安全:防火墙与入侵检测 1、网络…

addr2line + objdump 定位crash问题

目录 背景 godbolt汇编工具 tombstone ARM平台汇编知识 寄存器介绍 常见汇编指令 函数入参及传递返回值过程 入参顺序 变参函数 虚函数表 典型问题分析过程 Crash BackTrace Addr2line objdump 拓展 为什么SetCameraId函数地址偏移是40(0x28) 参考 背景 最近在…

kerberos:介绍

文章目录 一、介绍二、kerberos框架1、名词解释2、框架 三、优缺点四、其他认证机制1、SSL2、OAuth3、LDAP 一、介绍 Kerberos是一种计算机网络授权协议,主要用于在非安全网络环境中对个人通信进行安全的身份认证。这个协议由麻省理工学院(MIT&#xff…

软考-系统分析师-精要1

1、什么是软件需求 软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。 软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力…

Leetcode 118 杨辉三角

目录 一、问题描述二、示例及约束三、代码方法一:数学 四、总结 一、问题描述 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。   在「杨辉三角」中,每个数是它左上方和右上方的数的和。 二、示例及约束 示例 1&#xff1a…

电子防潮柜出厂前要经过哪些测试?

电子防潮柜在发货前应执行一系列质量控制测试以确保其功能正常、性能稳定且能够满足用户存储物品对湿度控制的需求。以下是沐渥电子防潮柜出厂前的测试流程: 1)除湿性能测试:检查并验证防潮柜能否按照设定的湿度目标值准确运行,可…

燃冬之yum、vim和你

了解了很多指令和权限,搞点真枪实弹来瞅瞅 学Linux不是天天就在那掰扯指令玩,也不是就研究那个权限 准备好迎接Linux相关工具的使用了么码农桑~ yum 软件包 什么是软件包呢? 首先来举个生活中常见点的例子:比如我的手机是华为…

盘点数据资产管理十大活动职能 优化企业数据资产管理和应用

在当今的数字化时代,数据已成为企业最宝贵的资产之一,在上篇文章中我们对数据资产管理进行了初步的介绍。 上篇文章指路👉什么是数据资产管理?详谈数据资产管理的难点与发展现状! 有效的数据资产管理不仅能提升企业的…

【JAVA】阿里技术官耗时三个月整理的Java核心知识点

在裁员风波的席卷之下,IT行业弥漫着浓厚的焦虑和不安。面对如此动荡的环境,一个共识日益凸显:提升个人价值至关重要。 这不仅仅是指薪资上的数字增长,更重要的是在职场中、在专业领域、在技术上不断取得突破,并塑造自…