optimizePoseGraph
Optimize nodes in pose graph
Syntax
Description
The optimizePoseGraph function optimizes the poses within a
pose graph such that they comply with the edge constraints as much as
possible.
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.
Note
Computer Vision Toolbox™ is required if the pose graph is represented as a digraph object. Use the createPoseGraph object
function of imageviewset (Computer Vision Toolbox) or pcviewset (Computer Vision Toolbox) to create the digraph object of the
required format, where node estimates are represented by
rigidtform3d and edge constraints are represented by either
rigidtform3d or simtform3d. If digraph edge
information matrix is not supplied, it is assumed to be identity by default.
This comparison chart shows the corresponding pose format for the different representations of pose graph:
| Pose Graph Representations | Pose Formats |
|---|---|
poseGraph object | Poses are 3-element row vectors of the form [x, y,
yaw]. |
poseGraph3D object | Poses are seven-element row vectors of the form[x, y, z, qw,
qx, qy, qz]. Note the sequence in the quaternion part.
|
digraph object | Poses are rigidtform3d (Image Processing Toolbox) or simtform3d (Image Processing Toolbox) objects. This representation requires
Computer Vision Toolbox. |
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)
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.
Examples
Input Arguments
Name-Value Arguments
Output Arguments
References
[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.
Extended Capabilities
Version History
Introduced in R2019b
See Also
Functions
trimLoopClosures|addRelativePose|removeEdges|edgeNodePairs|edgeConstraints|findEdgeID|nodeEstimates

