← Tüm yazılar

ROS Nedir? Robot İşletim Sistemine Kapsamlı Bir Bakış

Robotik projelere ilk adım atan herkesin karşısına çıkan üç harf: ROS. Açılımı Robot Operating System — yani "Robot İşletim Sistemi". Ama bu isim, yazının ilerleyen bölümlerinde göreceğimiz gibi, biraz yanıltıcıdır. Bu yazıda ROS'un ne olduğunu, nasıl çalıştığını, ROS 1 ile ROS 2 arasındaki farkları ve sektörde nasıl kullanıldığını — sahada AMR'lar üzerinde çalışan bir mühendisin gözünden — anlatacağım.

ROS - Robot Operating System logosu

ROS logosu — Wikimedia Commons

ROS aslında bir işletim sistemi değil

Adındaki "işletim sistemi" ifadesine rağmen ROS; Windows ya da Linux gibi bir işletim sistemi değildir. ROS, işletim sisteminin (genellikle Ubuntu) üzerinde çalışan bir robotik ara katman yazılımı (middleware) ve geliştirme çatısıdır. Üç şeyi bir arada sunar:

  1. Haberleşme altyapısı — robotun farklı yazılım parçalarının (sürücüler, algoritmalar, arayüzler) birbiriyle konuşmasını sağlayan standart bir mesajlaşma sistemi.
  2. Araç seti — görselleştirme (RViz), simülasyon (Gazebo), veri kaydı (rosbag), hata ayıklama ve inceleme araçları.
  3. Ekosistem — SLAM, navigasyon, hareket planlama gibi çözülmüş problemler için binlerce hazır, açık kaynak paket.

ROS'un asıl gücü bu üçüncü maddede saklı: robotikte "tekerleği yeniden icat etmek" yerine, dünyanın dört bir yanındaki araştırmacı ve şirketlerin geliştirdiği paketleri alıp kendi robotunuza uyarlarsınız. Lokalizasyon mu lazım? AMCL hazır. Haritalama mı? SLAM Toolbox. Otonom navigasyon mu? Nav2. Robot kol planlaması mı? MoveIt.

Kısa tarihçe: Stanford'dan endüstri standardına

ROS'un kökleri 2000'lerin ortasında Stanford Üniversitesi'ndeki STAIR projesine dayanır. 2007'de silikon vadisi robotik şirketi Willow Garage projeyi devraldı ve ROS'u PR2 araştırma robotuyla birlikte geliştirdi. 2012'de kurulan Open Robotics (Open Source Robotics Foundation) o günden beri projenin ana koruyucusu.

Kritik dönüm noktası 2017'de geldi: ROS'un temel mimarisi araştırma laboratuvarları için tasarlanmıştı ve endüstrinin ihtiyaçlarına (gerçek zamanlılık, güvenlik, çoklu robot sistemleri) cevap veremiyordu. Bu yüzden sıfırdan tasarlanan ROS 2 yayınlandı. ROS 1'in son sürümü Noetic, Mayıs 2025'te resmi desteğini tamamladı — yani bugün yeni bir projeye başlıyorsanız cevap net: ROS 2.

Temel kavramlar: ROS nasıl düşünür?

ROS'ta bir robot yazılımı, birbiriyle mesajlaşan küçük, bağımsız programlardan oluşur. Bu modüler yapı, tek bir dev program yazmaktan çok daha esnek ve dayanıklıdır — bir parça çökerse sistemin geri kalanı çalışmaya devam eder.

Node (Düğüm)

Her biri tek bir işten sorumlu küçük programlardır. Örneğin bir AMR'da: LiDAR sürücüsü bir node, motor kontrolcüsü bir node, lokalizasyon algoritması ayrı bir node'dur. Node'lar C++ (rclcpp) veya Python (rclpy) ile yazılabilir — aynı sistemde ikisi bir arada sorunsuz çalışır.

Topic (Konu) ve Message (Mesaj)

Node'lar arası veri akışının ana yolu topic'lerdir. Yayıncı/abone (publisher/subscriber) modeliyle çalışır: LiDAR node'u /scan topic'ine tarama verisi yayınlar, lokalizasyon node'u da bu topic'e abone olur. Yayıncı, verisini kimin dinlediğini bilmek zorunda değildir — bu gevşek bağlılık (loose coupling), sistemin parçalarını değiştirmeyi çok kolaylaştırır.

# rclpy ile minimal bir yayıncı node
import rclpy
from rclpy.node import Node
from std_msgs.msg import String

class HelloPublisher(Node):
    def __init__(self):
        super().__init__('hello_publisher')
        self.pub = self.create_publisher(String, 'chatter', 10)
        self.timer = self.create_timer(1.0, self.tick)

    def tick(self):
        msg = String()
        msg.data = 'Merhaba ROS 2!'
        self.pub.publish(msg)

rclpy.init()
rclpy.spin(HelloPublisher())

Service (Servis) ve Action (Eylem)

Topic'ler sürekli veri akışı içindir; ama bazen "sor-cevap al" gerekir. Service tam bunu yapar: istemci istek gönderir, sunucu cevap döner (örn. "haritayı sıfırla"). Action ise uzun süren görevler içindir: hedefe git, ilerleme raporu ver, gerekirse iptal et. Nav2'ye "şu koordinata git" komutu bir action'dır — robot yol boyunca geri bildirim yayınlar.

Parameter ve TF2

Parameter'lar node'ların çalışma zamanında ayarlanabilen konfigürasyon değerleridir (maksimum hız, sensör frekansı vb.). TF2 ise ROS'un koordinat dönüşüm kütüphanesidir: "LiDAR'ın gördüğü nokta, robotun gövdesine göre nerede, haritaya göre nerede?" sorusunu her an cevaplayabilen dinamik bir dönüşüm ağacı tutar. Gerçek robotikte en çok zaman harcanan konuların başında gelir!

Araç ekosistemi

  • RViz — robotun "gözünden" dünyayı görürsünüz: sensör verileri, harita, planlanan rota, TF ağacı... hepsi 3D olarak görselleştirilir.
  • Gazebo — fizik motorlu simülasyon ortamı. Gerçek donanıma dokunmadan robotunuzu sanal dünyada test edersiniz.
  • rosbag — topic'lerdeki veriyi diske kaydeder ve tekrar oynatır. Sahada yakaladığınız bir hatayı ofiste defalarca yeniden üretebilmek paha biçilmezdir.
  • ros2 cliros2 topic echo, ros2 node list gibi komutlarla çalışan sistemi anlık inceleme.

TurtleBot3 Burger — ROS eğitiminin standart robotu

TurtleBot3 Burger: ROS öğrenenlerin standart platformu — Foto: Wikimedia Commons, CC BY-SA 4.0

ROS 1 vs ROS 2: neden her şey değişti?

ROS 1ROS 2
HaberleşmeMerkezi roscore (tek hata noktası)DDS — merkezi sunucu yok, keşif dağıtık
Gerçek zamanlılıkYokGerçek zamanlı kontrol için tasarlandı
PlatformYalnızca LinuxLinux, Windows, macOS, RTOS
GüvenlikYokDDS-Security ile şifreleme ve kimlik doğrulama
Çoklu robotZor, hack'lerleDoğal destek (domain ID, namespace)
DurumNoetic — destek bitti (Mayıs 2025)Aktif geliştirme (Jazzy LTS, Kilted...)

ROS 2'nin kalbinde DDS (Data Distribution Service) vardır — havacılık ve savunma sanayiinde yıllardır kullanılan, endüstriyel sınıf bir haberleşme standardı. roscore gibi merkezi bir sunucunun kalkması, sahada çalışan robotlar için büyük fark yaratır: tek bir process çöktü diye tüm filo kör kalmaz. QoS (Quality of Service) ayarlarıyla "bu veri kritik, mutlaka ulaşsın" ya da "bu akış güncel olsun yeter, eskisi düşsün" gibi ince ayarlar yapılabilir — kablosuz ağın zayıfladığı depo köşelerinde bu ayarların kıymetini sahada bizzat yaşayarak öğrendim.

Endüstride ROS: laboratuvardan depoya

ROS artık sadece bir araştırma aracı değil. Bugün depo otomasyonundaki AMR'lardan tarım robotlarına, teslimat araçlarından cerrahi sistemlere kadar sayısız ticari üründe ROS 2 çalışıyor. Benim de günlük işimin parçası olan otonom mobil robot dünyasında tipik bir mimari şöyledir:

  • Sensör sürücüleri (LiDAR, derinlik kamerası, IMU) → ROS 2 node'ları
  • SLAM / lokalizasyon → harita çıkarma ve harita üzerinde konum kestirimi
  • Nav2 → global/lokal rota planlama ve engel kaçınma
  • Filo yönetimi katmanı → robotlar VDA5050 gibi endüstri protokolleriyle merkezi sistemlere bağlanır (MQTT üzerinden)
  • Güvenlik katmanı → güvenlik PLC'leri ve güvenlik LiDAR'ları, ROS'tan bağımsız donanım seviyesinde çalışır — çünkü insan güvenliği asla tek başına yazılıma emanet edilmez

Bitirme projem: SLAM tabanlı otonom mobil robot

Kendi bitirme projem: ZED2 stereo kamera ve Jetson Xavier ile otonom navigasyon yapan AMR

Nereden başlamalı?

  1. Ubuntu 24.04 + ROS 2 Jazzy (LTS) kurun — resmi kurulum rehberi docs.ros.org adresinde.
  2. Resmi Beginner Tutorials'ı sırayla yapın: turtlesim ile başlar, node/topic/service kavramlarını uygulamalı öğretir.
  3. TurtleBot3 simülasyonu ile Gazebo'da SLAM ve Nav2 deneyin — fiziksel robot almadan gerçek bir otonom navigasyon hattı kurarsınız.
  4. Küçük ama gerçek bir proje seçin: odanızın haritasını çıkarın, robotu (simüle bile olsa) bir noktadan diğerine otonom gönderin.
  5. Takıldığınızda Robotics Stack Exchange ve ROS Discourse topluluklarına danışın.

Benim tavsiyem: tutorial'larda fazla uzun kalmayın. ROS, ancak elleriniz kirlendiğinde — TF ağacınız koptuğunda, QoS uyumsuzluğu yüzünden mesajlar kaybolduğunda — gerçekten öğrenilir. O hatalar sizin en iyi hocanız olacak.

Kaynaklar

Sorularınız varsa iletişim bölümünden bana ulaşabilirsiniz — ROS üzerine sohbet etmekten her zaman keyif alırım.