From 30a43ccec6877781c0c0361637922d8a8685b2d0 Mon Sep 17 00:00:00 2001 From: Andre Phu-Van Nguyen Date: Tue, 3 Feb 2015 20:14:17 -0500 Subject: [PATCH] fix relocalization segfault --- svo/src/frame_handler_mono.cpp | 5 +++++ svo/src/map.cpp | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/svo/src/frame_handler_mono.cpp b/svo/src/frame_handler_mono.cpp index 3de6f7f..cd1865b 100644 --- a/svo/src/frame_handler_mono.cpp +++ b/svo/src/frame_handler_mono.cpp @@ -240,6 +240,11 @@ FrameHandlerMono::UpdateResult FrameHandlerMono::relocalizeFrame( FramePtr ref_keyframe) { SVO_WARN_STREAM_THROTTLE(1.0, "Relocalizing frame"); + if(ref_keyframe == nullptr) + { + SVO_INFO_STREAM("Relocalization successful."); + return RESULT_FAILURE; + } SparseImgAlign img_align(Config::kltMaxLevel(), Config::kltMinLevel(), 30, SparseImgAlign::GaussNewton, false, false); size_t img_align_n_tracked = img_align.run(ref_keyframe, new_frame_); diff --git a/svo/src/map.cpp b/svo/src/map.cpp index 39aab50..2ecad1c 100644 --- a/svo/src/map.cpp +++ b/svo/src/map.cpp @@ -130,6 +130,11 @@ FramePtr Map::getClosestKeyframe(const FramePtr& frame) const { list< pair > close_kfs; getCloseKeyframes(frame, close_kfs); + if(close_kfs.empty()) + { + return nullptr; + } + // Sort KFs with overlap according to their closeness close_kfs.sort(boost::bind(&std::pair::second, _1) <