在VINS中相机的外参RicR_{ic}Ric​是可以在线动态标定的,实现函数为:

/*** @brief 外参在线标定* * @param corres 两帧图像之间的共视特征点* @param delta_q_imu 两帧图像之间的IMU预积分量* @param calib_ric_result 标定结果存放* @return true * @return false */
bool InitialEXRotation::CalibrationExRotation(vector<pair<Vector3d, Vector3d>> corres, Quaterniond delta_q_imu, Matrix3d &calib_ric_result)

基本原理

RcbRbkbk+1RcbT=Rckck+1⇒RcbRbkbk+1=Rckck+1Rcb⇒qcb⊗qbkbk+1=qckck+1⊗qcb⇒[qbkbk+1]Rqcb=[qckck+1]Lqcb⇒{[qckck+1]L−[qbkbk+1]R}qcb=0\begin{aligned} &R_{c b} R_{b_{k} b_{k+1}} R_{c b}^{T}=R_{c_{k} c_{k+1}} \\ &\Rightarrow R_{c b} R_{b_{k} b_{k+1}}=R_{c_{k} c_{k+1}} R_{c b} \\ &\Rightarrow q_{c b} \otimes q_{b_{k} b_{k+1}}=q_{c_{k} c_{k+1}} \otimes q_{c b} \\ &\Rightarrow\left[q_{b_{k} b_{k+1}}\right]_{R} q_{c b}=\left[q_{c_{k} c_{k+1}}\right]_{L} q_{c b} \\ &\Rightarrow\left\{\left[q_{c_{k} c_{k+1}}\right]_{L}-\left[q_{b_{k} b_{k+1}}\right]_{R}\right\} q_{c b}=0 \end{aligned} ​Rcb​Rbk​bk+1​​RcbT​=Rck​ck+1​​⇒Rcb​Rbk​bk+1​​=Rck​ck+1​​Rcb​⇒qcb​⊗qbk​bk+1​​=qck​ck+1​​⊗qcb​⇒[qbk​bk+1​​]R​qcb​=[qck​ck+1​​]L​qcb​⇒{[qck​ck+1​​]L​−[qbk​bk+1​​]R​}qcb​=0​

其中涉及到四元数的左乘和右乘矩阵:
q=[xyzw]T=[qvqw],[q]L=qwI+[[qv]×qv−qvT0],[q]R=qwI+[−[qv]×qv−qvT0]q=[x y z w]^{T}=\left[\begin{array}{c} q_{v} \\ q_{w} \end{array}\right], \quad[q]_{L}=q_{w} I+\left[\begin{array}{cc} {\left[q_{v}\right]_{\times}} & q_{v} \\ -q_{v}^{T} & 0 \end{array}\right], \quad[q]_{R}=q_{w} I+\left[\begin{array}{cc} -\left[q_{v}\right]_{\times} & q_{v} \\ -q_{v}^{T} & 0 \end{array}\right] q=[xyzw]T=[qv​qw​​],[q]L​=qw​I+[[qv​]×​−qvT​​qv​0​],[q]R​=qw​I+[−[qv​]×​−qvT​​qv​0​]

当有多对这样的组合后就可以构建超定方程即公式
A={[qckck+11]L−[qbkbk+11]R[qckck+12]L−[qbkbk+12]R⋯[qckck+1n]L−[qbkbk+1n]R},A⋅qcb=0A=\left\{\begin{array}{c} {\left[q_{c_{k} c_{k+1}}^{1}\right]_{L}-\left[q_{b_{k} b_{k+1}}^{1}\right]_{R}} \\ {\left[q_{c_{k} c_{k+1}}^{2}\right]_{L}-\left[q_{b_{k} b_{k+1}}^{2}\right]_{R}} \\ \cdots \\ {\left[q_{c_{k} c_{k+1}}^{n}\right]_{L}-\left[q_{b_{k} b_{k+1}}^{n}\right]_{R}} \end{array}\right\}, \quad A \cdot q_{c b}=0 A=⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧​[qck​ck+1​1​]L​−[qbk​bk+1​1​]R​[qck​ck+1​2​]L​−[qbk​bk+1​2​]R​⋯[qck​ck+1​n​]L​−[qbk​bk+1​n​]R​​⎭⎪⎪⎪⎪⎪⎬⎪⎪⎪⎪⎪⎫​,A⋅qcb​=0

通过SVD分解就可以得到 qcbq_{cb}qcb​,然后再取逆即可得到外参 qbc=inv(qcb)q_{b c}=i n v\left(q_{c b}\right)qbc​=inv(qcb​)

代码实现

bool InitialEXRotation::CalibrationExRotation(vector<pair<Vector3d, Vector3d>> corres, Quaterniond delta_q_imu, Matrix3d &calib_ric_result)
{this->frame_count++; // 记录进入该函数的次数,用于定义A矩阵的规模的Rc.push_back(solveRelativeR(corres));// 求取帧间变换阵R,(第k+1帧变换到第k帧的)R_c(k+1)^ckRimu.push_back(delta_q_imu.toRotationMatrix()); // 两帧之间的陀螺仪预积分值中的旋转变化量 RRc_g.push_back(ric.inverse() * delta_q_imu * ric);  // 图像k帧到k+1帧的旋转Eigen::MatrixXd A(frame_count * 4, 4);A.setZero();int sum_ok = 0;for (int i = 1; i <= frame_count; i++){Quaterniond r1(Rc[i]);Quaterniond r2(Rc_g[i]);// 两个线性变换转过的角度double angular_distance = 180 / M_PI * r1.angularDistance(r2);//ROS_DEBUG("%d %f", i, angular_distance);// 加权的方式控制误匹配的点double huber = angular_distance > 5.0 ? 5.0 / angular_distance : 1.0;++sum_ok;Matrix4d L, R;// 构建四元数左乘矩阵double w = Quaterniond(Rc[i]).w();Vector3d q = Quaterniond(Rc[i]).vec();L.block<3, 3>(0, 0) = w * Matrix3d::Identity() + Utility::skewSymmetric(q);L.block<3, 1>(0, 3) = q;L.block<1, 3>(3, 0) = -q.transpose();L(3, 3) = w;// 构建四元数右乘矩阵Quaterniond R_ij(Rimu[i]);w = R_ij.w();q = R_ij.vec();R.block<3, 3>(0, 0) = w * Matrix3d::Identity() - Utility::skewSymmetric(q);R.block<3, 1>(0, 3) = q;R.block<1, 3>(3, 0) = -q.transpose();R(3, 3) = w;// 超定方程系数矩阵A.block<4, 4>((i - 1) * 4, 0) = huber * (L - R);}// SVD分解求解超定方程JacobiSVD<MatrixXd> svd(A, ComputeFullU | ComputeFullV);Matrix<double, 4, 1> x = svd.matrixV().col(3);Quaterniond estimated_R(x);// 这里得到的是R_ci,取逆可得 R_icric = estimated_R.toRotationMatrix().inverse();Vector3d ric_cov;ric_cov = svd.singularValues().tail<3>();// 用0.25来限定倒数第二小的奇异值,如果全部奇异值都非常小接近0,则说明相机没有进行充分的旋转,无法进行初始化// 至少会迭代windowSize次if (frame_count >= windowSize && ric_cov(1) > 0.25){calib_ric_result = ric;return true;}elsereturn false;
}

VINS 外参在线标定相关推荐

  1. VINS外参在线标定估计

    由于使用的数据相对参数提供的不够精确导致结果精度不高,因此需要研究一下外参的在线估计. VINS外参标定指的是对相机坐标系到IMU坐标系的变换矩阵进行在线标定与优化. 1.参数配置 在参数配置文件ya ...

  2. IROS2020开源软硬件!多激光雷达的协同定位建图及在线外参自标定

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由作者林家荣授权转载,二次转载请联系作者 https://zhuanlan.zhihu.com/p ...

  3. 针对高分辨率雷达和相机的无标定板的像素级外参自标定方法

    介绍:固态激光雷达和相机的外参标定系统 摘要 这是今年的一篇针对高分辨率的固态激光雷达(非重复性扫描型)或者多线的激光雷达和相机在无标定板的环境中自动化外参标定的一篇文章.本文的方法不需要基于巧克力板 ...

  4. 无目标场景下高分辨率激光雷达和相机的像素级外参自标定

    文章:Pixel-level Extrinsic Self Calibration of High Resolution LiDAR and Camera in Targetless Environm ...

  5. 一起做激光反光板(六)-基于滑窗的EKF-SLAM及外参自动标定公式推导

    在第四篇中已经提到,如果场景中反光板不够多,容易造成EKF系统效果不好的问题,且我们还想用上其他的点云信息,保证在反光板不够的情况下仍能够正确的收敛. 我们考虑扩充观测信息: (1)角点和线段特征,加 ...

  6. 相机和雷达外参联合标定

    内容: 关于雷达和相机外参联合标定的踩坑纪录. Date: 2023/03/19 硬件: 上位机: Jetson ORIN (Ubuntu 20.04, ROS noetic) 雷达: Ouster ...

  7. imu相机标定_解放双手——相机与IMU外参的在线标定

    本文作者 沈玥伶,公众号:计算机视觉life,编辑部成员 一.相机与IMU的融合 在SLAM的众多传感器解决方案中,相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图.这是因为这两个 ...

  8. SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022)

    原文链接: SST-Calib:结合语义和VO进行时空同步校准的lidar-visual外参标定方法(ITSC 2022) 论文阅读:SST-Calib: Simultaneous Spatial-T ...

  9. 无标定物体环境下,高分辨率雷达与相机的像素级外参标定

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:Pixel-level Extrinsic Self Calibration of High R ...

最新文章

  1. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析
  2. Windows XP 源代码泄露,微软终于回应了~
  3. Android学习笔记之Fragment的两种使用方法
  4. python的ide环境中创建文件_使用Python开发环境Wing IDE设立项目注意事项
  5. Android中onInterceptTouchEvent、dispatchTouchEvent及onTouchEvent的调用顺序及内部原理
  6. SCCM 2007 R2 报表问题(二)
  7. LNMP环境搭建 centos7 nginx1.12 mysql5.6 php7
  8. Mysql:语法:虚拟表DUAL
  9. MongoDB应用记录
  10. win10 企业版激活
  11. 优锘科技:森数据初体验
  12. 读一个文本文件总是出现乱码怎么办
  13. 《剑指offer》读后感
  14. qua数据统计缺失问题之终结
  15. Ubuntu安装Nixnote,解决印象笔记(国服/中国区)登录不能显示输入密码的问题
  16. Excel中随机六位字母与数字的密码
  17. 基于纹理的印章识别分离——发票识别之一
  18. 【图像分类】Deep Layer Aggregation论文理解
  19. SVG排版教程 | 样式背景属性详解与应用
  20. 安装cnpm淘宝镜像过程报错

热门文章

  1. FeiQ(飞秋) 添加不同网段好友
  2. 伍德里奇计量经济学第四章课后计算机作业,伍德里奇---计量经济学第8章部分计算机习题详解(STATA)...
  3. Easy RL - 4.DQN算法
  4. 客户等级多、价格不统一?使用公众号订货系统帮你搞定
  5. 钢筋连接力矩值A钢筋套筒连接不同钢筋直径不同力矩值
  6. ios中html2canvas正式包空白,html2canvas 部分iphone手机机型出现空白
  7. 6n137光耦怎么测好坏_测量贴片光耦好坏的方法
  8. Web 实时推送技术的总结
  9. php图书查询显示,php根据isbn书号查询amazon网站上的图书信息的示例_PHP
  10. modelsim脚本仿真(二)带quartus的IP核工程仿真