Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

generateNodeID

Générer de nouveaux ID de nœud

Depuis R2023a

    Description

    La fonction generateNodeID génère de nouveaux ID de nœud pour créer de nouveaux facteurs pour un graphique de facteurs.

    IDs = generateNodeID(graph,numNodes) génère le nombre spécifié numNodes de nouveaux ID de nœud IDs à utiliser lors de la création de nouveaux facteurs à ajouter au graphique de facteurs graph.

    Le premier ID de nœud dans IDs est 0 s'il n'y a aucun nœud dans graph, sinon le premier ID de nœud dans IDs est égal à graph.NumNodes + 1.

    exemple

    IDs = generateNodeID(graph,nodeMatrixSize) spécifie le nombre de nouveaux ID de nœud à générer en tant que nombre d'éléments dans une matrice avec les dimensions spécifiées nodeMatrixSize. Les ID s'incrémentent dans l'ordre des lignes principales.

    Par exemple, generateNodeID(graph,[3 2]) crée de nouveaux ID de nœud sous forme de matrice dans ce format.

    [ID1ID2ID3ID4ID5ID6]

    exemple

    IDs = generateNodeID(graph,numFactors,factorType) génère de nouveaux ID de nœud pour le nombre spécifié de facteurs numFactors. La taille des ID de nœud générés et la manière dont les ID sont incrémentés dépendent du nombre de facteurs et du type de facteur factorType

    Remarque

    Le generateNodeID ne peut générer que des ID de nœud pour créer un facteur en utilisant cette syntaxe pour les objets factorIMU et factorGPS . Pour utiliser cette syntaxe afin de générer des ID de nœud pour les objets factorIMU et factorGPS , numFactors doit être 1.

    exemple

    Exemples

    réduire tout

    Créez un graphique de facteurs et générez dix ID de nœud.

    fg = factorGraph;
    nids = generateNodeID(fg,10)
    nids = 1×10
    
         0     1     2     3     4     5     6     7     8     9
    
    

    Créez un graphique de facteurs et générez une matrice d'ID de nœud 4 par 2.

    fg = factorGraph;
    nids = generateNodeID(fg,[4 2])
    nids = 4×2
    
         0     1
         2     3
         4     5
         6     7
    
    

    Créez un graphique de facteurs et générez des ID de nœud pour spécifier quatre facteurs dans un objet factorPoseSE3AndPointXYZ .

    fg = factorGraph;
    poseAndLandmarkIDs = generateNodeID(fg,4,"factorPoseSE3AndPointXYZ")
    poseAndLandmarkIDs = 4×2
    
         0     1
         0     2
         0     3
         0     4
    
    

    Notez que pour les facteurs de points de repère, l’objectif est de connecter une pose à plusieurs points de repère. Ainsi, pour le type de facteur "factorPoseSE3AndPointXYZ" , la première colonne est constante car elle représente le nœud de pose unique, et la deuxième colonne est incrémentée car elle représente plusieurs nœuds de points de repère.

    Créez et ajoutez l'objet facteur au graphique de facteurs pour créer les facteurs.

    poseAndLandmarkFactors = factorPoseSE3AndPointXYZ(poseAndLandmarkIDs);
    addFactor(fg,poseAndLandmarkFactors);

    Générez des ID de nœud pour créer un objet factorTwoPoseSE2 avec trois facteurs. Étant donné que le dernier ID de nœud du graphique de facteurs est 4, les nouveaux ID de nœud commencent à cinq.

    poseIDs = generateNodeID(fg,3,"factorTwoPoseSE2")
    poseIDs = 3×2
    
         5     6
         6     7
         7     8
    
    

    Notez que le type de facteur "factorTwoPoseSE2" , l'objectif est de créer une chaîne de poses connectées, ce qui signifie que chaque ligne doit être connectée à la ligne qui la précède et qui la suit. Ainsi, pour chaque ligne après la première ligne, le premier élément est le deuxième ID de nœud de la ligne précédente. Cela garantit que chaque nœud se connecte aux nœuds immédiatement avant et après lui, dans l'ordre.

    Créez et ajoutez l'objet factorTwoPoseSE2 au graphique factoriel.

    twoPoseFactors = factorTwoPoseSE2(poseIDs);
    addFactor(fg,twoPoseFactors);

    Arguments d'entrée

    réduire tout

    Graphique factoriel pour lequel générer des nœuds, spécifié comme objet factorGraph .

    La propriété NumNodes de graph détermine quel est le premier ID de nœud généré de la sortie IDs . Le premier ID de nœud dans IDs est 0 s'il n'y a aucun nœud dans graph, sinon le premier ID de nœud dans IDs est égal à graph.NumNodes + 1.

    Nombre d'ID de nœud à générer, spécifié sous forme d'entier non négatif.

    Exemple : generateNodeID(fg,3) génère trois ID de nœud sous forme de vecteur de ligne sous la forme [NodeID1 NodeID2 NodeID3]

    Taille de la matrice d'ID de nœud générée, spécifiée comme vecteur à deux éléments d'entiers non négatifs. Le premier élément spécifie le nombre de lignes et le deuxième élément spécifie le nombre de colonnes dans la matrice d'ID de nœud.

    Exemple : generateNodeID(fg,[3 2]) génère deux ID de nœud pour trois facteurs sous la forme [NodeID1 NodeID2; NodeID3 NodeID4; NodeID5 NodeID6]

    Nombre de facteurs pour lesquels générer des ID de nœud, spécifié sous forme d'entier non négatif.

    Si factorType est soit "factorGPS" ou "factorIMU", alors numFactors doit être spécifié comme 1.

    Exemple : generateNodeID(fg,1,"factorPoseSE2AndPointXY") crée un ensemble de deux ID de nœud sous la forme [SE2PoseNodeID LandmarkNodeID] pour un facteur.

    Type de facteur pour lequel générer des ID de nœud, spécifié comme l'une de ces options :

    La fonction generateNodeID prend uniquement en charge la génération d'ID de nœud pour créer un facteur unique pour ces options :

    Si factorType est soit "factorGPS" ou "factorIMU", alors l'argument numFactors doit être spécifié comme 1.

    Le format des ID de nœud correspond au format de la propriété NodeID pour cet objet facteur. Par exemple, si vous spécifiez "factorTwoPoseSE2", la fonction génère les ID de nœud sous la forme [SE2Pose1NodeID SE2Pose2NodeID].

    Exemple : generateNodeID(fg,1,"factorPoseSE2AndPointXY") crée un ensemble de deux ID de nœud sous la forme [SE2PoseNodeID LandmarkNodeID]

    Types de données : char | string

    Arguments de sortie

    réduire tout

    ID de nœud générés, renvoyés comme l'une de ces options en fonction des arguments d'entrée que vous spécifiez :

    1. numNodesN - vecteur de ligne d'éléments, où N est égal à numNodes, et incréments de chaque nouvel ID de nœud.

    2. nodeMatrixSizeM-par- matrice N , où M et N sont égaux respectivement au premier et au deuxième élément de nodeMatrixSize. Les ID de nœud s'incrémentent dans l'ordre des lignes principales.

      Par exemple, si vous spécifiez generateNodeID(fg,[3 2]) sans nœud existant dans le graphe de facteurs fg, la fonction génère une matrice d'ID de nœud dans ce format.

      [ID1ID2ID3ID4ID5ID6]

    3. numFactors et factorTypeM-par- matrice N , où M est égal à numFactors, et N est le nombre d'ID de nœud générés par facteur en fonction de la valeur de factorType:

    factorTypeIDs Format
    • "factorCameraAndPointXYZ"

    • "factorPoseSE2AndPointXY"

    • "factorPoseSE3AndPointXYZ"

    N-matrice par 2 d'ID de nœud, où N est égal à numFactors. La première colonne contient le premier ID de nœud pour chaque ligne et la deuxième colonne contient des ID de nœud uniques qui s'incrémentent dans la deuxième colonne.

    [ID1ID2ID1ID3ID1IDN]

    • "factorTwoPoseSE2"

    • "factorTwoPoseSE3"

    Matrice N-par-2, où N est égal à numFactors. Chaque ligne représente une paire de nœuds consécutifs. Pour chaque ligne après la première ligne, le premier élément est le deuxième ID de nœud de la ligne précédente. Cela garantit que chaque nœud se connecte aux nœuds immédiatement avant et après lui, dans l'ordre.

    [ID1ID2ID2ID3IDNIDN+1]

    • "factorIMUBiasPrior"

    • "factorPoseSE3Prior"

    • "factorVelocity3Prior"

    N- vecteur de colonne d'élément, où N est égal à numFactors.

    [ID1ID2IDN]

    Le premier ID de nœud dans IDs est 0 s'il n'y a aucun nœud dans graph, sinon le premier ID de nœud dans IDs est égal à graph.NumNodes + 1.

    Capacités étendues

    développer tout

    Génération de code C/C++
    Générez du code C et C++ avec MATLAB® Coder™.

    Historique des versions

    Introduit dans R2023a

    Voir aussi

    |