Pular para o conteúdo principal
Estágio 5 · Capítulo 24 · Teoria

24. Cinemática Direta, Cinemática Inversa e o Jacobiano

Capítulo 24 do Curso para Iniciantes em IA Física da Seeed — espaço de juntas versus espaço cartesiano, cinemática direta a partir de parâmetros DH e URDF, cinemática inversa e suas múltiplas ou inexistentes soluções, o Jacobiano e a cinemática de velocidade, singularidades e mínimos quadrados amortecidos, e CI analítica versus numérica.

24.1 Tópicos principais​

  • Espaço de juntas vs. espaço cartesiano
  • Cinemática direta (FK)
  • Cinemática inversa (IK)
  • Múltiplas soluções, nenhuma solução e espaço de trabalho
  • Limites de junta
  • Matriz Jacobiana
  • Cinemática de velocidade
  • Singularidades
  • CI numérica e CI em malha fechada

24.2 Objetivos de aprendizagem​

Explicar como o braço calcula a pose do efetuador final a partir dos ângulos das juntas e como resolver os ângulos das juntas dado uma pose alvo.

24.3 Espaço de Juntas vs. Espaço Cartesiano​

Espaço de juntas versus espaço cartesiano
Espaço de juntas versus espaço cartesiano, visão geral completa
Espaço de juntasEspaço cartesiano
DescriçãoÂngulos de junta (q1,q2,…,qn)(q_1, q_2, \ldots, q_n)Pose do efetuador final (x,y,z,rx,ry,rz)(x, y, z, rx, ry, rz)
Dimensãon (número de juntas)6 (3 de posição + 3 de orientação)
Significado físicoComo os motores giramOnde está a extremidade e para que lado aponta
Caminho do movimentoVelocidade de junta constante -> curva irregular do efetuador finalCaminho retilíneo/arco da extremidade -> movimento de junta não linear
Dificuldade de controleDireto (enviar para os motores)Indireto (é preciso resolver a CI para os ângulos de junta antes, depois enviar aos motores)
Usos típicosMovimento livre, desvio de obstáculos, homingApreensão, soldagem, pintura, seguimento de trajetória

Exemplo 1: robô que escreve

TarefaQual espaço
Girar o motor 1 em 30°, o motor 2 em 45°Espaço de juntas (enviar ângulos diretamente)
Fazer a ponta da caneta traçar os traços de um caractere em linhas retasEspaço cartesiano (calcular ângulos de junta para cada ponto)

Exemplo 2: pegar um copo (ignorando o caminho)

EtapaQual espaço
Mover da posição inicial até perto do copoEspaço de juntas (simples, velocidade constante, seguro)
Últimos poucos centímetros para alinhar precisamente com a borda do copoEspaço cartesiano (precisa se aproximar em XYZ)
Erguer e colocar na prateleiraEspaço de juntas (sem exigência de linha reta)

Exemplo 3: soldar um carro

TarefaQual espaço
Tocha de solda segue a junta em linha retaEspaço cartesiano (linha reta = junta de solda)
Erguer a tocha e mover para o próximo pontoEspaço de juntas (o que importa é ser rápido)

24.4 Cinemática Direta vs. Cinemática Inversa​

FK versus IK
Cinemática direta (FK)Cinemática inversa (IK)
ConhecidoÂngulos de juntaPose do efetuador final
Resolver paraPose do efetuador finalÂngulos de junta
DireçãoJuntas -> efetuador finalEfetuador final -> juntas
SoluçãoÚnicaMúltiplas / nenhuma
CálculoSimples (aplicar fórmulas diretamente)Complexo (resolver equações / iterar)

Para que serve a FK

  • Visualização: renderizar ângulos de junta em tempo real como um modelo 3D (ROS RViz, personagens de jogos)
  • Verificação: checar se a pose do efetuador final calculada está correta
  • Calibração: comparar a pose teórica com a pose real
  • Controle simples: mover ao longo de uma sequência de ângulos pré-definida

Para que serve a IK

  • Apreensão: câmera vê o objeto -> resolve ângulos de junta -> controla o braço
  • Soldagem/pintura: a extremidade deve seguir uma trajetória especificada
  • Humanoide: os pés devem pousar em pontos específicos no chão
  • Qualquer cenário de "ir até um lugar"

24.5 Cinemática Direta​

O processo de calcular a pose do efetuador final a partir dos ângulos das juntas

Cinemática direta

Versão em uma frase

Multiplicar a transformação local de cada junta em sequência, da base até o efetuador final.

Tbaseend=Tbaselink1⋅Tlink1link2⋯Tlinkn−1linkn⋅TlinkntcpT_{base}^{end} = T_{base}^{link_1} \cdot T_{link_1}^{link_2} \cdots T_{link_{n-1}}^{link_n} \cdot T_{link_n}^{tcp}

Etapas de cálculo (6 passos)

  1. Estabelecer referenciais dos elos: construir um referencial local em cada junta (parâmetros DH / URDF)
  2. Escrever a matriz de transformação de cada elo Tii+1T_i^{i+1} (translação + rotação em relação à junta anterior)
  3. Substituir os ângulos de junta qiq_i (rotação usa θi\theta_i, translação vem da tabela DH)
  4. Multiplicar em sequência T12⋅T23⋅…⋅Tnn+1T_1^2 \cdot T_2^3 \cdot \ldots \cdot T_n^{n+1}
  5. Multiplicar pelo deslocamento da ferramenta TflangetcpT_{flange}^{tcp}
  6. Obter TbaseendT_{base}^{end} — contendo posição (x,y,z)(x,y,z) e orientação (RR ou qq ou ângulos de Euler)

Conceitos relacionados em um diagrama

Joint angles (q)
|
DH params / URDF ← describe link geometry (a, alpha, d, theta)
|
Homogeneous transform (4x4) ← translation + rotation combined
|
+-- rotation matrix R (3x3, SO(3))
| +-- rotation representation: Euler / quaternion / axis-angle
+-- translation vector t (3x1)
|
Matrix chain multiplication (chain rule)
|
End-effector pose T_base^end (SE(3))
|
+-- position (x, y, z) ← FK output
+-- orientation (R / q / rpy) ← orientation representation
|
Cartesian-space trajectory / Jacobian (velocity mapping)
|
Visualization (RViz / simulation)

Lista de verificação de conceitos centrais

ConceitoFunção
Parâmetros DHCodificar os a,α,d,θa, \alpha, d, \theta de cada elo como 4 números
Transformação homogêneaAgrupar translação + rotação em uma matriz 4x4 para facilitar o encadeamento
Regra da cadeiaA essência de multiplicar muitas matrizes
Representação de rotaçãoFornecer a orientação como: ângulos de Euler / quaternions / matriz de rotação
TrigonometriaA expansão das matrizes é toda em sin⁡/cos⁡\sin/\cos
JacobianoA FK fornece a pose; J fornece a velocidade (usado ao contrário pela IK)
URDFO arquivo real de descrição do robô; fonte dos números da FK

Um pequeno exemplo (2 juntas)

θ1,θ2=aˆngulos de junta,l1,l2=comprimentos dos elos\theta_1, \theta_2 = \text{ângulos de junta}, \qquad l_1, l_2 = \text{comprimentos dos elos}T12=(cos⁡θ1−sin⁡θ10l1cos⁡θ1sin⁡θ1cos⁡θ10l1sin⁡θ100100001)T23=(cos⁡θ2−sin⁡θ20l2cos⁡θ2sin⁡θ2cos⁡θ20l2sin⁡θ2⋮⋮⋮⋮0001)T_1^2 = \begin{pmatrix} \cos\theta_1 & -\sin\theta_1 & 0 & l_1\cos\theta_1 \\ \sin\theta_1 & \cos\theta_1 & 0 & l_1\sin\theta_1 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \qquad T_2^3 = \begin{pmatrix} \cos\theta_2 & -\sin\theta_2 & 0 & l_2\cos\theta_2 \\ \sin\theta_2 & \cos\theta_2 & 0 & l_2\sin\theta_2 \\ \vdots & \vdots & \vdots & \vdots \\ 0 & 0 & 0 & 1 \end{pmatrix}T13=T12 T23⟹pose do efetuador finalT_1^3 = T_1^2 \, T_2^3 \quad\Longrightarrow\quad \text{pose do efetuador final}

FK = descrição DH + matrizes homogêneas + multiplicação em cadeia, traduzindo "ângulos de junta" em "onde está a extremidade".

É essencial saber ao longo do caminho: DH, transformações 4x4, multiplicação de matrizes, representações de rotação (Euler/quaternion), URDF.

24.6 Cinemática Inversa​

CI analítica versus CI numérica

O processo de calcular ângulos de junta a partir da pose do efetuador final. Na prática, quase sempre é feito de forma numérica: em vez de resolver a equação da pose em um único passo, o solucionador se aproxima do alvo gradualmente.

Pense em alcançar um livro em uma prateleira: você observa o quão longe sua mão ainda está do livro, decide em que direção se mover, ajusta um pouco suas juntas e repete até tocá-lo. Um robô faz exatamente a mesma coisa.

O laço — cada iteração faz três coisas:

  1. Observar o erro: quão longe o efetuador final ainda está da pose alvo
  2. Inferir a direção: como cada junta deve se mover para reduzir esse erro
  3. Dar um passo: mover as juntas uma vez, depois voltar ao passo 1

Repetir até que o erro seja pequeno o suficiente.

Por que é tão amplamente usada

  • Universal: o mesmo laço funciona para 6 eixos, 7 eixos, mãos e braços tipo cobra
  • Sem fórmulas para derivar: é um programa, não uma página de álgebra
  • Precisão ajustável: quer mais exatidão? Rode mais iterações

Na indústria, o laço é fechado em torno das posições medidas das juntas, então o controlador continua observando o erro e corrigindo mesmo quando o modelo está um pouco errado. Essa versão de "olhar enquanto se move" é a CLIK (Closed-Loop IK), o padrão de fato em braços industriais.

Em uma frase: CI numérica = observar o erro e se aproximar do alvo pouco a pouco — universal, eficaz e estável.

CI analítica versus CI numérica

24.7 Matriz Jacobiana​

O Jacobiano transforma "resolver a pose" em "resolver a velocidade".

A equação de pose é não linear e geralmente não tem solução em forma fechada:

f(q)=Ttargetf(q) = T_{target}

Ao diferenciá-la no qq atual obtemos o Jacobiano e, em primeira ordem, o problema se torna linear:

J(q)=∂f∂q,vend=J(q) q˙,ΔT≈J(q) Δq,q˙=J−1vendJ(q) = \frac{\partial f}{\partial q}, \qquad v_{end} = J(q)\,\dot{q}, \qquad \Delta T \approx J(q)\,\Delta q, \qquad \dot{q} = J^{-1} v_{end}

O laço iterativo

  1. qq atual -> calcular a pose do efetuador final TT
  2. Erro: ΔT=Ttarget−T\Delta T = T_{target} - T
  3. Velocidade do efetuador final: v=ΔT/dtv = \Delta T / dt
  4. Velocidade das juntas: q˙=J−1v\dot{q} = J^{-1} v
  5. Atualização: qnew=q+q˙ dtq_{new} = q + \dot{q}\,dt
  6. Volte ao passo 1, até que ΔT\Delta T seja pequeno o suficiente

Em uma frase: o Jacobiano "achata localmente" a equação de IK não linear em uma equação linear; resolver para a velocidade e integrá-la converge para a pose alvo.

24.8 Singularidades​

Em uma singularidade o braço perde a capacidade de mover o efetuador final em uma ou mais direções — não importa como as juntas se movam, a extremidade não consegue se mover daquela forma.

  • Braço totalmente estendido: ele não consegue alcançar mais longe; a direção para fora é perdida
  • Duas juntas do punho colineares: dois eixos de rotação coincidem, então um grau de liberdade desaparece

O que acontece em uma singularidade

SituaçãoSintoma
Jacobiano "falha"O mapeamento de juntas para extremidade não pode mais ser invertido
Solução de IK explodeA velocidade de junta calculada vai para o infinito
Tremores nas juntasOs motores vibram violentamente
Oscilação de controleA extremidade salta para frente e para trás

Essência: algumas entradas desse mapeamento se tornam 0/00/0 — indefinidas, não apenas grandes.

Como detectá-la — quando o Jacobiano degenera, um número vai a zero:

det⁡J=0,σmin⁡(J)=0,rank⁡J<n\det J = 0, \qquad \sigma_{\min}(J) = 0, \qquad \operatorname{rank} J < n

Monitore esse número e dispare um alarme quando ele se aproximar de zero.

Como lidar com isso

CorreçãoIdeia
Mínimos quadrados amortecidos (DLS)Adicione um pouco de "atrito" para que a solução não possa explodir: q˙=J⊤(JJ⊤+λ2I)−1v\dot{q} = J^\top (J J^\top + \lambda^2 I)^{-1} v
Mudar o caminhoPlaneje com antecedência para contornar regiões singulares
DesacelerarDesacelere perto de uma singularidade para ganhar tempo de reação
Mudar a posePara a mesma pose alvo, escolha uma solução não singular

Dois tipos de singularidades

  • Fronteira do espaço de trabalho: estendido até o ponto mais distante; direções são perdidas
  • Interior do espaço de trabalho: punho colinear / cotovelo esticado; graus de liberdade são reduzidos

24.9 IK analítica vs. IK numérica​

IK analítica resolve a equação diretamente; IK numérica itera em direção à resposta. A mesma tarefa — calcular 25×425 \times 4 — feita das duas maneiras:

AnalíticaNumérica
Ideia"×4 significa ×2 depois ×2": calcule 25×2=5025 \times 2 = 50, depois ×2=100\times 2 = 100Chute 90, perceba que falta 10, chute 102, depois 100 — ajuste até coincidir
ResultadoUm passo, exatoAlgumas iterações, suficientemente próximo

Diferenças centrais

DimensãoIK analíticaIK numérica
AbordagemResolve a equação diretamenteAproximação iterativa
VelocidadeMais rápida (microssegundos)Mais lenta (ms~s)
PrecisãoExataAproximada (ajustável)
GeneralidadeFracaForte
SaídaFórmula em forma fechadaResultado numérico

IK analítica — resolva a equação de uma vez por todas, e você obtém fórmulas como

θ1=atan2⁡(…),θ2=acos⁡(…),⋮\theta_1 = \operatorname{atan2}(\ldots), \qquad \theta_2 = \operatorname{acos}(\ldots), \qquad \vdots
PrósContras
Calculada em uma linha de código; sem erro de iteração; pode listar todas as soluçõesNem todo robô tem solução em forma fechada; com muitas juntas e uma estrutura complexa a equação não pode ser resolvida; uma vez que o robô muda, cada fórmula deve ser reescrita

IK numérica — nenhuma fórmula, apenas repetir "dobre um pouco as juntas, verifique se a extremidade se aproximou, se não dobre um pouco mais" até ficar suficientemente perto.

PrósContras
Funciona para qualquer robô; sem equações para derivar; fácil adicionar restriçõesLenta (precisa de iteração); pode ficar presa em uma solução errada; explode em singularidades

Cenários de aplicação

CenárioEscolha
2 juntas, 3 juntas, geometria especialAnalítica (rápida, exata)
Braço industrial padrão de 6 eixosQualquer uma, depende do cenário
Braço redundante de 7 eixosNumérica (sem solução analítica)
Fechado / paraleloNumérica (analítica é difícil de derivar)
Controle em tempo real (kHz)Analítica ou solução analítica gerada offline
Servo visual (30 Hz)Numérica

Pontos-chave

  • O espaço das juntas é o que os motores entendem; o espaço cartesiano é o que a tarefa entende.
  • FK é única, barata e sempre solucionável; IK pode ter várias soluções, uma solução ou nenhuma.
  • O Jacobiano converte velocidade de junta em velocidade do efetuador final, e é como IK é realmente resolvida.
  • Singularidades são poses onde o Jacobiano perde posto; detecte-as (menor valor singular) e amorteça-as (DLS).
  • Próximo capítulo: uma vez que você consegue produzir uma pose, ainda precisa se mover até lá de forma suave e segura.
Loading Comments...