Contenido principal

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

updatePose

Actualizar la pose de la malla en TSDF

Desde R2024a

    Descripción

    isUpdated = updatePose(mTSDF,poseStruct) actualiza las poses de las mallas en el campo de distancia con signo truncado (TSDF) y devuelve una indicación de qué poses de malla se actualizaron correctamente.

    ejemplo

    Ejemplos

    contraer todo

    Crea dos cuadros de colisión y una esfera de colisión. Los cuadros de colisión representan un entorno estático y la esfera representa un obstáculo dinámico con una pose que podría cambiar en cualquier momento.

    box1 = collisionBox(0.5,1,0.1);
    box2 = collisionBox(0.5,0.1,0.2,Pose=trvec2tform([0 -0.45 0.15]));
    sph = collisionSphere(0.125,Pose=trvec2tform([-0.1 0.25 0.75]));
    showCollisionArray({box1,box2,sph});
    title("Static Environment and Dynamic Obstacle")
    v = [110 10];
    view(v);

    Figure contains an axes object. The axes object with title Static Environment and Dynamic Obstacle, xlabel X, ylabel Y contains 3 objects of type patch.

    Cree un administrador de TSDF de malla con una resolución de 25 celdas por metro.

    tsdfs = meshtsdf(Resolution=25);

    Para mejorar la eficiencia del cálculo del campo de distancia con signo, combine mallas que representen el entorno estático.

    staticMeshes = geom2struct({box1,box2});
    staticEnv = staticMeshes(1);
    staticEnv.Pose = eye(4);
    staticEnv.Vertices = [];
    staticEnv.Faces = [];
    for i = 1:numel(staticMeshes)
        H = staticMeshes(i).Pose;
        V = staticMeshes(i).Vertices*H(1:3,1:3)'+ H(1:3,end)';
        nVert = size(staticEnv.Vertices,1);
        staticEnv.Vertices = [staticEnv.Vertices; V];
        staticEnv.Faces = [staticEnv.Faces; staticMeshes(i).Faces+nVert];
    end
    staticEnv.ID = 1;

    Agregue la malla de entorno estático al administrador TSDF.

    addMesh(tsdfs,staticEnv);

    Convierte la geometría de colisión de esfera en una estructura para el administrador de malla TSDF. Asígnele un ID de 2 y agréguelo al administrador de malla TSDF.

    obstacleID = 2;
    dynamicObstacle = geom2struct(sph,obstacleID);
    addMesh(tsdfs,dynamicObstacle);
    show(tsdfs)
    view(v)
    axis equal
    title("Mesh TSDFs of Static Environment and Dynamic Obstacle")

    Figure contains an axes object. The axes object with title Mesh TSDFs of Static Environment and Dynamic Obstacle contains 2 objects of type scatter.

    Actualice la pose del obstáculo dinámico en el administrador de malla TSDF cambiando la propiedad Pose del controlador de objeto del obstáculo. Luego, utilice la función updatePose para actualizar la pose de la malla en el administrador TSDF.

    dynamicObstacle.Pose = trvec2tform([0.2 0.25 0.2]);
    updatePose(tsdfs,dynamicObstacle)
    ans = 
    1
    
    show(tsdfs)
    view(v)
    axis equal
    title("Updated Dynamic Obstacle Pose")

    Figure contains an axes object. The axes object with title Updated Dynamic Obstacle Pose contains 2 objects of type scatter.

    Argumentos de entrada

    contraer todo

    Campo de distancia con signo truncado para mallas 3D, especificado como un objeto meshtsdf.

    Ejemplo: meshtsdf(meshes,TruncationDistance=5) crea un TSDF para las mallas especificadas con una distancia de truncamiento de 5 metros.

    Información de pose para cada malla en el TSDF, devuelta como una estructura o un arreglo de estructuras de N elementos. Cada estructura representa la información de pose de cada malla en el TSDF y contiene estos campos:

    • ID — ID de la malla en el TSDF.

    • Pose — Plantea la malla como una matriz de transformación homogénea de 4 por 4.

    Argumentos de salida

    contraer todo

    Indicación de si la pose de la malla se actualizó o no, devuelto como 1 lógico (true) si la malla se actualizó correctamente o 0 (false) si el campo ID de poseStruct especifica el ID de una malla que no existe en mTSDF. Si poseStruct es un elemento N de estructuras, entonces isUpdated es un vector de elementos N de escalares lógicos correspondiente a cada una de las estructuras de pose N en poseStruct.

    Capacidades ampliadas

    expandir todo

    Generación de código C/C++
    Genere código C y C++ mediante MATLAB® Coder™.

    Historial de versiones

    Introducido en R2024a

    Consulte también

    |