Open Source Robotics

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

Motion Primitive

  • Detto anche: movement primitive, motor primitive, action primitive, skill primitive
  • Categoria: Planning & manipulation › Motion planning
  • Tag: motion-planning, manipulation, skills, learning-from-demonstration, task-planning

Un blocco riutilizzabile del movimento di un robot, come un'abilità parametrizzata (spostarsi a una posa, aprire la pinza) o un breve segmento di traiettoria, che pianificatori e policy combinano in comportamenti più lunghi.

Definizione

Primitive di movimento (motion primitives) scompongono il comportamento di un robot in unità riutilizzabili che si possono concatenare. Invece di pianificare o apprendere ogni movimento al livello dei comandi ai giunti, un sistema richiama una primitiva con pochi parametri, come una posa target, un'apertura della pinza o una direzione di spinta, e la primitiva produce il movimento dettagliato. Il termine copre diverse idee affini, che differiscono per come la primitiva è rappresentata e per ciò che sceglie tra le primitive.

Nella manipolazione e pianificazione dei compiti, le primitive sono abilità parametrizzate: spostarsi a una posa, afferrare, posare, spingere, versare, aprire o chiudere la pinza. Pianificatori di compiti, behavior tree o modelli linguistici scelgono una sequenza e completano i parametri; diversi sistemi recenti fanno scrivere a un modello linguistico un breve programma che chiama tali funzioni. Nella pianificazione del movimento, le primitive sono brevi segmenti di traiettoria precalcolati che rispettano la dinamica di un veicolo, e i pianificatori a reticolo (lattice planner) li uniscono su una griglia regolare di stati per cercare percorsi ammissibili per auto, robot mobili e droni. Nell'apprendimento da dimostrazione, le primitive di movimento sono modelli di traiettoria appresi da esempi che possono essere adattati: le dynamic movement primitives (DMP), sviluppate da Ijspeert, Nakanishi e Schaal, codificano una dimostrazione come un sistema dinamico stabile con un termine forzante appreso, così che inizio e obiettivo possano cambiare, mentre le probabilistic movement primitives (ProMP) rappresentano una distribuzione sulle traiettorie.

Il compromesso centrale è tra struttura e portata. Una libreria fissa rende il comportamento prevedibile, verificabile e rapido da pianificare, poiché il pianificatore cerca tra poche scelte discrete e i loro parametri. Al tempo stesso limita il robot a ciò che la libreria può esprimere: movimenti ricchi di contatti, reattivi o strettamente coordinati possono richiedere primitive con retroazione integrata, oppure policy apprese. Scegliere la granularità delle primitive è quindi una decisione progettuale a pieno titolo.

Perché è importante

Le primitive di movimento rendono trattabili i compiti a lungo orizzonte per pianificatori e modelli linguistici, fornendo loro un piccolo insieme di azioni collaudate. Separano le decisioni di alto livello dal controllo di basso livello, così che ogni strato possa essere sviluppato e verificato separatamente.

Applicazioni principali

  • Manipolazione guidata da pianificatori di compiti o modelli linguistici
  • Pianificazione del movimento a reticolo per veicoli e droni
  • Apprendimento da dimostrazione con dynamic movement primitives
  • Behavior tree che richiamano abilità riutilizzabili
  • Riposizionamento su scaffali, imballaggio e assemblaggio a lungo orizzonte

In pratica

Un team che costruisce un sistema per riporre oggetti sugli scaffali definisce una libreria di primitive come spingere, spazzare, inserire e afferrare e posare, ciascuna implementata come un breve controllore con parametri come punto di contatto, direzione e distanza, e ciascuna con precondizioni verificate prima dell'esecuzione e condizioni di terminazione su forza o posizione. Un modello appreso predice come si muovono gli oggetti sotto ogni primitiva parametrizzata, un pianificatore cerca tra sequenze e parametri, e il robot esegue il primo passo e ripianifica. Su un drone, la stessa idea compare come una libreria di brevi traiettorie polinomiali campionate sulle velocità finali e verificate rispetto alla mappa degli ostacoli a ogni ciclo di pianificazione.

Idee sbagliate comuni

  • Una primitiva di movimento è sempre una traiettoria fissa e codificata a mano — molte sono parametrizzate o includono retroazione, e le DMP si adattano a nuovi obiettivi durante l'esecuzione
  • Usare primitive significa rinunciare all'apprendimento — le primitive vengono spesso apprese da dimostrazioni, e si usano modelli appresi per sceglierle e parametrizzarle
  • Qualsiasi compito si può risolvere con una libreria abbastanza grande — i compiti che richiedono un contatto reattivo continuo possono uscire da ciò che le primitive discrete esprimono, e la libreria stessa va progettata e mantenuta

Chi dovrebbe saperlo

  • Ingegneri di manipolazione che costruiscono librerie di abilità
  • Ingegneri di pianificazione del movimento che lavorano con pianificatori a reticolo
  • Ricercatori di robot learning che lavorano sull'apprendimento da dimostrazione
  • Sviluppatori che collegano modelli linguistici o pianificatori di compiti ai robot

Tecnologie correlate

  • Dynamic Movement Primitives (DMP)
  • Probabilistic Movement Primitives (ProMP)
  • Pianificatore a reticolo di stati (State Lattice Planner)
  • Behavior Trees
  • Pianificazione dei compiti e pianificazione del movimento (Task and Motion Planning)
  • Librerie di abilità (Skill Libraries)

Termini correlati

  • Motion Planning
  • Trajectory Planning
  • Task and Motion Planning
  • Task Planning
  • Imitation Learning
  • Behavior Tree

Progetti correlati

  • LeRobot: HuggingFace ML library for real-world robotics in PyTorch
  • Isaac Lab: NVIDIA robot learning framework: one task API across Newton, PhysX and Isaac Sim
  • NVIDIA Isaac GR00T: NVIDIA open foundation model for humanoid robot reasoning and skills
  • OpenVLA: 7B-parameter Vision-Language-Action model for robotic manipulation
  • BehaviorTree.CPP: C++ behavior tree library for robot task planning, powering Nav2 and ROS 2 systems
  • Drake: MIT robotics toolbox for model-based dynamics, optimization, and control system design

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