Como converter parâmetros e ângulos de link (em cinemática) em matrizes de transformação na lógica de programação?

10

Estou fazendo pesquisa em robótica na graduação e compreendo a matemática conceitual na maior parte; no entanto, quando se trata de implementar código para calcular a cinemática direta do meu robô, eu estou preso. Só não estou conseguindo explicar como o livro ou os sites que eu encontrei.

Gostaria de calcular os ângulos XYZ considerando os parâmetros de link (parâmetros Denavit-Hartenberg), como os seguintes :

EuαEu-1 1umaEu-1 1dEuθEu1 10 00 00 0θ1 12-900 00 0θ230 0uma2d3θ34-90uma3d4θ45900 00 0θ56-900 00 0θ6

Não entendo como transformar essa tabela de valores nas matrizes de transformação adequadas necessárias para obter 0 T N , a posição cartesiana e a rotação do último link. A partir daí, espero poder descobrir o (s) ângulo (s) XYZ da leitura do meu livro, mas qualquer ajuda seria apreciada.0 0TN

Graça
fonte

Respostas:

6

A seção DH Matrix da página DH na wikipedia possui os detalhes.

Basicamente, você deseja usar as informações da sua tabela para criar um conjunto de matrizes de transformação homogêneas. Fazemos isso porque transformações homogêneas podem ser multiplicadas para encontrar a relação entre os quadros separados por um ou mais outros. Por exemplo, 0 T 1 representa a transformação do quadro 1 para o quadro 0, enquanto 1 T 2 representa a transformação do quadro 2 para o quadro 1. Ao multiplicá-los, obtemos a transformação do quadro 2 para o quadro 0, ou seja, 0 T 2 = 0 T 1 1 T 2 .0 0T1 11 1T20 0T2=0 0T1 11 1T2

Uma maneira fácil de criar cada uma das transformações é fazer uma transformação homogênea ou matriz de rotação homogênea para cada coluna da tabela e multiplicá-las. Por exemplo, a transformação de 1 em 0 (por exemplo, i - 1 T i , i = 1 ) éEu-1 1TEu,Eu=1 1

0 0T1 1=Trumans(d1 1)Rot(θ1 1)Trumans(uma2)Rot(α2)

Onde

Trumans(d1 1)=[1 10 00 00 00 01 10 00 00 00 01 1d1 1=0 00 00 00 01 1],

Rot(θ1 1)=[porque(θ1 1)-pecado(θ1 1)0 00 0pecado(θ1 1)porque(θ1 1)0 00 00 00 01 10 00 00 00 01 1],

Trumans(uma2)=[1 10 00 0uma2=0 00 01 10 00 00 00 01 10 00 00 00 01 1],

Rot(α2)=[1 10 00 00 00 0porque(α2=0 0)-pecado(α2=0 0)0 00 0pecado(α2=0 0)porque(α2=0 0)0 00 00 00 01 1].

Nesse caso

0 0T1 1=Rot(θ1 1).

Depois de ter todas as suas transformações, você as multiplica, por exemplo

0 0TN=0 0T1 11 1T2...N-1 1TN.

Finalmente, você pode ler o vetor de deslocamento da transformação homogênea 0 0TN (ie d=[0 0TN,14,0 0TN,24,0 0TN,34]T) Da mesma forma, você pode ler a matriz de rotação de0 0TN para encontrar os ângulos XYZ.

DaemonMaker
fonte
Alpha_2 não seria -90 graus?
Grace