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
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.
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.
Komentar
Silakan masuk terlebih dahulu.
Belum ada data.