1. Robot Yazılım Platformu
Bu ders notları Özerk Robotlar (Autonomous Robots) ve Gezgin Robotlara Giriş dersi için hazırlanmıştır. Bu bölüm sonunda neden bir Robot Yazılım Platformuna ihtiyaç duyulmuştur sorunu cevaplandırabileceksiniz.
1.1. Platform Bileşenleri
Şekil 1-1’de görülebileceği gibi PC (Kişisel Bilgisayar) ve PP (Kişisel Telefon) Bilişim Teknolojileri (BT) ürünleri olarak sınıflandırılabilir. Adından da anlaşılacağı gibi, bunlar neredeyse herkesin sahip olduğu kişisel ürünlerdir. Şekil 1-2’de gösterildiği gibi, bu ürünlerin ortak özelliklerini analiz ettiğimizde, pek çok donanım ve işletim sistemi ile entegrasyonu sağlayan, donanımı yöneten bir donanım modülünden oluştuğunu görebiliriz. İşletim sistemi tarafından sağlanan donanımsal soyutlama tabanlı yazılım geliştirme ortamı, bu ürün gruplarını kullanan çeşitli hizmetler ve çok sayıda kullanıcıya hizmet sağlayan uygulamalara sahiptir.
BT endüstrisinde bir platformun dört ana ekosistem bileşenin Şekil 1.2’de gösterildiği gibi Donanım, İşletim Sistemi, Uygulama ve Kullanıcı olduğu kabul edilir. Tüm bu bileşenler mevcut olduğunda, bileşenler arasında görünmeyen bir bölünme oluşup işbirliği yapılıyorsa, bu platformun popüler olabileceği ve kişiselleştirilebileceği söylenir.
Daha önce sözü edilen PC ve PP, bu bileşenlerin dördüne başlangıçtan beri sahip değildi. Başlangıçta, bu cihazlar belirli bir donanımı çalıştırmak için sadece yerleşik bir yazılıma sahipti ve bir şirket tarafından geliştirilen donanıma özel yazılımı kullanan cihaz sadece üreticisi tarafından sağlanan hizmetleri kullanabilmekteydi. Eğer bu kavramın anlaşılması zorsa, örnek olarak akıllı telefonları ele alabiliriz. Akıllı telefonlar, Apple’ın iPhone’u geliştirmesinden önce sayısız üretici tarafından üretilmişti. Bu PC veya PP’nin başarısını sağlayan ortak faktörün işletim sistemlerinin (Windows, Linux, Android, iOS, vb.) ortaya çıkması olduğunu söyleyebiliriz. İşletim sistemlerinin ortaya çıkması yazılım ve donanımı birleştirdi ve bu da donanımın modülerliğine öncülük etti. Seri üretim maliyeti düşürdü, özelleştirilmiş ürün geliştirme yüksek performans getirdi ve sonuçta bilgisayarların ve cep telefonlarının kişiselleştirilmesine olanak sağladı. Ayrıca, mühendisler, donanımı tam olarak anlamasa bile işletim sistemi tarafından sağlanan geliştirme ortamında uygulama programları geliştirebilirler ve 10 yıl önce bulunmayan App Developers adlı yeni bir iş grubu akıllı telefon alanında tanıtılmış oldu. Bu şekilde donanım modülerliği işletim sistemleri etrafında ilerlemiştir ve işletim sistemi tarafından sağlanan donanımsal soyutlamaya dayalı uygulama programları ortaya çıkmıştır. Bu nedenle, kullanıcıların almak istedikleri hizmetler oluşturuldu ve popülerleştirilmiş ürün ya da platform haline geldi.
PC ve PP ile birlikte dikkat çeken Kişisel Robota (PR – Personal Robot) gelince, temsilci servis robot platformu ne kadar zamandır ilerlemektedir? Tarihin kendini tekrar ettiği söylenirse, PC ve PP’nin daha önce yaptığı gibi PR hayatımıza girer mi? Bunu bir sonraki bölümde inceleyeceğiz.
Robot Yazılım Ortamı(Robot SoftWare Platform)
Son zamanlarda robotik alanında platformlar dikkat çekmektedir. Bir platform, yazılım ve donanım platformu olarak ikiye ayrılmıştır. Bir robot yazılım platformu, donanım soyutlaması, düşük seviye cihaz kontrolü, algılama, tanıma, SLAM (Eşzamanlı Konumlama ve Haritalama), gezinme, manipülasyon (işleme) ve paket yönetimi, kütüphaneler, hata ayıklama ve geliştirme araçları gibi robot uygulama programlarını geliştirmek için kullanılan araçları içerir. Robot donanım platformları yalnızca mobil robotlar, insansız hava araçları (dronlar) ve insansılar (humanoid) gibi araştırma platformlarını değil, aynı zamanda SoftBank’ın Pepper’ı, MIT Media Lab’ın Jibo ürünü gibi ticari ürünleri de piyasaya sürmektedir.
Dikkat çekici olan şey, bu donanımsal soyutlama, söz konusu yazılım platformları ile bağlantılı olarak ortaya çıkmasıdır. Bu da yazılımcının donanımda uzmanlığa sahip olmasa bile bir yazılım platformu kullanarak uygulama programlarının geliştirilmesini mümkün kılmaktadır. Aynı şekilde en yeni akıllı telefonları donanım yapısını veya özelliklerini bilmeden mobil uygulamalar geliştirebilmekteyiz. Böylece robot geliştiricilerinin donanım tasarımından yazılım tasarımına kadar her şeyi yapmaları gerekirken artık robot dışındaki alanlardaki yazılım mühendislerinin de robot uygulama programları geliştirilmeye başlamışlardır. Başka bir deyişle, yazılım platformları birçok insanın robot geliştirmeye katkıda bulunmalarına izin vermiştir ve robot donanımları yazılım platformları tarafından sağlanan arayüze göre tasarlanmıştır.
Robot İşletim Sistemi (ROS), Japon Açık Robotik Teknolojisi Middleware (OpenRTM), Avrupa gerçek zamanlı kontrol merkezli OROCOS, Kore OPRoS4 gibi yazılım platformları ana platformlar olarak gösterilebilir. Her ne kadar isimleri farklı olsa da, robot yazılım platformlarının ortaya çıkmasının temel nedeni, çok fazla sayıda farklı türde robot yazılımı bulunması ve karmaşıklıklarının birçok soruna yol açmasıdır. Bu nedenle dünya çapındaki robot araştırmacıları bir çözüm bulmak için iş birliği yapmaktadırlar. En popüler robot yazılım platformu, bir Robot İşletim Sistemi olan ROS Robot İşletim Sistemi bu kitapta ele alınmaktadır.
Örneğin, bir robotun çevresindeki durumu tanımasına yardımcı olan bir işlevin gerçeklenmesi sırasında donanım çeşitliliği ve gerçek dünyada doğrudan uygulanmış olması zor bir iş olabilir.
Bazı görevler insanlar için kolay kabul edilebilir, ancak bir kolej laboratuarında veya şirketteki araştırmacılar, algılama, tanıma, haritalama ve hareket planlaması gibi birçok işlevi gerçekleştirmek için robotlarla uğraşmak çok zor olabilir. Ancak, dünyanın dört bir yanındaki profesyonellerin başkaları tarafından kullanılmak üzere özel yazılımlarını paylaşmaları farklı bir hikaye olacaktır. Örneğin, KickStarter ve CES2015 sosyal fonlarında dikkat çeken robot şirketi Robotbase, kısa bir süre önce Robotbase Personal Robot’u geliştirdi ve başarılı bir şekilde bir sosyal fon aracılığıyla başlattı. Robotbase söz konusu olduğunda, yüz tanıma ve nesne tanıma özelliğine sahip çekirdek teknolojilerine odaklandılar ve mobil robotları için ROBOTIS Dynamixel’yi kullandıkları aktüatör için ve ROS’u destekleyen Yujin Robot’dan mobil robot üssünü kullandılar ve engel için tanıma, navigasyon, motor sürücü, vb. ROS’un kamu paketini kullandılar. Başka bir örnek de ROS Endüstriyel Konsorsiyum (ROS-I)’de bulunabilir. Endüstriyel robot alanında lider firmaların çoğu bu konsorsiyuma katılıyor ve otomasyon, algılama ve işbirlikçi robotlar gibi endüstriyel robot alanından yeni ortaya çıkan ve zor olan bazı problemleri tek tek çözüyorlar. Ortak bir platformun, özellikle de bir yazılım platformunun kullanılması, daha önce ele alınması zor olan ve verimliliği artıran sorunları çözmek için işbirliğini teşvik ediyor.
Neden bir Robot Yazılım Platformu kullanmalıyız?
Neden robot yazılım platformunun yeni konsepti olan ROS’u öğrenmeliyiz? Bu, çevrimdışı ROS seminerlerinde sık sorulan bir sorudur. Kısa cevap, geliştirme süresini azaltabileceğidir. Çoğu zaman insanlar zamanlarını yeni bir kavram öğrenmek istemediklerini ve halihazırda yapılmış olan sistemi veya mevcut programları değiştirmekten kaçınmak için mevcut yöntemlerine sadık kalmayı tercih ettiklerini söylüyor. Bununla birlikte, ROS, mevcut sistemi ve programları yeniden geliştirmeyi gerektirmez, ancak ROS sistemlerini bir ROS sistemine kolayca çevirebilir ve sadece birkaç standart kod ekleyebilir. Ayrıca, ROS yaygın olarak kullanılan çeşitli araçlar ve yazılımlar sunar ve kullanıcıların ilgi duydukları veya katkıda bulunmak istedikleri özelliklere odaklanmalarını sağlar ve bu da geliştirme ve bakım süresini en aza indirir. ROS’un beş ana özelliğine bakalım.
- Birincisi, programın yeniden kullanılabilirliği. Bir kullanıcı, kullanıcının geliştirmek istediği özelliğe odaklanabilir ve geri kalan işlevler için ilgili paketi indirebilir. Aynı zamanda geliştirdikleri programı başkalarının yeniden kullanabilmesi için paylaşabilirler. Örnek olarak, NASA’nın Uluslararası Uzay İstasyonunda kullanılan Robonaut29 robotlarını kontrol edebilmeleri için, sadece kendi bünyesinde geliştirilen programları değil, aynı zamanda çoklu platformlar için çeşitli sürücüler sağlayan ROS’u ve OROCOS’u destekleyen uzaydaki görevlerini yerine getirmek için gerçek zamanlı kontrol, mesaj iletişimi restorasyonu ve güvenilirliği.
- İkincisi, ROS’un iletişim tabanlı bir program olmasıdır. Çoğu zaman, bir servis sağlamak için, sensörler ve aktüatörler için donanım sürücüleri ve algılama, tanıma ve çalıştırma gibi özellikler tek bir çerçevede geliştirilir. Bununla birlikte, robot yazılımının yeniden kullanılabilirliğini sağlamak için, her bir program ve özellik, işlevine bağlı olarak daha küçük parçalara bölünür. Buna platforma göre bileşen veya modülerleştirme denir. Veriler, minimum işlev birimlerine bölünmüş düğümler (ROS’ta hesaplama yapan bir işlem) arasında değiştirilmeli ve platformlar, düğümler arasında veri değişimi için gerekli tüm bilgilere sahip olmalıdır. Uzaktan kumandada büyük ölçüde faydalı olan ağ programlama, düğümler arası iletişim ağa bağlı olduğunda, düğümlerin donanım tarafından kısıtlanmadığı durumlarda mümkün hale gelir. En az fonksiyonlara bağlı ağ kavramı da Nesnelerin İnterneti’ne (IOT) uygulanır, dolayısıyla ROS IoT platformlarını değiştirebilir. Hata bulmak için oldukça kullanışlıdır, çünkü minimum işlevlere ayrılan programlar ayrı olarak hata ayıklanabilir.
- Üçüncüsü geliştirme araçlarıdır. ROS, hata ayıklama araçları, 2D görselleştirme aracı (rqt, rqt, eklenti biçimindeki çeşitli GUI araçlarını kullanan ROS’un bir yazılım çerçevesi) ve robot geliştirme için gerekli araçları geliştirmeden kullanılabilen 3D görselleştirme aracı (RViz) sağlar. Örneğin, bir robot geliştirirken bir robot modelinin görselleştirilmesi gereken birçok durum vardır. Önceden tanımlanmış mesaj formatını eşleştirmek, kullanıcıların sadece robotun modelini doğrudan kontrol etmesine değil, aynı zamanda sağlanan 3D simülatörü (Gazebo) kullanarak bir simülasyon gerçekleştirmesini sağlar. Araç ayrıca son zamanlarda spot ışıklandırılmış Intel RealSense veya Microsoft Kinect’ten 3D mesafe bilgilerini alabilir ve bunları kolayca nokta bulutu(pcl) biçimine dönüştürebilir ve bunları görselleştirme aracında görüntüleyebilir. Bunun yanı sıra, deneyler sırasında elde edilen verileri de kaydedebilir ve tam deneme ortamını yeniden oluşturmak gerektiğinde bunları tekrarlayabilir. Yukarıda gösterildiği gibi, ROS’un en önemli özelliklerinden biri, robot geliştirme için gerekli yazılım araçlarını sağlamasıdır ki bu da geliştirme kolaylığını en üst düzeye çıkarır.
- Dördüncüsü, aktif topluluktur. Şimdiye kadar nispeten kapalı olan robot akademik dünyası ve endüstrisi, daha önce bahsedilen işlevlerin bir sonucu olarak işbirliğini vurgulama yönünde değişmektedir. Bireysel hedeflerdeki farklılıktan bağımsız olarak, bu yazılım platformları aracılığıyla yapılan işbirliği aslında gerçekleşmektedir. Bu değişimin merkezinde açık kaynak yazılım platformu için bir topluluk var. ROS statüsünde, gönüllü olarak geliştirilen ve 2017’den itibaren paylaşılan 5.000’den fazla paket var ve paketlerini açıklayan Wiki sayfaları, bireysel kullanıcıların katkısıyla 18.000 sayfayı geçiyor. Dahası, Q & A olan topluluğun bir diğer kritik kısmı, işbirliği içinde büyüyen bir topluluk oluşturan 36.000 gönderiyi aştı. Topluluk, talimatları tartışmanın ve robot yazılımlarının gerekli bileşenlerini bulmanın ve bunların düzenlemelerini yaratmanın ötesine geçiyor. Dahası, bu, kullanıcıların bir araya geldiği ve robot yazılımının ilerlemesi için robot yazılımının ne yapması gerektiğini ve bulmacanın eksik parçalarını doldurmak için işbirliği yapması gerektiğini düşünen bir duruma doğru ilerliyor.
- Beşinci, ekosistemin oluşumudur. Önceden bahsedilen akıllı telefon platformu devriminin, Android veya iOS gibi yazılım platformları tarafından oluşturulan bir ekosistem olduğu için gerçekleştiği söyleniyor. Robotik alan için bu tür bir ilerleme devam etmektedir. Başlangıçta, her türlü donanım teknolojisi taştı, ancak bunları entegre edecek bir işletim sistemi yoktu. Çeşitli yazılım platformları geliştirildi ve aralarında en saygın platform olan ROS, ekosistemini şekillendiriyor. Robot ve sensör şirketleri, ROS geliştirme operasyon ekibi, uygulama yazılım geliştiricileri ve kullanıcıları gibi robotik alandaki herkesin geliştirdiği donanım geliştiricilerinin, bu konuda mutlu olabileceği bir ekosistem yaratıyor. Her ne kadar başlangıç marjinal olsa da, artan sayıdaki kullanıcı ve robotla ilgili şirketlere ve ilgili araç ve kütüphanelerin artışına bakıldığında, yakın gelecekte canlı bir ekosistem öngörebiliriz.
Robot Yazılım Platformunun Geleceği Gelecek
Robot alanı, akıllı telefon alanının daha önce gösterilen örneğiyle aynı yolda ilerliyor. Akıllı telefon işletim sistemiyle karşılaştırılabilecek çok şey olmasına rağmen, robot yazılım platformu herkesin endüstri lideri olabileceği hareketli bir aşamada. Aşağıda listelenen aşağıdaki platformlar en aktif robot yazılım platformlarıdır.
■ MSRDS10 Microsoft Robotics Geliştirici Stüdyosu, Microsoft – ABD
■ ERSP11 Evolution Robotik Yazılım Platformu, Evrim Robotiği – Avrupa
■ ROS Robot İşletim Sistemi, Açık Robotik12 – ABD
■ OpenRTM Ulusal Savunma Enstitüsü. Endüstri Bilimi ve Teknolojisi (AIST) – Japonya
■ OROCOS Avrupa
■ OPRoS ETRI, KIST, KITECH, Kangwon Ulusal Üniversitesi – Güney Kore
■ NAOqi OS13 SoftBank ve Aldebaran – Japonya ve Fransa
Bunlardan başka Player, YARP, MARIE, URBI , CARMEN, Orca ve MOOS.