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.
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.
-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.
+
+
+
+ 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