3.ORB-SLAM3中视觉IMU联合优化函数 二、函数整体介绍 1.定义优化器 2.定义各节点,以及卡方检验(用于优化时剔除外点) 3.设定图优化各边 4.启动多轮优化,剔除外点 5.更新当前帧位姿、速度、IMU偏置 6.记录当前帧的优化状态 三、各边详细介绍 1. 视觉重投影边(EdgeMonoOnlyPose 和 EdgeStereoOnlyPose)
InfoMatrix:先验值乘上单位阵(infoPriorA*Eigen::Matrix3d::Identity()),先验值infoPriorA在函数参数中传入,表示先验bias的不确定性 ::: 第二个重载: :::tips 该重载在LocalClosing的MergeLocal2()函数中倍调用一次。 ::: // 优化当前地图中参数bg,ba Optimizer::InertialOptimization(pCurrentMap,bg,ba); ...
采用g2o的图优化方法来优化位姿,其中g2o的图优化中,节点有基于位姿的g2o::VertexSE3Expmap,边有ORB_SLAM3::EdgeSE3ProjectXYZOnlyPose(顾名思义,这条边仅仅通过相机位姿SE3将地图点坐标映射到图像像素且仅仅优化位姿Pose),以及设置观测值(像素坐标),核函数等,(...
// Gravity and scale 因为重力方向矩阵以及尺度因子是待优化的变量,所以不固定VertexGDir* VGDir =newVertexGDir(Rwg);VGDir->setId(4*(maxKFid+1));VGDir->setFixed(false);optimizer.addVertex(VGDir);VertexScale* VS =newVertexScale(scale);VS->setI...
在回环纠正后执行一次全局BA优化。 关键技术 重定位 ORB-SLAM中使用ePnP算法,这里因为使用的算法要和相机模型无关,因此采用MLPnP算法,仅适用投影射线作为输入,相机仅需要提供一个重投影函数,将像素映射为投影射线即可。 非校正双目SLAM 许多双目SLAM系统假设双目图像都是已校正的,即两张图像都是使用针孔模型采用相同的...
(3)、采用一些鲁棒的核函数和优化算法,即使存在着临时的量的不一致性,也能足够健壮得出较为理想的优化结果。(4)、局部BA等优化过程更新相机位姿和地图点时采用了地图更新互斥量这种粒度较大的锁,实现了和tracking过程的互斥访问。 关于ORB-SLAM3系统中可能存在的bug问题,可以参考文献[7]中作者给出的修正。ORB-...
LoopClosing回环检测优化线程 这三个对象均在System构造函数中创建。 二、主函数 此处从ORB_SLAM3源码中的单目视觉部分开始逐步对ORB_SLAM3的整个工作过程进行分析。 ORB_SLAM3::SystemSLAM(argv[1],argv[2],ORB_SLAM3::System::MONOCULAR,false); ...
ORB-SLAM3 Initializer.cpp函数解读 构造函数 Initializer::Initializer(const Frame &ReferenceFrame, float sigma, int iterations)参数:参考帧(第一帧), 误差, 迭代次数操作:读取参考帧的相机模型, 内参, 去畸变的特征点等传入参数 初始化:并行的计算前后两帧的本质矩阵和基础矩阵,选出来评分高的恢复旋转和平移...
ORBSLAM3中,作者调用MapPoint::PredictScale函数,根据地图点到光心的距离,来预测一个类似特征金字塔的尺度。 因为在进行投影匹配的时候会给定特征点的搜索范围,由于考虑到处于不同尺度(也就是距离相机远近,位于图像金字塔中不同图层)的特征点受到相机旋转的影响不同,因此会希望距离相机近的点的搜索范围更大一点,距离相...
行知SLAM(一):视觉SLAM核心之BA优化代码编写及改进思路_哔哩哔哩_bilibiliwww.bilibili.com/video/BV1Ds4y187Qz/?share_source=copy_web&vd_source=d71e18f9541a8452e8d05f8cbcf3ab5f 1.位姿优化函数PoseOptimization // 该优化函数主要用于Tracking线程中:运动跟踪、参考帧跟踪、地图跟踪、重定位 /** * 3D...