Parametrización Denavit-Hartenberg para robots: teoría, vídeo y nueva aplicación libre

¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

El estudio de los parámetros Denavit-Hartenberg (DH) forma parte de todo curso básico sobre robótica, ya que son un estándar a la hora de describir la geometría de un brazo o manipulador robótico.  Se usan para resolver de forma trivial el problema de la cinemática directa, y como punto inicial para plantear el más complejo de cinemática inversa.Más abajo describo el algoritmo exacto que permite determinar los parámetros para cualquier brazo, pero prefiero comenzar de forma más visual así que os dejo con el siguiente vídeo donde explico el significado de los cuatro parámetros asociados a cada uno de los eslabones de un brazo:

Como es normal que cueste algo de trabajo visualizar en 3D todos los ejes, direcciones, y distancias implicadas en el proceso, he liberado el código fuente de la aplicación gráfica que se muestra en el vídeo. Se puede emplear como guía/calculadora para comprobar si se han realizado bien problemas de este tipo, así como herramienta docente en clase.

El programa se puede obtener, gratuitamente, en las siguientes formas:

  • Instalador para Windows: Descarga (elegir los paquetes “Binaries (precompiled) for Windows“, para cualquier versión de Visual Studio). Recomiendo la versión 64 bits (x64), a menos que tu Windows sea 32 bits. En caso de duda, descarga la versión de 32 bits (x32) que siempre funcionará.
  • Paquetes Ubuntu: Si estás leyendo esto en 2014 o después, simplemente ejecuta: “sudo apt-get install mrpt-apps” y luego “robotic-arm-kinematics” para abrir el programa. Hasta entonces, mientras la última versión del paquete mrpt-apps llega a los repositorios oficiales, puedes usar este repositorio no oficial.
  • Código fuente: mrpt

Los pasos del algoritmo genérico para la obtención de los parámetros DH se detallan a continuación (ver [1]):

  1. Numerar los eslabones: se llamará “0” a la “tierra”, o base fija donde se ancla el robot. “1” el primer eslabón móvil, etc.
  2. Numerar las articulaciones: La “1” será el primer grado de libertad, y “n” el último.
  3. Localizar el eje de cada articulación: Para pares de revolución, será el eje de giro. Para prismáticos será el eje a lo largo del cuál se mueve el eslabón.
  4. Ejes Z: Empezamos a colocar los sistemas XYZ. Situamos los \(Z_{i-1}\) en los ejes de las articulaciones i, con i=1,…,n. Es decir, \(Z_0\) va sobre el eje de la 1ª articulación, \(Z_1\) va sobre el eje del 2º grado de libertad, etc.
  5. Sistema de coordenadas 0: Se sitúa el punto origen en cualquier punto a lo largo de \(Z_0\). La orientación de \(X_0\) e \(Y_0\) puede ser arbitraria, siempre que se respete evidentemente que XYZ sea un sistema dextrógiro.
  6. Resto de sistemas: Para el resto de sistemas i=1,…,N-1, colocar el punto origen en la intersección de \(Z_i\) con la normal común a \(Z_i\) y \(Z_{i+1}\). En caso de cortarse los dos ejes Z, colocarlo en ese punto de corte. En caso de ser paralelos, colocarlo en algún punto de la articulación i+1.
  7. Ejes X: Cada \(X_i\) va en la dirección de la normal común a \(Z_{i-1}\) y \(Z_i\), en la dirección de \(Z_{i-1}\) hacia \(Z_i\).
  8. Ejes Y: Una vez situados los ejes Z y X, los Y tienen su direcciones determianadas por la restricción de formar un XYZ dextrógiro.
  9. Sistema del extremo del robot: El n-ésimo sistema XYZ se coloca en el extremo del robot (herramienta), con su eje Z paralelo a \(Z_{n-1}\) y X e Y en cualquier dirección válida.
  10. Ángulos teta: Cada \(\theta_i\) es el ángulo desde \(X_{i-1}\) hasta \(X_i\) girando alrededor de \(Z_i\).
  11. Distancias d: Cada  \(d_i\) es la distancia desde el sistema XYZ i-1 hasta la intersección de las normales común de  \(Z_{i-1}\) hacia \(Z_i\), a lo largo de  \(Z_{i-1}\).
  12. Distancias a: Cada  \(a_i\) es la longitud de dicha normal común.
  13. Ángulos alfa: Ángulo que hay que rotar \(Z_{i-1}\) para llegar a \(Z_i\), rotando alrededor de \(X_i\).
  14. Matrices individuales: Cada eslabón define una matriz de transformación:\(^{i-1}\mathbf{A}_i = \left( \begin{array}{ccc|c} \cos \theta_i & -\cos\alpha_i \sin\theta_i & \sin \alpha_i \sin \theta_i & a_i \cos \theta_i \\ \sin \theta_i & \cos \alpha_i \cos \theta_i & -\sin\alpha_i \cos \theta_i & a_i \sin \theta_i \\ 0 & \sin \alpha_i & \cos \alpha_i & d_i \\ \hline 0 & 0 & 0 & 1 \end{array} \right) \)
  15. Transformación total: La matriz de transformación total que relaciona la base del robot con su herramienta es la encadenación (multiplicación) de todas esas matrices:
    \( \mathbf{T} = ^{0}\mathbf{A}_1^{1}\mathbf{A}_2 \cdots^{n-1}\mathbf{A}_n\)

Dicha matriz T permite resolver completamente el problema de cinemática directo en robots manipuladores, ya que dando valores concretos a cada uno de los grados de libertad del robot, obtenemos la posición y orientación 3D de la herramienta en el extremo del brazo.

Referencias
[1] A. Barrientos, L.F. Peñín, C. Balaguer, R. Aracil, “Fundamentos de robótica”, McGraw Hill, 1997.


¡Compártelo!
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
Etiquetado con: ,