Differential Flatness
- Detto anche: flatness, differentially flat system, flat outputs
- Categoria: Planning & manipulation › Trajectory optimisation
- Tag: nonlinear-control, trajectory-generation, quadrotor, motion-planning, feedforward-control, aerial-robotics
Una proprietà di alcuni sistemi non lineari il cui stato completo e i cui ingressi possono essere scritti come funzioni di poche uscite piatte e delle loro derivate, il che semplifica molto la pianificazione di traiettorie e il controllo.
Definizione
Piattezza differenziale (differential flatness) è una proprietà strutturale di alcuni sistemi dinamici non lineari, formalizzata da Michel Fliess, Jean Lévine, Philippe Martin e Pierre Rouchon negli anni 1990. Un sistema è differenzialmente piatto se esiste un insieme di uscite, dette uscite piatte e in numero pari agli ingressi di controllo, tale che ogni stato e ogni ingresso possano essere espressi come funzione di queste uscite e di un numero finito delle loro derivate temporali. In pratica, scegliere come evolvono nel tempo le uscite piatte determina completamente come deve muoversi l'intero sistema e di quali ingressi ha bisogno.
Questo trasforma un problema di pianificazione difficile in uno più semplice. Invece di cercare sugli ingressi e integrare una dinamica non lineare, un pianificatore può tracciare una qualsiasi curva sufficientemente liscia per le uscite piatte, come un polinomio o una spline attraverso dei waypoint, e poi calcolare direttamente gli stati e gli ingressi corrispondenti. Vincoli come i limiti sugli ingressi diventano vincoli sulle derivate della curva. I comandi in feedforward escono dallo stesso calcolo, e un controllore in retroazione deve solo correggere piccole deviazioni.
Il quadricottero è l'esempio più noto in robotica. Mellinger e Kumar hanno mostrato nel 2011 che un quadricottero è differenzialmente piatto con la sua posizione tridimensionale e l'angolo di imbardata come uscite piatte. La spinta deriva dalla derivata seconda della posizione, l'assetto dalla direzione dell'accelerazione richiesta, e le velocità angolari del corpo e le coppie dalle derivate di ordine superiore. Per questo le traiettorie dei quadricotteri sono spesso generate come polinomi a snap minimo: lo snap, la derivata quarta della posizione, è legato direttamente agli ingressi di coppia. Altri sistemi piatti sono il robot mobile di tipo uniciclo, l'auto cinematica e un'auto che traina dei rimorchi.
La piattezza ha dei limiti. Molti sistemi non sono piatti, e non esiste un test generale per stabilire se un sistema non lineare arbitrario sia piatto né per trovarne le uscite piatte. La piattezza dipende anche da un modello accurato; la resistenza aerodinamica, gli effetti dei rotori e altri termini non modellati rompono la relazione esatta. I sistemi piatti sono strettamente legati alla linearizzazione in retroazione, perché possono essere trasformati in sistemi lineari mediante una forma di retroazione dinamica dello stato.
Perché è importante
La piattezza differenziale permette ai pianificatori di generare traiettorie dinamicamente ammissibili con calcoli in forma chiusa invece di una costosa ottimizzazione non lineare, cosa importante per veicoli agili che devono ripianificare molte volte al secondo. È alla base della generazione di traiettorie e del controllo standard dei quadricotteri, oltre che di molti pianificatori per robot su ruote.
Applicazioni principali
- Generazione di traiettorie per quadricotteri — pianificazione polinomiale a snap minimo attraverso waypoint
- Controllo in feedforward per robot aerei — calcolare riferimenti di assetto e spinta da percorsi pianificati
- Robot mobili su ruote — pianificare percorsi ammissibili per veicoli di tipo automobile e a trazione differenziale
- Sistemi trattore-rimorchio — pianificare manovre per veicoli che trainano rimorchi
- Volo in formazione — generare traiettorie ammissibili e coordinate per più droni
In pratica
Un team di droni in genere pianifica un percorso come una serie di waypoint, adatta polinomi a tratti per posizione e imbardata che minimizzano lo snap o il jerk nel rispetto di vincoli di tempo e di continuità, e verifica i limiti di spinta e di velocità angolare del corpo valutando le derivate lungo la curva. A ogni passo di controllo, la mappa di piattezza converte posizione, velocità, accelerazione, jerk e imbardata di riferimento in assetto, spinta e velocità angolari desiderati, che alimentano un controllore d'assetto geometrico o in cascata. Quando i test di volo mostrano errori di inseguimento dovuti alla resistenza aerodinamica o al downwash, gli ingegneri aggiungono termini di resistenza al modello o apprendono una correzione mantenendo la struttura basata sulla piattezza.
Idee sbagliate comuni
- Tutti i robot sono differenzialmente piatti — molti sistemi non lo sono, e trovare le uscite piatte per un dato sistema è spesso difficile
- La piattezza rende superflua la retroazione — fornisce riferimenti in feedforward; la retroazione serve comunque per gestire disturbi ed errori di modello
- Piattezza e linearizzazione in retroazione sono la stessa cosa — sono strettamente legate, ma la piattezza è una proprietà del sistema usata soprattutto per la pianificazione, mentre la linearizzazione in retroazione è una tecnica di progetto del controllo
Chi dovrebbe saperlo
- Ingegneri di droni e di robotica aerea
- Ricercatori di pianificazione del movimento che lavorano su veicoli dinamici
- Ingegneri di controllo che progettano controllori di inseguimento della traiettoria
- Dottorandi e studenti magistrali che studiano il controllo non lineare
Tecnologie correlate
- Generazione di traiettorie a snap minimo (Minimum-Snap Trajectory Generation)
- Linearizzazione in retroazione (Feedback Linearization)
- Ottimizzazione di traiettorie (Trajectory Optimization)
- Controllo geometrico (Geometric Control)
- Controllo predittivo basato su modello (Model Predictive Control)
- Spline polinomiali (Polynomial Splines)
Termini correlati
Progetti correlati
- gym-pybullet-drones: PyBullet Gymnasium environments for single- and multi-agent drone reinforcement learning
- OMPL: Sampling-based motion planning library powering MoveIt and countless robotics applications
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- mink: Python inverse kinematics library built on MuJoCo supporting 20+ robot platforms
- Ruckig: Real-time jerk-constrained time-optimal trajectory generation for robots and machines
Video
- lecture18 final clip3 differentialflatness: underactuated