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?