Optimize nodes in pose graph

adjusts the poses based on their edge constraints defined in the specified graph to
improve the overall graph. You optimize either a 2-D or 3-D pose graph. The returned
pose graph has the same topology with updated nodes. `updatedGraph`

= optimizePoseGraph(`poseGraph`

)

This pose graph optimization assumes all edge constraints and loop closures are
valid. To consider trimming edges based on bad loop closures, see the `trimLoopClosures`

function.

specifies the solver type for optimizing the pose graph.`updatedGraph`

= optimizePoseGraph(`poseGraph`

,`solver`

)

`[`

returns additional statistics about the optimization process in
`updatedGraph`

,`solutionInfo`

] = optimizePoseGraph(___)`solutionInfo`

using any of the previous syntaxes.

`[___] = optimizePoseGraph(___,`

specifies additional options using one or more `Name,Value`

)`Name,Value`

pairs.
For example, `'MaxIterations',1000`

increases the maximum number of
iterations to 1000.

[1] Grisetti, G., R. Kummerle, C. Stachniss, and W. Burgard. "A Tutorial on
Graph-Based SLAM." *IEEE Intelligent Transportation Systems
Magazine*. Vol. 2, No. 4, 2010, pp. 31–43.
doi:10.1109/mits.2010.939925.

[2] Carlone, Luca, Roberto Tron, Kostas Daniilidis, and Frank Dellaert.
"Initialization Techniques for 3D SLAM: a Survey on Rotation Estimation and its Use in
Pose Graph Optimization." *2015 IEEE International Conference on Robotics and
Automation (ICRA)*. 2015, pp. 4597–4604.