A Convenção de Denavit-Hartenberg
Objetivos de Aprendizagem
- Nomear os quatro parâmetros de Denavit-Hartenberg , , , , dizer qual deles é a variável da junta numa junta rotativa e numa prismática, e ler cada um num desenho.
- Atribuir os frames dos elos passo a passo num braço de três juntas, inclusive nos casos de eixos que se cruzam e de eixos paralelos, e preencher a tabela.
- Escrever a transformação de elo da convenção clássica e a da convenção modificada, e dizer qual convenção uma fonte usa.
- Conferir numericamente a cinemática direta calculada pela tabela contra um produto de transformações escrito direto da geometria.
- Reconhecer o que dá errado quando uma tabela escrita numa convenção é aplicada na fórmula da outra.
Contexto e Motivação
forward-kinematics-of-serial-manipulators escreveu a pose do efetuador final como um produto de transformações de elo, e homogeneous-transformations-for-robot-poses deu sentido a cada fator: uma matriz que posiciona um frame dentro de outro. Nada nessa receita diz onde cada frame de elo deve ficar. Com frames colocados livremente, cada transformação de elo precisa de seis números, três de posição e três de orientação.
Denavit e Hartenberg (1955) propuseram regras de colocação dos frames que deixam só quatro números por elo. O Modern Robotics (Lynch e Park, Apêndice C) relata que eles também mostraram que quatro é o mínimo. O ganho é uma tabela compacta: uma linha por junta, uma coluna por parâmetro, uma entrada móvel por linha. Murray, Li e Sastry (1994) observaram que parâmetros DH estavam disponíveis para os robôs industriais comuns e eram usados pela maioria dos sistemas comerciais de simulação e programação, e bibliotecas como a Robotics Toolbox for Python ainda montam modelos de braço a partir deles.
O problema é que duas versões incompatíveis das regras estão em uso, e as duas se chamam "DH". Uma tabela não significa nada sem saber qual delas a escreveu.
Teoria Central
Vetores são colunas, e a matriz dá a pose do frame no frame , de modo que . Produtos são lidos da esquerda para a direita, como movimentos do frame corrente (móvel). Ângulos são positivos pela regra da mão direita em torno do eixo nomeado. Escreva e .
A ideia: só movimentos em x e em z
As duas convenções põem um eixo em cada eixo de junta. Numa junta rotativa, é o eixo de rotação. Numa prismática, aponta no sentido positivo do deslocamento. Entre dois eixos de junta consecutivos existe uma normal comum, a reta que encontra os dois em ângulo reto, e o eixo é colocado sobre ela. Com essas duas escolhas, ir de um frame ao seguinte exige só uma rotação e uma translação ao longo de e uma rotação e uma translação ao longo de . Movimento lateral em nunca é necessário, e é daí que vem a economia de seis números para quatro.
Os quatro números são:
| parâmetro | nome | como se mede |
|---|---|---|
| comprimento do elo | ao longo da normal comum, entre os dois eixos de junta | |
| torção do elo | ângulo entre os dois eixos de junta, em torno da normal comum | |
| deslocamento do elo | ao longo de um eixo de junta, entre duas normais comuns consecutivas | |
| ângulo da junta | ângulo entre duas normais comuns consecutivas, em torno de um eixo de junta |
Numa junta rotativa é a variável e , , são constantes. Numa prismática é a variável e é constante. As convenções diferem em qual eixo de junta recebe qual índice de frame, e portanto na ordem dos quatro movimentos.
A convenção clássica
Na convenção clássica (também chamada de padrão ou distal), o eixo da junta é , e o frame fica na ponta de saída do elo . As regras:
- Ponha sobre o eixo da junta .
- Ponha sobre a normal comum que vai de a , com origem no ponto onde essa normal encontra .
- Então é a distância de a ao longo de , o ângulo de para em torno de , a distância de ao pé de ao longo de , e o ângulo de para em torno de .
A transformação de elo é uma rotação e uma translação ao longo de , seguidas de uma translação e uma rotação ao longo do novo :
A convenção modificada
Na convenção modificada (também chamada de proximal), o eixo da junta é , e o frame fica na ponta de entrada do elo , sobre a própria junta. Os parâmetros mantêm o significado, mas a torção e o comprimento que levam até a junta recebem o índice :
Uma rotação em torno de comuta com uma translação ao longo de , e o mesmo vale para , então algumas fontes escrevem os fatores como . É a mesma matriz.
Quem usa qual
- Modern Robotics (Lynch e Park), Apêndice C: a forma modificada, com parâmetros , , , e exatamente a matriz acima. O livro não usa a palavra "modificada". O texto principal usa o produto de exponenciais em vez de DH.
- Murray, Li e Sastry (A Mathematical Introduction to Robotic Manipulation), Capítulo 3, Seção 2.3: a matriz clássica, com o ângulo da junta escrito .
- Documentação da Robotics Toolbox for Python: as classes
RevoluteDHeRevoluteMDH, e um indicador que é verdadeiro "for modified Denavit-Hartenberg notation (eg. Craig's textbook)" e falso "for standard Denavit-Hartenberg notation (eg. Siciliano, Spong, Paul)". - Wikipedia, "Denavit-Hartenberg parameters": cita o Introduction to Robotics de Craig (3ª edição) como livro que usa os parâmetros modificados.
O Modern Robotics também avisa que alguns autores põem o eixo da junta em em vez de , e conclui que "it is essential to include a concise description of the link frames together with the parameter values."
Casos especiais
- Eixos que se cruzam. Não há normal comum, então e é tomado perpendicular ao plano dos dois eixos. Qualquer um dos dois sentidos serve, e a escolha troca o sinal de .
- Eixos paralelos. Há infinitas normais comuns. Escolha a que zera mais parâmetros, em geral .
- Base e ferramenta. As regras deixam o primeiro e o último frame parcialmente livres. Escolha-os para zerar parâmetros. Um frame deslocado de lado, ao longo de , não é alcançável com movimentos em e (o Modern Robotics dá como exemplo uma translação pura em ), então o frame da ferramenta costuma entrar como uma transformação constante extra depois da tabela.
Exemplos Resolvidos
Exemplo 1: frames num braço articulado, passo a passo
O braço tem uma junta de base vertical, uma junta de ombro horizontal na altura m e uma junta de cotovelo horizontal paralela ao ombro. O braço superior mede m e o antebraço, até a ponta da ferramenta, m. Comprimentos supostos.
Passo 1, eixos. Eixo da junta 1: vertical, passando pela base. Eixo da junta 2: horizontal, perpendicular ao plano do braço. Eixo da junta 3: paralelo ao da junta 2, passando pelo cotovelo.
Passo 2, eixos clássicos. na junta 1, apontando para cima. na junta 2 e na junta 3, os dois no mesmo sentido, escolhido para que positivo levante o braço. Com apontando ao longo do braço em , isso dá em .
Passo 3, frame 1. e se cruzam no ombro, então e é o ombro. tem de ser perpendicular aos dois, logo é horizontal e fica no plano do braço. O ângulo de (para cima) até em torno de é , já que leva em . O ombro está m acima ao longo de , então .
Passo 4, frame 2. , então a normal comum é escolhida ao longo do braço superior: aponta do ombro para o cotovelo, é o cotovelo, , , .
Passo 5, frame da ferramenta. na ponta, ao longo do antebraço, : , , .
| (m) | (m) | |||
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 |
Em o produto põe a ponta em : braço horizontal, esticado ao longo de , como os frames foram desenhados. Em :
Exemplo 2: conferindo a tabela contra um produto direto
A conferência não pode reutilizar a tabela. Descreva o mesmo braço pelos movimentos físicos: girar em torno da vertical por , subir , inclinar para cima por (uma rotação em torno de ), andar ao longo do braço, inclinar por , andar :
Nos mesmos ângulos, a última coluna dele é , que também bate com a fórmula da geometria plana com . As partes de rotação diferem, e : o frame direto mantém o eixo sobre o eixo da junta, o frame DH põe ali. Essa diferença é uma escolha de frame da ferramenta, então tem de ser a mesma em toda configuração. Com rng = numpy.random.default_rng(5) e 1000 configurações sorteadas por rng.uniform(-pi, pi, (1000, 3)), a maior entrada de foi . Com o sinal de trocado para , o mesmo teste falha na hora: positivo passa a abaixar o braço, e nos ângulos do exemplo a ponta cai na altura de m em vez de m.
Exemplo 3: o mesmo braço na convenção modificada
Agora fica na junta . O frame tem vertical (junta 1), com origem na altura do ombro. O frame tem no eixo do ombro, no ombro. O frame tem no eixo do cotovelo, no cotovelo. A ponta precisa de mais uma linha constante, já que nenhuma junta mora ali.
| (m) | (m) | |||
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| ferramenta |
A pose final é igual à clássica a menos de nas mesmas 1000 configurações. Os frames intermediários não coincidem, e essa é a diferença visível entre as convenções:
textframe origem clássica z clássico origem modificada z modificado {1} (0, 0, 0.4) ombro eixo do ombro (0, 0, 0.4) vertical (junta 1) {2} (0.306, 0.177, 0.754) eixo do cotovelo (0, 0, 0.4) ombro eixo do ombro {3} (0.641, 0.370, 0.650) ponta eixo do cotovelo (0.306, 0.177, 0.754) eixo do cotovelo
O frame clássico fica na junta , o modificado fica na junta . Tudo o que é indexado por frame, como um centro de massa ou uma inércia escritos "no frame 2", muda de sentido entre as duas.
Exemplo 4: uma junta prismática, e a mistura de convenções
Um braço do tipo SCARA tem duas juntas rotativas verticais e uma junta prismática vertical que desce a ferramenta. Suponha altura do ombro de m e elos de m e m. Na convenção clássica, aponta para baixo, no sentido do deslocamento, então , e a variável fica na coluna :
| (m) | (m) | |||
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 |
Em a ponta fica em , que é . A tabela modificada, com linhas , , , dá a mesma pose a menos de em 1000 configurações aleatórias do mesmo gerador.
Agora o erro comum. Aplique a tabela clássica do Exemplo 1 na fórmula modificada em : a ponta sai em , a m da verdadeira . A tabela modificada na fórmula clássica erra por m. Nenhum dos dois erros levanta exceção, já que os dois resultados são transformações rígidas válidas. Só uma conferência contra um cálculo independente, como no Exemplo 2, pega o erro.
Equívocos Comuns e Armadilhas
- "Uma tabela DH descreve o robô." Ela descreve o robô mais uma convenção mais um conjunto de escolhas de frame. Sem a convenção, os mesmos números puseram a ponta a m de distância no Exemplo 4.
- " é o comprimento do elo ." É a distância entre dois eixos de junta ao longo da normal comum. O Modern Robotics observa que ele "does not necessarily correspond to the actual length of the physical link".
- "A tabela é única." Em eixos que se cruzam e em eixos paralelos, e na base e na ferramenta, as regras deixam escolhas. Duas tabelas corretas do mesmo braço podem diferir em sinais e zeros.
- "Clássica e modificada diferem por um deslocamento de índice." O índice muda, a ordem dos fatores muda e os frames vão para juntas diferentes (Exemplo 3). A pose final só bate se a linha da ferramenta for tratada.
- "Qualquer frame pode ser um frame DH." Um deslocamento lateral em não pode ser expresso, por isso ferramentas costumam ser presas com uma transformação fixa extra.
Resumo
As regras de Denavit-Hartenberg põem um eixo em cada junta e um eixo em cada normal comum, o que reduz cada transformação de elo a quatro parâmetros: comprimento , torção , deslocamento e ângulo da junta , com variável numa junta rotativa e variável numa prismática. A convenção clássica põe a junta em e usa . A modificada a põe em e usa . Modern Robotics e Craig usam a forma modificada, e Murray, Li e Sastry, Spong, Siciliano e Paul a clássica, segundo as fontes acima. Num braço articulado de três juntas as duas tabelas reproduziram um produto direto de transformações a menos de , enquanto uma tabela lida com a fórmula errada errou por m sem nenhum aviso.