相机-imu外参校准总结
1. 研究背景及相关工作
1)研究背景
单目视觉惯性slam是一种旨在跟踪移动平台的增量运动并使用来自单个车载摄像头和imu传感器的测量结果同时构建周围环境地图的技术。视觉相机和惯性测量单元(imu)是slam技术的理想选择,因为这两种传感器模式尺寸小,价格便宜,功耗低,并且可以相互补充。视觉传感器在大多数纹理丰富的场景中效果很好,但是如果遇到玻璃,白墙等特征较少的场景,基本上无法工作;imu长时间使用有很大的累计误差,但在短时间内,其相对位移数据又有很高的精度。所以视觉传感器失效时,融合imu数据,能够提高定位的精度,并且在系统正常运行过程中结合相机和imu数据同时对状态进行估计。这些属性使得视觉惯性组合可以广泛用于实际应用中,例如机器人导航[1][2],自动或半自动驾驶[3],实时三维重建[4],虚拟和增强现实[5]。
几种视觉惯性融合技术已经被提出,像递归(卡尔曼滤波)算法[6][7],使用imu测量数据进行状态积分,以及基于关键帧的非线性优化方法[8][9][10],同时最小化视觉和惯性几何误差。然而这些方法的性能很大程度上取决于相机和imu之间的6自由度的精确外部参数校准。无论是在求取相机位姿的时候还是在后端融合相机和imu数据进行状态优化的过程中都用到了外部参数。不正确的校准将在运动估计中引入系统偏差并降低整体导航性能。
2)相关工作
获得精确外部参数的一种代替方法是利用离线方法[11][12][13]。然而,这些方法复杂且耗时,因为他们通常需要专业人士小心地将传感器套件移动到固定的校准目标前面。此外,每当重新定位传感器或施加显著的器械应力时,通常需要重复该过程。另一种替代方案是应用在线校准方法来联合估计初始值和外部参数。Kelly等人提出了一种基于无迹卡尔曼滤波器的自校准方法[14]来校准外部参数。Martinelli引入了一种封闭形式的解决方案来估计初始值[15],后来在[16]中提出了它的修订,以自动估计陀螺仪偏差。Yang和Shen用基于优化的线性估计器校准外部参数和初始值(imu偏差除外)[17]。在他们的扩展单目视觉惯性系统(VINS-Mono)中,imu偏差校准包含在滑动窗口非线性估计器中[18]。
2. 问题描述
因为优化时,拥有视觉和惯性两种传感器数据,需要利用这两种数据同时对系统状态进行优化。所以,我们认定以imu位姿为基准,在进行图像点与空间点的操作时便通过桥梁—外参R和T将imu位姿转换成相机位姿。所以R T的精准度极为重要。

3. 本人问题的描述及解决办法
输入:Ps[i] Rs[i] 图像帧 (Ps Rs 代表imu位姿,精度极高)
输出:R T(相机-imu外参)
- 根据公式
,求出R的初值,这里用到了相机位姿,所以需要做纯视觉初始化。 - 需要求尺度s,公式如下。这里需要做改进,因为T未知,所以同时将T设为待求量(改进公式见笔记本)。 (求出s后还可以通过该公式
求出T的初值 )

- 第三步非线性优化时会优化空间点深度,所以这步要做三角化,初始化深度。(三角化时,以相邻两帧的相机位姿为基准,所以会用到纯视觉初始化的相机位姿)。
- 非线性紧耦合优化,公式:

同时优化R T和空间点深度λ。
4. 新思路
1) 简单对比发现vi orb-slam的初始化考虑因素更多一些(包括求取了加速度偏置,以及外参的平移),两个方法的初始化详细对比见我的另一篇博客https://www.cnblogs.com/mybrave/p/9564899.html。
所以,尝试做该实验,将vi orb-slam中视觉惯导初始化的部分移植到vins中,查看优化效果。
2)
- 使用双目相机算出R的初值。
- 直接通过双目算出空间点深度,这里便不需要求s和相机平移。
- 第三步进行非线性紧耦合优化公式为:

(双目求出的空间点深度要比单目+imu算出的深度更精确吗??? 差别就在尺度s和两帧之间的旋转平移的准确度上,尺度s即在初始化的过程中求出)
[1] A. Stelzer, H. Hirschmüller, and M. Görner, “Stereo-vision-based navigation of a six-legged walking robot in unknown rough terrain,” Int. J. Robot. Res., vol. 31, no. 4, pp. 381–402, 2012.
[2] H. Liu, Z. Wang, and P. Chen, “Feature points selection with flocks of features constraint for visual simultaneous localization and mapping,” Int. J. Adv. Robot. Syst., vol. 14, no. 1, pp. 1–11, 2016.
[3] S. Weiss, D. Scaramuzza, and R. Siegwart, “Monocular-SLAM-based navigation for autonomous micro helicopters in GPS-denied environments,” J. Field Robot., vol. 28, no. 6, pp. 854–874, 2011.
[4] P. Tanskanen, K. Kolev, L. Meier, F. Camposeco, O. Saurer, and M. Pollefeys, “Live metric 3d reconstruction on mobile phones,” in Proc. IEEE Int. Conf. Comput. Vision, 2013, pp. 65–72.
[5] T. Oskiper, S. Samarasekera, and R. Kumar, “Multi-sensor navigation algorithm using monocular camera, IMU and GPS for large scale augmented reality,” in Proc. IEEE Int. Symp. Mixed Augmented Reality, 2012, pp. 71–80.
[6] M. Li and A. I. Mourikis, “Improving the accuracy of EKF-based visual-inertial odometry,” in Proc. IEEE Int. Conf. Robot. Autom., 2012, pp. 828–835.
[7] P. Tanskanen, T. Naegeli, M. Pollefeys, and O. Hilliges, “Semi-direct EKF-based monocular visual-inertial odometry,” in Proc. IEEE/RSJ Int. Conf. Intell. Robots Syst., 2015, pp. 6073–6078.
[8] S. Leutenegger, S. Lynen, M. Bosse, R. Siegwart, and P. Furgale, “Keyframe-based visual-inertial odometry using nonlinear optimization,” Int. J. Robot. Res., vol. 34, no. 3, pp. 314–334, 2015.
[9] V. Usenko, J. Engel, J. Stückler, and D. Cremers, “Direct visual-inertial odometry with stereo cameras,” in Proc. IEEE Int. Conf. Robot. Autom., 2016, pp. 1885–1892.
[10] C. Forster, L. Carlone, F. Dellaert, and D. Scaramuzza, “IMU preintegration on manifold for efficient visual-inertial maximum-a-posteriori estimation,” in Proc. Robot. Sci. Syst., 2015.
[11] J. Rehder and R. Siegwart, “Camera/IMU calibration revisited,” IEEE Sensors J., vol. 17, no. 11, pp. 3257–3268, 2017.
[12] P. Furgale, J. Rehder, and R. Siegwart, “Unified temporal and spatial calibration for multi-sensor systems,” in Proc. IEEE/RSJ Int. Conf. Intell. Robots Syst., 2013, pp. 1280–1286.
[13] P. Furgale, T. D. Barfoot, and G. Sibley, “Continuous-time batch estimation using temporal basis functions,” in Proc. IEEE Int. Conf. Robot. Autom., 2012, pp. 2088–2095.
[14] J. Kelly and G. S. Sukhatme, “Visual-inertial sensor fusion: Local-ization, mapping and sensor-to-sensor self-calibration,” Int. J. Robot. Res., vol. 30, no. 1, pp. 56–79, 2011.
[15] A. Martinelli, “Closed-form solution of visual-inertial structure from motion,” Int. J. Comput. Vision, vol. 106, no. 2, pp. 138–152, 2014.
[16] J. Kaiser, A. Martinelli, F. Fontana, and S. Scaramuzza, “Simultaneous state initialization and gyroscope bias calibration in visual inertial aided navigation,” IEEE Robot. Autom. Lett., vol. 2, no. 1, pp. 18–25,
2017.
[17] Z. Yang and S. Shen, “Monocular visual-inertial state estimation with online initialization and camera-IMU extrinsic calibration,” IEEE Trans. Autom. Sci. Eng., vol. 14, no. 1, pp. 39–51, 2017.
[18] Y. Lin, F. Gao, T. Qin, W. Gao, T. Liu, W. Wu, Z. Yang, and S. Shen, “Autonomous aerial navigation using monocular visual-inertial fusion,” J. Field Robot., 2017.
相机-imu外参校准总结的更多相关文章
- 相机imu外参标定
1. 第一步初始化imu外参(可以从参数文档中读取,也可以计算出),VINS中处理如下: # Extrinsic parameter between IMU and Camera. estimate_ ...
- VINS(四)初始化与相机IMU外参标定
和单目纯视觉的初始化只需要获取R,t和feature的深度不同,VIO的初始化话通常需要标定出所有的关键参数,包括速度,重力方向,feature深度,以及相机IMU外参$R_{c}^{b}$和$p_{ ...
- 解放双手——相机与IMU外参的在线标定
本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...
- 相机IMU融合四部曲(三):MSF详细解读与使用
相机IMU融合四部曲(三):MSF详细解读与使用 极品巧克力 前言 通过前两篇文章,<D-LG-EKF详细解读>和<误差状态四元数详细解读>,已经把相机和IMU融合的理论全部都 ...
- 相机IMU融合四部曲(二):误差状态四元数详细解读
相机IMU融合四部曲(二):误差状态四元数详细解读 极品巧克力 前言 上一篇文章,<D-LG-EKF详细解读>中,讲了理论上的SE3上相机和IMU融合的思想.但是,还没有涉及到实际的操作, ...
- 相机IMU融合四部曲(一):D-LG-EKF详细解读
相机IMU融合四部曲(一):D-LG-EKF详细解读 极品巧克力 前言 前两篇文章<Google Cardbord的九轴融合算法>,<Madgwick算法详细解读>,讨论的都是 ...
- 【项目实战】自备相机+IMU跑通Vins-Mono记录
前言 初次接触SLAM,公司要求用自己的设备来跑通vinsmono这个程序,虽然已经跑通了别人的数据包,但是真正自己上手来运行这个程序,发现真的是困难重重,特意在此记载下来整个过程,以供大家参考. 我 ...
- kalibr论文阅读笔记
单目相机IMU标定 该论文将相机IMU标定分为两个大方面: 一. 使用基函数来估计时间偏差 二. 相机和IMU的空间位置转换 校准变量:重力.外参旋转和平移.时钟偏移.IMU位姿.加速度计偏置.陀螺仪 ...
- OKVIS(一)初始化流程及代码结构
OKVIS代码结构: okvis_apps: your own app okvis_ceres: backend main code, estimator, error term; okvis_co ...
随机推荐
- Django CreateView 简单使用
django.views.generic中的CreateView类,是基于View的子类.CreateView可以简单快速的创建表对象. 下面记录小作代码. # polls/views.py from ...
- Mycat数据库中间件对Mysql读写分离和分库分表配置
Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个 ...
- PHP代码的多继承 -》 PHP代码复用新的姿势 trait
本文参考: http://php.net/language.oop5.traits 一.什么是trait 从PHP 5.4.0 开始 PHP 实现了一种新的代码复用方式 trait. 二.trait ...
- [19/03/25-星期一] 容器_Collection(集合、容器)之Set(集合、安置,无顺序不可重复)
一.概念&方法 Set接口继承自Collection,Set接口中没有新增方法,方法和Collection保持完全一致.. Set容器特点:无序.不可重复.无序指Set中的元素没有索引,只能遍 ...
- 同源策略(same-origin policy)及三种跨域方法
同源策略(same-origin policy)及三种跨域方法 1.同源策略 含义: 同源是指文档的来源相同,主要包括三个方面 协议 主机 载入文档的URL端口 所以同源策略就是指脚本只能读取和所属文 ...
- 理解JavaScript的this对象
1.概述 this对象是在运行时基于函数的执行环境绑定的,this总是返回一个对象,简单说,就是返回属性或方法"当前"所在的对象.在全局函数中,this等于window,而当函数作 ...
- Mac--查看公钥
打开macbook的终端输入以下命令: $ cd ~/.ssh $ ls $ cat id_rsa.pub
- NopCommerce 3.4省市联动
做法有两种,一种是在StateProvince表里面加个字段,另一种是新建两个表,用来存市.县的数据,表结构完全按照StateProvince走就好了.我这里用的是第二种做法,菜鸟一枚,代码写的比较烂 ...
- qsort()与sort的用法(收藏)
sort()函数是C++中的排序函数其头文件为:#include<algorithm>头文件: qsort()是C中的排序函数,其头文件为:#include<stdlib.h> ...
- css代码添加背景图片常用代码
css代码添加背景图片常用代码 1 背景颜色 { font-size: 16px; content: ""; display: block; width: 700px; heigh ...