1

I see that in SLAM literatures, factor graph optimization is frequently used. While in Structure from Motion literatures, usually they use bundle adjustment. What's the difference between the two methods ?

Furthermore, can we implement one method with libraries for the other ? E.g. implementing Bundle adjustment with g2o, or implementing factor graph optimization with ceres solver ?

Thanks in advance!

zhouch
  • 45
  • 6

1 Answers1

5

Factor graph optimization is an optimization of any generic factor graph with nodes (states) and edges (constraints), for example you can have IMU preintegration constraints between two poses that you wish to minimize the error of based on the covariance matrix of the measurements.

Bundle adjustment is a special case of factor graph optimization where the only states are camera poses and landmark position, and the only constraints are the reprojection constraints from the landmarks to the cameras.

I'm not sure about g2o, but you can definitely use ceres to do either, as its just the case of defining the correct cost functions.

Jake McLaughlin
  • 318
  • 1
  • 12
  • Thank you very much! I have another question: pose graph optimization is also a special case of factor graph optimization, where the edge / constraints are the relative camera motion, is that right? – zhouch Jul 20 '21 at 07:32
  • yes pose graph optimization is exactly that, usually there will be some sort of covariance matrix to measure the uncertainty between two poses – Jake McLaughlin Jul 21 '21 at 14:15