addMesh
Descripción
agrega una o más mallas al campo de distancia con signo truncado (TSDF), calcula la TSDF alrededor de las mallas agregadas y devuelve una indicación de qué mallas se agregaron correctamente.isAdded
= addMesh(mTSDF
,meshStruct
)
Ejemplos
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);
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")
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")
Argumentos de entrada
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.
Malla geométrica, devuelta como una estructura o un arreglo de estructuras de N elementos. N es el número total de objetos de colisión.
Cada estructura contiene estos campos:
ID
— ID de la estructura geométrica almacenada como un entero positivo. De forma predeterminada, el ID de cada estructura corresponde al índice de la estructura enmeshStruct
. Por ejemplo, simeshStruct
contiene cinco estructuras de malla, la primera estructura de malla en el índice 1 tiene unID
de1
, y la última estructura de malla en el índice 5 tiene unID
de5
.Vertices
— Vértices de la geometría, almacenados como una matriz M por 3. Cada fila representa un vértice en la forma [x y z] con respecto al marco de referencia definido porPose
. M es el número de vértices necesarios para representar la envoltura convexa de la malla.Faces
— Caras de la geometría, almacenadas como una matriz M por 3. Cada fila contiene tres índices correspondientes a los vértices enVertices
que definen las caras de un triángulo de la geometría. M es el número de vértices enVertices
.Pose
— Plantea la geometría como una matriz de transformación homogénea de 4 por 4 que especifica una transformación del marco del mundo al marco en el que se definen los vértices.
Tipos de datos: struct
Argumentos de salida
Indicación de si se agregaron mallas o no, devuelto como 1
lógico (true
) si la malla se agregó correctamente o 0
(false
) si la malla que está agregando es una malla con una ID que ya existe en mTSDF
. Si meshStruct
es un elemento N de estructuras de malla, entonces isAdded
es un vector de elementos N de escalares lógicos correspondiente a cada una de las estructuras de malla N en meshStruct
.
Capacidades ampliadas
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
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleccione un país/idioma
Seleccione un país/idioma para obtener contenido traducido, si está disponible, y ver eventos y ofertas de productos y servicios locales. Según su ubicación geográfica, recomendamos que seleccione: .
También puede seleccionar uno de estos países/idiomas:
Cómo obtener el mejor rendimiento
Seleccione China (en idioma chino o inglés) para obtener el mejor rendimiento. Los sitios web de otros países no están optimizados para ser accedidos desde su ubicación geográfica.
América
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)