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.
Jalankan sambil mengamati jalur prediksi
Jalankan "Straight · 1 m offset" dan putar ulang. Garis putus-putus hijau pada setiap momen adalah jalur prediksi yang diselesaikan pada saat itu. MPC memutuskan seluruh urutan kelengkungan pada horizon, tetapi hanya menerapkan nilai pertama ke kendaraan dan menyelesaikan ulang semuanya pada siklus berikutnya (0,05 dtk kemudian). Jalur prediksi dan jalur aktual berbeda baik karena model prediksi adalah pendekatan maupun karena siklus berikutnya memperbarui rencana.
Simpan hasilnya sebagai A, kemudian jalankan "Short horizon (3 steps)" atau "Long horizon (30 × 0.2 s)". Dengan bobot yang sama, seberapa jauh ke depan pengontrol melihat mengubah cara kemudi terbentuk. Panjang horizon dalam detik adalah jumlah langkah N dikali langkah Δt.
Model prediksi dan masalah optimasi
Keadaan adalah kesalahan lateral e_y relatif terhadap jalur (kiri positif) dan kesalahan heading e_ψ. Prediksi menggunakan model linier yang disederhanakan untuk MPC.
u_k adalah kelengkungan jalur yang diperintahkan [1/m], κ_k adalah kelengkungan jalur pada posisi prediksi, dan v_k adalah kecepatan yang diprediksi dengan servo kecepatan yang sama dengan kendaraan. Kemudi adalah δ=atan(L u), sehingga batas kemudi |δ|≤δ_max persis sama dengan batas kelengkungan |u|≤tan(δ_max)/L. Biaya
menghasilkan program kuadratik dengan hanya batas kelengkungan. u_{-1} adalah kelengkungan yang benar-benar diterapkan pada siklus sebelumnya. r memberi bobot pada penyimpangan dari kelengkungan jalur dan r_Δ memberi bobot pada perubahan kelengkungan yang cepat. Prediksi adalah model linier sudut-kecil, sedangkan kendaraan adalah model sepeda nonlinier bersama. Perbedaan itu adalah bagian dari apa yang ditunjukkan eksperimen ini.
Pemecah masalah, dan apa yang terjadi ketika tidak konvergen
Program kuadratik diselesaikan dengan metode Newton terproyeksi (Bertsekas 1982). Variabel yang berada pada batas ditetapkan tetap, arah Newton dihitung untuk sisanya, dan pencarian garis mengikuti proyeksi ke batas. Penyelesaian dianggap konvergen ketika residual gradien terproyeksi paling banyak 1e-6 [1/m]. Solusi siklus sebelumnya menjadi titik awal, sehingga biasanya konvergen dalam beberapa iterasi saja.
Jika batas iterasi tercapai tanpa konvergensi, Anda dapat memilih salah satu dari tiga perilaku. "Use feasible iterate" menerapkan iterasi yang, meski memenuhi batas, mencatat siklus tersebut sebagai tidak konvergen. "Hold previous command" mempertahankan kemudi sebelumnya dan mencatat siklus tersebut sebagai ditahan. "Stop" mengakhiri jalannya sebagai kegagalan (controller_failed) dan menampilkan alasannya. Bandingkan ketiganya dengan tiga preset yang menggunakan batas satu iterasi. Dengan batas sebagai satu-satunya kendala, masalah ini tidak pernah tidak layak (solusi selalu ada). Ketidaklayakan akibat kendala keadaan keras berada di luar cakupan Lab ini.
Kendala, bobot, dan kecepatan
"8 m/s · default weights" selesai dengan baik, tetapi "8 m/s · small rate weight (diverges)" keluar dari jalur. Kendaraan membatasi laju kemudi hingga 0,8 rad/dtk, tetapi masalah optimasi ini tidak menyertakan batas tersebut sebagai kendala. Dengan bobot laju r_Δ yang kecil, rencana mengasumsikan perubahan kemudi cepat yang tidak dapat diikuti kendaraan, dan osilasi membesar. Ini adalah contoh kendala yang hilang dari model yang merusak loop tertutup. "High lateral weight" juga menunjukkan koreksi mendadak yang membentur batas laju kemudi.
"Tight curve (cannot follow)" adalah jalur dengan radius 5 m yang tidak dapat diikuti kendaraan. Dalam kondisi yang sama, Lab Stanley juga keluar dari jalur. Mengubah hukum kontrol tidak dapat melampaui batas yang ditetapkan oleh kendaraan dan kendalanya.
Kendaraan bersama dan metrik perbandingan
Kendaraan adalah model bicycle kinematik poros-belakang maju-saja yang sama yang digunakan PP, APP, RPP, dan Stanley: langkah 0,05 dtk hingga 30 dtk, batas kecepatan 8 m/dtk, akselerasi ±2 m/dtk², laju kemudi 0,8 rad/dtk. Kecepatan tidak dioptimasi oleh MPC; kecepatan berasal dari servo kecepatan yang sama a=2(kecepatan target−kecepatan aktual) seperti Lab lainnya. MPC pada Lab ini hanya menangani kemudi.
Kesalahan lateral, kesalahan heading, RMS, dan uji titik akhir menggunakan definisi yang sama dengan Lab lainnya, pada poros belakang. Melewati titik akhir bukan berarti berhenti atau parkir. Jangan memperingkat jalannya dengan waktu berlalu atau state penyelesaian yang berbeda hanya berdasarkan RMS.
Tentang waktu komputasi
Waktu pemecah masalah adalah waktu nyata (wall-clock) Python (Pyodide) di peramban ini. Waktu ini berubah tergantung perangkat, peramban, dan apa pun yang berjalan bersamaan, dan tidak mengatakan apa pun tentang waktu komputasi pada komputer di dalam kendaraan atau apakah tenggat waktu kontrol akan terpenuhi. Evaluasi kinerja memerlukan pengukuran waktu penyelesaian kasus terburuk pada perangkat keras dan implementasi target (misalnya pemecah masalah khusus seperti OSQP).
Urutan yang disarankan
- Putar ulang jalannya nominal dan bandingkan jalur prediksi dengan jalur aktual.
- Ubah jumlah langkah horizon dan ukuran langkah, lalu bandingkan pembentukan kemudi dan kesalahan lateral.
- Gunakan dua preset 8 m/s untuk melihat bagaimana bobot laju berkaitan dengan batas laju kemudi.
- Gunakan tiga preset satu-iterasi untuk membandingkan bagaimana siklus yang tidak konvergen ditangani.
Semuanya berjalan di peramban Anda, dengan pemutaran, langkah bingkai, perbandingan A/B, reset, berbagi, dan unduhan JSON.
Komentar
Silakan masuk terlebih dahulu.
Belum ada data.