hdl_graph_slam源码解析(五)

hdl_graph_slam源码解析(五)

5. loop detection

hdl_graph_slam算法中的回环检测部分主要是在loop_detector.hpp代码中定义并实现的,主要分为两部分,分别是:从历史关键帧中寻找可能的回环、对可能的回环进行点云配准确定回环。因此,整体的代码结构并不复杂:

std::vector<Loop:Ptr> detect(const std::vector<Keyframe::Ptr>& keyframes,const std::deque<Keyframe::Ptr>& new_keyframes, hdl_graph_slam::GraphSLAM& graph_slam){
   
   
	std::vector<Loop::Ptr> detected_loops;
	for(const auto& new_keyframe:new_keyframes){
   
   
		//在历史关键帧中寻找可能的回环(candidates)
		auto candidates = find_candidates(keyframes, new_keyframe);
		//分别将可能的回环(candidates)与new_keyframe配准,得到检测的回环
    	auto loop = matching(candidates, new_keyframe, graph_slam);
		if(loop){
   
   
			detected_loops.push_back(loop);
		}
	}
	return deteted_loops;
}

在寻找可能回环(candidates)的时候,主要遵循两个原则:第一个准则是两个关键帧之间的运动距离大于某一个阈值,注意这里是距离而不是位移哦,这一标准通常意味着从时序上比较相近的关键帧不是我们需要检测的回环。例如,在当前时刻有一个关键帧 k 1 k_1 k1,可能1s后又有一个关键帧 k 2 k_2 k

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值