Skip to content

Attempt to Implement GraphSlam as articulated in Girogio Grisetti's Paper "A Tutorial on Graph-Based Slam"

License

Notifications You must be signed in to change notification settings

yycho0108/GraphSlam3D

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphSlam3

Last Modified by Yoonyoung Cho @ June 11th, 2018

This project implements Online/Offline Graph Slam in 3-Dimensions, including rotations.

The implementation is independent from, but follows the theory as described in A Tutorial on Graph-Based Slam by Giorgio Grisetti.

Adaptation from its original version to the online (incremental) variant closely followed Sebastian Thrun's method introduced in CS373 Udacity Course, Artificial Intelligence for Robotics. namely, the the new information matrix and the coefficients are computed through the block-matrix inverse.

Each Landmark is identified by its fully qualified pose, such as would be the case for april tags, for instance.

Orientations are represented by quaternions in the state-form, and are treated with minimal parametrization with T(q) = h v.

To run, simply type the following in the terminal:

python main.py

Which would produce an output such as:

======== Ground Truth ========
final pose
(array([-60.5253, -63.891 ,  12.3384]), array([-0.7555,  0.379 ,  0.1496,  0.513 ]))
landmarks
[[array([ 17.4111, -16.5466, -10.9947])
  array([-0.2441, -0.1224,  0.0396,  0.9612])]
 [array([  1.7009, -23.3336,  -1.7232])
  array([-0.0876, -0.0553,  0.3559,  0.9288])]
 [array([10.3241, -7.3791, 13.1882])
  array([0.3553, 0.8674, 0.2175, 0.272 ])]
 [array([  6.2393, -10.2777,  15.8645])
  array([ 0.2804, -0.1007, -0.4581,  0.8375])]]
--------              --------


======== Raw Results ========
final pose
[-44.1774 -71.2953   2.4658  -0.756    0.1418   0.3163   0.5552]
landmarks
[Not available at this time]
--------             --------


======== Online ========
final pose
[-67.3803 -64.57     8.5176  -0.7206   0.3921   0.1738   0.5448]
landmarks
[[ 17.3581 -16.3457 -12.3706  -0.2125  -0.1368  -0.0331   0.967 ]
 [  1.7459 -22.9052  -3.2887  -0.0831  -0.1383   0.2638   0.951 ]
 [ 11.0464  -8.0334  13.4041   0.4288   0.7506   0.3377   0.3725]
 [  7.2658 -11.3247  14.3272   0.3098  -0.1079  -0.4167   0.8478]]
--------        --------


======== Offline ========
final pose
[-58.7092 -65.6913  12.2601  -0.7402   0.3844   0.1879   0.5187]
landmarks
[[ 16.8471 -15.723  -13.4576  -0.2169  -0.0942   0.0511   0.9703]
 [  1.849  -23.2313  -3.5829  -0.054   -0.0349   0.365    0.9288]
 [ 11.1996  -7.926   11.5698   0.3628   0.8719   0.2306   0.2345]
 [  7.338  -11.013   14.3555   0.2871  -0.06    -0.4634   0.8362]]
--------         --------

Visualization in ROS with RViz had been supported in the past, and will be revived in the future.

About

Attempt to Implement GraphSlam as articulated in Girogio Grisetti's Paper "A Tutorial on Graph-Based Slam"

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published