Contents — find the section you need

Change parameters and verify

Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.

Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.

The experiment controls are in English.

Open experiment panel in a new tab

Download reproduction source

Segui un percorso nel tuo browser

Premi Esegui nel pannello del browser sopra. Il grigio è il percorso di riferimento; il blu è la traiettoria dell'assale posteriore. Il cerchio mostra il lookahead, il punto è il target, e il segmento è il passo (wheelbase). Riproduci, metti in pausa, avanza passo-passo o scorri l'esecuzione per ispezionare dove inizia la sterzata. La tabella numerica e il JSON scaricabile contengono i risultati calcolati.

PP: mantieni la distanza fissa

PP mantiene fisso il lookahead Ld selezionato anche quando la velocità cambia. Esegui la curva nominale, salvala come A, poi prova Lookahead breve e Lookahead lungo. Confronta sterzata e completamento oltre all'errore di inseguimento.

Il selettore del controllore commuta tra PP e APP. Il lookahead fisso influisce solo su PP; tempo e limiti influiscono solo su APP. Salva un'esecuzione come A e cambia solo il controllore per mantenere percorso, stato iniziale, comando di velocità e veicolo. Anche i preset azzerano le altre condizioni, quindi controlla le differenze di parametri visualizzate.

Geometria del target

A partire dalla proiezione più vicina sul percorso, scegli la prima intersezione in avanti, per lunghezza d'arco, del percorso con il cerchio di raggio Ld intorno all'assale posteriore. Per il target (xb, yb) nel sistema di riferimento del veicolo, curvatura κ = 2 yb / (xb² + yb²), quindi sterzata δ = atan(L κ). Sinistra è positivo.

Quando non c'è intersezione, fai avanzare Ld lungo la lunghezza d'arco del percorso dalla proiezione e limita al punto finale. La visualizzazione distingue i target di cerchio, recupero ed endpoint; la curvatura usa sempre la distanza al quadrato reale del target. Un target dietro il veicolo, o coincidente con esso prima del completamento, termina l'esecuzione con un motivo. Queste regole di recupero ed endpoint sono scelte didattiche, non una riproduzione di Nav2.

Modello comune e confronti equi

Lo stato è l'assale posteriore (x, y) [m], l'imbardata antioraria [rad], e la velocità in avanti v [m/s]. Le equazioni sono dx/dt=v cos(yaw), dy/dt=v sin(yaw), dyaw/dt=v tan(δ)/L. L'offset laterale iniziale è positivo a sinistra del primo segmento; l'offset di rotta è relativo a quel segmento. I percorsi sono polilinee aperte: dritto, quarti di cerchio di raggio 20 m e raggio 5 m, oppure una curva a S. La spaziatura predefinita è 0,1 m (in x per la curva a S).

Il passo temporale è 0,05 s per al massimo 30 s. I limiti sono 8 m/s di velocità, ±2 m/s² di accelerazione, ±0,6 rad di sterzata, 0,8 rad/s di variazione della sterzata. La sterzata iniziale è zero. Ogni intervallo applica un limite di slew discreto sulla sterzata, poi la mantiene fissa. Il moto a curvatura costante è integrato esattamente, inclusa l'accelerazione fino a velocità zero/massima e velocità costante in seguito. Entrambi i controllori usano a=2(vtarget−v). Non sono modellati attrito, inerzia, slittamento delle gomme, ostacoli o ritardo di misura.

L'errore di cross-track è lo spostamento normale sinistro con segno dal segmento più vicino. L'errore di rotta è l'imbardata del veicolo meno la tangente proiettata, avvolto in [-π,π). L'RMS usa l'integrazione temporale trapezoidale dei campioni al quadrato divisa per il tempo trascorso. La sovraelongazione longitudinale al punto finale è esclusa dal CTE ma inclusa nella distanza euclidea dal percorso. L'RMS del tasso di sterzata include la transizione iniziale da zero e descrive comandi discreti.

Il completamento significa che la lunghezza d'arco proiettata residua e la distanza dal punto finale sono entrambe ≤0,25 m, con la rotta entro 0,15 rad rispetto all'ultimo segmento. È un passaggio campionato dell'endpoint, non un arresto o un parcheggio; il passaggio tra campioni può essere mancato. Una distanza superiore a 10 m termina un'esecuzione come fuori percorso; 30 s è il limite di tempo. Il tempo di passaggio incompleto è "—". Le esecuzioni parziali e i tempi trascorsi diversi non devono essere classificati solo per errore. Politiche di velocità uguali possono comunque produrre tempi di completamento diversi. Questo modello sintetico non stabilisce la sicurezza hardware o le prestazioni ad alta velocità.

Esempi sintetici riproducibili

Questi valori sono stati generati da Python nativo con lo stesso codice. La curva dolce usa velocità iniziale e target 2 m/s, offset laterale iniziale 1 m, offset di rotta zero e passo (wheelbase) 2,5 m.

Impostazione Stato Trascorso [s] CTE RMS [m]
short controller_failed 1,80 0,72123
nominal completed 15,70 0,25996
long completed 15,50 0,37896

Riferimenti e Lab correlati

Il download del sorgente è facoltativo. L'esecuzione nel browser non richiede alcuna installazione locale di Python. Sorgente + note sul modello.

Related reading

Leggi il controllo predittivo e i vincoliIntroduzione all'ingegneria del controllo: controllo predittivo basato su modello - Agire entro i vincoli.Explore another aspect of this fieldLab MPC — ririsolvi una sequenza di curvatura entro un orizzonte e vincoli di sterzataExplore another aspect of this fieldLab di confronto tra inseguitori di percorso — esegui PP, APP, RPP, Stanley e MPC nelle stesse condizioni