# poseGraph

## Description

A `poseGraph`

object stores information for a 2-D pose graph
representation. A pose graph contains nodes connected by edges. Each node estimate is
connected to the graph by edge constraints that define the relative pose between nodes
and the uncertainty on that measurement.

To construct a pose graph iteratively, use the `addRelativePose`

function to add relative pose estimates and connect them
to an existing node with specified edge constraints. Pose nodes must be specified
relative to a pose node. Specify the uncertainty of the measurement using an information
matrix.

Adding an edge between two nonsequential nodes creates a *loop
closure* in the graph. Multiple edges or *multiedges*
between node pairs are also supported, which includes loop closures. To add additional
edge constraints or loop closures, specify the node IDs using the `addRelativePose`

function. When optimizing the pose graph, the `optimizePoseGraph`

function finds a solution to satisfy all these edge
constraints.

To add landmark point nodes, use the `addPointLandmark`

function. This function specifies nodes as
*xy*-points without orientation estimates. Landmarks must be
specified relative to a pose node.

The `lidarSLAM`

object performs lidar-based simultaneous localization and mapping, which is based around
the optimization of a 2-D pose graph.

For 3-D pose graphs, see the `poseGraph3D`

object or the Landmark SLAM Using AprilTag Markers example.

## Creation

### Description

`poseGraph = poseGraph`

creates a 2-D pose graph object.
Add poses using `addRelativePose`

to construct a pose graph
iteratively.

`poseGraph = poseGraph('MaxNumEdges',maxEdges,'MaxNumNodes',maxNodes)`

specifies an upper bound on the number of edges and nodes allowed in the
pose graph when generating code. This syntax is only required when
generating code.

## Properties

## Object Functions

`addPointLandmark` | Add landmark point node to pose graph |

`addRelativePose` | Add relative pose to pose graph |

`copy` | Create copy of pose graph |

`edgeNodePairs` | Edge node pairs in pose graph |

`edgeConstraints` | Edge constraints in pose graph |

`edgeResidualErrors` | Compute pose graph edge residual errors |

`findEdgeID` | Find edge ID of edge |

`nodeEstimates` | Poses of nodes in pose graph |

`removeEdges` | Remove loop closure edges from graph |

`show` | Plot pose graph |

## Examples

## 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.

## Extended Capabilities

## Version History

**Introduced in R2019b**