• Sonuç bulunamadı

4. Sensörler

4.2. ZED STEREO KAMERA

ZED Kameralar, otonom navigasyon ve AR (arttırılmış gerçeklik) uygulamalarına yönelik üretilmiş bir stereo kameradır. Derinlik algısı bu uygulamalar için oldukça önemlidir ve ZED markası bu noktada insanda görme (human vision) yapısını taklit etmektedir. Stereolabs firması ZED kameralar ile birden fazla AR probleminin üstesinden gelmiştir: bunlar konumsal izleme (positional tracking) ve açık alanda istenen kalitede 3D görüntülerin elde edilmesidir.

Şekil-47

ZED Kameralar basitçe drone, insansız hava aracı, araba veya robota takılmakta ve bu yapılara 3D görüntüyle birlikte bir derinlik algısı kazandırmaktadır. ZED, IR veya lazer ışığı (projeksiyon yöntemi) ile çalışmaz. Sadece iki VGA kamerası vardır. Bu kameralar harici bir GPU ile konuşur ve Stereolab'ın özel yazılımı sağ ve sol kameranın verdiği görüntüler arasındaki küçük piksel farklılığından derinlik bilgisini çıkarır (stereovision). Bu şekilde Microsoft Kinect gibi IR tabanlı teknolojilerin kısıtlarından kurtularak kapalı ve açık alanlarda sağlıklı görüntüler elde edilir. Bu aynı zamanda kullanıcının 3D görüntü içinde nerede olduğunu anlayabilme (positional tracking) sorununu da çözmektedir. ZED tüm işi kendi yapmaz, verileri (video imajları) takıldığı host bilgisayara gönderir. İstenen performansa ulaşmak için Stereolabs NVIDA grafik kartına sahip "CUDA-capable" bilgisayarları tavsiye edilmektedir (Özellikle küçük boyutlu CPU-GPU barındıran ve 3D Stereo işleyebilen NVIDA JETSON TK1).

Şekil-48

ZED'le ayrıca 3D görüntüler ve nesneler yakalanıp bilgisayar animasyonları ve renderlara eklenebilir, objelerin detaylı 3D görüntüleri elde edilip 3D printer üzerinden çıktısı alınabilir. Katılımcıların Oculus Rift gibi HMD (Head Mounted Displays) giydiği bir topluluk için 3D video konferans düzenlenebilir veya bir kalabalık içindeki insan sayısı çıkartılabilir.

Akıllı telefon kamera teknolojisine dayanan ZED kamera, küçük, hafif, düşük maliyetli ve yine de yüksek kaliteli çıktıya sahip olacak şekilde tasarlanmıştır. İki kameranın 16 x 9 geniş ekran formatında 4.416 x 1.242 piksel sensörü vardır. Kamera optiği, 110 derecelik görüş alanına izin vermektedir. ZED’in sensörleri 120mm (4,7 inç) aralıklıdır, bu da 1,5 ile 20m arasında stereo derinlik bilgisi sağlamaktadır.

ZED kamerayı ROS sistemine uyumlu olması ve kullanmış olduğumuz algoritmaları en sağlıklı şekilde çalıştırabilme yeteneği için tercih edilmiştir.

6.3. Sensörlerin Konumlandırılması

Sensörlerimiz kabuk üzerinde sağlam ve titreşimi engelleyen mekanizmalar ile ölçülere uygun şekilde konumlandırılmıştır. Lidar sensörü kabuğun en alt ve en sabit kısmına denk gelecek şekilde yerleştirilmiştir. ZED kamera ise levhaları görecek şekilde kabuğun en üst noktasına yerleştirilmiştir. Sensörlerin konumu şekil-49 belirtildiği gibidir.

Şekil-49 Sensörlerin Araçtaki Konumlandırılması

Lidar, kabuk sınırlarını aşmayacak şekilde kabuk yüzeyinden alınarak yapılan tasarım ile kabuğa sabitlenmiştir. Mekanizma denemeler sırasında 3D parçanın sıcaklıktan etkilenmemesi için köpük ile kaplanmıştır. Mekanizmanın tasarımı ve son hali Şekil-52 de verilmiştir.

Şekil-50

Şekil-51

Şekil-52 Lidar Mekanizmasının Kabuktaki Konumu

Şekil-53 Kamera Mekanizmasının Kabuktaki Konumu

6.4.Sensör Füzyon Algoritmaları

Sensör füzyon farklı kaynaklar tarafından üretilmiş olan verilerin (kamera ve lidar) birleştirilerek sistemde kullanılması anlamına gelir. Kullanma sebebimizde bilgilerin daha anlaşılır ve daha az belirsiz olmasıdır. Çalışma mantığında da sensörlerin birbirlerine göre kalibre edilmeleri gerekmektedir. Bu kalibrasyon, kamera ekseni ile lidar ekseni arasındaki lineer ve açısal dönüşümü ifade eden bir dönüşüm matrisi yardımı ile yapılmıştır.

Birbirini daima tekrar eden iki adımdan oluşur:

1. Tahmin

Tahmin aşaması, aracın bulunduğu andaki çevresini algılama işlemidir. Etraftaki objelerin yerleri tahmin edilir.

2. Güncelleme

Güncelleme kısmı ise yeni gelen sensör verisini, daha önce tahmin edilen çevreye göre anlamlandırarak çevreyi güncellemektir.

Kamera kalibrasyonu için yansıtma ve bozulma matrisleri kullanılmaktadır. Kalman Filtresi sistemin önceki durumlarına göre, bir sonraki durumlarını tahmin eden ve bunu yapabilmek için sistemin matematiksel modelini oluşturan bir algoritmadır. Biz de sensor füzyondan aldığımız girdi verilerine göre sistemin sonraki durumlarını tahmin etmekteyiz.

Kalman Filtresi kullanma sebebimiz elimizdeki sensör füzyon verilerinin gürültülü veri verecek olmasıdır. Kalman Filtresi gerçeğe olabildiğince yakın bir tahminde bulunmamızı sağlar.

Lidardan alınan mesafe verilerinin pist alanındaki bariyerlerin girintili çıkıntılı olmasından dolayı aracın direksiyon açısındaki ani değişimleri önlemek için sensör füzyon algoritması olarak kalman filtresi kullanılması hedeflenmiştir.

Aracımız 2D lidar ile duvar takip algoritmasına veri iletirken ZED Stereo kamera ise görüntü işleme için kullanılmıştır. Levhaların konumunu bilmesi ve park algoritması için lidar ile kamera yazmış olduğumuz sensör füzyon algoritmalarıyla bizlere 3D bir harita çıkarmaktadır.

Bu sayede araç kendi konumunu ve levhaların konumunu bilmektedir.

Sensor füzyon algoritmalarımızı yine Python üzerinden ROS sistemi kullanarak çalıştırmaktayız.

5. Araç Kontrol Ünitesi

Robotaksimizin genel araç kontrol ünitesi JETSON TX2 kartıdır. Direksiyon sistemi üzerindeki step motor sürücü kontrolü JETSON üzerinden sağlanmaktadır. JETSON harici olarak araç üzerinde Arduino kartı vardır. Arduino ile otonom gaz mekanizmasındaki servo ve fren sistemindeki step motor kontrolü sağlanmaktadır. Arduino da JETSON ile

haberleşmektedir. Haberleşme USB port üzerinden yapılmıştır.

Görüntü işleme ve sensörlerden veri alma işlemi JETSON kartı üzerinden yapılmaktadır.

JETSON TX2 Developer Kit, modül AI süper bilgisayarı JETSON TX2’ye odaklı donanım ve yazılım geliştirilebilmesi için hızlı ve kolay bir yol sağlamaktadır. Ürün, geliştirici kartının donanımsal yeteneklerini ve arayüzlerini kullanmayı sağlar, tasarım rehberleri ve diğer

dökümantasyonları içerir. Linux geliştirme ortamı hazır olarak gelmektedir. Aynı zamanda BSP, derin öğrenme kütüphaneleri, görüntü işleme, GPU hesaplama, multimedya işleme ve çok daha fazlasını içeren tam paket bir SDK olan NVIDIA Jetpack’i desteklemektedir.

Şekil-54

Aracımızdaki sensörlerden alınan bilgiler ana birimimiz olan JETSON kartına gönderilecektir. JETSON kartı alınan bu bilgileri belirli algoritmalar ve yazılımlarla işleyip, sonrasında oluşan bilgiyi ROS sistemine aktaracaktır. Bu işleyiş doğrultusunda aracın davranışları kontrol edilmektedir.

Şekil-55 ROS İşleyiş Şeması

5.1.Kablosuz Haberleşme Sistemi

Aracımızı uzaktan harekete geçirmek ve durdurmak için kullanacağımız komutların araca iletiminde XBee modülü kullanılmıştır. Verici olan modül bilgisayarımızda, alıcı olan modülümüz aracımızda, acil kapanışı sağlayacak olan röleyle bağlantılıdır. Haberleşme sistemimiz Şekil-56 de belirtildiği gibidir.

Şekil-56

Xbee IEEE 802.15.4 ağ protokolünü kullanmaktadır. Point to point (noktadan noktaya) veya point to multi-point (noktadan çok noktaya) şeklinde haberleşmeyi desteklemektedir.

Noktadan noktaya veri aktarımı için seri 1 modül idealdir diyebiliriz.

Zigbee ise IEEE 802.15.4 ve ZigBee Mesh haberleşme protokolüne uygun olarak geliştirilmiştir. IEEE 802.15.4 standardına göre en önemli özelliği düşük güç tüketimi, uzun menzilde veri iletimi ve ağ desteğidir. Zigbee, adını arıların zig-zaglı karmaşık hareket

yapılarından alır. Xbee modüllerinin üzerinde bulunan analog, dijital pinler vasıtası ile analog ve dijital değerleri okuyabilir. UART seri iletişim pinleri vasıtası ile başka cihazlarla iletişim kurabilir. Point to Point ve Point to Multi-Point gibi noktadan noktaya veya çok noktalı ağlar içerisinde haberleşmeyi desteklemektedir.

6. Otonom Sürüş Algoritmaları

6.1.PID ile Duvar Takibi Algoritması

Bir mikrodenetleyici çıkıştan geri besleme (feedback) ile gelen sinyali giriş (referans) sinyali ile karşılaştırır ve farkından bir hata oluşturur. Bu oluşan hataya göre PID algoritması hatayı en aza indirgemeye çalışarak bir etki yapar ve çıkışa gönderir. Bu şekilde hata en aza indirilene kadar çıkıştan girişe sürekli geri besleme ile hatalar belirlenir ve denetleyici etkisini çıkışa göndererek hata azaltılır. Bizim algoritmamızda da Lidar üzerinden gelen veri ile duvara yakınlığı ölçülmekte ve buna göre bir teker açısı çıktısı vermektedir. PID kontrol daha çok doğrusal sistemlere basitçe uygulanabilmektedir. PID kontrol algoritmamızı kullanabilmemiz için bizden 3 değer istenmektedir. Bunlar;

► P (Proportional) Oransal

► I (Integral) İntegral

► D (Derivative) Türevsel

Bu değerler simülasyon üzerinden aracın matematiksel bir modelini çıkartamadığımız için deneme yanılma yöntemi ile bulunmuştur. PID algoritmasını gerçek hayata uyarlarken Pixhawk kartı kullanılmaktadır. Mission Planner simülasyon programı üzerinden değer vererek aracımıza en yakın çıktıları bulmaya çalışmaktayız.

Bu algoritmayı simülasyon ve gerçek hayatta aracın lidar aracılığıyla dışarıdan almış olduğu mesafe verisiyle yapacağı duvar takibi için kullanmaktayız. Bu algoritma sayesinde araç otonom dönüş ve yol mesafesine göre en az hatalı şekilde kendini ortalayabilmektedir.

6.2. Find Object 2D ve Find Object 3D Algoritması

ROS üzerinde Find Object 2D ve Find Object 3D yazılımı üzerinde obje tanıması ve objenin 3 boyutlu koordinatlarına ulaşmak için kullanmaktayız. Objeleri tanımakta ve

objelerinin koordinatlarını bu algoritma sayesinde ana(main) fonksiyonumuza göndermekteyiz.

Park görevini bu yazılım sayesinde yapmaktayız. Bu yazılımın içinde farklı obje tanıma algoritmaları çalışabilmektedir. Biz SURF (Hızlandırılmış Gürbüz Öznitelikler) ve SIFT (Ölçekten Bağımsız Öznitelik Dönüşümü) adlı nesne tanıma algoritmalarını seçmekteyiz. Bu algoritmalar nesne tanıma için kameradan gelen görüntüyü önce siyah beyaz (Gray) formata çevirmekte daha sonra bu nesnelerin kenar ve köşelerini öğrenerek objeyi hafızaya almaktadır.

Bu algoritma sayesinde Gazebo simülasyon ortamında başarılı bir şekilde levha tanıtma ve park görevini yerine getirmekteyiz.

6.3.Hector Mapping Algoritması

ROS ile entegre biçimde çalışan bu algoritma Lidar verisini kullanarak 2 boyutlu bir harita oluşturmayı sağlamaktadır. Bu haritayı kamera ile oluşturduğumuz harita (SLAM) ile birleştirerek path-planning yapmaktayız. Bu algoritmayı park görevinde harita bilgisi için kullanmaktayız.

Şekil-57

6.4. SLAM (Simultaneous Localization and Mapping) Algoritması

Bu algoritma ROS ile entegre biçimde çalışmaktadır. Bu algoritmada ZED kamerasından gelen derinlik bilgili görüntüyü alarak bize 3 boyutlu bir harita oluşturmaktadır. Bu harita

sayesinde trafik levhalarının yerini belirleyip ve aracın konum bilgileriyle eşleştirmekteyiz.

Algoritmanın RVIZ çıktıları Şekil-58 de verildiği gibidir.

Şekil-58

6.5. Teb Local Planner

Bu algoritma Hector Mapping algoritmasından gelen haritayı kullanarak park levhasının önüne park etmemizi sağlamaktadır. Algoritmanın RVIZ çıktıları Şekil-59 de verildiği gibidir.

Şekil-59

Pembe olan rota (path) lokal plan yeşil olan rota ise global planı göstermektedir.

6.6.Lidar Obje Takibi Algoritması

Bu algoritmada aracın önünde hareketli bir nesne olup olmadığı kontrol edilmektedir.

Lidar görüş alanı içerisinde (bu da aracın önünde 180° açıdan oluşan yarım dairedir.). Ana fonksiyona giden lidar bilgisi her tarama paketi geldiğin de bu algoritmayı çalıştırarak hareketli objeyi kontrol eder ve eğer var ise aracı durdurmaktadır. Test esnasında hayati öneme sahip bir algoritmadır.

6.7. YOLO Algoritması

YOLO, konvolüsyonel sinir ağlarını (CNN) kullanarak nesne tespiti yapan bir

algoritmadır. Açılımı “You Only Look Once“, yani “Sadece Bir Kez Bak“. Bu adın seçilmesinin nedeni algoritmanın nesne tespitini tek seferde yapabilecek kadar hızlı olmasıdır.

YOLO algoritması çalışmaya başladığında görüntülerdeki veya videolardaki nesneleri ve bu nesnelerin koordinatlarını aynı anda tespit etmektedir.

Video ve resim işleme arasında tek fark resimlerin tek bir kareden (frame), videoların ise birçok kareden oluşmasıdır. Resimlerde algoritma tek bir kare için çalışırken, videolarda tüm kareler için tekrar tekrar çalışır. YOLO algoritması, öncelikle görüntüyü bölgelere ayırır.

Daha sonra her bir bölgedeki nesneleri çevreleyen kutuları (bounding box) çizer ve her bir bölgede nesne bulunma olasılığı ile ilgili bir hesabı yapmaktadır.

Ayrıca her bir bounding box için bir güven skoru hesaplamaktadır.

Bu skor bize o nesnenin yüzde kaç olasılıkla tahmin edilen nesne olduğunu

söylemektedir. Örneğin, bulunan bir araba için güven skoru 0,3 ise bunun anlamı o nesnenin araba olma olasılığının oldukça düşük olduğudur. Diğer bir deyişle, YOLO yaptığı tahminin güvenilmez olduğunu bize söylemektedir.

Bounding box’ların içindeki nesnelere non-maximum suppression adlı bir teknik

uygulanmaktadır. Bu teknik güven skoru düşük olan nesneleri değerlendirmeden çıkarır ve aynı bölgede güven skoru daha yüksek bir bounding box‘ın varlığını kontrol eder. Her bir bölgede nesne olup olmadığı araştırılır. Eğer bir nesne bulunursa o nesnenin orta noktası, yüksekliği ve genişliği bulunur daha sonra bounding box çizilir. Bunun yapılabilmesi için bir takım alt işlemlerin yapılması gerekir. Her bir bölge için bir tahmin vektörü oluşturulur, bu vektörlerin içinde güven skoru yer alır.

Eğer güven skoru 0 ise orada nesne yok, 1 ise orada nesne var demektir. Aynı resim içerisindeki aynı nesne için birden fazla bounding box çizdirilebilir. İşte bu sorundan kurtulmak içinde, daha önceden sözü edilen non-maximum suppression tekniği kullanılmaktadır. Bu teknik ile yapılan şey basitçe, en yüksek güven skoru olan bounding box’ın kalması diğerlerinin ise görüntüden atılmasıdır.

Şekil-60

YOLO algoritmasını kullanırken şartnamede verilen trafik levhalarını tanıması için kameramız ile kendi kütüphanemizi oluşturup çerçeveleme işlemini yaptıktan sonra veri setimizi eğitmekteyiz.

Şekil-61 de verildiği gibi kendi kütüphanemizi oluştururken yarışmadaki levhaları farklı ışık ve açılardan çekerek sonrasında çeşitli programlarla etiketleme işlemini yapmaktayız.

Şekil-61

Şekil-62 Box Label Tool ile Labellama Aşaması

Şekil-63 Make Sense Programında Labellama Aşaması

Şekil-64 Train Aşaması

Şekil-65 Çıktı Alma Aşaması

Şekil-66 Çıktı Alma Aşaması

7. Özgün Bileşenler

Öncelikli olarak Robotaksi araç kabuğu ve kabuğa uygun yapılan şase tasarımı özgün tasarım olup bizler tarafından tasarlanmıştır. Ön tasarım raporunda hedeflendiği gibi bütün üretim ve test aşamaları kendi atölyemizde yapılmıştır.

Aracımızın bütün otonom alt sistemlerinin tasarımı yerlidir. Araç direksiyon kutusu, elektronik direksiyon sistemi, elektronik fren pedalı ve elektronik gaz sistemlerinin tasarımları ekip tarafından yapılmıştır. Yapılan otonom sürüş sistemlerinin üretim ve montaj aşamaları bizler tarafından atölyemizde gerçekleşmiştir.

Algoritma kullanımı ve Robotaksi için tasarlanan step motor kontrol, servo motor kontrol ve görevleri yerine getirmesi için gerekli olan bütün yazılımlar ekip tarafından yapılmıştır.

Ayrıca sensörlerin konumlandırılması ve bütün gerekli alt parça mekanizmalarının tasarımları ekip tarafından yapılmıştır.

2019 yılında TÜBİTAK Efficiency Challenge Electric Vehicle TR yarışmasına katılmış olduğumuz Ecotron-4 adlı aracımızın kabuk tasarım ve üretim bütün aşamaları kendi

atölyemizde yapılmıştır. Aracımızın kabuğu Efficiency Challenge ve Robotaksi yarış ölçülerine uygun yapılmıştır.

Ayrıca aracımız otonom bir araç olarak ve yarışma koşullarına göre üretildiği için araçta manuel kontrol sağlanamamaktadır. Bu yüzden kendi oluşturmuş olduğumuz algoritma ile aracımızı klavye ile kontrol edebilmekteyiz.

Aracımızda direksiyon ve gaz pedalı bulunmaması sebebiyle, test alanı, parkur veya yarış alanına konforlu ve güvenli bir şekilde ulaşmak bizim için önem arz etmektedir. Bu sebeple daha önce uzaktan kumanda kullanarak çözdüğümüz bu süreci Bluetooth klavye ve özgün yazılımımız ile uzaktan aracı kontrol ederek daha sade ve etkili bir şekilde çözülmüştür. Bu sayede eski yöntemimizde kullanılan: Uzaktan kumanda, pil, alıcı ve ekstra bağlantılara ihtiyaç kalmadan, sadece aracın kontrol bilgisayarının klavyesiyle kullanabilmek mümkün olmaktadır.

Python ve Python ile seri haberleşen bir Arduino kodu kullanarak kendi oluşturduğumuz sistemimiz, maksimum açısını bilerek direksiyon manevrası, fren, kademeli hız arttırıp azaltma ve sabit hızla gitme gibi özelliklere sahiptir.

Şekil-67

Şekil-67 deki Python kodumuzda herhangi bir tuşa basıldığında anında girdi alınıp, işlenip, çıktı alınabilmektedir. Direksiyon kısmı kendi maksimum açı değerlerine uygun manevra yaparak mekanik bir arıza çıkarmadan dönüş yapmaktadır. Aracın hızı kademeli olarak artırıl azaltılabilmektedir. Gaz ve fren işlemlerinde Arduino ile seri haberleşme kullanılmaktadır.

Şekil-68

Şekil-68 deki Arduino kodumuz Python ile haberleşerek, sağlanan şartlara girip, fren sistemimizdeki step motor sürücüyü veya gaz sistemimizdeki servo motor – PWM

mekanizmamızı çalıştırarak, aracımızın fren ve gaz fonksiyonlarını yapabilmesini sağlamaktadır.

Yapılan bütün yerlilikler raporun diğer kısımlarında ayrıntılı bir şekilde bahsedildiği için bu kısımda daha fazla yer verilmemiştir.

8. Güvenlik Önlemleri

Şartnamede belirtilen güvenlik önlemleri kapsamında aracın herhangi bir yerinden testler ve sürüş esnasında insana ve çevreye zarar vermemek için hiçbir çıkıntı ve keskin nokta bulunmamaktadır. Bu sebeple araç kabuğuna takılacak bütün sensörler için özgün mekanizma tasarımları yapılmıştır.

Ayrıca montaj ve kablaj yaparken olması gereken bütün güvenlik önemlerine uyulmuştur.

Bütün kablo uçları uygun soketlerle sabitlenmiştir. Sinyal kabloları ve güç kabloları akımına uygun ve rengine göre seçilmiştir.

Tesisatı düzenlerken testler esnasında kolaylık ve güvenlik açısından bütün kablolar isimlendirilmiştir.

Araç üzerindeki bütün bileşenler izole edilmiştir. Ayrıca aracın bütün şasisi izole halı ile kaplanmıştır. İzole halı elektriği ve ateşi iletmeyen bir yalıtım malzemesidir.

Şekil-69 İzole Halı Montaj Aşaması

Şekil-70

Araç kontrol ünitesi için herhangi bir aksilik olduğunda zarar gelmemesi ve araçtan kolayca takıp çıkarılması için ayrı bir pano tasarımı yapılmıştır. Pano yalıtkan malzemelerden oluşup içerisi sıcaklığa karşı fanlarla montajlanmıştır.

Şekil-71

Şekil-72

Aküleri arabaya sabitlemek ve yalıtımını sağlamak için Şekil-73 de verilen kutu tasarlanmıştır.

Şekil-73

Araç içindeki bütün vida başları keskin uçlar ve herhangi bir tehlike oluşturabilecek unsurlar yalıtkan malzemelerle kaplanmıştır.

Bunlar dışında 2 ayrı alınan güvenlik önlemi vardır;

• Aracın dışına sigorta dışında bir buton yerleştirilecektir. Bu anahtar sayesinde istenmeyen anda motor durdurulabilmektedir.

Şekil-74

• Aracın kabuğunun iç taraflarına piezo elektrik sensörleri eklenecektir. Piezo elektrik sensörleri titreşimden enerji üretirler. Araç herhangi bir şeye temas etmesi durumunda titreşime uğrayacak ve sensörden gelen voltaj artacaktır. Voltajın artması durumunda motor sürücü disarm konumuna gelecektir. Aracımızın kabuğunun sağlamlığı ve yarışma parkur şartlarını göze alarak seçmiş olduğumuz sensörün hatasız çalışmasını

beklemekteyiz. Bu yüzden ani sarsılma ve çukura girme durumları tecrübelere dayanarak yok sayılmıştır.

Şekil-75

Şekil-76 9. Simülasyon ve Test

Simülasyon için ROS ile çok kolay entegre olan Gazebo simülasyon ortamı kullanılmıştır.

Parkur ve trafik levhaları AUTODESK 3DS MAX üzerinden çizilerek .dae formatında Gazebo içerisine eklenmiştir. Araç Gazebo’nun kendi robot model formatı olan .urdf formatındadır.

Algoritmalar ROS ortamında çalışıp çıktı Gazeboya aktarılmaktadır. Araç ölçüleri yukarıda belirtilen ölçülerdedir. Sensörlerin konumları araçta olacağı gibi yerlerindedir. Araç tamamen kodla hazırlanmış olup çizim programı kullanılmamıştır. Parkurun ve aracın Gazebo

ortamındaki hali Şekil-77 de verildiği gibidir.

Şekil-77

Bu sayede araç özellikleri çok hızlı bir şekilde değiştirilebilmektedir. Araç üzerindeki kabuk yarışa katılacak araç ile aynı olup çizimi 2019 yılında yapılmıştır. Algoritmalar ROS ortamında çalışıp çıktı Gazeboya aktarılmaktadır. Gazebo ile ROS bağlantısı Topicler ile Subscribe/Publish mantığı ile çalışmaktadır ve herhangi bir araca gerek yoktur. Simülasyonun ana fonksiyonu çalıştığı anda araç hareket etmeye başlayacak şekilde kodlanmıştır.

Şekil-78 Find Object Algoritmalarının Çıktıları

Şekil-79 Aracın Göreve Başlama Anı

• ROS

ROS yani Robot Operating System, robotun dış dünyadan sensörler aracığıyla aldığı verileri işleyip tekrar robota komut olarak göndermeyi sağlayan ara yüzdür. Buradaki çalışma, alıcı-gönderici mantığında çalışmaktadır. Bilgisayar ile robot arasındaki bu iletişim topic’ler ve mesajlar sayesinde sağlanmaktadır. Açık kaynak kodlu bir sistemdir. Aynı robot üzerinde farklı diller kullanmaya izin verir.

Biz ROS’un Melodic sürümünü Ubuntu 18.04 versiyonu üzerine kurulum yaparak kullanmaktayız. Ubuntu, Linux çekirdeği temel alınarak geliştirilen açık kaynak kodlu, özgür ve ücretsiz bir işletim sistemidir. Otonom algoritmaları VSCode adı verilen Python IDE’si

üzerinden yazıp denemekteyiz.

Simülasyon ortamı olarak Gazebo kullanılmaktadır. Gazebo kullanılmasının sebebi ise ROS ile çok fazla uyumlu olması ve haberleşmenin otomatik olmasıdır. Sensörlerden gelen verilerin gösterimi için RVIZ programını kullanmaktayız. Şekil-80’de ROS’daki bütün algoritmalarımızın ve haberleşmenin çıktıları verilmiştir.

Şekil-80

• Gazebo

İç ve dış mekanlar için 3D robot yapabilecek sistemleri olan açık kaynak bir

simülatördür. Oyun motorlarına benzemekle beraber çok daha aslına uygun fizik motoru vardır.

Robot dizaynı ve testleri için kullanılır. Bizim buradaki kullanım amacımız ROS ile çok fazla

Robot dizaynı ve testleri için kullanılır. Bizim buradaki kullanım amacımız ROS ile çok fazla

Benzer Belgeler