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(___,
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, Name=Value
)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. Luego, 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",Collisions="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",Collisions="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 un FANUC LR Mate 200ib de Robotics System Toolbox™ loadrobot
. Devuelto como un objeto rigidBodyTree
.
robot = loadrobot("fanucLRMate200ib");
showdetails(robot)
-------------------- Robot: (9 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 base base_link-base fixed base_link(0) 2 link_1 joint_1 revolute base_link(0) link_2(3) 3 link_2 joint_2 revolute link_1(2) link_3(4) 4 link_3 joint_3 revolute link_2(3) link_4(5) 5 link_4 joint_4 revolute link_3(4) link_5(6) 6 link_5 joint_5 revolute link_4(5) link_6(7) 7 link_6 joint_6 revolute link_5(6) flange(8) tool0(9) 8 flange joint_6-flange fixed link_6(7) 9 tool0 link_6-tool0 fixed link_6(7) --------------------
Cree una estructura para la configuración inicial del robot. La estructura incluye nombres y posiciones de articulación para todos los cuerpos del modelo de robot.
config = homeConfiguration(robot)
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(robot);
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(robot,config);
Cree configuraciones aleatorias y muéstrelas.
show(robot,randomConfiguration(robot));
Construir un manipulador robótico 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 mayor facilidad, 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 Computer. 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 del manipulador robótico
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 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 gráfica de robot
true
o 1
(predeterminado) | false
o 0
Opción para conservar la gráfica de robot, especificada como 1
(true
) o 0
(false
) lógicos. Cuando especifica PreservePlot
como true
, también debe usar hold
on
de forma que show
no sobrescriba parches de árbol de cuerpo rígido anteriores en los ejes mostrados al llamar a show
. Cuando especifica PreservePlot
como false
, show
sobrescribe gráficas anteriores del árbol de cuerpo rígido en los mismos ejes, independientemente del valor hold
actual.
Nota
Si PreservePlot
es true
, el argumento FastUpdate
debe ser false
.
Tipos de datos: logical
Frames
— Mostrar marcos del cuerpo
"on"
(predeterminado) | "off"
Mostrar marcos de cuerpo, especificado como "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"
Mostrar geometrías visuales, especificado como "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
Actualizaciones rápidas de graficas existentes, especificadas como 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
Si FastUpdate
es true
, el argumento 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 la estructura 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 una estructura 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 rotativas 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 un archivo.stl
o.dae
especificado. 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
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)