This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
cs:slam:start [2019/05/01 14:56] Steve Hemm [Tracking] |
cs:slam:start [2019/08/18 15:58] Steve Hemm [Tracking] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== SLAM (Page still under construction) ====== | + | ====== SLAM ====== |
====== Simultaneous Localization and Mapping ====== | ====== Simultaneous Localization and Mapping ====== | ||
Line 53: | Line 53: | ||
-Tracking localizes the camera by comparing features in a local map. | -Tracking localizes the camera by comparing features in a local map. | ||
- | -Detects features using the FAST algorithm. | + | -Detects features using the [[https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_fast/py_fast.html|FAST Algorithm]]. |
- | -Describes features using ORB algorithm. | + | |
+ | -Describes features using [[https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_feature2d/py_orb/py_orb.html|ORB Algorithm]]. | ||
-Selects a new keyframe. | -Selects a new keyframe. | ||
+ | |||
-If localization is lost, uses Place Recognition module to relocate. | -If localization is lost, uses Place Recognition module to relocate. | ||
+ | |||
+ | |||
+ | The tracking part localizes the camera and decides when to insert a new keyframe. Features are matched with the previous frame and the pose is optimized using motion-only bundle adjustment. The features extracted are FAST corners. (for res. till 752x480, 1000 corners should be good, for higher (KITTI 1241x376) 2000 corners works). Multiple scale-levels (factor 1.2) are used and each level is divided into a grid in which 5 corners per cell are attempted to be extracted. These FAST corners are then described using ORB. The initial pose is estimated using a constant velocity motion model. If the tracking is lost, the place recognition module kicks in and tries to re-localize itself. When there is an estimation of the pose and feature matches, the co-visibility graph of keyframes, that is maintained by the system, is used to get a local visible map. This local map consists of keyframes that share map point with the current frame, the neighbors of these keyframes and a reference keyframe which share the most map points with the current frame. Through re-projection, matches of the local map are searched on the frame and the camera pose is optimized using these matches. Finally is decided if a new Keyframe needs to be created, new keyframes are inserted very frequently to make tracking more robust. A new keyframe is created when at least 20 frames has passed from the last keyframe, and last global re-localization, the frame tracks at least 50 points of which less then 90% are point from the reference keyframe. | ||
==== Local Mapping ==== | ==== Local Mapping ==== | ||
+ | |||
+ | -Keyframes are added to co-visibility graph Spanning Tree. | ||
+ | |||
+ | -New Map points are creates by triangulating matching ORB features from different keyframes. | ||
+ | |||
+ | -Validity of map point is checked by seeing if it is found in other keyframes where it is predicted to be. Must be seen by at least 3 other keyframes. | ||
+ | |||
+ | |||
==== Loop Closing ==== | ==== Loop Closing ==== | ||
+ | |||
+ | -Loop closing is when the sub recognizes that it has returned to a previous location and adjust map points to accommodate. | ||
+ | |||
+ | -To detect possible loops, check bag of words vectors in Place Recognition module of the current keyframe and its neighbors in the co-visibility graph. | ||
+ | |||
+ | -If loop candidate is found preform similarity transform. | ||
+ | |||
+ | -Fuse map points and preform bundle adjustment. | ||
==== Map ==== | ==== Map ==== | ||
+ | |||
+ | Each map point stores: | ||
+ | *Its 3D position in the world coordinate system. | ||
+ | |||
+ | *ORB descriptor. | ||
+ | |||
+ | *The maximum dmax and minimum dmin distances at which the point can be observed, according to the scale invariance limits of the ORB features. | ||
==== Place Recognition ==== | ==== Place Recognition ==== | ||