Skip to content

Instantly share code, notes, and snippets.

@UditSinghParihar
Last active October 28, 2019 18:10
Show Gist options
  • Save UditSinghParihar/2b8bdf152037adf944f2fe7ee2c7468d to your computer and use it in GitHub Desktop.
Save UditSinghParihar/2b8bdf152037adf944f2fe7ee2c7468d to your computer and use it in GitHub Desktop.
Hierarchical Pose Graph Optimization
  1. Experiment performed on Hierarchical Pose Graph Optimization.
  2. In our formulation topological nodes come at higher level of hierarchy tree followed by dense pose graph nodes.
  3. We are currently experimenting that whether just optimizing the pose graph of higher topological nodes is sufficient to recover the trajectory close to the groundtruth.
  4. The aim is to exploit topological information to get faster pose graph optimization time and get good enough map for robot navigation from one topology to another topology.
  5. Here we are assuming that our frontend would be able to detect loop closures at the intersection of topological nodes.
@UditSinghParihar
Copy link
Author

UditSinghParihar commented Oct 17, 2019

RESULTS

  1. Synthetic environment in Gazebo.
    gazebo_top_view

  2. Skematic of map and trajectory taken by robot.
    map

  3. Ground Truth trajectory taken by robot.
    GroundTruth

  4. Optimization on whole map:

4.1. Noisy trajectory generated by introducing perturbation in odometry.
Noisy_full

4.2. Optimized trajectory using keypoints poses only. Keypoints poses are located at the starting and ending points of a topological structure.
Noisy_optimized

  1. Optimization on keypoints poses only:

5.1. Noisy keypoints locations extracted from noisy dense trajectory.
Noisy_Keypoints

5.2. Optimized keypoints. Keypoints are optimized using same transformation as given for optimizing dense noisy trajectory.
Noisy_keypoints_optimized

  1. Optimizing each submap based on the optimized keypoints. Optimization of three submaps is shown below:

6.1.a. Submap before optimization:
2a

6.1.b. Submap after optimization:
2b

6.2.a. Submap before optimization:
4a

6.2.b. Submap after optimization:
4b

6.3.a. Submap before optimization:
5a

6.3.b. Submap after optimization:
5b

  1. Final result after concatanation of all 25 submaps:
    Submaps_Concatanated

  2. Benchmarking the time taken for optimizing on full pose graph vs (first optimizing on the keypoints and then optimizing each subgraph individualy based on the optimized keypoints):
    a. Full Pose Graph: 0.28 seconds
    b. Hierarchial subgraphs optimization: 1.15 seconds

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment