一次找一个回环帧就行了 if (loopKeyPre == -1 || loopKeyCur == loopKeyPre) return false; 如果没有找到回环或者回环找到自己身上去了,就认为是本次回环寻找失败 *latestID = loopKeyCur; *closestID = loopKeyPre; return true; } 至此则找到了当真关键帧和历史回环帧 赋值当前帧和历史回环帧的id ...
简介: LIO-SAM回环检测模块代码解析 前端里程计是一个不断递推相邻帧位姿的过程,其必定存在累计漂移。为了解决这一问题,回环检测并进行后端优化是一个重要的环节。下面以典型激光SLAM框架LIO-SAM为例进行解析,学习其进行回环检测的策略。 分配线程 首先,查看mapOptmization.cpp文件中的main函数,可以看到给回环检测...
检测最新帧是否和其它帧形成回环,取出最新帧的索引 auto it =loopIndexContainer.find(loopKeyCur);if(it !=loopIndexContainer.end())returnfalse; 检查一下较晚帧是否和别的形成了回环,如果有就算了 因为当前帧刚刚出现,不会和其它帧形成回环,所以基本不会触发 kdtreeHistoryKeyPoses->setInputCloud(copy_cloudK...
lio-sam回环检测的方式 构建关键帧,将关键帧的位姿存储。以固定频率进行回环检测。每次处理最新的关键帧,通过kdtree寻找历史关键帧中距离和时间满足条件的一个关键帧。然后就认为形成了回环。 形成回环后,历史帧周围25帧,构建局部地图,与当前关键帧进行icp匹配求解位姿变换。 lio-sam 认为里程计累计漂移比较小,所以通...