Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Construir un robot manipulador mediante parámetros de cinemática DH

Utilice los parámetros de Denavit-Hartenberg (DH) del robot manipulador Puma560® para construir de forma incremental un modelo de robot de árbol de cuerpo rígido. Especifique los parámetros DH relativos para cada articulación a medida que los acopla. Visualice los marcos del robot e interactúe con el modelo final.

Los parámetros DH definen la geometría de cómo cada cuerpo rígido se acopla a su elemento principal por medio de una articulación. Los parámetros siguen una convención de cuatro transformaciones:

  • A: longitud de la línea normal común entre los dos ejes z, que es perpendicular a ambos ejes

  • α: ángulo de rotación de la normal común

  • d: desplazamiento a lo largo del eje z en la dirección de la normal, de elemento principal a elemento secundario

  • θ: ángulo de rotación del eje x a lo largo del eje z anterior

Especifique los parámetros del robot Puma560 [1] como una matriz. Los valores proceden de:

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.

robot = rigidBodyTree;

Cree un arreglo de celdas para el objeto de cuerpo rígido y otro para los objetos de articulación. Itere por los parámetros DH llevando a cabo este proceso:

  1. Cree un objeto rigidBody con un nombre único.

  2. Cree y asigne nombre a un objeto rigidBodyJoint giratorio.

  3. Utilice setFixedTransform para especificar la transformación de cuerpo a cuerpo de la articulación con parámetros DH. La función ignora el elemento final de los parámetros DH, theta, porque el ángulo del cuerpo depende de la posición de la articulación.

  4. Utilice addBody para acoplar el cuerpo al árbol de cuerpo rígido.

bodies = cell(6,1);
joints = cell(6,1);
for i = 1:6
    bodies{i} = rigidBody(['body' num2str(i)]);
    joints{i} = rigidBodyJoint(['jnt' num2str(i)],"revolute");
    setFixedTransform(joints{i},dhparams(i,:),"dh");
    bodies{i}.Joint = joints{i};
    if i == 1 % Add first body to base
        addBody(robot,bodies{i},"base")
    else % Add current body to previous body by name
        addBody(robot,bodies{i},bodies{i-1}.Name)
    end
end

Verifique que el robot se haya construido correctamente con la función showdetails o show. La función showdetails enumera todos los cuerpos del robot en la ventana de comandos de MATLAB®. La función show muestra el robot con una determinada configuración (de forma predeterminada, la inicial).

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)   
--------------------
figure(Name="PUMA Robot Model")
show(robot);

Figure PUMA Robot Model contains an axes object. The axes object with xlabel X, ylabel Y contains 13 objects of type patch, line. These objects represent base, body1, body2, body3, body4, body5, body6.

Interactuar con el modelo de robot

Visualice el modelo de robot para confirmar sus dimensiones mediante el objeto interactiveRigidBodyTree.

figure(Name="Interactive GUI")
gui = interactiveRigidBodyTree(robot,MarkerScaleFactor=0.5);

Figure Interactive Visualization contains an axes object. The axes object with xlabel X, ylabel Y contains 23 objects of type patch, line, surface.

Haga clic y arrastre el marcador en la interfaz gráfica interactiva para reposicionar el efector final. La interfaz gráfica utiliza la cinemática inversa para resolver las posiciones de las articulaciones que logran la mejor coincidencia posible con la posición del efector final especificada. Haga clic con el botón secundario en un determinado marco del cuerpo para establecerlo como cuerpo marcador de destino o para cambiar el método de control con el que se establecen las posiciones específicas de las articulaciones.

Siguientes pasos

Ahora que ha construido el modelo en MATLAB®, estos son algunos de los posibles pasos siguientes.

  • Calcule Cinemática inversa para obtener configuraciones de articulaciones basadas en las posiciones deseadas del efector final. Especifique las restricciones del robot además de las de los parámetros del modelo, como apuntamiento, límites cartesianos y poses objetivo.

  • Generación y seguimiento de trayectorias basado en waypoints y en otros parámetros con perfiles de velocidad trapezoidal, B-splines o trayectorias polinómicas.

  • Realice Planificación de trayectorias de manipuladores usando los modelos de robot y el planificador de rutas de árboles aleatorios de exploración rápida (RRT).

  • Utilice Detección de colisiones con obstáculos del entorno para garantizar que el robot se mueve de forma segura y eficaz.

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, 1608–13. San Diego, CA, EE. UU.: IEEE Computer Soc. Press, 1994. https://doi.org/10.1109/ROBOT.1994.351360.