• Sonuç bulunamadı

6. Otonom Sürüş Algoritmaları

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 uyumlu olması ve dışarıdan müdahalelerin çok daha kolay olmasıdır.

Şekil-81

• RVIZ

RVIZ, ROS için 3D görselleştiren bir frameworktür. Sensör verilerini ve araç modelini 3D olarak gösterecek yeteneklere sahip bir programdır.

Şekil-82

9.1.Simülasyonda Kullanılan Algoritmalar

• SLAM

ROS sistemine entegre olan SLAM ile ZED kamerasından gelen derinlik bilgisini alarak bize üç boyutlu bir harita verir. Bu harita araç, engel ve levha konumlarının belirlenmesini

sağlayabilmektedir.

• Hector Mapping

ROS sistemine entegre olan hector mapping algoritması lidar verisi ile iki boyutlu bir harita oluşturulmasını sağlar. Bu harita, kamera ile oluşturulan harita ile birleştirilerek gidiş güzergahı belirlenmektedir. Bu algoritma park görevinde güzergah bilgisi için kullanılmıştır.

• Teb Local Planner

Bu algoritma Hector Mapping algoritmasından gelen haritayı kullanarak park levhasının önüne park etmemizi sağlar.

• Find Object 2D ve Find Object 3D

Find object algoritmaları, ROS üzerinden objeleri tanımakta ve objelerin koordinatları bu algoritma yardımıyla ana fonksiyona gönderilmektedir. Bu yazılım için farklı obje tanıma algoritmaları çalışmaktadır. Bu algoritmalar nesne tanıma için kameradan gelen görüntüyü önce siyah-beyaz formata çevirir sonra bu nesnelerin kenar ve köşelerini öğrenerek objeyi hafızaya alır.

Bu algoritmalar hakkında ayrıntılı bilgi raporun algoritmalar kısmında yer verilmiştir.

Ön tasarım raporu ve simülasyon sunumu değerlendirme sonuçlarına göre yaptığımız hataların farkına vararak simülasyonda düzeltilmeye gidilmiştir.

Sunum esnasında aracın konum hatası ve sensörlerin konumun kaymasından dolayı aracımız bariyerleri ve levhaları göremediği için simülasyon hatalı çalışmıştır. Sonuçlar sonrasında Gazebodaki yarışma parkuru bariyerleri ve levhaların konumu düzeltilmiştir. Araç üzerindeki kamera ve lidar sensörlerinin kalibresi ve konumları algoritmalarla birlikte

düzeltilmiştir.

Simülasyondan sonra gerçek hayatta denemelere geçtikten sonraki farklılara ve hatalara göre algoritmalar ve kodlarda düzenlemeye gidilmiştir.

Simülasyonda levha tanıma için kullanmış olduğumuz Find Object 2D and 3D

algoritması geçen sene ve bu seneki denemelerimiz sonucuna göre simülasyonda güzel sonuçlar verirken gerçek hayatta yeterli gelmemiştir. Bu yüzden bu algoritma gerçek hayat için

kullanılmama kararı alınmıştır.

Şekil-83

Şekil-84 2020 Yılı Find Object Algoritması Masa Üzerinde Denemesi

Şekil-85 2020 Yılı Find Object Algoritması Araç Üzerindeki Denemesi

İlk görev ve araç test videosu için gerekli olacak olan test sürüşü için okulun içerisine simülasyon ve yarışma senaryosuna uygun bir parkur alanı yapımına başlanmıştır.

Parkur alanı yapılırken şartnamede verilen parkur örneğine göre ve yarışma videolarına göre hesaplamalar yapılmıştır. Hesaplamalar yapıldıktan sonra eldeki imkanlar doğrultusunda atölyemizin önündeki servis park alanına MDF profil sabitleme yöntemiyle parkur yapılmaya başlanmıştır.

Şekil-86

• Şekil-86’daki Solidworks çiziminde çizgilerin sarı olmasının sebebi raporda daha belirgin görünmesini istememizdir.

Şekil-87

Araç Ackermann hesabı ve gerekli olan parkur düzenine göre testler yaparak kontrol algoritmamızdaki değerler sürekli değişime uğramaktadır.

Şekil-88

Şekil-89

Şekil-90

• Araç kabuğumuz otonom sürüş test videosu gönderildikten sonra boyama işlemine gönderilecektir. Görsellerde verilen kabuk aracın son hali değildir.

9.2. Analiz Sonuçları

Yapılan bütün donanım, yazılım veya araç tasarım sürecinde gerçekleştirilen

mühendislik analizlerinin sonuçları raporun diğer kısımlarında ayrıntılı bir şekilde belirtildiği için tekrar bu kısımda bahsedilmemiştir.

Yapmış olduğumuz parkur sayesinde algoritmalarımızı sürekli test ederek analizlerimizi yapmaktayız. Analiz sonuçlarına göre algoritmalarımızdaki verileri sürekli güncellemekteyiz.

10. Referanslar

Benzer Belgeler