0
$\begingroup$

I've been trying to figure out the difference between motion-only bundle adjustment and pose-graph optimization, when talking about systems that only use cameras to estimate motion between frames, but have so far had no luck finding a solid explanation explaining the differences between these two concepts.

Motion-only BA optimizes over camera poses, and treats triangulated landmark positions as being constant, where the error function is the reprojection error between triangulated 3D landmarks and their corresponding 2D feature points on the camera/image plane (e.g. a nice explanation of motion-only BA can be found on page 4 of the ORB-SLAM2 paper).

However, pose-graph optimization seems extremely similar, where again camera poses are optimized and triangulated landmark positions are treated as being constant during optimization. But, instead of having a reprojection-based error function, the error function for pose-graph optimization instead seems to be the difference between relative poses (e.g. a nice explanation of pose-graph optimization can be found on page 9 of the tutorial paper on visual odometry by Fraundorfer and Scaramuzza).

However, for vision-based systems it seems like the difference between relative poses has to be obtained using some type of reprojection-based error function (assuming the use of sparse features, and not dense tracking). As such, are motion-only BA and pose-graph optimization two names for the same thing, or are there more nuanced differences between the two?

$\endgroup$

2 Answers 2

1
$\begingroup$

From the Appendix section of the ORB SLAM paper:

... In pose optimization, or motion-only BA, (see section V) all points are fixed and only the camera pose is optimized.

So yes, they are the same, I assume it's only the context that makes the use of one term preferable over the other.

$\endgroup$
0
$\begingroup$

In my opinion, they are meaninglessly different. On the backside of all these names BA, motion only BA, pose-graph optimization, batch optimization, what they do is simply optimize the device trajectory (6dof x N).

The difference between BA and pose-graph optimization used to be whether they optimize the structure part. But these days, people marginalize the structure part in BA and introduce reprojection constraints to the pose graph which is more like batch optimization rather than graph optimization. I am not even sure if the option only BA has a structure part in the state.

I would put all of them into a pose optimization problem with different constraints.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.