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
Descomponer mallas no convexas para comprobar colisiones
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 aproxima la triangulación del contenedor como una malla de colisión, el objeto collisionMesh
utiliza el envolvente convexa de la triangulación del contenedor para aproximar el contenedor. 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 contenedor, puede especificar opciones de solver 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
collArray
— Objetos de colisión
N arreglo de celdas de elementos de objetos de geometría de colisión
Objetos de colisión, especificados como un arreglo de celdas de elementos N 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.
ColorOrder
— Orden de color
matriz de tres columnas de tripletes RGB
Orden de color, especificado como una matriz de tres columnas de tripletes RGB. Esta propiedad define la paleta de colores que MATLAB® usa para crear objetos de trazado como Line
, Scatter
y Bar
objetos. 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 al valor deseado. funciones de trazado. 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
ax
— Identificador gráfico de ejes
Axes
objeto
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.
patches
— Parches de objetos de colisión
N-elemento patch
arreglo
Parches de objetos de colisión, devueltos como N-elemento patch
arreglo correspondiente a los objetos de colisión. N es el número de objetos de colisión en el arreglo patch
.
Historial de versiones
Introducido en R2023b
Consulte también
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)