factorGraph
Description
Un objet factorGraph
stocke un graphe biparti composé de facteurs connectés à des nœuds variables. Les nœuds représentent les variables aléatoires inconnues dans un problème d'estimation, tel que les poses de robot, et les facteurs représentent des contraintes probabilistes sur ces nœuds, dérivées de mesures ou de connaissances antérieures. Lors de l'optimisation, le graphique de facteurs utilise tous les facteurs et les états actuels des nœuds pour mettre à jour les états des nœuds.
Pour utiliser le graphique factoriel :
Créez un objet
factorGraph
vide.Pour chaque type de facteur souhaité :
Générez des ID de nœud à l'aide de la fonction d'objet
generateNodeID
.Définissez des facteurs avec les ID de nœud souhaités, à l'aide de l'un des objets facteurs pris en charge :
Ajoutez des facteurs au graphique de facteurs à l'aide de la fonction objet
addFactor
. Si le graphique de facteurs ne contient pas de nœud avec l'ID spécifié, la fonction crée automatiquement un nœud avec cet ID et l'ajoute au graphique de facteurs lors de l'ajout du facteur au graphique de facteurs. Si le graphique de facteurs contient un nœud avec l'ID spécifié, assurez-vous que l'ajout du nouveau facteur n'entraîne pas une incompatibilité de type de nœud. Pour plus d'informations, consultez Conseils. Pour une liste des types de nœuds attendus pour chaque facteur, voir Types de nœuds attendus pour les objets facteurs.
Vérifiez si tous les nœuds du graphique factoriel sont connectés à au moins un autre nœud à l'aide de la fonction objet
isConnected
.Créez un objet
factorGraphSolverOptions
pour spécifier les options du solveur de graphe factoriel.Optimisez le graphique factoriel à l'aide de la fonction objet
optimize
avec les options de résolution de graphique factoriel souhaitées.Extrayez les données de nœud du graphique factoriel, telles que les ID de nœud et les états de nœud, à l'aide des fonctions d'objet
nodeIDs
etnodeState
.
Création
Syntaxe
Description
crée un objet graph
= factorGraphfactorGraph
vide.
Propriétés
Fonctions d'objet
addFactor | Ajouter un facteur au graphique des facteurs |
fixNode | Fix or free nodes in factor graph |
generateNodeID | Générer de nouveaux ID de nœud |
hasNode | Check if node ID exists in factor graph |
isConnected | Vérifiez si le graphique des facteurs est connecté |
isNodeFixed | Vérifiez si le nœud est corrigé |
nodeIDs | Obtenir les ID de nœud dans le graphique de facteurs |
nodeState | Get or set node state in factor graph |
nodeType | Obtenir le type de nœud dans le graphique de facteurs |
optimize | Optimiser le graphique du facteur |
Exemples
En savoir plus
Conseils
Pour spécifier plusieurs facteurs et nœuds à la fois pour un type de facteur spécifique, utilisez la fonction
generateNodeID
et spécifiez le nombre de facteurs et le type de facteur. Voir la fonctiongenerateNodeID
pour plus de détails.poseIDPairs = generateNodeID(fg,3,"factorTwoPoseSE2"); ftpse2 = factorTwoPoseSE2(poseIDPairs);
Vous pouvez obtenir les états de tous les nœuds de pose en utilisant d'abord la fonction
nodeIDs
et en spécifiant le type de nœud comme"POSE_SE2"
pour les poses de robot SE(2) et"POSE_SE3"
pour les poses du robot SE(3). Ensuite, utilisez la fonctionnodeState
avec ces ID de nœud pour obtenir les états des nœuds de pose du robot.poseIDs = nodeIDs(fg,NodeType="POSE_SE2"); poseStates = nodeState(fg,poseIDs);
Vérifiez les types de nœuds créés ou auxquels chaque facteur se connecte avant d'ajouter des facteurs au graphique de facteurs afin d'éviter les erreurs d'incompatibilité des types de nœuds. Pour une liste des types de nœuds attendus pour chaque facteur, voir Types de nœuds attendus pour les objets facteurs.
Références
[1] Dellaert, Frank. Factor graphs and GTSAM: A Hands-On Introduction. Georgia: Georgia Tech, September, 2012.
Capacités étendues
Historique des versions
Introduit dans R2022a