ROS (Robot Operating System, Robot İşletim Sistemi), 2007 yılında Willow Garage firması tarafından Stanford Üniversitesi Yapay Zekâ Laboratuvarında yapılan çalışmaların sonucunda oluşturulan bir robotik yazılım platformudur. Farklı bir deyiş ile robotlar için açık kaynaklı bir meta-işletim sistemi olarak tanımlanan ROS, temelde bir işletim sisteminden beklenilen donanım katmanının soyutlanması, donanım seviyesindeki cihazların kontrolü, sık kullanılan fonksiyonalitenin hazır biçimde kodlanması, işlemler arasındaki mesajlaşmanın sağlanması ve paket yönetimi konularını robot sistemleri için gerçekleştirmesi nedeniyle robot işletim sistemi olarak adlandırılmıştır.
ROS robotik yazılım platformunu diğer platformlardan ayıran bazı temel amaçları bulunmaktadır. Bunlar:
• Robotik araştırma ve geliştirme çalışmalarında kullanılan kodların tekrar kullanılabilirliğini, açık kaynak paylaşımını ve birlikte çalışabilirliği artırmak, geliştirmek.
• Yazılım platformu olarak olabilecek en az düzeyde kullanıcı kodlarını etkilemek, yazılım çerçevesi katmanının ince olması. Yazılan kodların diğer robotik platformla da entegre edilebilmesi.
• ROS bağımsızlığın artırılması amacıyla iyi ve açık tanımlanmış kod arayüzleri. Yazılım platformunun, ROS agnostik olarak geliştirilmesi.
• Programlama dili bağımsız olarak geliştirmeye açık olması. Modern programlama dilleri ile geliştirilebilmesi (Python, C++, Lisp vb.)
• Ölçeklenebilir olması. ROS’un her boyuttaki sistem ve geliştirme süreçlerine uygun olabilmesi.
Şeklinde açıklanmış ve bu yönde 2007 yılında bu yana açık kaynak topluluklarının desteği ile günümüzde robotik sistemler için bir standart haline gelmiştir.
ROS NASIL ÇALIŞIR?
ROS yazılım platformu, içerisindeki süreçlerin birbirlerine esnek bağlı (loosely coupled) olduğu, bu işlemlere düğüm (node) adı verildiği ve her düğümün sadece bir işten sorumlu olacağı şeklinde tasarlanmıştır.
Düğümler birbirleri ile konu (topic) adı verilen dijital kanallar ile haberleşebilir. ROS haberleşme sisteminde, duyurma/yayınlama-abone olma (publish-subscribe) sistem modeli kullanılmaktadır. Konulara abone olan ve yayın yapan düğümler arasında veri alışverişinin sağlanabilmesi için ise sistem dizaynı gereği bir ana (master) düğüm sistem tarafından oluşturulmaktadır ve bu düğüm ROS sistemindeki düğümleri adlandırma ve kayıt hizmeti sağlamaktadır. Düğümlerin sistem üzerindeki bağlantılarının sağlanması için ise ROS içerisinde TCP/IP (Transmission Control Protocol / Internet Protocol) kullanılmaktadır.
ROS 2 VE DDS
ROS’un 2007 yılında tasarlanan mimarisinin günümüz robotik topluluğu ve ihtiyaçlarının değişmesinden kaynaklı olarak, yeni bir ROS versiyonu ROS2, günümüz standartlarına uygun teknolojiler ve kullanım alanlarına uygun olacak biçimde 2015 yılında yayınlanmıştır.
ROS1’in oluşturulduğu tarihten bu yana temel karakteristiği aşağıdaki gibi olmuştur:
• Tekil robot
• İş istasyonları/bilgisayarlar robot üzerinde
• Gerçek zaman gereksinimlerinin bulunmaması
• Mükemmel ağ bağlantısı (kablolu veya yakın, yüksek bant genişlikli kablosuz ağ)
• Ağırlıklı olarak akademik çalışmalar
• Maksimum yazılım/kod esnekliği
Günümüzde ise özellikle robotik topluluğunun ihtiyaçları aşağıdaki maddeler şekline bürünmüştür:
• Çoklu robotlar
• Küçük ve gömülü bilgisayar platformları
• Gerçek zamanlı sistemler
• İdeal olmayan ağlar (ağ içerisinde gecikme ve/veya kayıplar, zayıf kablosuz bağlantılar)
• Yazılımın seri üretimde kullanılması
• Kod esnekliğinin sağlanması
Değişen ihtiyaçların yeni teknolojiler ile birlikte karşılanabilmesi ve bunun yapılırken mevcut sistemlerin çalışmaya devam edebilmesi amacıyla ROS1 değiştirilmeden ROS2 adındaki yeni bir versiyon DDS (Data Distribution Service, Veri Dağıtım Servisi) sisteminin üzerine oluşturulmuştur.
Aşağıdaki görselde genel haberleşme yapısını görebilirsiniz:
UZAYDA ROS
ROS, artık günümüzde uzay da dahil olmak üzere sayısız alanda kullanılmakta ve özellikle uzay alanındaki çalışmalar, ROS’un bu denli kritik ve yüksek bütçeli çalışmalarda dahi kullanılabiliyor olması diğer çalışmalara örnek olması açısında oldukça fazla önem teşkil etmektedir.
• 2013 yılında NASA Intelligent Robotics Group (NASA Akıllı Robotik Grubu) direktörü Terry Fong’un “ROS in Space” isimli sunumu ile kamuoyuna açıklanan çalışmalarda ROS1’in uzay istasyonu testleri çalışmalarında kullanıldığı bilgisi yer almıştır.
• Günümüzde ise NASA’nın Uluslararası Uzay İstasyonunda (ISS) kullandığı Astrobee isimli yardımcı robotların yazılımlarını açık kaynak olarak (https://github.com/nasa/astrobee) paylaştığı ve altyapı olarak bu robotlarda ROS kullanıldığı görülmüştür.
• RosWorld 2021 konferansında ise NASA Johnson Space Center, Robotik Sistemler Teknolojileri Lideri Kimberly Hambuchen’in sunumunda NASA’nın “Space ROS” ismini verdiği uzay-nitelikli ROS platformu üzerine çalışıldığı paylaşılmıştır.