Contents — find the section you need

ROS 2, robotun kendisi değildir. Kamera sürücüsü, kendi kendine konum belirleme, yol planlama ve motor kontrolünü ayrı programlar (düğümler) olarak çalıştırmak ve bunları standartlaştırılmış mesajlaşma ve iletişim yoluyla birleştirmek için bir temeldir. Prototip aşamasında tek bir Python dosyasıyla başlayabilir ve C++, gerçek zamanlı yürütme, birden fazla bilgisayar ve bir ürün için güvenlik izleme gibi özelliklere kadar ölçeklendirebilirsiniz. Önemli olan API'yi ezberlemek değil, verilerin kime ait olduğunu, zamanlamayı, güvenilirliği ve kapatma sırasında güvenli durumu tasarlamaktır.

Resim: Robot Operating System logosu, Wikimedia Commons (CC BY-SA 4.0). Logo, ara yazılımı tanımlar ve belirli bir dağıtım veya DDS yapılandırmasını garanti etmez.

30 Saniyelik Özet

  • Bir düğüm, tek bir sorumluluğa sahip bir süreçtir; bir konu, sürekli bir akışı temsil eder; bir hizmet, kısa bir istek/yanıtı temsil eder ve bir eylem, ara geri bildirim içeren uzun bir görevi temsil eder.

  • ROS 2'nin iletişimi DDS üzerinde çalışır ve QoS (güvenilirlik, geçmiş, derinlik, dayanıklılık, son tarih) uç nokta başına seçilebilir. Sensörler ve kontrol aynı ayarları kullanmak zorunda değildir.

  • TF2, zamanla birlikte bir koordinat çerçeve ağacını yönetir. map, odom, base_link ve sensör çerçevelerini karıştırırsanız, algılama doğru olsa bile robot yanlış yere gidecektir.

  • Gerçek donanımda, yaşam döngüsü yönetimi, bekçi köpekleri, ayrıcalık ayrımı, günlük kaydı ve ağ kesintisi için arıza emniyetleri ekleyin. Simülasyonda çalışmak güvenliğin kanıtı değildir.

  • ROS 2 Jazzy gibi uzun süreli destek sürümü olan bir sürümü, uygun bir DDS, işletim sistemi ve sürücü kombinasyonuyla baştan itibaren düzeltin ve tekrarlanabilir bir çalışma alanı oluşturun.

1. ROS 2'nin Genel Görünümü

Diagram 1 · Use the button to switch views
Camera nodesensor driver /image_rawTopic + QoS Perception nodeperception Control nodecontroller DDS middleware (discovery, comms, QoS)Application layerOS / network / executor

Şekil 1 — ROS 2'de düğümler, DDS aracılığıyla birbirlerini keşfeder ve iletişim kurar. Sadece konu adları değil, QoS, tür, zaman ve koordinat çerçevesi de sözleşmenin bir parçası olarak ele alınır.

ROS 2 grafiği çalışma zamanında yapılandırılabilir. Bir kamera düğümü görüntüleri yayınlar, bir algılama düğümü bunlara abone olur ve bir kontrol düğümü sonuçları ve kendi konum belirlemesini alır ve hız komutlarını yayınlar. Bir düğümü farklı bir bilgisayara taşısanız bile, DDS keşfi ve serileştirme doğru çalıştığı sürece aynı grafik geçerliliğini korur.

2. Doğru İletişim İlkelini Seçme

Tür Nerede kullanılır Örnek Tasarım hususları
Konu Sürekli akış, çoktan çoğa /scan , /camera/image QoS, bant genişliği, gecikme, kesintiler
Servis Kısa istek ve yanıt /reset_odometry Zaman aşımı, yeniden giriş
Eylem İlerleme ile uzun süren görev Navigasyon, kavrama İptal, güvenli kesinti
Parametre Başlangıç zamanı veya düşük frekanslı yapılandırma Kazançlar, çerçeve adları Tür, değiştirme izinleri, tekrarlanabilirlik

Bir konu mesajı yalnızca değeri değil, aynı zamanda header.stamp ve frame_id değerlerini de içermelidir. Görüntü zaman damgası ve IMU zaman damgası senkronize değilse, algoritma yine de bir sonuç hesaplayabilir, ancak hareketi yanlış tahmin edecektir. Kamera görüntülerinin güvenilir bir şekilde yeniden gönderilmesi bant genişliğini aşırı yükleyebilir, bu nedenle her sensörün karakterine uygun QoS seçin.

3. "İletişim Sözleşmesi" Olarak QoS

ROS 2'de kontrol edilmesi gereken minimum QoS ayarları Güvenilirlik (En İyi Çaba/Güvenilir), Dayanıklılık (Değişken/Geçici Yerel), Geçmiş (Sonuncuyu Sakla/Tümünü Sakla), Derinlik, Son Tarih ve Canlılıktır. Yüksek hızlı bir LiDAR, eski paketleri düşüren En İyi Çaba (Best Effort) yöntemine uygun olabilirken, düşen mesajlara tahammül edemeyen hız komutları, kısa bir Son Teslim Tarihi (Deadline) ile Güvenilir (Reliable) yöntemini kullanmalıdır.

Yayıncı ve Abone'nin QoS ayarları uyumlu değilse, aynı konu adı altında bile iletişim kuramazlar. Sensör sürücüsünün ön ayarına körü körüne güvenmek yerine, ros2 topic info -v /scan ile gerçek ayarları kontrol edin. Bir ağ üzerinden geçerken, MTU, Wi-Fi yeniden iletimi, çoklu yayın kısıtlamaları ve zaman senkronizasyonunu birlikte test edin.

4. TF2 ve Zaman

Bir robotun pozisyonu, koordinat çerçeveleri arasındaki bir dönüşüm olarak ifade edilir. Tipik bir ağaç şu şekilde görünür:

map ──(SLAM/Localization)──> odom ──(odometry)──> base_link
                                                        ├── base_laser
                                                        ├── imu_link
                                                        └── camera_link

map uzun vadeli dünya çerçevesidir, odom düzgün kısa vadeli odometridir ve base_link araç referans çerçevesidir. SLAM, map → odom düzeltmesini yaparken, tekerlek/IMU tahmini odom → base_link güncellemelerini yüksek hızda gerçekleştirir. TF2, zaman damgalı dönüşümleri tutar ve bunları her sensörün edinme zamanına göre enterpolasyon yapar.

Koordinat çerçevelerini sağ el kuralına göre standartlaştırın ve optik çerçeve (z ileri, x sağa, y aşağı) ile araç çerçevesi (x ileri, y sola, z yukarı) arasındaki farkı açıkça belirtin. Statik dönüşümleri static_transform_publisher ile düzeltin ve dinamik bir dönüşümü statik olarak yayınlamayın. TF ağacında bir döngü veya birden fazla ebeveyn olması tasarım hatasıdır.

5. Paketler ve Uygulama Akışı

Minimal bir ROS 2 Python düğümü şöyle görünür:

import rclpy
from rclpy.node import Node
from std_msgs.msg import Float32

class Speed(Node):
    def __init__(self):
        super().__init__('speed_node')
        self.pub = self.create_publisher(Float32, '/speed', 10)
        self.timer = self.create_timer(0.02, self.tick)  # 50 Hz
    def tick(self):
        msg = Float32(); msg.data = 0.2
        self.pub.publish(msg)

rclpy.init(); node = Speed(); rclpy.spin(node)

Gerçek donanımda, hız komutlarını doğrudan motora göndermeyin; araya bir yukarı akış düğümü, hız sınırlama, acil durdurma ve donanım izleme yerleştirin. C++'ın rclcpp'ini kullanırken bile, geri çağrı gruplarını, Yürütücüyü, bellek tahsisini ve gerçek zamanlı davranışı kontrol edin.

Çalışma alanını src, build, install ve log olarak ayırın ve bağımlılıkları rosdep ile çözün. İşletim sistemini, DDS'yi ve derleyiciyi Docker veya bir geliştirme konteyneri ile sabitleyin ve ros2 doctor, ros2 node list, ros2 topic hz ve tf2_tools'u hem CI hem de saha teşhislerine dahil edin.

6. Yaşam Döngüsü ve Güvenlik

Sensörler ve aktüatörler, açıldıkları anda komutları kabul etmek zorunda değildir. Yaşam Döngüsü Düğümünün durum geçişleri — Yapılandırılmamış → Etkin Değil → Etkin → Sonlandırılmış — sürücü başlatma, kalibrasyon, iletişim kontrolleri ve çıkış yetkilendirmesini ayırır. Bir izleme cihazı kalp atışını kaybettiğinde, hız komutunu sıfırlayın ve ayrıca donanım tarafındaki freni veya röleyi açın.

Güvenlik tarafında, ROS 2'nin mesaj iletişimi kendi başına fonksiyonel güvenlik standartlarını karşılamaz. IEC 61508/ISO 26262/ISO 13849 ve benzeri standartların uygulanabilir kapsamını kontrol edin ve güvenlik fonksiyonlarını bir izleme sistemine, sertifikalı bir MCU'ya ve fiziksel bir acil durdurmaya ayırın. Bir ağa bağlanırken, SROS 2 anahtarlarını ve sertifikalarını, DDS Güvenliğini, erişim kontrolünü ve günlük denetimini benimseyin.

7. Mevcut Ekosistem ve Araştırma

Nav2, eylemler ve yaşam döngüsü yönetimi yoluyla kendi kendine konum belirleme, haritalama, yol planlama ve kontrolü entegre eder ve ros2_control, donanım ve kontrolörler arasındaki sınırı standartlaştırır. MoveIt 2, bir manipülatörün kinematiklerini, çarpışma kontrolünü ve yörünge planlamasını ele alır. Gazebo veya Webots'ta simülasyon yapmak ve rosbag2 ile sensör kayıtlarını yeniden oynatmak, gerçek robotu durdurmadan regresyon testine olanak tanır.

Araştırmalar, sıfır kopyalı iletişim, GPU/NPU kullanan tipli görüntü işlem hatları, deterministik yürütücüler, dağıtılmış öğrenme ve DDS'nin ötesine geçen bulut robotik alanlarında ilerleme kaydediyor. Yeni bir özelliği benimserken, yalnızca kıyaslamaları değil, ağ kesintilerini, zaman kaymasını, işlem yeniden başlatmalarını, sensör kesintilerini ve hatalı mesaj uzunluğunu da test edin.

Özet

ROS 2, bir robotu bir parça koleksiyonundan yeniden kullanılabilir dağıtılmış bir sisteme dönüştürür. Düğüm sorumluluklarını, konu QoS'unu, TF2'nin koordinatlarını ve zamanlamasını, yaşam döngüsünü ve güvenli durumları önceden tasarlayın; böylece algoritmaları değiştirseniz bile tüm sistem sağlam kalır.

Anlayışınızı kontrol edin
Düğümler arasındaki bağlantı doğru çalışmayı sağlıyor mu?

Zaman damgaları, çerçeveler, QoS ve hızlar da eşleşmelidir.

Veri almak, bu verilerin kontrol için kullanılabilir olduğu anlamına gelmez. ## Referanslar - [ROS 2 Resmi Dokümantasyonu](https://docs.ros.org/en/rolling/) - [ROS 2 Hizmet Kalitesi Ayarları](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Quality-of-Service-Settings.html) - [ROS 2 tf2](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Tf2.html) - [DDS Vakfı](https://www.dds-foundation.org/) - [Nav2 Dokümantasyonu](https://docs.nav2.org/) - [ros2_control](https://control.ros.org/)

Related reading

Explore another aspect of this fieldICP'nin başarısız olmasının nedenleri: başlatma, aykırı değerler ve simetrik geometriExplore another aspect of this fieldROS 2'de haritalamadan navigasyona — minimal bir Jazzy ve Nav2 prosedürüExplore another aspect of this fieldRobot koordinat dönüşümleri: matrisler, kuaterniyonlar ve TF