Main Content

Esta página se ha traducido mediante traducción automática. Haga clic aquí para ver la última versión en inglés.

poseGraph

Crear gráfico de pose 2D

Desde R2019b

Descripción

Un objeto poseGraph almacena información para una representación gráfica de pose 2-D. Un gráfico de pose contiene nodos conectados por aristas. La estimación de cada nodo está conectada al gráfico mediante restricciones de borde que definen la pose relativa entre los nodos y la incertidumbre en esa medición.

Para construir un gráfico de pose de forma iterativa, utilice la función addRelativePose para agregar estimaciones de pose relativas y conectarlas a un nodo existente con restricciones de borde especificadas. Los nodos de pose deben especificarse en relación con un nodo de pose. Especificar la incertidumbre de la medición mediante una matriz de información.

Figure showing relative poses between node poses. Each sequential pose is connected by an edge. Poses are specified as x,y, theta relative to the previous node.

Agregar un borde entre dos nodos no secuenciales crea un "cierre de bucle" en el gráfico. También se admiten múltiples bordes o multibordes entre pares de nodos, lo que incluye cierres de bucle. Para agregar restricciones de borde adicionales o cierres de bucle, especifique los ID de nodo usando la función addRelativePose . Al optimizar el gráfico de pose, la función optimizePoseGraph encuentra una solución para satisfacer todas estas restricciones de borde.

Figure showing loop closures and multiedges as constraints between nodes. Loop closures connect to previous non-sequential nodes. Multiedges are multiple constraints between the same node pair.

Para agregar nodos de puntos de punto de referencia, utilice la función addPointLandmark . Esta función especifica nodos como xy-puntos sin estimaciones de orientación. Los puntos de referencia deben especificarse en relación con un nodo de pose.

Figure showing a landmark position as an xy point relative to two nodes with an edge between each node. to.

El objeto lidarSLAM realiza localización y mapeo simultáneos basados ​​en LIDAR, que se basa en la optimización de un gráfico de pose 2-D.

Para gráficos de pose en 3D, consulte el objeto poseGraph3D o el ejemplo SLAM de punto de referencia usando marcadores AprilTag .

Creación

Descripción

ejemplo

poseGraph = poseGraph crea un objeto gráfico de pose 2D. Agregue poses usando addRelativePose para construir un gráfico de pose de forma iterativa.

poseGraph = poseGraph('MaxNumEdges',maxEdges,'MaxNumNodes',maxNodes) especifica un límite superior en el número de bordes y nodos permitidos en el gráfico de pose al generar código. Esta sintaxis solo es necesaria al generar código.

Propiedades

expandir todo

Esta propiedad o parámetro es de solo lectura.

Número de nodos en el gráfico de pose, especificado como un entero positivo. Cada nodo representa una medida de pose o una medida de punto de referencia. Para especificar poses relativas entre nodos, utilice addRelativePose. Para especificar una pose de punto de referencia, utilice addLandmarkPose. Para obtener una lista de todos los nodos, utilice edgeNodePairs.

Esta propiedad o parámetro es de solo lectura.

Número de aristas en el gráfico de pose, especificado como un entero no negativo. Cada borde conecta dos nodos en el gráfico de pose. Se incluyen bordes de cierre de bucle y bordes de referencia.

Esta propiedad o parámetro es de solo lectura.

Número de cierres de bucle en el gráfico de pose, especificado como un entero no negativo. Para obtener los ID de los bordes de los cierres de bucle, utilice la propiedad LoopClosureEdgeIDs .

Esta propiedad o parámetro es de solo lectura.

ID de bordes de cierre de bucle, especificados como un vector de ID de borde.

Esta propiedad o parámetro es de solo lectura.

ID de nodos de punto de referencia, especificados como un vector de ID para cada nodo.

Funciones del objeto

addPointLandmarkAgregar un nodo de punto de referencia al gráfico de pose
addRelativePoseAgregar pose relativa al gráfico de pose
copyCrear copia del gráfico de pose
edgeNodePairsPares de nodos de borde en gráfico de pose
edgeConstraintsRestricciones de borde en el gráfico de pose
edgeResidualErrorsCalcular los errores residuales del borde del gráfico de pose
findEdgeIDEncuentra el ID del borde del borde
nodeEstimatesPoses de nodos en el gráfico de poses.
removeEdgesEliminar los bordes de cierre del bucle del gráfico
showTrazar gráfico de pose

Ejemplos

contraer todo

Optimice un gráfico de pose en función de los nodos y las restricciones de los bordes. El gráfico de pose utilizado en este ejemplo proviene del Intel Research Lab Dataset y se generó a partir de la recopilación de información de odometría de ruedas y de un sensor de telémetro láser en un laboratorio interior.

Cargue el conjunto de datos de Intel que contiene un gráfico de pose 2D. Inspeccione el objeto poseGraph para ver el número de nodos y cierres de bucle.

load intel-2d-posegraph.mat pg
disp(pg)
  poseGraph with properties:

               NumNodes: 1228
               NumEdges: 1483
    NumLoopClosureEdges: 256
     LoopClosureEdgeIDs: [1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 ... ] (1x256 double)
        LandmarkNodeIDs: [1x0 double]

Traza el gráfico de pose con las identificaciones desactivadas. Las líneas rojas indican cierres de bucle identificados en el conjunto de datos.

show(pg,'IDs','off');
title('Original Pose Graph')

Figure contains an axes object. The axes object with title Original Pose Graph, xlabel X, ylabel Y contains 3 objects of type line. One or more of the lines displays its values using only markers

Optimiza el gráfico de pose. Los nodos se ajustan en función de las restricciones de los bordes y los cierres de bucles. Trace el gráfico de pose optimizado para ver el ajuste de los nodos con cierres de bucle.

updatedPG = optimizePoseGraph(pg);
figure
show(updatedPG,'IDs','off');
title('Updated Pose Graph')

Figure contains an axes object. The axes object with title Updated Pose Graph, xlabel X, ylabel Y contains 3 objects of type line. One or more of the lines displays its values using only markers

Referencias

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

Capacidades ampliadas

Historial de versiones

Introducido en R2019b