ORB-SLAM2-A SLAM library for Sparse 3D-Reconstruction in Robotics
ORB-SLAM FOR AUTONOMUS VEHICLES

ORB-SLAM2-A SLAM library for Sparse 3D-Reconstruction in Robotics

ORB-SLAM is a versatile and accurate SLAM solution for Monocular, Stereo and RGB-D cameras. It is able to compute in real-time the camera trajectory and a sparse 3D reconstruction of the scene in a wide variety of environments, ranging from small hand-held sequences of a desk to a car driven around several city blocks. It is able to close large loops and perform global re-localization in real-time and from wide baselines.It includes an automatic and robust initialization from planar and non-planar scenes. A novel survival of the fittest key frame selection allows to maintain a compact map, while improving the tracking robustness as key frames are inserted very fast during exploration

The algorithms works on three threads, a tracking thread, a local mapping thread and a loop closing thread.

ORB-SLAM Algorithm Flow

To initialize the map starting by computing the relative pose between two scenes, they compute two geometrical models in parallel, one for a planar scene, a homography and one for non-planar scenes, a fundamental matrix. They then choose one of both based on a relative score of both. Using the selected model they estimate multiple motion hypotheses and en see if one is significantly better then the others, if so, a full bundle adjustment is done, otherwise the initialization starts over

Local mapping

First the new key frame is inserted into the co-visibility graph, the spanning tree linking a key frame to the key frame with the most points in common, and a 'bag of words' representation of the key frame (used for data association for triangulating new points) is created.

New map points are created by triangulating ORB from connected key frames in the co-visibility graph. The un-machted ORB in a key frame are compared with other unmatched ORB in other key frames. The match must fulfill the epi-polar constraint to be valid. To be a match, the ORB pairs are triangulated and checked if in both frames they have a positive depth, and the parallax, re projection error and scale consistency is checked. Then the match is projected to other connected key frames to check if it is also in these.

The new map points first need to go through a test to increase the likelihood of these map points being valid. They need to be found in more than 25 % of the frames in which it is predicted to be visible and it must be observed by at least three key frames.

Then through local bundle adjustment, the current key frame, all key frames connected to it through the co-visibility graph and all the map points seen by these key frames are optimized using the key frames that do see the map points but are not connected to the current key frame.

Finally key frames that are abundant are discarded to remain a certain simplicity. Key frames from which more than 90 % of the map points can be seen by three other key frames in the same scale-level are discarded.

Loop closing

To detect possible loops, they check bag of words vectors of the current key frame and its neighbors in the co-visibitlity graph. The min. similarity of these bag of words vectors is taken as a benchmark and from all the key frames with a bag of words similarity to the current key frame that is greater that this benchmark, all the key frames that are allready connected to the current key frame are removed. If three loop canditates that are consistant are detected consecutively, this loop is regarded as a serious candiddate.

For these loops, the similarity transformation is calculated (7DOF, 3 trans, 3 rot, 1 scale) RANSAC iterations are performed to find them and these are then optimized after which more correspondences are searched and then again an optimization is preformed. If the similarity is supported by having enough inliers, the loop is accepted.

The current key frame pose in then adjusted and this is propagated to its neighbors and the corresponding map-points are fused. Finally a pose graph optimization is preformed over the essential graph to take out the loop closure created errors along the graph. This also corrects for scale drift

For products related to Autonomous systems like drones and self driving vehicles,we can utilize this library which completely supports ROS which can be run on terminal for testing without ROS too this ORB-SLAM is a distinguished model of mapping and reconstructing 3D maps respectively.

Link for Installation in ROS & Supporting files : https://github.com/raulmur/ORB_SLAM2


要查看或添加评论,请登录

Thameem Fowzan的更多文章

社区洞察

其他会员也浏览了