show
Mostrar modelo de robot en la figura
Descripción
show(
usa las posiciones de las articulaciones especificadas en robot
,configuration
)configuration
para mostrar los marcos del cuerpo del robot.
show(___,Name,Value)
especifica las opciones mediante uno o más argumentos de par nombre-valor, además de cualquier combinación de argumentos de entrada de las sintaxis anteriores. Por ejemplo, 'Frames','off'
oculta los marcos del cuerpo rígido en la figura.
devuelve el identificador de los ejes en el que se representa el robot.ax
= show(___)
Ejemplos
Mostrar el modelo de robot con geometrías visuales
Puede importar robots que tienen archivos .stl
relacionados con el archivo de formato de descripción de robot unificado (URDF) para describir las geometrías visuales del robot. Cada cuerpo rígido tiene especificada una geometría visual individual. La función importrobot
analiza el archivo URDF para obtener el modelo de robot y las geometrías visuales. La función asume que la geometría visual y la geometría de colisión del robot son iguales y asigna las geometrías visuales como geometrías de colisión de los cuerpos correspondientes.
Utilice la función show
para mostrar la geometría visual y de colisión del modelo de robot en una figura. A continuación, puede interactuar con el modelo haciendo clic en componentes para inspeccionarlos y haciendo clic con el botón secundario para alternar la visibilidad.
Importe un modelo de robot como un archivo URDF. Las ubicaciones de los archivos .stl
se deben especificar correctamente en este URDF. Para añadir otros archivos .stl
a cuerpos rígidos individuales, consulte addVisual
.
robot = importrobot('iiwa14.urdf');
Visualice el robot con el modelo visual correspondiente. Haga clic en los cuerpos o los marcos para inspeccionarlos. Haga clic con el botón secundario en los cuerpos para alternar la visibilidad de cada geometría visual.
show(robot,'visuals','on','collision','off');
Visualice el robot con las geometrías de colisión correspondientes. Haga clic en los cuerpos o los marcos para inspeccionarlos. Haga clic con el botón secundario en los cuerpos para alternar la visibilidad de cada geometría de colisión.
show(robot,'visuals','off','collision','on');
Visualizar configuraciones de robot
Muestre diferentes configuraciones de robot creadas mediante un modelo RigidBodyTree
. Utilice las funciones homeConfiguration
o randomConfiguration
para generar la estructura que define todas las posiciones de articulación.
Cargue robots de ejemplo como objetos RigidBodyTree
.
load exampleRobots.mat
Cree una estructura para la configuración inicial de un robot Puma. La estructura incluye nombres y posiciones de articulación para todos los cuerpos del modelo de robot.
config = homeConfiguration(puma1)
config=1×6 struct array with fields:
JointName
JointPosition
Muestre la configuración inicial utilizando show
. No es necesario especificar una entrada de configuración.
show(puma1);
Modifique la configuración y establezca la segunda posición de articulación en pi/2
. Muestre el cambio resultante en la configuración del robot.
config(2).JointPosition = pi/2; show(puma1,config);
Cree configuraciones aleatorias y muéstrelas.
show(puma1,randomConfiguration(puma1));
Construir un robot manipulador utilizando parámetros Denavit-Hartenberg
Utilice los parámetros Denavit-Hartenberg (DH) del robot Puma560® para construir un robot. Los cuerpos rígidos se añaden de uno en uno con la transformación de elemento primario en secundario especificada por el objeto de articulación.
Los parámetros DH definen la geometría del robot en términos de cómo se acopla cada cuerpo rígido a su elemento principal. Para facilitarlo, configure los parámetros del robot Puma560 en una matriz[1]. El robot Puma es un manipulador de cadena en serie. Los parámetros DH son relativos a la fila anterior de la matriz, correspondiente al acoplamiento de la articulación anterior.
dhparams = [0 pi/2 0 0; 0.4318 0 0 0 0.0203 -pi/2 0.15005 0; 0 pi/2 0.4318 0; 0 -pi/2 0 0; 0 0 0 0];
Cree un objeto de árbol de cuerpo rígido para construir el robot.
robot = rigidBodyTree;
Cree el primer cuerpo rígido y añádalo al robot. Para añadir un cuerpo rígido:
Cree un objeto
rigidBody
y asígnele un nombre único.Cree un objeto
rigidBodyJoint
y asígnele un nombre único.Utilice
setFixedTransform
para especificar la transformación de cuerpo a cuerpo con parámetros DH. El último elemento de los parámetros DH,theta
, se ignora porque el ángulo depende de la posición de articulación.Llame a
addBody
para acoplar la primera articulación del cuerpo al marco base del robot.
body1 = rigidBody('body1'); jnt1 = rigidBodyJoint('jnt1','revolute'); setFixedTransform(jnt1,dhparams(1,:),'dh'); body1.Joint = jnt1; addBody(robot,body1,'base')
Cree y añada otros cuerpos rígidos al robot. Especifique el nombre del cuerpo anterior llamando a addBody
para acoplarlo. Cada transformada fijada es relativa al marco de coordenadas de la articulación anterior.
body2 = rigidBody('body2'); jnt2 = rigidBodyJoint('jnt2','revolute'); body3 = rigidBody('body3'); jnt3 = rigidBodyJoint('jnt3','revolute'); body4 = rigidBody('body4'); jnt4 = rigidBodyJoint('jnt4','revolute'); body5 = rigidBody('body5'); jnt5 = rigidBodyJoint('jnt5','revolute'); body6 = rigidBody('body6'); jnt6 = rigidBodyJoint('jnt6','revolute'); setFixedTransform(jnt2,dhparams(2,:),'dh'); setFixedTransform(jnt3,dhparams(3,:),'dh'); setFixedTransform(jnt4,dhparams(4,:),'dh'); setFixedTransform(jnt5,dhparams(5,:),'dh'); setFixedTransform(jnt6,dhparams(6,:),'dh'); body2.Joint = jnt2; body3.Joint = jnt3; body4.Joint = jnt4; body5.Joint = jnt5; body6.Joint = jnt6; addBody(robot,body2,'body1') addBody(robot,body3,'body2') addBody(robot,body4,'body3') addBody(robot,body5,'body4') addBody(robot,body6,'body5')
Verifique que el robot se ha construido correctamente con la función showdetails
o show
. showdetails
enumera todos los cuerpos en la ventana de comandos de MATLAB®. show
muestra el robot con una determinada configuración (de forma predeterminada, la inicial). Las llamadas a axis
modifican los límites de eje y ocultan las etiquetas de eje.
showdetails(robot)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 body1 jnt1 revolute base(0) body2(2) 2 body2 jnt2 revolute body1(1) body3(3) 3 body3 jnt3 revolute body2(2) body4(4) 4 body4 jnt4 revolute body3(3) body5(5) 5 body5 jnt5 revolute body4(4) body6(6) 6 body6 jnt6 revolute body5(5) --------------------
show(robot);
axis([-0.5,0.5,-0.5,0.5,-0.5,0.5])
axis off
Referencias
[1] Corke, P. I. y B. Armstrong-Helouvry. “A Search for Consensus among Model Parameters Reported for the PUMA 560 Robot”. Proceedings of the 1994 IEEE International Conference on Robotics and Automation, IEEE Comput. Soc. Press, 1994, págs. 1608–13. DOI.org (Crossref), doi:10.1109/ROBOT.1994.351360.
Añadir mallas de colisión y comprobar las colisiones para el brazo robótico del manipulador
Cargue un modelo de robot y modifique las mallas de colisión. Borre las mallas de colisión existentes, añada primitivas de objeto de colisión simples y compruebe si determinadas configuraciones se encuentran en colisión.
Cargar un modelo de robot
Cargue un modelo de robot preconfigurado en el área de trabajo mediante la función loadrobot
. Este modelo ya tiene mallas de colisión especificadas para cada cuerpo. Itere a través de todos los elementos del cuerpo rígido y borre las mallas de colisión existentes. Confirme que las mallas existentes hayan desaparecido.
robot = loadrobot('kukaIiwa7','DataFormat','column'); for i = 1:robot.NumBodies clearCollision(robot.Bodies{i}) end show(robot,'Collisions','on','Visuals','off');
Añadir colisiones en forma de cilindros
Añada iterativamente una colisión en forma de cilindro a cada cuerpo. Omita algunos cuerpos para este modelo concreto, pues se solapan y siempre colisionan con el efector final (cuerpo 10).
collisionObj = collisionCylinder(0.05,0.25); for i = 1:robot.NumBodies if i > 6 && i < 10 % Skip these bodies. else addCollision(robot.Bodies{i},collisionObj) end end show(robot,'Collisions','on','Visuals','off');
Comprobar si existen colisiones
Genere una serie de configuraciones aleatorias. Compruebe si el robot está en colisión en cada una de las configuraciones. Visualice las configuraciones que presenten una colisión.
figure rng(0) % Set random seed for repeatability. for i = 1:20 config = randomConfiguration(robot); isColliding = checkCollision(robot,config,'SkippedSelfCollisions','parent'); if isColliding show(robot,config,'Collisions','on','Visuals','off'); title('Collision Detected') else % Skip non-collisions. end end
Argumentos de entrada
robot
— Modelo de robot
objeto rigidBodyTree
Modelo de robot, especificado como un objeto rigidBodyTree
.
configuration
— Configuración del robot
vector | estructura
Configuración del robot, especificada como un vector de posiciones de articulación o una estructura con nombres y posiciones de articulación para todos los cuerpos del modelo de robot. Puede generar una configuración utilizando homeConfiguration(robot)
o randomConfiguration(robot)
, o especificando sus propias posiciones de articulación en una estructura. Para usar la forma de vector de configuration
, establezca la propiedad DataFormat
para el robot
en "row"
o "column"
.
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.
En versiones anteriores a R2021a, use comas para separar cada nombre y valor, y encierre Name
entre comillas.
Ejemplo: 'Frames','off'
oculta los marcos del cuerpo rígido en la figura.
Parent
— Elemento principal de los ejes
objeto Axes
Elemento principal de los ejes, especificado como un par separado por comas compuesto por 'Parent'
y un objeto Axes
en el que se representa el robot. De forma predeterminada, el robot se representa en los ejes activos.
PreservePlot
— Opción para conservar la representación del robot
true
o 1
(predeterminado) | false
o 0
Opción para conservar la representación del robot, especificada como un par separado por comas compuesto por 'PreservePlot'
y un 1
(true)
o 0
(false)
lógicos. Cuando especifica este argumento como true
, la función no sobrescribe las representaciones anteriores mostradas al llamar a show
. Esta configuración funciona de manera similar a hold on
para una figura de MATLAB® estándar, pero se limita a los marcos del cuerpo del robot. Cuando especifica este argumento como false
, la función sobrescribe las representaciones anteriores del robot.
Nota
Cuando el valor de 'PreservePlot'
es true
, el valor de 'FastUpdate'
debe ser false
.
Tipos de datos: logical
Frames
— Mostrar marcos del cuerpo
'on'
(predeterminado) | 'off'
Visualización de marcos del cuerpo, especificada como un par separado por comas compuesto por 'Frames'
y 'on'
u 'off'
. Estos son los marcos de coordenadas de cuerpos individuales en el árbol de cuerpo rígido.
Tipos de datos: char
| string
Visuals
— Mostrar geometrías visuales
'on'
(predeterminado) | 'off'
Visualización de geometrías visuales, especificada como un par separado por comas compuesto por 'Visuals'
y 'on'
u 'off'
. Las geometrías visuales individuales también se pueden desactivar haciendo clic con el botón secundario en la figura.
Especifique las geometrías visuales individuales usando addVisual
. Para importar un modelo de robot URDF con archivos .stl
para mallas, consulte la función importrobot
.
Tipos de datos: char
| string
Collisions
— Mostrar geometrías de colisión
'off'
(predeterminado) | 'on'
Visualización de geometrías de colisión, especificada como un par separado por comas compuesto por 'Collisions'
y 'on'
u 'off'
.
Añada geometrías de colisión a los cuerpos rígidos individuales del modelo de robot usando la función addCollision
. Para importar un modelo de robot URDF con archivos .stl
para mallas, consulte la función importrobot
.
Tipos de datos: char
| string
Position
— Posición del robot
[0 0 0 0]
(predeterminado) | vector de cuatro elementos
Posición del robot, especificada como un par separado por comas compuesto por 'Position'
y un vector de cuatro elementos con el formato [x y z yaw]. Los elementos x, y y z especifican la posición en metros, y yaw especifica el ángulo de guiñada en radianes.
Tipos de datos: single
| double
FastUpdate
— Actualización rápida de graficas existentes
false
o 0
(predeterminado) | true
o 1
Actualización rápida de graficas existentes, especificada como un par separado por comas compuesto por 'FastUpdate'
y un 0
(false)
o 1
(true)
lógicos. Debe usar la función de objeto show
para mostrar inicialmente el modelo de robot antes de poder especificarlo con este argumento.
Nota
Cuando el valor de 'FastUpdate'
es true
, el valor de 'PreservePlot'
debe ser false
.
Tipos de datos: logical
Argumentos de salida
ax
— Identificador gráfico de ejes
objeto Axes
Identificador gráfico de ejes, devuelto como un objeto Axes
. Este objeto contiene las propiedades de la figura en la que se representa el robot.
Sugerencias
Un modelo de robot tiene componentes visuales asociados. Cada objeto rigidBody
contiene un marco de coordenadas que se muestra como el marco del cuerpo. Cada cuerpo también puede tener mallas visuales asociadas. De forma predeterminada, ambos componentes se muestran automáticamente. Puede inspeccionar o modificar los componentes visuales de la visualización del árbol de cuerpo rígido. Haga clic en los marcos del cuerpo o las mallas visuales para resaltarlos en amarillo y ver el nombre del cuerpo asociado, el índice y el tipo de articulación. Haga clic con el botón secundario para alternar la visualización de los componentes individuales.
Marcos del cuerpo: los marcos del cuerpo individuales se muestran como un marco de coordenadas de 3 ejes. Los marcos fijos se representan en color rosa. Los tipos de articulaciones móviles se muestran como ejes RGB. Puede hacer clic en un marco del cuerpo para ver el eje de movimiento. Las articulaciones prismáticas muestran una flecha amarilla en la dirección del eje de movimiento y las articulaciones giratorias muestran una flecha circular alrededor del eje de rotación.
Mallas visuales: las geometrías visuales individuales se especifican usando el método
addVisual
o la funciónimportrobot
para importar un modelo de robot con archivos.stl
especificados. Al hacer clic con el botón secundario en cuerpos individuales de una figura, puede desactivar sus mallas o especificar el par nombre-valorVisuals
para ocultar todas las geometrías visuales.
Historial de versiones
Introducido en R2016b
Consulte también
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
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)