Il problema: arrivare in tempo non descrive come ci arriviamo
Un asse robotizzato porta un vassoio da una posizione all’altra, distante 20 centimetri, in un secondo. La velocità media è 0,2 metri al secondo. Questa informazione sembra sufficiente per confrontare due programmi, ma nasconde il modo in cui il motore accelera e frena. Due comandi con la stessa distanza e durata possono chiedere sforzi molto diversi. La domanda è concreta: quali numeri dobbiamo controllare per evitare che un movimento apparentemente lento richieda cambiamenti troppo bruschi?
Abstract. Costruiamo tre leggi di posizione, ne ricaviamo velocità, accelerazione e jerk, poi calcoliamo quanto allungare la durata per rispettare limiti assegnati. Il risultato meno intuitivo è che rendere più regolare l’avvio può aumentare alcuni picchi nel mezzo. I numeri sono calcoli cinematici su dati didattici: non abbiamo misurato vibrazioni, forze, consumi o sicurezza di un robot. Alla fine sapremo distinguere un profilo matematicamente ammissibile da un movimento validato sulla macchina.
Prima delle formule: tre modi diversi di cambiare
La posizione dice dove si trova il vassoio. La velocità dice quanto cambia la posizione ogni secondo; l’accelerazione dice quanto cambia la velocità ogni secondo. Il jerk è il cambiamento dell’accelerazione per unità di tempo. Le unità sono rispettivamente metri, m/s, m/s² e m/s³. In automobile possiamo percepire una spinta costante durante l’accelerazione e uno strappo quando quella spinta cambia bruscamente: è un’intuizione utile, non un modello della struttura del robot.
Assumiamo un solo asse lineare, percorso rettilineo, partenza e arrivo in quiete; prima e dopo il movimento la posizione rimane costante. Non modelliamo elasticità, attrito, carico, controllo o contatti. Separiamo la geometria — percorrere D=0,20 m — dal calendario del moto. Introduciamo u=t/T: è il tempo normalizzato, senza unità, che va da zero a uno. La funzione p(u) descrive quale frazione del percorso è stata completata. Il nostro modello è x(t)=D p(t/T), scegliendo l’origine nella posizione iniziale.
Per capire l’effetto della durata deriviamo rispetto al tempo. Ogni derivata introduce un fattore 1/T. Il simbolo primo indica invece una derivata rispetto a u: non va confusa con una velocità fisica.
A parità di forma e distanza, raddoppiare T dimezza le velocità, divide le accelerazioni per quattro e il jerk per otto. Non significa dimezzare ogni sollecitazione: le tre quantità rispondono in modo diverso al tempo. È già una leva pratica per un pianificatore, ma non dimostra quanto vibra una struttura. Per quello servirebbero un modello dinamico e misure. Ora possiamo confrontare le forme senza cambiare continuamente unità e distanza.
Il cubico: il problema si nasconde ai bordi
Vogliamo p(0)=0, p(1)=1 e velocità nulla ai due estremi. Un polinomio cubico ha quattro coefficienti per quattro condizioni. Scriviamo p=b₀+b₁u+b₂u²+b₃u³. Le condizioni iniziali impongono b₀=b₁=0; quelle finali diventano b₂+b₃=1 e 2b₂+3b₃=0. Risolvendo otteniamo b₂=3 e b₃=−2. Non abbiamo scelto una curva perché appare bella: l’abbiamo costruita dalle richieste al movimento.
Con D=0,20 m e T=1 s, il massimo della velocità è 0,300 m/s e quello del valore assoluto dell’accelerazione è 1,200 m/s². Il jerk interno al tratto è −2,400 m/s³. Sarebbe però sbagliato concludere che tutto il moto rispetta un limite di 5 m/s³: prima dell’avvio l’accelerazione è zero, subito dopo è 1,200. Il salto non ha derivata ordinaria finita. Anche all’arrivo c’è un salto verso zero. Allungare il tempo riduce l’ampiezza del salto, ma non lo rende continuo.
Il quintico: eliminare un salto ha un prezzo
Aggiungiamo accelerazione nulla all’inizio e alla fine: servono sei condizioni e scegliamo un polinomio di quinto grado. I primi tre coefficienti sono zero; per gli altri risolviamo b₃+b₄+b₅=1, 3b₃+4b₄+5b₅=0 e 6b₃+12b₄+20b₅=0. La soluzione è 10, −15, 6. Abbiamo aggiunto una proprietà precisa — continuità dell’accelerazione con la quiete — non una promessa generica di movimento perfetto.
Il picco di p₅′ è 1,875 a metà tempo. Gli estremi di p₅″ si trovano annullando p₅‴: u=(3±√3)/6, da cui il massimo assoluto 10/√3. Il massimo assoluto di p₅‴ è 60, ai bordi. Moltiplicando per i fattori fisici troviamo 0,375 m/s, 1,155 m/s² e 12,000 m/s³. La partenza ha accelerazione zero, ma il jerk passa da zero a 12: è un salto finito del jerk, diverso da un salto dell’accelerazione. Il jerk è limitato quasi ovunque, pur non avendo un valore classico unico nell’istante di raccordo.
Un terzo profilo per mettere alla prova l’intuizione
Possiamo imporre anche jerk nullo ai due estremi. Otto condizioni portano a un polinomio di settimo grado. Il calcolo dei coefficienti dà la legge seguente; sostituire u=0 e u=1 nelle prime tre derivate verifica i raccordi. Non la presentiamo come un algoritmo nuovo: è una costruzione algebrica del confronto. Il programma allegato calcola gli estremi usando le radici delle derivate, non scegliendo semplicemente il massimo di pochi campioni.
I picchi normalizzati sono 2,1875 per la velocità, circa 7,5132 per l’accelerazione e 52,5 per il jerk. Nella nostra corsa diventano 0,4375 m/s, 1,5026 m/s² e 10,5 m/s³. Il jerk ai bordi è ora zero, ma velocità e accelerazione massime sono maggiori del quintico. La quiete più regolare ai bordi lascia meno tempo utile per coprire la stessa distanza: la parte centrale deve compensare. Dire soltanto “più liscio” non specifica quale limite è migliorato.
| Grado | v max (m/s) | |a| max (m/s²) | |j| interno (m/s³) |
|---|---|---|---|
| 3 | 0.3000 | 1.2000 | 2.4000 * |
| 5 | 0.3750 | 1.1547 | 12.0000 |
| 7 | 0.4375 | 1.5026 | 10.5000 |
L’asterisco è essenziale: il valore del cubico esclude i salti dell’accelerazione ai raccordi con la quiete. Non è un massimo globale finito del jerk. Per tutti e tre la velocità media resta 0,20 m/s. Nel grafico osserviamo prima l’accelerazione ai bordi, poi l’altezza dei picchi interni: serve questa doppia lettura per non scambiare una curva gradevole con una curva compatibile con la macchina.

Quanto deve durare il movimento?
Assegniamo limiti ipotetici V=0,4 m/s, A=1 m/s² e J=5 m/s³. Non sono specifiche di un prodotto. Se M₁, M₂ e M₃ sono i massimi assoluti delle tre derivate normalizzate, ogni vincolo fornisce una durata minima. Dobbiamo prendere la maggiore, perché rispettarne due non autorizza a violare il terzo. La relazione vale per una forma fissata e per un asse: non risolve l’ottimizzazione globale di tutti i movimenti possibili.
Per il quintico i tre valori sono 0,9375 s, 1,0746 s e 1,3389 s: domina il jerk. Per il settimo grado sono 1,0938 s, 1,2258 s e 1,2806 s: domina ancora il jerk, ma la durata necessaria è leggermente inferiore. Non è una classifica universale. Restringendo il limite di accelerazione, il settimo grado potrebbe risultare meno conveniente. Per il cubico il terzo vincolo globale non è soddisfacibile con un T finito mantenendo quei raccordi; applicare la formula al solo jerk interno produrrebbe un falso via libera.
Picco, costo integrale e vibrazione non sono sinonimi
Un altro confronto possibile somma nel tempo il quadrato del jerk. È un costo matematico che penalizza cambiamenti rapidi per tutta la durata, non solo il peggiore istante. Sostituendo j=(D/T³)p‴ e dt=T du otteniamo I=(D²/T⁵)∫₀¹[p‴(u)]² du. L’integrale del polinomio si calcola esattamente: 720 per il quintico e 1120 per il settimo grado. Con i nostri dati I vale 28,8 e 44,8 m²/s⁵. Il profilo con jerk continuo ai bordi ha dunque un costo integrale maggiore in questo confronto a durata uguale.
Queste unità non sono joule: non abbiamo calcolato energia elettrica o meccanica. Neppure I è una misura diretta della vibrazione. Un carico flessibile risponde alle frequenze del comando e ai propri modi naturali; servono rigidità, smorzamento e controllo per stimarlo. Un criterio può essere utile senza essere una prova di tutto. Il confronto mostra perché una decisione tecnica deve dichiarare quale proprietà ottimizza, quali vincoli impone e quali fenomeni lascia fuori.
Alternative e passaggio alla macchina
I profili trapezoidali di velocità sono un’alternativa semplice, ma i cambiamenti istantanei di accelerazione ripropongono il problema dei raccordi. Le curve a S organizzano invece fasi con jerk controllato, accelerazione e velocità costanti; non coincidono necessariamente con i nostri polinomi. Per un robot a più giunti, una traiettoria cartesiana deve essere trasformata in movimenti articolari e verificata rispetto a coppie, singolarità, collisioni e limiti di ogni asse. Una sola disuguaglianza scalare non sostituisce questo lavoro.
Il codice riproducibile contiene coefficienti, parametri, versioni e risultati; non richiede un seed perché non usa casualità. Verifica posizioni e velocità ai bordi, estremi e durata. Il breve frammento in fondo ricostruisce il caso quintico: il massimo seleziona il vincolo dominante. In una prova reale bisognerebbe registrare posizione richiesta e misurata, periodo del controllore, saturazioni, carico, errore di inseguimento e assestamento. Quel protocollo è proposto, non eseguito.
Appendice: verificare il settimo grado senza fidarsi del grafico
Per ricostruire i coefficienti del settimo grado imponiamo che p e le prime tre derivate abbiano i valori richiesti ai bordi. A sinistra restano solo b₄, b₅, b₆, b₇. A destra risolviamo quattro equazioni: b₄+b₅+b₆+b₇=1; 4b₄+5b₅+6b₆+7b₇=0; 12b₄+20b₅+30b₆+42b₇=0; 24b₄+60b₅+120b₆+210b₇=0. Si ottengono 35, −84, 70, −20. Ogni equazione ha un significato fisico: posizione finale, arresto, accelerazione nulla, jerk nullo.
Perché cercare radici? In un punto interno dove una funzione derivabile raggiunge un massimo o minimo, la derivata è zero. Il programma valuta quindi i bordi e tutte le radici reali interne della derivata successiva, poi prende il massimo assoluto. Per la velocità del settimo grado il massimo è a u=1/2; per l’accelerazione i candidati non nulli sono u=(5±√5)/10. Il controllo è più solido di una griglia grossolana, che potrebbe saltare il picco. Restano aritmetica in virgola mobile e tolleranze esplicite nel codice: non stiamo presentando una dimostrazione formalmente verificata da un sistema automatico.
Che cosa abbiamo imparato
Per spostare il vassoio non basta dividere distanza per tempo. Dobbiamo sapere come si raccordano accelerazione e jerk alla quiete, quali picchi compaiono e se la durata soddisfa tutti i limiti. Nel nostro esempio un secondo non basta ai due profili regolari; le durate calcolate diventano circa 1,339 e 1,281 secondi. Questi numeri rispondono alla domanda cinematica, non certificano una macchina. La robotica industriale e collaborativa è una direzione che EL-AI intende esplorare: l’analisi non documenta un suo robot, un’installazione o un risultato sperimentale aziendale.
Fonti e collocazione dell’analisi
Il riferimento per percorsi e leggi temporali è il capitolo 9 di Lynch e Park, Modern Robotics, prima edizione 2017, preprint aggiornato del 30 dicembre 2019, sezioni 9.2.2.1–9.2.2.3, con la spiegazione didattica degli autori. La corsa di 20 cm, i limiti assegnati e il confronto numerico con il settimo grado sono elaborazioni didattiche riproducibili, non risultati sperimentali del libro né ricerca originale sottoposta a revisione.
Lynch & Park — Modern Robotics, chapter 9 (2019 updated preprint).
Lynch & Park — Point-to-Point Trajectories, Part 2.
from math import sqrt
D, V, A, J = 0.2, 0.4, 1.0, 5.0
bounds = (1.875*D/V, sqrt((10/sqrt(3))*D/A), (60*D/J)**(1/3))
print("quintic duration bounds (s):", bounds)
print("minimum within this family (s):", max(bounds))
# Kinematic calculation, not a hardware measurement.
Codice, dati e istruzioni · JSON. Calcoli didattici eseguiti con Python 3.14.0; figure con Matplotlib 3.11.2. Analisi con assistenza AI, senza dichiarare peer review o revisione umana. Copertina originale ImageGen, illustrativa: non documenta persone, sedi o installazioni EL-AI. Fonti consultate il 28 settembre 2026.

