Merhaba,

Robot Operating System, yani ROS, hakkında sizlerle bilgi paylaşmak konusunda oldukça heyecanlıyım. Bunun nedeni robotik konusunda  dikkatimi çeken çok fazla konu olmasıdır. Üniversiteye daha başlamadan önce tanıştığım YTÜ Robotik ve Otomasyon Kulübü ailesine dahil olmam ve aldığım idari ve teknik görevlerle birlikte bugüne kadar öğrendiklerimi tamamen bu alana yatırım yapmak adına ilerletmeyi amaçladım. Sizlerle paylaştığım bir diğer konu olan gömülü sistemlere olan yatkınlığımın nedeni budur. Robotik uygulamalar üzerinde çalışırken önce problemin ana fikrine (örneğin çözüm için geliştirilmiş algoritmalara) odaklanır, sonrasında donanım kısmı üzerinde çalışır ve kullandığım mikroişlemci üzerinde problemi çözmek adına uygun gördüğüm algoritmaları kodlarım. Tabi bu durumun kendi adıma hali hazırda devam ettiğini ve gerçekten sizlere de ciddi bir bilgi birikimi sunacağını söylemeden geçemeyeceğim.

ROS ile tanışmam bitirme projemi yaparken belirlediğim konu olan mobil robotlarla çalışmamla başladı diyebiliriz. Bitirme projemi yaparken ne yazık ki biraz inatlaşıp ROS kullanmadım (projeyi ROSify etmedim) ancak  ilerleyen zamanlarda elime geçen Kobuki adındaki mobil robot platformu üzerinde çalışma fırsatı bulmamla özverili bir öğrenme süreci yaşamama vesile olundu. Daha önce de değindiğim gibi robotik uygulamaların takip ettiği donanımsal hedefler, bazı yazılım geliştiriciler için bir problem haline gelebilmektedir. Çünkü yazılım geliştiriciler için donanımla uğraşmak ya istenmeyen bir durumdur ya da bilgi eksikliklerinden kaynaklanan zorluklar proje geliştirme sürecini yavaşlatmakta ve motivasyon kaybına yol açmaktadır. ROS ise tam bu noktada her alandan geliştirici için oldukça kullanışlı bir API (Application Programming Interface) sunan ve genelde Ubuntu üzerinde kullanılan bir platform olarak karşımıza çıkmaktadır.

Şekil 1: Kobuki

ROS topic, service, action vb. metotlar yaratabilmenizi ve böylece ROS tarafından sizlere hazır olarak sunulan paketleri, kendi yazdığınız paketlere bağlayabilmenizi sağlayabilmektedir. Eğer elinizde bulunan robot ROS desteğine sahipse, sahip olması yüksek bir olasılıktır, robotun kendi paketlerini indirerek yazılımlarınızı oluşturmanız mümkün olabilmektedir. Bunun size sağlayacağı avantaj ise örneğin pozisyon hesaplamak için ekstra bir efor sarf etmenize gerek kalmayacak olmasıdır. Robotunuzun sahip olduğu tüm dinamikler zaten paket içeriğinde sizlere sunulacaktır. Böylece dramatik bir enerji tasarrufu elde edilmiş olunacaktır. Sizler ilk etapta geliştireceğiniz algoritmalarla uğraşıyor olacaksınız ve örneğin robotu hareket ettirecek veya pozisyon bilgilerini alabilecek işlemlerle vakit kaybetmemiş olacaksınız. Bu duruma biraz daha açıklık getirmek adına bir mobil robotu A noktasından B noktasına götürme problemini çözmek üzere ele alalım. ROS kullanmadığınız senaryoda elektronik donanımının devreye alınması konusunda birçok uğraşın olacağını unutmayalım. Çünkü pozisyon ölçümlerine ihtiyacınız olacak (Odometry) ve bir enkoder yardımıyla ne kadar yol aldığınızı hesaplamanız gerekecektir. Enkoder çözünürlüklerinden ve zemin koşullarında bulunan belirsizliklerden kaynaklı pozisyon kaçırmalarını eniyilemek (optimizasyon) kaçınılmaz olacaktır. Aynı zamanda, aynı anda pozisyon bilgisinin hesaplanması ve robotun hedef pozisyona doğru gidiyor olması da beklenecektir. Bu durum, böyle bir uygulamada gerçek zamanlı çalışılması gerekliliğini getirecektir. Bu ana kadar kurduğumuz robot düzeneği oldukça basit gözükse de donanım ve yazılımı iç içe kullanmamış olan ya da kısıtlı vakti olan bir geliştiricinin izlemesi gereken adımlar karmaşıklaşmaktadır. Sizler örneğin bug algoritmasını gerçeklemek isterken donanımsal anlamda birçok parametreyi göz önünde bulundurmak zorunda kalacaksınız. Peki ROS kullanıldığı takdirde kısa problemimiz nasıl şekilleniyor? ROS bu durumda sizlere pozisyon ve hız bilgilerini hesaplayan ve tutan paketler sunacak ve sizler kullanıcı programlarınızı bu paketlere abone yaparak bahsettiğim bilgilere erişebileceksiniz. Geriye robotunuzu A noktasında B noktasına götürecek ve B noktasında durduracak olan programı yazmak kalacaktır. Ancak burada dikkate almanız gereken konu uygulama yapacağınız robot çeşidi (mobil, endüstriyel kol, UAV vb.) konusunda bilgi edinmeniz gerektiğidir. Bununla alakalı olarak da akademik yayınları takip edebilir veya akademik dünyada kullanılan kitaplara göz atabilirsiniz. Sizlere yazılarım süresince bu tarz kaynak tavsiyeleri de vermeyi unutmayacağım.

Şekil 2: Go-to-Goal davranışı, Bug Algoritması

ROS ihtiyacınız olacak tüm bilgileri kendi web sitesinde sizlerle paylaşmakta ve nasıl çalıştığına dair notları da pdf formatında ücretsiz erişebileceğiniz şekilde sunmaktadır. Bu nedenle ROS öğrenmek için kendi web sitesini kayak edinmeniz oldukça önemlidir. Yazılarımda sizlerle ROS’u değil ROS ile yapmış olduğum uygulamaları paylaşmayı hedefliyorum. Bu nedenle yazılarımız bir miktar matematik, kontrol ve fizik içerecektir. Uygulamaları takip ederken de herhangi bir robot yapmanıza veya almanıza gerek kalmayacak, ROS tarafından sunulan simülasyon ortamı olan Gazebo ile işlerin yolunda gidip gitmediğini analiz edebileceksiniz.

Şekil 3: Gazebo

Bir sonraki yazımda ROS kurulumuna değinerek, ilk uygulamamızı gerçekleştirmek adına bazı temel adımları irdeleyeceğiz. Tekrar görüşmek üzere!

Bir Cevap Yazın