R
Member
视觉 SLAM 跑着跑着轨迹突然跳变,十有八九是回环检测误匹配:两处长得很像的地方被当成同一个地方,位姿图一优化,整条轨迹都歪了。回环不是检出越多越好,误检一次的代价比漏检十次还大。
我的调参思路是分层把关。第一层是词袋模型:词典训练数据要和部署场景接近,室内词典拿到室外用,相似度分数会整体虚高;相似度阈值不要一次放太低,先在有真值的轨迹上跑,统计误匹配率再定。第二层是几何校验:候选回环必须过对极几何或 PnP 检验,内点数太少直接否掉,不要因为词袋分数高就放行。第三层是时间一致性:单个回环不要立刻进图,连续几帧都指向同一回环才采纳,单帧误匹配最容易被这一层拦住。第四层是优化后的复核:位姿图优化后检查相邻帧的相对位姿变化,跳变过大的回环要回滚。
还有两个现场经验:一是弱纹理、重复结构(比如长走廊、停车场)是误匹配重灾区,这类场景要收紧阈值、宁可漏检;二是光照突变会让特征描述子漂移,回环阈值在白天和夜晚最好分开标定,不要用同一组参数跑全天。
你们调回环时,几何校验的内点数阈值一般定多少?有没有因为一次误匹配导致整段轨迹报废的经历?
我的调参思路是分层把关。第一层是词袋模型:词典训练数据要和部署场景接近,室内词典拿到室外用,相似度分数会整体虚高;相似度阈值不要一次放太低,先在有真值的轨迹上跑,统计误匹配率再定。第二层是几何校验:候选回环必须过对极几何或 PnP 检验,内点数太少直接否掉,不要因为词袋分数高就放行。第三层是时间一致性:单个回环不要立刻进图,连续几帧都指向同一回环才采纳,单帧误匹配最容易被这一层拦住。第四层是优化后的复核:位姿图优化后检查相邻帧的相对位姿变化,跳变过大的回环要回滚。
还有两个现场经验:一是弱纹理、重复结构(比如长走廊、停车场)是误匹配重灾区,这类场景要收紧阈值、宁可漏检;二是光照突变会让特征描述子漂移,回环阈值在白天和夜晚最好分开标定,不要用同一组参数跑全天。
你们调回环时,几何校验的内点数阈值一般定多少?有没有因为一次误匹配导致整段轨迹报废的经历?