Kanca
RRT'nin bulduğu yolu insan eliyle çizseydin, muhtemelen çok daha az köşeli, daha akıcı bir çizgi çizerdin. Bir insan neden bir algoritmadan daha "zevkli" bir yol çizer?
Ya şunu denesen? Bir engelin boyutunu iki katına çıkarsan planlayıcılar hâlâ yol bulur mu?
Nasıl hesaplandı?Tablodaki yol uzunluğu, ham (x, y) nokta dizisinin toplam mesafesidir — dizinin kendisi burada.
Her algoritmanın döndürdüğü PlanResult.path, ardışık (x, y) noktalarından oluşur; yukarıdaki tablonun “Yol uzunluğu” sütunu bu dizideki ardışık noktalar arası mesafelerin toplamıdır (pathLength, lib/robotics/planners).
Ne oldu
RRT'nin ürettiği yol, ağacın nasıl büyüdüğünü birebir yansıtır: her
düğüm, rastgele bir örneğe doğru sabit bir stepSize kadar atılan bir
adımdır. Yol bu adımların ZİNCİRİDİR — ağacın kendisi optimum bir çizgi
aramadığı için, yol da gereksiz sapmalar, küçük geri dönüşler içerebilir.
Bu platform şu an bir düzleştirme algoritması ÇALIŞTIRMIYOR (bkz.
docs/03-yol-haritasi.md Faz 2 kapsamı) — ama fikri basittir, kısayol
(shortcutting) yöntemiyle özetlenebilir:
- Yoldaki iki rastgele noktayı (aralarında başka düğümler olsun) seç
- Bu iki nokta arasındaki DOĞRU çizginin çarpışmasız olup olmadığını
kontrol et (
isSegmentFreeile — bir önceki derste gördüğün aynı test) - Çarpışmasızsa, aradaki tüm zikzaklı düğümleri at, doğrudan bu iki noktayı birleştir
- Bunu birçok kez tekrarla; yol giderek kısalır ve düzleşir
RRT*'ın rewire adımı da benzer bir etki yaratır (gördüğün gibi RRT*'ın yolu RRT'ninkinden daha düzdü) ama düzleştirme AYRI bir son-işlem (post-processing) adımı olarak da uygulanabilir — hatta A*'ın ızgara kaynaklı "merdiven basamağı" görünümlü yollarına bile uygulanabilir.
Gerçek dünyada
Bir robot koluna zikzaklı bir yörünge göndermek, gereksiz ivme
değişimlerine (sarsıntıya) ve daha fazla enerji tüketimine yol açar.
Endüstriyel offline programlama yazılımları, RRT benzeri bir planlayıcı
bir yol bulduktan sonra bu yolu MUTLAKA düzleştirir/yumuşatır —
b-kinematik hattındaki hız ve ivme profilleri dersinde gördüğün yamuk
profil/S-eğrisi mantığı da aslında bu düzleştirmenin bir başka
biçimidir: konumda değil hızda yumuşatma.
Dene
Sahnede engelli bir düzende RRT çalıştır, yola bak: kaç tane "gereksiz" köşe sayabiliyorsun? Zihninde, yol üzerindeki uzak iki noktayı düz bir çizgiyle birleştirmeyi dene (kağıt-kalemle üstüne çizebilirsin) — çizgi bir engelin içinden mi geçiyor, yoksa güvenli mi?
Şimdi bir karar ver: aşağıda üç aday kısayol var. Kısaltma algoritması HANGİLERİNİ gerçekten uygular?
Sonraki
Hat C burada tamamlanıyor — labirentte yol bulmaktan, C-space'e, örneklemeli planlamaya ve yol kalitesine kadar geldin. Hat A'da robotun KENDİSİNİN (eksenleri, koordinat sistemleri, mimarisi) temellerine dönebilirsin.