factorGraph
Descripción
Un objeto factorGraph
almacena un gráfico bipartito que consta de factores conectados a nodos variables. Los nodos representan las variables aleatorias desconocidas en un problema de estimación, como las poses de los robots, y los factores representan restricciones probabilísticas en esos nodos, derivadas de mediciones o conocimientos previos. Durante la optimización, el gráfico de factores utiliza todos los factores y los estados actuales de los nodos para actualizar los estados de los nodos.
Para utilizar el gráfico de factores:
Cree un objeto
factorGraph
vacío.Para cada tipo de factor deseado:
Genere ID de nodo utilizando la función de objeto
generateNodeID
.Defina factores con los ID de nodo deseados, utilizando cualquiera de los objetos de factor admitidos:
Agregue factores al gráfico de factores usando la función de objeto
addFactor
. Si el gráfico de factores no contiene un nodo con el ID especificado, la función crea automáticamente un nodo con ese ID y lo agrega al gráfico de factores al agregar el factor al gráfico de factores. Si el gráfico de factores contiene un nodo con el ID especificado, asegúrese de que agregar el nuevo factor no provoque una discrepancia en el tipo de nodo. Para obtener más información, consulte Sugerencias. Para obtener una lista de los tipos de nodos esperados para cada factor, consulte Tipos de nodos esperados de objetos de factores.
Compruebe si todos los nodos en el gráfico de factores están conectados a al menos otro nodo usando la función de objeto
isConnected
.Cree un objeto
factorGraphSolverOptions
para especificar las opciones del solver de gráficos de factores.Optimice el gráfico de factores utilizando la función de objeto
optimize
con las opciones deseadas de solver del gráfico de factores.Extraiga datos de nodos del gráfico de factores, como ID de nodos y estados de nodos, utilizando las funciones de objeto
nodeIDs
ynodeState
.
Creación
Sintaxis
Descripción
crea un objeto graph
= factorGraphfactorGraph
vacío.
Propiedades
Funciones del objeto
addFactor | Agregar factor al gráfico de factores |
fixNode | Arreglar o liberar nodos en el gráfico de factores |
generateNodeID | Generar nuevos ID de nodo |
hasNode | Compruebe si el ID del nodo existe en el gráfico de factores |
isConnected | Compruebe si el gráfico de factores está conectado |
isNodeFixed | Compruebe si el nodo está arreglado |
nodeIDs | Obtener ID de nodo en el gráfico de factores |
nodeState | Obtener o establecer el estado del nodo en el gráfico de factores |
nodeType | Obtener el tipo de nodo en el gráfico de factores |
optimize | Optimizar gráfico de factores |
Ejemplos
Más acerca de
Sugerencias
Para especificar múltiples factores y nodos a la vez para un tipo de factor específico, use la función
generateNodeID
y especifique el número de factores y el tipo de factor. Consulte la funcióngenerateNodeID
para obtener más detalles.poseIDPairs = generateNodeID(fg,3,"factorTwoPoseSE2"); ftpse2 = factorTwoPoseSE2(poseIDPairs);
Puede obtener los estados de todos los nodos de pose usando primero la función
nodeIDs
y especificando el tipo de nodo como"POSE_SE2"
para las poses del robot SE(2) y"POSE_SE3"
para poses de robot SE(3). Luego, use la funciónnodeState
con esos ID de nodo para obtener los estados de los nodos de pose del robot.poseIDs = nodeIDs(fg,NodeType="POSE_SE2"); poseStates = nodeState(fg,poseIDs);
Verifique los tipos de nodos que cada factor crea o a los que se conecta antes de agregar factores al gráfico de factores para evitar errores de discrepancia de tipos de nodos. Para obtener una lista de los tipos de nodos esperados para cada factor, consulte Tipos de nodos esperados de objetos de factores.
Referencias
[1] Dellaert, Frank. Factor graphs and GTSAM: A Hands-On Introduction. Georgia: Georgia Tech, September, 2012.
Capacidades ampliadas
Historial de versiones
Introducido en R2022a