borglab / gtsam

GTSAM is a library of C++ classes that implement smoothing and mapping (SAM) in robotics and vision, using factor graphs and Bayes networks as the underlying computing paradigm rather than sparse matrices.
http://gtsam.org
Other
2.55k stars 755 forks source link

Confusion about variable elimination order for loop closure #108

Closed qsh-zh closed 5 years ago

qsh-zh commented 5 years ago

I read isam2 paper. How to build ayes Tree for a large loop closure really confuses me? In the example shown in the paper, this is an evolution of the Bayes tree. When loop closure happens, there should be a factor between x24 and x16, and when we update Bayesian Net, the factor will become a directed line, and there should be a clique that contains x_24 and x_16. But we do not find any clique contains x_24 and x_16 in the Bayes Tree show in the figure. I fail to figure out how to build the red nodes, variable elimination order matters, Can someone give a clue? Where can I find how to build Bayes Tree with loop closure in the code?
image

dellaert commented 5 years ago

x16 is in a clique below the split. You can probably reconstruct what happened by re-eliminating the red states with order x16, x15, x17, x18, x19, x20, x21, x22, x23, x24, and doing a clique analysis on resulting Bayes net, refer to 2017 "Factor Graphs for Robot Perception".

For future reference, since this is neither a bug nor a feature request please post these type of questions to the Google group.