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.
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.
APP: scala la distanza con la velocità attuale
APP in questo Lab significa lookahead scalato in velocità: Ld = clamp(v × T, Lmin, Lmax). Qui v è la velocità attuale, non quella target, e T è in secondi. Un'accelerazione da fermo rivela la transizione dal limite minimo. Questo non implementa la regolazione di velocità basata sulla curvatura di RPP.
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
- Coulter, Implementation of the Pure Pursuit Path Tracking Algorithm (1992): Riferimento sull'inseguimento geometrico.
- Documentazione Nav2 Iron RPP: Riferimento per la convenzione di APP scalato in velocità; questo Lab non è un'implementazione completa di Nav2.
- Lab PP
- MPC
Il download del sorgente è facoltativo. L'esecuzione nel browser non richiede alcuna installazione locale di Python. Sorgente + note sul modello.
Commenti
Accedi per continuare.
Nessun dato disponibile.