AnalizGenelGündem

OTONOM ARAÇ PROJESİ (/w ROS)

OTONOM ARAÇ PROJESİ (/w ROS)

Yazıma başlamadan önce arkadaşım, kardeşim, ortağım Ahmet Biçer’e emeklerinden ötürü sonsuz teşekkürlerimi iletiyorum.

Değişen dünyamızda artık otonom araçların bilinirliği git gide artıyor. Peki kendi imkanlarımızla bir otonom araç yapmamız mümkün mü ? Gerçekten de kendi kendine karar verebilen bir mekanizma oluşturulup bunu bir arabayla özdeşleştirebilir miyiz ?

Bu projeye başlarken proje ortağımla aklımda aynı sorular vardı. Başlarken her şeyin ne kadar flu olduğunu henüz şimdi anlayabiliyorum. Dipsiz bir kuyuya 1 metre iple inmiş gibi gözüküyor buradan ilk hallerimiz. Bölüm başkanımız aynı zamanda da yönderimiz olan hocamızın bize verdiği tek ipucu ROS öğrenmemiz gerektiğiydi. Peki neydi bu ROS ?

Basitçe anlatacak olursam ROS bir işletim sistemi. Tıpkı Windows, Android, macOS gibi. Saydığım bu işletim sistemleri nasıl bilgisayarlar, telefonlar gibi cihazların üzerinde çalışması için özelleştirilmişse, ROS da robotlar için özelleştirilmiş. Kısaltmanın açılımı da bunu gözler önüne seriyor zaten ; Robotic Operating System.

ROS bize bir çok açıdan faydalı olacak ve işlerimizi hızlandıracaktı. En başta ROS bir çok GNU/Linux dağıtımı üzerinde ücretsiz bir şekilde kullanılabiliyordu. Windows üzerinde çalışan programlara göre bu büyük bir nimetti.

ROS bütün programlama dillerini bir arada çalıştırabilmemize de olanak sağlıyordu. (Bunun ne demek olduğu ilerde çok iyi anlaşılacak.) Üstelik öğrenmek de çok kolaydı. ROS’un kendine ait bir Wiki’si vardı. Yani başlamak için o kadar uygundu ki adeta büyülenmiştik.

Peki ROS nasıl çalışır ? ROS’un çalışma mantığını anlamak, ROS’u öğrenmenin en önemli adımı. Ama bundan önce temel kavramları öğrenmekte fayda var.

Node (Düğüm) : ROS’un temel yapısı.

Publisher Node (Yayınlayıcı düğüm) : Bir topic üzerinden veri yayınlayan node.

Topic (Konu) : Publisher node yayınladığı verileri ancak bir topic üzerinden yayınlayabilir.

Subscriber Node (Abone düğüm) : İstediği verileri elde etmek için topiclere abone olan düğüm.

Örnek vermek gerekirse, bir arabanın anlık konumunu, GPS isimli topic üzerinden yayınlayan bir Publisher node düşünelim. Bu node arabanın anlık konum bilgisini alıp sürekli olarak yayınlıyor. Bir de arabanın konum bilgisini ekrana yazdıran bir node düşünelim. Bu da bizim subscriber node’umuz oluyor. Bu subscriber node’un arabanın anlık konum bilgisine erişmesi için GPS isimki topic’e abone olması gerekiyor. Ancak bu sayede Publisher node’un yayınladığı GPS verisine erişebiliyor. Ve bu yapı sayesinde ROS node’ları komplike bir şekilde hareket edebiliyor.

Daha önce ROS’un tüm programlama dillerini bir arada çalıştırabildiğinden bahsetmiştik. Bunun ne demek olduğunu bu açıklamadan sonra daha net anlatabiliriz. Bu örnekten yola çıkacak olursak GPS verisini yayınlayan Publisher node’unu C++ ile yazarken, Subscriber node’u Java ile yazabilirsiniz. ROS bu iki node’u da eşzamanlı olarak çalıştıracaktır.

Kısaca projeye başlama hikayemizden ve ROS’un ne olduğundan, nasıl çalıştığından bahsettim. İkinci bölümde de projede nasıl bir yol izlediğimizi, projeden fotoğraflarla birlikte bulabilirsiniz.

 

Zeki Ahmet Bayar

Bilgisayar Mühendisliği Bölümü Lisans Öğrencisi

 

Yorum Ekle