¿Cómo convierto los parámetros y ángulos de enlace (en cinemática) en matrices de transformación en lógica de programación?

10

Estoy haciendo investigación en robótica como estudiante universitario, y entiendo la matemática conceptual en su mayor parte; sin embargo, cuando se trata de implementar código para calcular la cinemática directa de mi robot, estoy atascado. Simplemente no entiendo cómo el libro o los sitios web que he encontrado lo explican.

Me gustaría calcular los ángulos XYZ dados los parámetros del enlace (parámetros de Denavit-Hartenberg), como los siguientes :

iαi1ai1diθi1000θ129000θ230a2d3θ3490a3d4θ459000θ569000θ6

No entiendo cómo convertir esta tabla de valores en las matrices de transformación adecuadas necesarias para obtener , la posición cartesiana y la rotación del último enlace. A partir de ahí, espero poder averiguar el ángulo (s) XYZ al leer mi libro, pero agradecería cualquier ayuda.0TN

Gracia
fuente

Respuestas:

6

La sección Matriz DH de la página DH en wikipedia tiene los detalles.

Básicamente, desea utilizar la información en su tabla para crear un conjunto de matrices de transformación homogéneas. Lo hacemos porque las transformaciones homogéneas se pueden multiplicar para encontrar la relación entre cuadros separados por uno o más. Por ejemplo, representa la transformación del cuadro 1 al cuadro 0, mientras que representa la transformación del cuadro 2 al cuadro 1. Al multiplicarlos obtenemos la transformación del cuadro 2 al cuadro 0, es decir, .0T11T20T2=0T11T2

Una manera fácil de crear cada una de las transformaciones es realizar una transformación homogénea o una matriz de rotación homogénea para cada columna de la tabla y multiplicarlas. Por ejemplo, la transformación de 1 a 0 (por ejemplo, ) esi1Ti,i=1

0T1=Trans(d1)Rot(θ1)Trans(a2)Rot(α2)

dónde

Trans(d1)=[10000100001d1=00001],

Rot(θ1)=[cos(θ1)sin(θ1)00sin(θ1)cos(θ1)0000100001],

Trans(a2)=[100a2=0010000100001],

Rot(α2)=[10000cos(α2=0)sin(α2=0)00sin(α2=0)cos(α2=0)00001] .

En este caso

0T1=Rot(θ1) .

Una vez que tenga todas sus transformaciones, las multiplicará juntas, p. Ej.

0TN=0T11T2...N1TN .

Finalmente, puede leer el vector de desplazamiento de la transformación homogénea (es decir, ). Del mismo modo, puede leer la matriz de rotación de para encontrar los ángulos XYZ.0TNd=[0TN,14,0TN,24,0TN,34]T0TN

DaemonMaker
fuente
¿No sería alpha_2 -90 grados?
Grace