Main Content

setFixedTransform

Establezca las propiedades de transformada fija de una articulación

Descripción

setFixedTransform(jointObj,tform) establece la propiedad JointToParentTransform del objeto rigidBodyJoint directamente con la transformación homogénea especificada, tform.

ejemplo

setFixedTransform(jointObj,dhparams,"dh") establece la propiedad ChildToJointTransform utilizando parámetros Denavit-Hartenberg (DH). La propiedad JointToParentTransform se establece en una matriz de identidad. Los parámetros DH se indican en el orden [a alpha d theta].

Para las articulaciones giratorias, la entrada theta se ignora cuando se especifica la transformación fija entre articulaciones porque ese ángulo depende de la configuración de articulación. Para las articulaciones prismáticas, se ignora la entrada d. Para obtener más información, consulte Modelo de robot de árbol de cuerpo rígido.

setFixedTransform(jointObj,mdhparams,"mdh") establece la propiedad JointToParentTransform utilizando parámetros DH modificados. La propiedad ChildToJointTransform se establece en una matriz de identidad. Los parámetros DH modificados se indican en el orden [a alpha d theta].

Ejemplos

contraer todo

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:

  1. Cree un objeto rigidBody y asígnele un nombre único.

  2. Cree un objeto rigidBodyJoint y asígnele un nombre único.

  3. 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.

  4. 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

{"String":"","Tex":[],"LaTex":[]}

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.

Argumentos de entrada

contraer todo

Objeto rigidBodyJoint, especificado como un identificador.

Transformada homogénea, especificada como una matriz de 4 por 4. La transformada se establece en la propiedad ChildToJointTransform. La propiedad JointToParentTransform se establece en una matriz de identidad.

Parámetros Denavit-Hartenberg (DH), especificados como un vector de cuatro elementos, [a alpha d theta]. Estos parámetros se utilizan para definir la propiedad ChildToJointTransform. La propiedad JointToParentTransform se establece en una matriz de identidad.

La entrada theta se ignora cuando se especifica la transformación fija entre articulaciones porque ese ángulo depende de la configuración de articulación. Para obtener más información, consulte Modelo de robot de árbol de cuerpo rígido.

Parámetros Denavit-Hartenberg (DH) modificados, especificados como un vector de cuatro elementos, [a alpha d theta]. Estos parámetros se utilizan para definir la propiedad JointToParentTransform. ChildToJointTransform se establece en una matriz de identidad.

La entrada theta se ignora cuando se especifica la transformación fija entre articulaciones porque ese ángulo depende de la configuración de articulación. Para obtener más información, consulte Modelo de robot de árbol de cuerpo rígido.

Referencias

[1] Craig, John J. Introduction to Robotics: Mechanics and Control. Reading, MA: Addison-Wesley, 1989.

[2] Siciliano, Bruno. Robotics: Modelling, Planning and Control. London: Springer, 2009.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido en R2016b