进行非线性优化---void Estimator::optimization(); 1、声明和引入鲁棒核函数 // 借助ceres进行非线性优化ceres::Problem problem; ceres::LossFunction *loss_function;//核函数 //loss_function = new ceres::HuberLoss(1.0); loss_function = new ceres::CauchyLoss(1.0);//柯西核函数 核函数的作用:降低误...
1、当一个关键帧从后端节点发布到位姿图优化节点,这个关键帧可能仍然在滑动窗口中。 2、这种方式求解的相对位姿不够准确,所以有一个快速重定位功能,先当它不存在,这里最后介绍。 2、闭环优化 VINS-MONO建立关键帧数据库,关键帧取自滑动窗口的倒数第二帧,也就是说收到的关键帧,可能还在滑动窗口中优化,...
VINSMono紧耦合非线性优化理论详细解读:1. 紧耦合非线性优化概述: 核心:将视觉约束、IMU约束、闭环约束整合在一个大目标函数中,实现滑动窗口内所有帧的PVQ、bias等参数的非线性优化。 过程:包括残差函数构建、视觉约束、IMU约束及基于舒尔补的边缘化操作。 工具:使用Google开源的Ceres solver进行求解。
本文主要聚焦于白话解析VINS-Mono后端优化中的视觉重投影残差优化。后端优化涉及的状态量包括位置、速度、朝向、加速度计bias和陀螺仪bias,以及Camera到IMU的外参,以及3D点的逆深度。优化目标函数由IMU测量残差和视觉重投影残差两部分构成,其中IMU残差在后续内容中会详细介绍。视觉重投影残差优化的核心在Proj...
This branch is up to date withJichao-Peng/VINS-Mono-Optimization:master. README GPL-3.0 license VINS-Mono点线结合说明: 这个项目是我和lee利用课余时间完成的,主要内容是在VINS-Mono的基础上加入了线特征,实现了点线的紧耦合优化,具体的 说明文档可以参考我的博客,里面会由非常详细的整个项目的介绍和结果...
VINS-MONO中,为了处理一些悬停的case,引入了一个two-way marginalization,简单来说就是:如果倒数第二帧是关键帧, 则将最旧的pose移出slidingwindow, 也就是MARGIN_OLD,如果倒数第二帧不是关键帧, 则将倒数第二帧pose移出sliding window, 也就是MARGIN_NEW。选取关键帧的策略是视差足够大,在悬停等运动较小的情况...
VINS-Mono点线结合说明: 这个项目是我和lee利用课余时间完成的,主要内容是在VINS-Mono的基础上加入了线特征,实现了点线的紧耦合优化,具体的说明文档可以参考我的博客,里面会由非常详细的整个项目的介绍和结果分析,因为我们在完成这个项目时并没有发现由非常好的关于点线特征结合的SLAM的开源代码,因此我们尝试将代码开...
本文深入解读VINS-Mono的核心部分——紧耦合非线性优化。紧耦合优化将视觉约束、IMU约束、闭环约束整合在一个大目标函数中,实现滑动窗口内所有帧的PVQ、bias等参数的非线性优化。紧耦合优化的过程包括残差函数构建、视觉约束、IMU约束及基于舒尔补的边缘化操作。构建残差函数时,需要优化的状态量包括滑动窗口...
Vins-mono是香港科技大学开源的一个VIO算法,用紧耦合的方法,通过单目+IMU恢复出尺度,效果非常棒。VINS的功能模块可包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测及闭环优化。代码中主要开启了四个线程,分别是:前端图像跟踪、后端非线性优化(其中初始化和IMU预积分在这个线程中)、闭环检测、闭环优化。
VINS-MONO翻译以及理论推导系列(四):VIII全局位姿图优化、IX实验结果,程序员大本营,技术文章内容聚合第一站。