svo
Semi-Direct Visual Odometry
|
Monocular Visual Odometry Pipeline as described in the SVO paper. More...
#include <frame_handler_mono.h>
Public Member Functions | |
FrameHandlerMono (vk::AbstractCamera *cam) | |
virtual | ~FrameHandlerMono () |
void | addImage (const cv::Mat &img, double timestamp) |
Provide an image. | |
void | setFirstFrame (const FramePtr &first_frame) |
Set the first frame (used for synthetic datasets in benchmark node) | |
FramePtr | lastFrame () |
Get the last frame that has been processed. | |
const set< FramePtr > & | coreKeyframes () |
Get the set of spatially closest keyframes of the last frame. | |
const vector< cv::Point2f > & | initFeatureTrackRefPx () const |
Return the feature track to visualize the KLT tracking during initialization. | |
const vector< cv::Point2f > & | initFeatureTrackCurPx () const |
DepthFilter * | depthFilter () const |
Access the depth filter. | |
bool | relocalizeFrameAtPose (const int keyframe_id, const SE3 &T_kf_f, const cv::Mat &img, const double timestamp) |
An external place recognition module may know where to relocalize. | |
Protected Member Functions | |
virtual void | initialize () |
Initialize the visual odometry algorithm. | |
virtual UpdateResult | processFirstFrame () |
Processes the first frame and sets it as a keyframe. | |
virtual UpdateResult | processSecondFrame () |
Processes all frames after the first frame until a keyframe is selected. | |
virtual UpdateResult | processFrame () |
Processes all frames after the first two keyframes. | |
virtual UpdateResult | relocalizeFrame (const SE3 &T_cur_ref, FramePtr ref_keyframe) |
Try relocalizing the frame at relative position to provided keyframe. | |
virtual void | resetAll () |
Reset the frame handler. Implement in derived class. | |
virtual bool | needNewKf (double scene_depth_mean) |
Keyframe selection criterion. | |
void | setCoreKfs (size_t n_closest) |
Protected Attributes | |
vk::AbstractCamera * | cam_ |
Camera model, can be ATAN, Pinhole or Ocam (see vikit). | |
Reprojector | reprojector_ |
Projects points from other keyframes into the current frame. | |
FramePtr | new_frame_ |
Current frame. | |
FramePtr | last_frame_ |
Last frame, not necessarily a keyframe. | |
set< FramePtr > | core_kfs_ |
Keyframes in the closer neighbourhood. | |
vector< pair< FramePtr, size_t > > | overlap_kfs_ |
All keyframes with overlapping field of view. the paired number specifies how many common mappoints are observed TODO: why vector!? | |
initialization::KltHomographyInit | klt_homography_init_ |
Used to estimate pose of the first two keyframes by estimating a homography. | |
DepthFilter * | depth_filter_ |
Depth estimation algorithm runs in a parallel thread and is used to initialize new 3D points. |
Monocular Visual Odometry Pipeline as described in the SVO paper.
svo::FrameHandlerMono::FrameHandlerMono | ( | vk::AbstractCamera * | cam | ) |
virtual svo::FrameHandlerMono::~FrameHandlerMono | ( | ) | [virtual] |
void svo::FrameHandlerMono::addImage | ( | const cv::Mat & | img, |
double | timestamp | ||
) |
Provide an image.
const set<FramePtr>& svo::FrameHandlerMono::coreKeyframes | ( | ) | [inline] |
Get the set of spatially closest keyframes of the last frame.
DepthFilter* svo::FrameHandlerMono::depthFilter | ( | ) | const [inline] |
Access the depth filter.
const vector<cv::Point2f>& svo::FrameHandlerMono::initFeatureTrackCurPx | ( | ) | const [inline] |
const vector<cv::Point2f>& svo::FrameHandlerMono::initFeatureTrackRefPx | ( | ) | const [inline] |
Return the feature track to visualize the KLT tracking during initialization.
virtual void svo::FrameHandlerMono::initialize | ( | ) | [protected, virtual] |
Initialize the visual odometry algorithm.
FramePtr svo::FrameHandlerMono::lastFrame | ( | ) | [inline] |
Get the last frame that has been processed.
virtual bool svo::FrameHandlerMono::needNewKf | ( | double | scene_depth_mean | ) | [protected, virtual] |
Keyframe selection criterion.
virtual UpdateResult svo::FrameHandlerMono::processFirstFrame | ( | ) | [protected, virtual] |
Processes the first frame and sets it as a keyframe.
virtual UpdateResult svo::FrameHandlerMono::processFrame | ( | ) | [protected, virtual] |
Processes all frames after the first two keyframes.
virtual UpdateResult svo::FrameHandlerMono::processSecondFrame | ( | ) | [protected, virtual] |
Processes all frames after the first frame until a keyframe is selected.
virtual UpdateResult svo::FrameHandlerMono::relocalizeFrame | ( | const SE3 & | T_cur_ref, |
FramePtr | ref_keyframe | ||
) | [protected, virtual] |
Try relocalizing the frame at relative position to provided keyframe.
bool svo::FrameHandlerMono::relocalizeFrameAtPose | ( | const int | keyframe_id, |
const SE3 & | T_kf_f, | ||
const cv::Mat & | img, | ||
const double | timestamp | ||
) |
An external place recognition module may know where to relocalize.
virtual void svo::FrameHandlerMono::resetAll | ( | ) | [protected, virtual] |
Reset the frame handler. Implement in derived class.
Reimplemented from svo::FrameHandlerBase.
void svo::FrameHandlerMono::setCoreKfs | ( | size_t | n_closest | ) | [protected] |
void svo::FrameHandlerMono::setFirstFrame | ( | const FramePtr & | first_frame | ) |
Set the first frame (used for synthetic datasets in benchmark node)
vk::AbstractCamera* svo::FrameHandlerMono::cam_ [protected] |
Camera model, can be ATAN, Pinhole or Ocam (see vikit).
set<FramePtr> svo::FrameHandlerMono::core_kfs_ [protected] |
Keyframes in the closer neighbourhood.
DepthFilter* svo::FrameHandlerMono::depth_filter_ [protected] |
Depth estimation algorithm runs in a parallel thread and is used to initialize new 3D points.
Used to estimate pose of the first two keyframes by estimating a homography.
FramePtr svo::FrameHandlerMono::last_frame_ [protected] |
Last frame, not necessarily a keyframe.
FramePtr svo::FrameHandlerMono::new_frame_ [protected] |
Current frame.
vector< pair<FramePtr,size_t> > svo::FrameHandlerMono::overlap_kfs_ [protected] |
All keyframes with overlapping field of view. the paired number specifies how many common mappoints are observed TODO: why vector!?
Reprojector svo::FrameHandlerMono::reprojector_ [protected] |
Projects points from other keyframes into the current frame.