showCollisionArray
Descripción
[___] = showCollisionArray(___,
especifica opciones adicionales utilizando uno o más argumentos de nombre-valor además de todos los argumentos de la sintaxis anterior. Por ejemplo, Name=Value
)Parent=ax1
especifica ax1
como los ejes en los que dibujar los objetos de colisión.
Ejemplos
Cargue un archivo STL que contenga una triangulación de contenedores rectangulares y luego visualice la triangulación de contenedores.
meshTri = stlread("bin.stl"); trisurf(meshTri) axis equal
Cree una malla de colisión utilizando los puntos de la triangulación del contenedor y luego visualice la malla. Tenga en cuenta que, cuando se aproxima la triangulación del bin como una malla de colisión, el objeto collisionMesh
utiliza la envoltura convexa de la triangulación del bin para aproximarse al bin. Como resultado, la malla de colisión es convexa, a diferencia de la triangulación bin no convexa. El objeto collisionMesh
hace esto porque la verificación de colisiones es más eficiente con mallas convexas. Sin embargo, esta aproximación convexa no es ideal para contenedores porque los robots pueden manipular contenedores u objetos dentro de los contenedores.
meshColl = collisionMesh(meshTri.Points); [~,p] = show(meshColl); view(145,30) % Change view so it is easier to view the inside of bin axis equal hold on
Crea una lata de refresco usando un cilindro de colisión y establece la pose de modo que quede en el centro del contenedor. Luego, muéstralo en la malla de colisión convexa.
sodacan = collisionCylinder(0.1,0.4,Pose=trvec2tform([0 0 .3])); show(sodacan);
Configure la caja para que sea transparente para que pueda ver la superposición entre el contenedor y la lata de refresco.
p.FaceAlpha = 0.25;
hold off
Verifique la colisión entre la lata de refresco y la aproximación convexa del contenedor, y observe que están en colisión.
isCollidingConvex = checkCollision(sodacan,meshColl)
isCollidingConvex = 1
Para obtener una mejor aproximación del contenedor para la verificación de colisiones, descomponga la malla no convexa original en múltiples mallas convexas utilizando la descomposición convexa aproximada jerárquica voxelizada (V-HACD).
Utilice la función collisionVHACD
para descomponer la triangulación no convexa original en mallas de colisión convexas. Luego, muestra el contenedor descompuesto con la lata de refresco.
decomposedBin = collisionVHACD(meshTri);
showCollisionArray([decomposedBin {sodacan}]);
view(145,30)
axis equal
Comprobar colisión con todas las mallas que se aproximan al contenedor. Tenga en cuenta que la lata de refresco no choca con la aproximación no convexa descompuesta del contenedor. Si necesita una descomposición más precisa del bin, puede especificar opciones de solucionador personalizadas utilizando el objeto vhacdOptions
.
isColliding = false(1,length(decomposedBin)); for i = 1:length(decomposedBin) isColliding(i) = checkCollision(sodacan,decomposedBin{i}); end isCollidingAll = all(isColliding)
isCollidingAll = logical
0
Argumentos de entrada
Objetos de colisión, especificados como un arreglo de celdas de N elementos de objetos de geometría de colisión. N es el número de objetos de colisión en el arreglo de celdas. Un objeto de colisión debe ser uno de estos objetos:
Argumentos de par nombre-valor
Especifique pares de argumentos opcionales como Name1=Value1,...,NameN=ValueN
, donde Name
es el nombre del argumento y Value
es el valor correspondiente. Los argumentos nombre-valor deben aparecer después de los otros argumentos, pero el orden de los pares no importa.
Ejemplo: showCollisionArray(collArr,Parent=ax1)
especifica ax1
como los ejes en los que dibujar los objetos de colisión.
Ejes principales, especificados como un objeto Axes
en el que dibujar los objetos de colisión en collArray
. De forma predeterminada, la función traza los objetos de colisión en los ejes activos. Para obtener más información, consulte Axes Properties.
Orden de color, especificado como una matriz de tres columnas de tripletes RGB. Esta propiedad define la paleta de colores que MATLAB® utiliza para crear objetos de gráfico como Line
, Scatter
y Bar
. Cada fila de la matriz es un triplete RGB. Un triplete RGB es un vector de tres elementos cuyos elementos especifican las intensidades de los componentes rojo, verde y azul de un color. Las intensidades deben estar en el rango [0, 1].
Esta tabla enumera los colores predeterminados.
Triplete RGB | Código de color hexadecimal | Apariencia |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
MATLAB asigna colores a los objetos según su orden de creación. Por ejemplo, al trazar líneas, la primera línea usa el primer color, la segunda línea usa el segundo color, y así sucesivamente. Si hay más líneas que colores, el ciclo se repite.
Cambiar el orden de los colores antes o después del trazado
Puede cambiar el orden de los colores de cualquiera de estas formas:
Llame a la función
colororder
para cambiar el orden de colores de todos los ejes de una figura. Los colores de los gráficos existentes en la figura se actualizan inmediatamente. Si coloca ejes adicionales en la figura, esos ejes también usarán el nuevo orden de colores. Si continúa llamando comandos de trazado, esos comandos también usarán los nuevos colores.Establezca la propiedad
ColorOrder
de los ejes, llame a la funciónhold
para establecer el estado de retención de los ejes en"on"
y luego llame a las funciones de trazado deseadas. A diferencia de llamar a la funcióncolororder
, este proceso establece el orden de color solo para los ejes especificados, no para toda la figura. Debe establecer el estadohold
en"on"
para garantizar que los comandos de trazado posteriores no restablezcan los ejes para utilizar el orden de color predeterminado.
Argumentos de salida
Identificador gráfico de ejes, devuelto como un objeto Axes
. Este objeto contiene las propiedades de la figura en la que trazas los objetos de colisión. Para obtener más información, consulte Axes Properties.
Parches de objetos de colisión, devueltos como una matriz N-element Patch
correspondiente a los objetos de colisión. N es el número de objetos de colisión en la matriz Patch
. Para obtener más información, consulte Patch Properties.
Historial de versiones
Introducido en R2023b
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)