Open Source Robotics

Una raccolta curata di progetti, strumenti e software di robotica open source di alta qualità per la comunità della robotica.

Task-Priority Inverse Kinematics

  • Detto anche: hierarchical inverse kinematics, prioritized inverse kinematics
  • Categoria: Foundations & spatial maths › Kinematics
  • Tag: inverse-kinematics, redundancy-resolution, whole-body-control, optimization, humanoids

Cinematica inversa per robot ridondanti in cui i compiti sono ordinati per rango e ogni compito a priorità più bassa viene risolto solo nei moti che lasciano inalterati i compiti a priorità più alta.

Definizione

Cinematica inversa con priorità dei compiti (task-priority inverse kinematics) risolve il moto di un robot ridondante quando deve soddisfare più obiettivi contemporaneamente, come mantenere l'equilibrio, posizionare una mano, mantenere una direzione dello sguardo e restare vicino a una postura comoda. I compiti sono ordinati per importanza. Il compito a priorità più alta viene risolto per primo, tipicamente con una pseudoinversa del suo jacobiano; il compito successivo viene poi risolto solo all'interno dello spazio nullo del primo, l'insieme dei moti dei giunti che non lo perturbano, e così via lungo la lista. Un compito a priorità più bassa viene realizzato al meglio possibile senza mai degradarne uno a priorità più alta. Nakamura, Hanafusa e Yoshikawa formalizzarono questa idea nel 1987, e Siciliano e Slotine diedero nel 1991 una formulazione ricorsiva molto usata per un numero qualsiasi di compiti.

Nella sua forma classica, il metodo lavora a livello di velocità: q̇ = J₁⁺ ẋ₁ + N₁ (J₂N₁)⁺ (ẋ₂ − J₂J₁⁺ẋ₁) e così via, dove N₁ proietta nello spazio nullo del compito 1. Sorgono due problemi pratici. Quando due compiti sono in conflitto, lo jacobiano proiettato del compito inferiore può diventare singolare anche se nessuno dei due compiti è singolare da solo, e serve uno smorzamento per mantenere limitate le velocità dei giunti. Inoltre i limiti dei giunti, l'evitamento delle collisioni e le forze di contatto sono disuguaglianze, che la pura proiezione nello spazio nullo gestisce male.

Per questo i solver moderni formulano ogni livello di priorità come un programma quadratico, risolto in sequenza o con un solver QP gerarchico dedicato, così che compiti di uguaglianza e di disuguaglianza possano comparire a qualsiasi livello. È la base dell'approccio stack of tasks e di librerie come OpenSoT e CartesI/O. Un'alternativa comune è la cinematica inversa pesata, o a priorità morbida, che somma tutti i compiti in un unico costo con pesi diversi; è più semplice e più regolare, ma lascia che i compiti si compensino tra loro invece di imporre una precedenza stretta.

Perché è importante

Umanoidi, quadrupedi con braccia e manipolatori mobili hanno molti più giunti di quanti ne servano a un singolo compito. La cinematica inversa con priorità dei compiti rende esplicito quali obiettivi non devono mai essere violati e quali possono cedere, il che è centrale per il moto del corpo intero su questi robot.

Applicazioni principali

  • Moto del corpo intero di robot umanoidi e con gambe
  • Manipolazione mobile con base e braccio che si muovono insieme
  • Bracci ridondanti che devono evitare i limiti dei giunti e gli ostacoli mentre inseguono il percorso di un utensile
  • Teleoperazione e retargeting del movimento su robot con cinematiche diverse
  • Inseguimento della traiettoria per robot con gambe e ruote

In pratica

Su un quadrupede con gambe e ruote, un pianificatore del movimento produce traiettorie per il corpo, le ruote e i piedi. Per inseguirle sul robot, il team costruisce uno stack of tasks: in cima, i limiti di posizione e velocità dei giunti come vincoli di disuguaglianza; poi i punti di contatto delle ruote, che devono restare a terra; quindi la posa del corpo; e infine un compito di postura che porta i giunti verso una configurazione nominale. Un solver QP gerarchico esegue questo stack a ogni ciclo di controllo e fornisce riferimenti dei giunti ai controllori di basso livello. Quando il corpo non riesce a raggiungere un'altezza comandata senza sollevare una ruota, il solver mantiene la ruota a terra e lascia che il compito del corpo non venga raggiunto del tutto, cosa che il team vede come un errore di inseguimento anziché come una ruota che slitta.

Idee sbagliate comuni

  • I compiti a priorità più bassa vengono ignorati — vengono soddisfatti il più fedelmente possibile entro i moti lasciati liberi dai compiti superiori
  • La cinematica inversa pesata dà lo stesso risultato — i pesi lasciano che i compiti si compensino, mentre le priorità strette non permettono mai a un compito inferiore di perturbarne uno superiore
  • Il metodo evita tutte le singolarità — i conflitti tra compiti creano singolarità algoritmiche che richiedono smorzamento o riordino
  • La proiezione nello spazio nullo gestisce da sola i limiti dei giunti — le disuguaglianze richiedono un trattamento aggiuntivo, ed è per questo che i programmi quadratici gerarchici sono molto usati

Chi dovrebbe saperlo

  • Ingegneri di controllo del corpo intero per umanoidi e robot con gambe
  • Sviluppatori di manipolazione mobile
  • Ingegneri di pianificazione del movimento e di teleoperazione
  • Studenti di robotica che studiano la risoluzione della ridondanza

Tecnologie correlate

  • OpenSoT
  • CartesI/O
  • Stack of Tasks
  • Programmazione quadratica gerarchica (Hierarchical Quadratic Programming)
  • Minimi quadrati smorzati (Damped Least Squares)

Termini correlati

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

Progetti correlati

  • 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

Questo sito richiede JavaScript. Attiva JavaScript per esplorare i nostri progetti di robotica open source.