Contents — find the section you need

ROS 2 bukanlah robot itu sendiri. Ini adalah fondasi untuk menjalankan driver kamera, penentuan lokasi mandiri, perencanaan jalur, dan kontrol motor sebagai program terpisah (node) dan menggabungkannya melalui pesan dan komunikasi standar. Anda dapat memulai dengan satu file Python pada tahap prototipe, dan meningkatkannya ke C++, eksekusi waktu nyata, beberapa komputer, dan pemantauan keselamatan untuk suatu produk. Yang penting bukanlah menghafal API — melainkan mendesain siapa yang memiliki data, pengaturan waktu, keandalan, dan kondisi aman saat dimatikan.

Gambar: Robot Logo Sistem Operasi, Wikimedia Commons (CC BY-SA 4.0). Logo ini mengidentifikasi middleware dan tidak menjamin distribusi atau konfigurasi DDS tertentu.

Ringkasan 30 Detik

  • Sebuah node adalah proses dengan satu tanggung jawab, sebuah topik mewakili aliran data berkelanjutan, sebuah layanan mewakili permintaan/respons singkat, dan sebuah aksi mewakili tugas panjang dengan umpan balik sementara.

  • Komunikasi ROS 2 berjalan pada DDS, dan QoS (keandalan, riwayat, kedalaman, daya tahan, tenggat waktu) dapat dipilih per titik akhir. Sensor dan kontrol tidak perlu menggunakan pengaturan yang sama.

  • TF2 mengelola pohon kerangka koordinat bersama dengan waktu. Campurkan map, odom, base_link, dan kerangka sensor, dan robot akan bergerak ke tempat yang salah meskipun persepsinya benar.
  • Pada perangkat keras nyata, tambahkan manajemen siklus hidup, pengawas, pemisahan hak akses, pencatatan, dan pengaman untuk gangguan jaringan. Bekerja dalam simulasi bukanlah bukti keamanan.

  • Perbaiki rilis dukungan jangka panjang seperti ROS 2 Jazzy, bersama dengan kombinasi DDS, OS, dan driver yang sesuai, sejak awal, dan bangun ruang kerja yang dapat direproduksi.

1. Gambaran Umum ROS 2

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

Gambar 1 — Di ROS 2, node saling menemukan dan berkomunikasi satu sama lain melalui DDS. Tidak hanya nama topik, tetapi QoS, tipe, waktu, dan kerangka koordinat semuanya diperlakukan sebagai bagian dari kontrak.

Grafik ROS 2 dapat dikonfigurasi saat runtime. Node kamera mempublikasikan gambar, node persepsi berlangganan gambar tersebut, dan node kontrol mengambil hasilnya ditambah lokalisasi mandiri dan mempublikasikan perintah kecepatan. Bahkan jika Anda memindahkan node ke komputer yang berbeda, grafik yang sama tetap berlaku selama penemuan dan serialisasi DDS berfungsi dengan benar.

2. Memilih Primitif Komunikasi yang Tepat

Tipe Di mana digunakan Contoh Pertimbangan desain
Topik Aliran kontinu, banyak-ke-banyak /scan , /camera/image QoS, bandwidth, latensi, putus koneksi
Layanan Permintaan dan respons singkat /reset_odometry Batas waktu, reentrancy
Aksi Tugas jangka panjang dengan kemajuan Navigasi, pengambilan Pembatalan, interupsi aman
Parameter Konfigurasi waktu mulai atau frekuensi rendah Gain, nama frame Tipe, izin perubahan, reproduksibilitas

Pesan topik tidak hanya harus membawa nilai tetapi juga header.stamp dan frame_id. Jika stempel waktu gambar dan stempel waktu IMU tidak sinkron, algoritma masih dapat menghitung hasilnya, tetapi akan salah memperkirakan gerakan. Mengirim ulang gambar kamera dengan andal dapat membanjiri bandwidth, jadi pilih QoS yang sesuai dengan karakteristik setiap sensor.

3. QoS sebagai "Kontrak Komunikasi"

Pengaturan QoS minimum yang perlu diperiksa di ROS 2 adalah Keandalan (Best Effort/Reliable), Ketahanan (Volatile/Transient Local), Riwayat (Keep Last/Keep All), Kedalaman, Batas Waktu, dan Keaktifan. LiDAR berkecepatan tinggi mungkin cocok untuk Best Effort, yang akan membuang paket yang sudah usang, sementara perintah kecepatan, yang tidak dapat mentolerir pesan yang hilang, harus menggunakan Reliable dengan Batas Waktu yang singkat.

Jika QoS Penerbit dan Pelanggan tidak kompatibel, mereka tidak akan berkomunikasi bahkan dengan nama topik yang sama. Periksa pengaturan sebenarnya dengan ros2 topic info -v /scan daripada mempercayai preset driver sensor secara membabi buta. Saat melintasi jaringan, uji MTU, transmisi ulang Wi-Fi, pembatasan multicast, dan sinkronisasi waktu secara bersamaan.

4. TF2 dan Waktu

Posisi robot dinyatakan sebagai transformasi antara kerangka koordinat. Pohon tipikal terlihat seperti:

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

map adalah kerangka dunia jangka panjang, odom adalah odometri jangka pendek yang halus, dan base_link adalah kerangka acuan kendaraan. SLAM mengoreksi map → odom, sementara estimasi roda/IMU memperbarui odom → base_link dengan kecepatan tinggi. TF2 menyimpan transformasi dengan stempel waktu dan menginterpolasinya ke waktu akuisisi setiap sensor.

Standarisasi kerangka koordinat sebagai tangan kanan, dan jelaskan perbedaan antara kerangka optik (z ke depan, x ke kanan, y ke bawah) dan kerangka kendaraan (x ke depan, y ke kiri, z ke atas). Perbaiki transformasi statis dengan static_transform_publisher, dan jangan publikasikan transformasi dinamis sebagai statis. Siklus atau beberapa induk dalam pohon TF merupakan kesalahan desain.

5. Paket dan Alur Implementasi

Node Python ROS 2 minimal terlihat seperti ini.

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)

Pada perangkat keras nyata, jangan kirim perintah kecepatan langsung ke motor — tempatkan node hulu, pembatas kecepatan, penghentian darurat, dan pemantauan perangkat keras di antaranya. Bahkan saat menggunakan rclcpp C++, periksa grup callback, Executor, alokasi memori, dan perilaku waktu nyata.

Pisahkan ruang kerja ke dalam src, build, install, dan log, dan selesaikan dependensi dengan rosdep. Sematkan OS, DDS, dan kompiler dengan Docker atau devcontainer, dan bangun ros2 doctor, ros2 node list, ros2 topic hz, dan tf2_tools ke dalam CI dan diagnostik lapangan.

6. Siklus Hidup dan Keamanan

Sensor dan aktuator tidak harus langsung menerima perintah begitu dinyalakan. Transisi status Node Siklus Hidup — Belum Dikonfigurasi → Tidak Aktif → Aktif → Selesai — memisahkan inisialisasi driver, kalibrasi, pemeriksaan komunikasi, dan otorisasi output. Ketika watchdog kehilangan detak jantungnya, nolkan perintah kecepatan dan juga buka rem atau relai di sisi perangkat keras.

Dari sisi keamanan, komunikasi pesan ROS 2 sendiri tidak memenuhi standar keamanan fungsional. Periksa cakupan yang berlaku dari IEC 61508/ISO 26262/ISO 13849 dan standar serupa, dan pisahkan fungsi keselamatan ke dalam sistem pemantauan, MCU bersertifikat, dan penghentian darurat fisik. Saat terhubung ke jaringan, gunakan kunci dan sertifikat SROS 2, Keamanan DDS, kontrol akses, dan audit log.

7. Ekosistem dan Penelitian Saat Ini

Nav2 mengintegrasikan lokalisasi mandiri, pemetaan, perencanaan jalur, dan kontrol melalui tindakan dan manajemen siklus hidup, dan ros2_control menstandarkan batas antara perangkat keras dan pengontrol. MoveIt 2 menangani kinematika manipulator, pemeriksaan tabrakan, dan perencanaan lintasan. Simulasi di Gazebo atau Webots dan pemutaran ulang log sensor dengan rosbag2 memungkinkan pengujian regresi tanpa menghentikan robot sebenarnya.

Penelitian sedang berkembang pada komunikasi tanpa penyalinan, pipeline gambar bertipe yang menggunakan GPU/NPU, eksekutor deterministik, pembelajaran terdistribusi, dan robotika cloud yang melampaui DDS. Saat mengadopsi fitur baru, uji bukan hanya benchmark tetapi juga putus koneksi jaringan, penyimpangan waktu, restart proses, putus koneksi sensor, dan panjang pesan yang salah format.

Ringkasan

ROS 2 mengubah robot dari kumpulan komponen menjadi sistem terdistribusi yang dapat digunakan kembali. Rancang tanggung jawab node, QoS topik, koordinat dan pengaturan waktu TF2, siklus hidup, dan status aman sejak awal, dan seluruh sistem tetap tangguh bahkan saat Anda mengganti algoritma.

Periksa pemahaman Anda
Apakah konektivitas antar node menghasilkan operasi yang benar?

Stempel waktu, frame, QoS, dan kecepatan juga harus cocok.

Penerimaan data tidak menjamin bahwa data tersebut dapat digunakan untuk kontrol.

Referensi

Related reading

Explore another aspect of this fieldMengapa ICP gagal: inisialisasi, outlier, dan geometri simetrisExplore another aspect of this fieldDari pemetaan hingga navigasi di ROS 2 — prosedur Jazzy dan Nav2 minimal.Explore another aspect of this fieldTransformasi koordinat robot: matriks, kuaternion, dan TF