Open Source Robotics

Uma coleção selecionada de projetos, ferramentas e software de robótica de código aberto de alta qualidade.

Task-Priority Inverse Kinematics

  • Também chamado: hierarchical inverse kinematics, prioritized inverse kinematics
  • Categoria: Foundations & spatial maths › Kinematics
  • Tags: inverse-kinematics, redundancy-resolution, whole-body-control, optimization, humanoids

Cinemática inversa para robôs redundantes em que as tarefas são hierarquizadas e cada tarefa de menor prioridade é resolvida apenas nos movimentos que não afetam as tarefas de maior prioridade.

Definição

Cinemática inversa com prioridade de tarefas (task-priority inverse kinematics) resolve o movimento de um robô redundante quando ele precisa cumprir vários objetivos ao mesmo tempo, como manter o equilíbrio, posicionar uma mão, manter uma direção do olhar e ficar perto de uma postura confortável. As tarefas são ordenadas por importância. A tarefa de maior prioridade é resolvida primeiro, normalmente por uma pseudoinversa de seu jacobiano; a tarefa seguinte é então resolvida apenas dentro do espaço nulo da primeira, o conjunto de movimentos das juntas que não a perturbam, e assim por diante ao longo da lista. Uma tarefa de menor prioridade é atingida da melhor forma possível sem nunca degradar uma de maior prioridade. Nakamura, Hanafusa e Yoshikawa formalizaram essa ideia em 1987, e Siciliano e Slotine deram em 1991 uma formulação recursiva muito usada para qualquer número de tarefas.

Em sua forma clássica, o método trabalha no nível de velocidade: q̇ = J₁⁺ ẋ₁ + N₁ (J₂N₁)⁺ (ẋ₂ − J₂J₁⁺ẋ₁) e assim por diante, onde N₁ projeta no espaço nulo da tarefa 1. Surgem dois problemas práticos. Quando duas tarefas entram em conflito, o jacobiano projetado da tarefa inferior pode se tornar singular mesmo que nenhuma das duas tarefas seja singular sozinha, e é preciso amortecimento para manter limitadas as velocidades das juntas. E os limites das juntas, a prevenção de colisões e as forças de contato são desigualdades, que a projeção pura no espaço nulo trata mal.

Por isso os solvers modernos formulam cada nível de prioridade como um programa quadrático, resolvido em sequência ou com um solver de QP hierárquico dedicado, de modo que tarefas de igualdade e de desigualdade podem aparecer em qualquer nível. Essa é a base da abordagem stack of tasks e de bibliotecas como OpenSoT e CartesI/O. Uma alternativa comum é a cinemática inversa ponderada, ou de prioridade suave, que soma todas as tarefas em um único custo com pesos diferentes; ela é mais simples e mais suave, mas deixa as tarefas se compensarem entre si em vez de impor uma precedência estrita.

Por que importa

Humanoides, quadrúpedes com braços e manipuladores móveis têm muito mais juntas do que qualquer tarefa isolada precisa. A cinemática inversa com prioridade de tarefas torna explícito quais objetivos nunca devem ser violados e quais podem ceder, o que é central para o movimento de corpo inteiro nesses robôs.

Principais aplicações

  • Movimento de corpo inteiro de robôs humanoides e robôs com pernas
  • Manipulação móvel com a base e o braço se movendo juntos
  • Braços redundantes que precisam evitar limites das juntas e obstáculos enquanto seguem o caminho de uma ferramenta
  • Teleoperação e retargeting de movimento para robôs com cinemáticas diferentes
  • Seguimento de trajetória para robôs com pernas e rodas

Na prática

Em um quadrúpede com pernas e rodas, um planejador de movimento produz trajetórias para o corpo, as rodas e os pés. Para segui-las no robô, a equipe monta um stack of tasks: no topo, os limites de posição e de velocidade das juntas como restrições de desigualdade; em seguida, os pontos de contato das rodas, que precisam permanecer no solo; depois a pose do corpo; e por último uma tarefa de postura que puxa as juntas para uma configuração nominal. Um solver de QP hierárquico executa esse stack a cada ciclo de controle e envia referências das juntas aos controladores de baixo nível. Quando o corpo não consegue atingir uma altura comandada sem levantar uma roda, o solver mantém a roda no solo e deixa a tarefa do corpo ficar aquém, o que a equipe vê como um erro de seguimento em vez de uma roda deslizando.

Equívocos comuns

  • As tarefas de menor prioridade são ignoradas — elas são atendidas da forma mais próxima possível dentro dos movimentos deixados livres pelas tarefas superiores
  • A cinemática inversa ponderada dá o mesmo resultado — os pesos deixam as tarefas se compensarem, enquanto prioridades estritas nunca deixam uma tarefa inferior perturbar uma superior
  • O método evita todas as singularidades — conflitos entre tarefas criam singularidades algorítmicas que exigem amortecimento ou reordenação
  • A projeção no espaço nulo trata sozinha os limites das juntas — as desigualdades precisam de tratamento extra, e por isso programas quadráticos hierárquicos são muito usados

Quem deve saber

  • Engenheiros de controle de corpo inteiro para humanoides e robôs com pernas
  • Desenvolvedores de manipulação móvel
  • Engenheiros de planejamento de movimento e de teleoperação
  • Estudantes de robótica que estudam resolução de redundância

Tecnologias relacionadas

  • OpenSoT
  • CartesI/O
  • Stack of Tasks
  • Programação quadrática hierárquica (Hierarchical Quadratic Programming)
  • Mínimos quadrados amortecidos (Damped Least Squares)

Termos relacionados

  • Inverse Kinematics
  • Jacobian
  • Whole-Body Control
  • Operational Space Control
  • Loco-Manipulation
  • Humanoid Robot

Projetos relacionados

  • Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design
  • GEAR-SONIC: NVIDIA's whole-body controller for the Unitree G1, trained to track any human motion
  • GTSAM: Factor-graph optimization library powering many modern SLAM backends
  • ASAP: Sim-to-real framework for agile humanoid whole-body skills using delta action models
  • PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
  • PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization

Este site requer JavaScript. Por favor, habilite o JavaScript para explorar nossos projetos de robótica.