• Sonuç bulunamadı

5. MOBİL ROBOT BENZETİM ARAYÜZÜ

5.1. Benzetim Arayüzünün Yapısı

Uygulamada karşılaşılan çok sayıda problemin gerçek zaman koşullarında giderilmesi zaman ve enerji maliyeti yüksek bir iştir. Gerçek dünya koşullarına yakın seçenekler sunan benzetim arayüzleri üzerinde yapılan testler ve bu testlerde elde edilen bulgular gerçek dünya deneylerine ön hazırlık olarak destek olmaktadır. Benzetim arayüzleri üzerinde fiziksel dış etkenlerden daha çok metotlar üzerinde iyileştirmeler veya köklü değişikliler yapmak mümkündür. Tez kapsamında geliştirilen mobil robot platformunun kinematik yapısı baz alınarak geliştirilen benzetim arayüzü üzerinde, yol planlama, güvenli navigasyon ve Kalman filtresi gibi metotlar test edilmiş, gerçek dünya deneylerine tatmin edici düzeylerde eşdeğer sonuçlar alınmıştır. Modellenebilen diğer kinematik robot türlerine de uyarlanabilen arayüzde 2 veya 3 boyutlu statik ve dinamik haritalar kurgulanabilmektedir. Tez kapsamında çalışılan iç mekânın yüksek hassasiyetli lazer ölçüm cihazları ile ölçülerek çıkarılan 2 ve 3 boyutlu haritaları varsayılan olarak eklenmiştir. Bu haritanın dışında çok sayıda deneysel harita, labirent ve zorlayıcı parkurlar tanımlanmış, hareketli hedefler ve engeller altında geliştirilen metotların hangi çıktıları verdiği gözlemlenmiştir. Dinamik yol planlama, çarpışma engelleme ve LIDAR verilerini işleme gibi kritik metotlar geliştirilen benzetim arayüzü üzerinde test edilerek fiziksel platforma entegre edilmiştir. Mobil robot platformunun çalışması sırasında uzak PC üzerinden takip edilmesi ve LIDAR verilerinin takip edilmesi de geliştirilen arayüz ile sağlanmaktadır. Fiziksel robot ve çalıştığı harita eş zamanlı olarak arayüz üzerinde gerçek zamanlı olarak koşturulabilmekte veya sanal mobil robot sanal harita üzerinde çevrim dışı olarak çalıştırılabilmektedir. Benzetim arayüzü üzerinde LMS100 LIDAR sensörü modellenerek sanal bir LIDAR arayüzü de oluşturulmuştur. Bu model üzerinde sensöre ait tarama açısı, çözünürlüğü ve maksimum ölçüm limiti belirlenebilmektedir. Bu sayede engel algılama, açıklık tespiti, hareket kestirimi, çarpışma engelleme ve diğer LIDAR tabanlı navigasyon metotları çevrimdışı olarak geliştirilebilmektedir. Tanımlanan engel kütüphanesinde

sık kullanılan objeler 3 boyutlu olarak tanımlanmıştır. Bunların dışında koni, dikdörtgen prizma, küre, yamuk gibi temel geometrik cisimler ölçeklendirilebilir biçimde haritalara eklenip silinebilmektedir. Engeller ve haritayı oluşturan duvar gibi yapılar bilinen statik veya bilinmeyen dinamik engeller olarak tanımlanabilmektedir. Mobil robot modellenirken tekerlek ve LIDAR yerleşimi belirlenebilmektedir. Geliştirilen benzetim arayüzü bir sanal gerçeklik arayüzü ve LIDAR arayüzünden (LA) oluşmaktadır. VR arayüzü üzerinde harita, mobil robot, engeller, planlanan yol ve izlenen yol bilgileri global eksende yer almaktadır. LA üzerinde ise mobil robot, anlık engel profili, açıklık düzeni, lokal hedef, çarpışma noktası ve güvenli lokal hedef konumları lokal koordinat sistemine göre izlenebilmektedir. VR arayüzü üzerinde kullanıcı, tanımlanmış tüm kontrolleri yapabilmektedir. Harita yükleme, engel kütüphanesine erişilerek engel ekleyip silme, robot başlangıç konumu belirleme, global hedef belirleme, mesaj panelini görüntüleme, benzetimi başlatma, duraklatma, durdurma ve duraklatıp bilinmeyen engel ekleme, harita çıkarma, AMCL (Adaptive Monte Carlo Localization) eklentisini çalıştırma gibi işlemlerin tamamı bu arayüzde tanımlanmıştır. Kullanıcının bu pencereden erişebildiği engel kütüphanesi alt menüsünde küp, silindir, koni, küre ve masa şekilleri tanımlıdır. Tüm şekiller üç eksende bağımsız olarak ölçeklendirilebilmekte ve istenilen açıda haritaya konumlandırılabilmektedir. Benzetim sürerken duraklatıp engel ekleme ve kaldırma işlemi ile bilinmeyen bir engel profili çizilebilmektedir. Bu işlem fare ile sürükleme yolu ile gerçekleştirilebileceği gibi konsol üzerinden de ilgili komut girilerek gerçekleştirilebilmektedir. VR arayüzü üzerinde oluşturulan bir harita ve engel senaryosu kaydedilip daha sonra kullanılmak üzere saklanabilmektedir.

Şekil 5.1. Engel listesi arayüzü

Şekil 5.2. VR arayüzü

Şekil 5.3. Örnek VR arayüzü

LA üzerinde anlık olarak LIDAR ölçümleri gözlemlenebilmektedir. Sensörün robot üzerinde konumlandırıldığı konuma bağlı olarak engellerin ölçüm noktaları bu

ekranda yatay kesit olarak konumlanmaktadır. Örnek bir VR arayüzü ve anlık LA görüntüsü sırasıyla Şekil 5.3 ve Şekil 5.4’te verilmiştir.

Şekil 5.4. Örnek LA penceresi

Tablo 5.1. VR ve LA sembollerinin açıklamaları

Sembol Monitör Tanımı

VR Mobil robot

. . VR Bilinen engeller

. . VR Bilinmeyen engeller

VR Statik yol

VR İzlenen (dinamik) yol VR Kestirilen yol

VR Global hedef

……..

LA Engel ölçümleri

LA Çarpışma noktası

X LA Lokal hedef

LA Güvenli lokal hedef LA Tespit edilen açıklık LA Filtrelenmiş açıklık

LA Optimal açıklık

LA Mobil robot

Gri renkle gösterilen zemin, duvar ve diğer nesneler bilinen haritaya ait objeler, kırmızı renkli duvarlar ise önceden bilinmeyen engelleri göstermektedir. Yeşil renkli statik yol, bilinmeyen engeller ihmal edilerek planladığı için engellerle kesişmektedir. Kırmızı renkli kesikli yol dinamik olarak izlenen ve kırmızı sürekli

yol ise güncellenen statik koşullar altında yeniden planlanan yol olarak verilmektedir. Bu anlık durum için LA görüntüsü Şekil 5.4’te gösterilmiştir.

Tablo 5.2. VR arayüz mesajları ve açıklamaları

Mesaj Tanımı

Navigating the robot Navigasyon başarılı bir şekilde başladı ve robot global hedefe doğru ilerlemektedir.

The mobile robot successfully reached the target

Robot global hedefe belli bir tolerans bandında ulaşmıştır.

No obstacles on the path, heading directly towards the target

Robot global hedefe güvenli bir koridor boyunca ilerlemektedir.

Robot is on collision course Çarpışma noktası tespit edilmiştir. Çarpışma engelleme fonksiyonu aktive edilmiştir.

Cannot assign a local target Hiçbir açıklık bulunamamıştır. Lokal minimum durumundan çıkış moduna geçilmiştir.

Target is unreachable

Verilen hedefe kurtarma modlarının uygulanmasına rağmen erişilememektedir. Hedef çevresi tamamen kapalıdır.

Tablo 5.3. Fonksiyonların ortak giriş-çıkış parametreleri

Parametre Tanımı

Imap_BW Serbest ve statik engellenmiş bölgeleri içeren hücre tipi global harita

Ireal_BW Dinamik ve statik engelleri ortak olarak içeren hücre tipi global harita

robotPosition Mobil robotun global koordinat sistemine göre konumu distMtrx Verilen statik haritanın hücresel maliyet matrisi

LIDAR LIDAR tarafından okunan uzaklık ölçüm vektörü lidarRes LIDAR açısal ölçüm çözünürlüğü (0.5o veya 1o) start, target Robotun başlangıç ve hedef konum vektörleri

KalmanFilter Durum kestirimi, giriş, anlık ölçüm, proses, ölçüm ve kovaryansı parametrelerini içeren bir yapı SystemModel Durum ve giriş vektörlerini saklayan yapı

safeGaps Robotun geçebileceği açıklıklar

OptimalGap Üzerinde optimal lokal hedefin tanımlandığı açıklık OptimalGapDist Optimal açıklığın genişliği

gapDist Tespit edilen açıklıkların genişlik dizisi

localTarget Lokal hedefin global koordinat sistemindeki 2 boyutlu konum vektörü localTarget_upd Güvenli manevra noktasının konum vektörü

dist2Collision Kritik bir mesafenin altındaki engellerden en yakınına olan mesafe

Vl Sol tekerlek hızı (in cm/sn)

Verilen LA penceresinde sanal robot, anlık olarak tespit edilen açıklıklar, revize edilmiş açıklıklar, optimal açıklık, lokal hedef, çarpışma noktası, güvenli manevra noktası ve engeller görülmektedir. Eksenlerdeki ölçü birimleri metre türündendir. VR arayüzünde ve LA penceresinde kullanılan tüm simgeler ve açıklamaları Tablo 5.1’de verilmiştir. VR arayüzü üzerinde bulunan mesaj panelinde navigasyon sırasında oluşan tanımlı durumlar kullanıcıya bildirilmektedir. Bu mesajlar ve tanımları Tablo 5.2’de verilmiştir. Benzetim arayüzü üzerinde tanımlı çok sayıda fonksiyon ve alt fonksiyon bulunmaktadır. Bu bölümde sık kullanılan ve metotlarla doğrudan ilgili olan fonksiyonlar verilecektir. Bu fonksiyonlarda kullanılan ortak giriş çıkış parametreleri Tablo 5.3’te verilmiştir.

Sık kullanılan fonksiyonlar maddeler halinde verilmiştir:

- [LIDAR] = acquireLIDARdata (robotPosition): Verilen robot konumuna göre sanal LIDAR ölçüm çıktısı veren fonksiyon.

- [safeGaps, gapDist] = FindObstacleFreeGaps (robotPosition, LIDAR): Engeller arasından robotun geçebileceği aralıkları hesaplayan fonksiyon. Açıklıklar engel köşelerini birleştiren doğru parçaları olarak tanımlanmaktadır.

- distMtrx = fcn_dist_trans (Ireal_BW, target): Verilen statik harita ve hedef noktası için mesafe dönüşüm matrisini hesaplayan fonksiyon.

- [localTarget, OptimalGap, OptimalGapDist] = SetLocalTarget (safeGaps, gapDist, distMtrx, robotPosition, LIDAR): Mobil robot konumu, açıklık konfigürasyonu ve mesafe dönüşüm matrisi girişleri için optimal lokal hedef hesaplayan fonksiyon. - [Vr, Vl] = SpeedController (robotPosition, localTarget, dist2Collision): Lokal hedefe ulaşmak için geren sağ ve sol tekerlek hızlarını hesaplayan fonksiyon. Hedef konumu, robot konum vektörü ve çarpışma noktasının konumu giriş olarak verilir. - posEst = LocalizeRobot (): Mobil robotun konumunu veren fonksiyon.

- kalman_filter (KalmanFilter): Kalman filtresinin uygulayan fonksiyon.

- system_model (SystemModel): Kinematik model kullanılarak mobil robotun konumunu hesaplayan fonksiyon.

- displayPath (xp, yp, type): Planlanan (type:1), kestirilen (type:2), takip edilen (type:3) veya diğer bir yol (type:4) görselinin VR arayüzü üzerinde gösterilmesini sağlayan fonksiyon.

- deletePath (type): Belirlenen tipteki bir yolun VR arayüzü üzerinden silinmesini sağlayan fonksiyon.

- [localTarget_upd] = CollisionAvoidance (robotPosition, localTarget, OptimalGap, safeGaps, gapDist, OptimalGapDist, LIDAR): Lokal hedefe yönelim sırasında olası bir çarpışma noktası olup olmadığını kontrol eden fonksiyon. Bu tip bir engelin var olması durumunda güvenli manevra noktası tanımlanır.

- [objNo] = insertObject (pos, scale, strObj): Verilen bir konuma bir engel eklemek için kullanılan fonksiyon. ‘pos’ vektörü engele ait yatay, düşey konumları ve açısal oryantasyonu kapsamaktadır. strObj parametresi alanına ‘Box’, ‘Cone’, Cylinder’, ‘Sphere’ veya ‘Table’ parametreleri girilerek objenin kütüphanede tanımlı türü belirlenebilir. scale parametresi 3 eksende boyut ölçeği olarak 0 ile 1 arasında tanımlanmalıdır. Her objeye objNo parametresinde saklanan benzersiz bir indeks atanır. Bu indeks kullanılarak ilgili obje daha sonra silinebilir veya konumu değiştirilebilir.

- deleteObject(objNo): ‘objNo’ parametresi ile belirtilen indeksli objeyi silen fonksiyon.

- moveObject(objNo, pos): Verilen indeksteki objenin konumunu belirleyen fonksiyon.

- setGlobalTarget(pos): Global hedef konumunun belirlenmesi için çağırılan fonksiyon. ‘pos’ vektörü dinamik olarak tanımlanarak hareketli hedef takibi uygulaması yapılabilmektedir.

- NAV_tangentBug(): Navigasyon algoritması olarak Tangent bug algoritmasının seçimini yapan fonksiyon.

- NAV_dynaBug(): Varsayılan navigasyon algoritması olarak tez kapsamında geliştirilen dinamik yol planlama ve güvenli navigasyon metodunu belirleyen fonksiyon.

- NAV_customCode(): Kullanıcılar kendi özgün yol planlama ve navigasyon metotlarını geliştirmek için gerekli tanımlama ve işlemleri bu fonksiyonun altında gerçekleştirmelidirler.