diff --git a/README.md b/README.md index 83d8f4bc3d..7a0c4d34f3 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,33 @@ -# Good Feature Matching Version of ORB-SLAM2 +# A cost-efficient, heavily-modified ORB-SLAM2 -**Good feature matching** (IROS18, TRO20) is an enhancement module that is designed for feature-based BA SLAM, such as ORB-SLAM2. The main advantage of good feature matching, as opposed to the conventional batch feature matching, is the better trade-off of performance-efficiency. +The cost-efficiency of visual SLAM is crucial for target applications in Robotics and VR/AR. One principal enforced in this project is to persue better computation-performance trade-off in both front-end and back-end of visual SLAM. To that end, three major algorithmic innovations are integrated to ORB-SLAM 2: + +1. **Good feature matching** (IROS18, TRO20) is an enhancement module to the front-end of feature-based BA SLAM, such as ORB-SLAM2. As an efficient variant of active feature matching, good feature matching has much better computation-performance trade-off than conventional batch feature matching.
EuRoC
Performance vs. latency evaluation on EuRoC monocular sequences (left-cam only)
-Compared with the previous version of [GF](https://github.com/ivalab/GF_ORB_SLAM), we also introduce **Map Hashing** (ICRA19), which is designed to bound the cost of lcoal map related operations in long-term, large-scale VSLAM. +2. **Local map hashing** (ICRA19) is specifically designed for large-scale, long-term VSLAM applications, where the cost of local map related operations could be computation-heavy. The local map is indexed with a light-weight, robust, and temporally-evolving Multi-Index Hashing method. SLAM View of MapHash vs. Baseline ORB -As the central part of autonomous navigation stack developed at Georgia Tech IVALab, GF-ORB-SLAM 2 supports **additional features** as follows: - - this repo is based on ORB-SLAM2, which supports monocular, stereo and rgb-d visual input; +3. **Good graph selection** (submitted to TRO) is an enhancement module to the back-end of BA-based SLAM. It enables fine-grained and timely control of the local BA problem in SLAM back-end: solve large BA when resource is sufficient, while focus on smaller BA under computation/time limit. Compared with sliding window or covisibily graph, good graph selection has much better computation-performance trade-off. + +
+ Venice +
Full BA vs. subgraph BA on Venice dataset
+
+ +Following **additional features** are also included for practical applications: - catkinize (by default; for non-ros usage, check out the **master** branch instead); - GPU accelerated FAST detection (uncomment Macro **CUDA_ACC_FAST** in **ORBextractor.h** to enable it); - sped-up lazy stereo matching (uncomment Macro **ALTER_STEREO_MATCHING** & **DELAYED_STEREO_MATCHING** in **Frame.h** to enable it; for fisheye lens, uncomment **USE_FISHEYE_DISTORTION** as well); - - budget awared local BA with Good Graph selection (uncomment Macro **ENABLE_GOOD_GRAPH** in **Optimizer.h** & **ENABLE_ANTICIPATION_IN_GRAPH** in **Frame.h** to enable it; by default the desired path from controller / planner is valid and published to rostopic "/desired_path") - map saving & loading modules (uncomment Macro **ENABLE_MAP_IO** in **Frame.h** to enable them) - - Pose initialization with ChAruco (uncomment Macro **INIT_WITH_ARUCHO** in **Tracking.h** to enable it) + - pose initialization with ChAruco (uncomment Macro **INIT_WITH_ARUCHO** in **Tracking.h** to enable it) out the master branch) ## Build & Run diff --git a/good_graph_demo.png b/good_graph_demo.png new file mode 100644 index 0000000000..1321f65b84 Binary files /dev/null and b/good_graph_demo.png differ