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

Tahmin edilen yolu izlerken çalıştırın

"Düz · 1 m ofset"i çalıştırın ve oynatın. Her andaki yeşil kesikli çizgiler, o anda çözülen tahmin edilen yoldur. MPC, ufuk boyunca eğrilik dizisinin tamamına karar verir, ancak araca yalnızca ilk değeri uygular ve bir sonraki döngüde (0,05 saniye sonra) her şeyi yeniden çözer. Tahmin edilen yol ile gerçek yol, hem tahmin modelinin bir yaklaşıklık olmasından hem de sonraki döngülerin planı güncellemesinden dolayı birbirinden farklılaşır.

Sonucu A olarak kaydedin, ardından "Kısa ufuk (3 adım)" veya "Uzun ufuk (30 × 0,2 s)"i çalıştırın. Aynı ağırlıklarla, kontrolörün ne kadar ileriye baktığı direksiyonun nasıl arttığını değiştirir. Saniye cinsinden ufuk uzunluğu, adım sayısı N ile adım Δt'nin çarpımıdır.

Tahmin modeli ve optimizasyon problemi

Durumlar, yola göre yanal hata e_y (sol pozitif) ve yönelim hatası e_ψ'dir. Tahmin, MPC için basitleştirilmiş doğrusal bir model kullanır.

e_{y,k+1} = e_{y,k} + v_k\,\Delta t\,e_{\psi,k},\qquad e_{\psi,k+1} = e_{\psi,k} + v_k\,\Delta t\,(u_k - \kappa_k)

u_k, komut verilen yol eğriliğidir [1/m]; κ_k, tahmin edilen konumdaki yol eğriliğidir; v_k ise araçla aynı hız servosuyla tahmin edilen hızdır. Direksiyon δ=atan(L u)'dır, dolayısıyla direksiyon sınırı |δ|≤δ_max, tam olarak eğrilik sınırı |u|≤tan(δ_max)/L'ye karşılık gelir. Maliyet

J = \sum_{k} q_y e_{y,k}^2 + q_\psi e_{\psi,k}^2 + r\,(u_k-\kappa_k)^2 + r_\Delta\,(u_k-u_{k-1})^2

yalnızca eğrilik sınırlarını içeren bir karesel program verir. u_{-1}, bir önceki döngüde gerçekte uygulanan eğriliktir. r, yol eğriliğinden sapmayı; r_Δ ise hızlı eğrilik değişimlerini ağırlıklandırır. Tahmin küçük açı yaklaşıklığıyla doğrusal bir modeldir, oysa araç doğrusal olmayan ortak bisiklet modelidir. Bu fark da deneyin gösterdiği şeylerden biridir.

Çözücü ve yakınsamadığında olanlar

Karesel program, izdüşümlü bir Newton yöntemiyle (Bertsekas 1982) çözülür. Bir sınıra dayanan değişkenler sabitlenir, kalanlar için bir Newton yönü hesaplanır ve sınırlara izdüşüm ardından bir doğru arama yapılır. İzdüşümlü gradyan artığı en fazla 1e-6 [1/m] olduğunda çözüm yakınsamış sayılır. Önceki döngünün çözümü başlangıç noktası olarak kullanıldığından, genellikle birkaç yineleme içinde yakınsar.

Yakınsama olmadan yineleme sınırına ulaşılırsa üç davranıştan birini seçebilirsiniz. "Uygulanabilir ara çözümü kullan", sınırlara uyan ara çözümü uygular ve döngüyü yakınsamamış olarak kaydeder. "Önceki komutu koru", önceki direksiyonu sürdürür ve döngüyü tutulmuş olarak kaydeder. "Durdur", çalıştırmayı bir başarısızlık (controller_failed) olarak sonlandırır ve nedeni gösterir. Bunları, tek yinelemeli sınırı kullanan üç ön ayarla karşılaştırın. Tek kısıtlama sınırlar olduğundan bu problem hiçbir zaman uygulanamaz değildir (her zaman bir çözüm vardır). Sert durum kısıtlamalarından kaynaklanan uygulanamazlık bu Laboratuvarın kapsamı dışındadır.

Kısıtlamalar, ağırlıklar ve hız

"8 m/s · varsayılan ağırlıklar" tamamlanır, ancak "8 m/s · küçük değişim hızı ağırlığı (ıraksıyor)" yoldan çıkar. Araç, direksiyon değişim hızını 0,8 rad/s ile sınırlar, ancak bu optimizasyon problemi bu sınırı bir kısıtlama olarak içermez. Küçük bir değişim hızı ağırlığı r_Δ ile plan, aracın takip edemeyeceği hızlı direksiyon değişimlerini varsayar ve salınım büyür. Bu, modelden eksik bir kısıtlamanın kapalı döngüyü bozmasına bir örnektir. "Yüksek yanal ağırlık" da ani düzeltmelerin direksiyon değişim hızı sınırına çarptığını gösterir.

"Dar viraj (takip edilemez)", aracın takip edemeyeceği 5 m yarıçaplı bir yoldur. Aynı koşullar altında Stanley Laboratuvarı da yoldan çıkar. Kontrol kuralını değiştirmek, araç ve kısıtlamaları tarafından belirlenen sınırların ötesine geçemez.

Ortak araç ve karşılaştırma ölçütleri

Araç, PP, APP, RPP ve Stanley ile ortak olan, arka aks referanslı ve yalnızca ileri yönde hareket eden kinematik bisiklet modelidir: en fazla 30 saniyeye kadar 0,05 s'lik adımlar, 8 m/s hız sınırı, ±2 m/s² ivme, 0,8 rad/s direksiyon değişim hızı. Hız, MPC tarafından optimize edilmez; diğer Laboratuvarlardaki gibi aynı a=2(hedef hız−gerçek hız) hız servosundan gelir. Bu Laboratuvarın MPC'si yalnızca direksiyonu ele alır.

Yanal hata, yönelim hatası, RMS ve uç nokta testi, diğer Laboratuvarlarla ortak olan tanımları arka aks üzerinde kullanır. Uç noktadan geçmek durma veya park etme anlamına gelmez. Farklı geçen sürelere veya tamamlanma durumlarına sahip çalıştırmaları yalnızca RMS'ye göre sıralamayın.

Hesaplama süresi hakkında

Çözücü süresi, bu tarayıcıdaki Python'un (Pyodide) duvar saati süresidir. Cihaza, tarayıcıya ve aynı anda çalışan başka işlemlere göre değişir; araç içi bilgisayardaki hesaplama süresi veya bir kontrol son tarihinin karşılanıp karşılanmayacağı hakkında hiçbir şey söylemez. Performans değerlendirmesi, hedef donanım ve uygulamada (örneğin OSQP gibi özel bir çözücüyle) en kötü durum çözüm süresinin ölçülmesini gerektirir.

Önerilen sıra

  1. Nominal çalıştırmayı oynatın ve tahmin edilen yolu gerçek yolla karşılaştırın.
  2. Ufuk adım sayısını ve adım büyüklüğünü değiştirin, direksiyonun artışını ve yanal hatayı karşılaştırın.
  3. Değişim hızı ağırlığının direksiyon değişim hızı sınırıyla ilişkisini görmek için iki 8 m/s ön ayarını kullanın.
  4. Yakınsamamış döngülerin nasıl ele alındığını karşılaştırmak için tek yinelemeli üç ön ayarı kullanın.

Her şey tarayıcınızda çalışır; oynatma, kare kare ilerletme, A/B karşılaştırması, sıfırlama, paylaşma ve JSON indirme dahil.

Referanslar ve ilgili Laboratuvarlar

Related reading

Explore another aspect of this fieldPure Pursuit Laboratuvarı — sabit ileri-bakış mesafeli yol takibini karşılaştırın