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.
Esegui mentre osservi il percorso previsto
Esegui "Dritto · offset di 1 m" e riproducilo. I tratteggi verdi in ogni istante sono il percorso previsto risolto in quel momento. L'MPC decide l'intera sequenza di curvatura sull'orizzonte, ma applica al veicolo solo il primo valore e ririsolve tutto nel ciclo successivo (0,05 s dopo). Il percorso previsto e quello effettivo differiscono sia perché il modello di previsione è un'approssimazione, sia perché i cicli successivi aggiornano il piano.
Salva il risultato come A, poi esegui "Orizzonte breve (3 passi)" o "Orizzonte lungo (30 × 0,2 s)". Con gli stessi pesi, quanto lontano guarda il controllore cambia il modo in cui si accumula la sterzata. La lunghezza dell'orizzonte in secondi è il numero di passi N moltiplicato per il passo Δt.
Modello di previsione e problema di ottimizzazione
Gli stati sono l'errore laterale e_y relativo al percorso (positivo a sinistra) e l'errore di rotta e_ψ. La previsione usa un modello lineare semplificato per l'MPC.
u_k è la curvatura di percorso comandata [1/m], κ_k la curvatura del percorso nella posizione prevista, e v_k la velocità prevista con lo stesso servo di velocità del veicolo. La sterzata è δ=atan(L u), quindi il limite di sterzata |δ|≤δ_max corrisponde esattamente al vincolo di curvatura |u|≤tan(δ_max)/L. Il costo
produce un programma quadratico con solo vincoli di curvatura. u_{-1} è la curvatura effettivamente applicata nel ciclo precedente. r pesa la deviazione dalla curvatura del percorso e r_Δ pesa i cambiamenti rapidi di curvatura. La previsione è un modello lineare a piccoli angoli, mentre il veicolo è il modello a bicicletta condiviso non lineare. Questa differenza fa parte di ciò che l'esperimento dimostra.
Il risolutore, e cosa succede quando non converge
Il programma quadratico è risolto con un metodo di Newton proiettato (Bertsekas 1982). Le variabili mantenute a un limite vengono fissate, viene calcolata una direzione di Newton per le rimanenti, e una ricerca in linea segue la proiezione sui limiti. La risoluzione è considerata convergente quando il residuo del gradiente proiettato è al massimo 1e-6 [1/m]. La soluzione del ciclo precedente è il punto di partenza, quindi normalmente converge entro poche iterazioni.
Se il limite di iterazioni viene raggiunto senza convergenza, puoi scegliere uno di tre comportamenti. "Usa l'iterata fattibile" applica l'iterata, che rispetta i limiti, e registra il ciclo come non convergente. "Mantieni il comando precedente" mantiene la sterzata precedente e registra il ciclo come mantenuto. "Arresta" termina l'esecuzione come un fallimento (controller_failed) e mostra il motivo. Confrontali con le tre preimpostazioni che usano un limite di una iterazione. Con i limiti come unici vincoli, questo problema non è mai irrealizzabile (una soluzione esiste sempre). L'irrealizzabilità dovuta a vincoli di stato rigidi è fuori dall'ambito di questo Lab.
Vincoli, pesi e velocità
"8 m/s · pesi predefiniti" si completa, ma "8 m/s · peso di variazione ridotto (diverge)" esce dal percorso. Il veicolo limita la velocità di sterzata a 0,8 rad/s, ma questo problema di ottimizzazione non include quel limite come vincolo. Con un piccolo peso di variazione r_Δ il piano presuppone cambiamenti rapidi di sterzata che il veicolo non può seguire, e l'oscillazione cresce. È un esempio di come un vincolo mancante dal modello comprometta il ciclo chiuso. "Peso laterale alto" mostra anche correzioni brusche che vanno a sbattere contro il limite di velocità di sterzata.
"Curva stretta (non seguibile)" è un percorso con raggio di 5 m che il veicolo non può seguire. Nelle stesse condizioni anche il Lab Stanley esce dal percorso. Cambiare la legge di controllo non può superare i limiti imposti dal veicolo e dai suoi vincoli.
Veicolo condiviso e metriche di confronto
Il veicolo è il modello cinematico a bicicletta con assale posteriore, solo in avanti, condiviso con PP, APP, RPP e Stanley: intervalli di 0,05 s fino a 30 s, limite di velocità di 8 m/s, accelerazione ±2 m/s², velocità di sterzata 0,8 rad/s. La velocità non è ottimizzata dall'MPC; deriva dallo stesso servo di velocità a=2(velocità target−velocità effettiva) degli altri Lab. L'MPC di questo Lab gestisce solo la sterzata.
L'errore laterale, l'errore di rotta, l'RMS e il test dell'endpoint usano le definizioni condivise con gli altri Lab, sull'assale posteriore. Superare l'endpoint non significa fermarsi o parcheggiare. Non classificare esecuzioni con tempi trascorsi o stati di completamento diversi solo in base all'RMS.
Sul tempo di calcolo
Il tempo del risolutore è il tempo reale (wall-clock) di Python (Pyodide) in questo browser. Cambia in base al dispositivo, al browser e a qualsiasi altra cosa in esecuzione, e non dice nulla sul tempo di calcolo su un computer di bordo del veicolo o se una scadenza di controllo verrebbe rispettata. La valutazione delle prestazioni richiede la misurazione del tempo di risoluzione nel caso peggiore sull'hardware e l'implementazione target (ad esempio un risolutore dedicato come OSQP).
Sequenza suggerita
- Riproduci l'esecuzione nominale e confronta il percorso previsto con il percorso effettivo.
- Cambia il numero di passi dell'orizzonte e la dimensione del passo, e confronta l'accumulo di sterzata e l'errore laterale.
- Usa le due preimpostazioni a 8 m/s per vedere come il peso di variazione si relaziona al limite di velocità di sterzata.
- Usa le tre preimpostazioni a una iterazione per confrontare come vengono gestiti i cicli non convergenti.
Tutto viene eseguito nel tuo browser, con riproduzione, avanzamento fotogramma per fotogramma, confronto A/B, reset, condivisione e download JSON.
Commenti
Accedi per continuare.
Nessun dato disponibile.