svo
Semi-Direct Visual Odometry
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Protected Member Functions | Protected Attributes
svo::FrameHandlerMono Class Reference

Monocular Visual Odometry Pipeline as described in the SVO paper. More...

#include <frame_handler_mono.h>

Inheritance diagram for svo::FrameHandlerMono:
svo::FrameHandlerBase

List of all members.

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
DepthFilterdepthFilter () 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< FramePtrcore_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.
DepthFilterdepth_filter_
 Depth estimation algorithm runs in a parallel thread and is used to initialize new 3D points.

Detailed Description

Monocular Visual Odometry Pipeline as described in the SVO paper.


Constructor & Destructor Documentation

svo::FrameHandlerMono::FrameHandlerMono ( vk::AbstractCamera *  cam)

Member Function Documentation

void svo::FrameHandlerMono::addImage ( const cv::Mat &  img,
double  timestamp 
)

Provide an image.

Get the set of spatially closest keyframes of the last frame.

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.

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)


Member Data Documentation

vk::AbstractCamera* svo::FrameHandlerMono::cam_ [protected]

Camera model, can be ATAN, Pinhole or Ocam (see vikit).

Keyframes in the closer neighbourhood.

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.

Last frame, not necessarily a keyframe.

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!?

Projects points from other keyframes into the current frame.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines