Lompat ke isi

Node (ROS)

Dari Wiki Berbudi

Node dalam Robot Operating System (ROS) adalah proses perangkat lunak yang dirancang untuk menjalankan fungsi tertentu dalam suatu sistem robotik. Setiap node biasanya memiliki tanggung jawab yang relatif terbatas, seperti membaca data sensor, mengendalikan aktuator, melakukan perencanaan gerak, atau menyediakan antarmuka untuk perangkat tertentu. Pemisahan fungsi tersebut memungkinkan sistem robotik dibangun sebagai kumpulan komponen yang dapat dikembangkan, diuji, dan diganti secara lebih mudah.

Pengertian dan karakteristik

Dalam arsitektur ROS, node merupakan unit komputasi utama yang berkomunikasi dengan node lain melalui mekanisme komunikasi yang disediakan oleh ROS. Sebuah node dapat menerima masukan, memprosesnya, dan menghasilkan keluaran tanpa harus mengetahui rincian internal node lain. Pendekatan ini menerapkan prinsip modularitas dan mendukung pengembangan sistem secara terdistribusi.

Node umumnya berjalan sebagai proses tersendiri pada sistem operasi. Dalam penerapan tertentu, beberapa node dapat ditempatkan dalam satu proses melalui mekanisme komposisi, terutama pada ROS 2. Walaupun demikian, batas logis antar-node tetap dipertahankan agar fungsi, antarmuka, dan ketergantungan setiap komponen dapat dikelola secara jelas.

Arsitektur komunikasi

Komunikasi antarnode dalam ROS dibangun di atas pola komunikasi yang bersifat terstruktur. Pada ROS 1, pengelolaan komunikasi biasanya melibatkan ROS Master, sedangkan ROS 2 menggunakan mekanisme penemuan peserta jaringan yang didasarkan pada teknologi Data Distribution Service (DDS). Perbedaan ini memengaruhi cara node menemukan satu sama lain dan membangun hubungan komunikasi.

Node dapat berkomunikasi melalui topic, layanan, dan action. Setiap mekanisme memiliki karakteristik yang berbeda sesuai dengan jenis interaksi yang diperlukan. Topic cocok untuk aliran data yang berkelanjutan, layanan digunakan untuk permintaan dan tanggapan singkat, sedangkan action digunakan untuk tugas yang berlangsung lebih lama dan memerlukan umpan balik.

Topic dan pesan

Pada komunikasi berbasis topic, node yang menghasilkan data disebut publisher, sedangkan node yang menerima data disebut subscriber. Data dikirim dalam bentuk pesan yang memiliki struktur tertentu. Sebuah topic dapat memiliki banyak publisher dan subscriber, sehingga beberapa komponen dapat berbagi informasi yang sama tanpa membangun hubungan langsung satu sama lain.

Pesan ROS dapat berisi nilai sederhana, seperti bilangan, teks, atau nilai logika, maupun struktur yang lebih kompleks, seperti data sensor, posisi, orientasi, dan informasi waktu. Jenis pesan yang digunakan harus sesuai antara publisher dan subscriber. Ketidaksesuaian jenis atau struktur pesan dapat menyebabkan komunikasi gagal atau menghasilkan data yang tidak dapat diproses dengan benar.

Layanan dan action

Layanan menyediakan pola komunikasi permintaan dan tanggapan. Node klien mengirimkan permintaan kepada node penyedia layanan, kemudian menunggu tanggapan yang berisi hasil pemrosesan. Mekanisme ini sesuai untuk operasi yang relatif singkat, misalnya mengubah konfigurasi, mengaktifkan suatu fungsi, atau meminta informasi tertentu.

Action digunakan untuk operasi yang membutuhkan waktu lebih lama, seperti navigasi menuju lokasi, pengangkatan lengan robot, atau pelaksanaan urutan gerak. Selain menerima hasil akhir, klien action dapat memperoleh umpan balik selama proses berlangsung dan, dalam kondisi tertentu, membatalkan tujuan yang sedang dikerjakan. Fitur tersebut membedakan action dari layanan biasa.

Nama, namespace, dan parameter

Setiap node memiliki nama yang digunakan untuk membedakannya dari node lain. Nama tersebut dapat ditempatkan dalam namespace sehingga komponen yang memiliki fungsi sama dapat dijalankan lebih dari satu kali tanpa mengalami benturan nama. Pengaturan namespace banyak digunakan pada sistem yang memiliki beberapa robot atau beberapa salinan sensor sejenis.

Node juga dapat menggunakan parameter untuk menyimpan nilai konfigurasi. Parameter dapat menentukan frekuensi pembacaan sensor, batas kecepatan, nama perangkat, atau pilihan algoritme. Pemisahan antara kode program dan parameter memungkinkan perilaku node diubah tanpa melakukan kompilasi ulang.

Siklus hidup node

Siklus hidup node mencakup tahap pembuatan, inisialisasi, pelaksanaan, penghentian, dan penghancuran. Pada tahap inisialisasi, node mendaftarkan antarmuka komunikasi, membaca parameter, serta menyiapkan sumber daya yang diperlukan. Setelah aktif, node menjalankan fungsi pemrosesan melalui mekanisme executor atau pengelola pemanggilan balik.

ROS 2 menyediakan konsep lifecycle node yang memungkinkan transisi keadaan dikendalikan secara eksplisit. Node dapat berada dalam keadaan belum dikonfigurasi, tidak aktif, aktif, atau telah dihentikan. Pengendalian tersebut berguna pada sistem industri dan sistem keselamatan karena setiap tahap operasi dapat diperiksa sebelum node menjalankan fungsi utama.

Daftar fungsi node dalam sistem robotik

Node dapat digunakan untuk berbagai peran dalam sistem robotik, antara lain:

  1. Membaca data dari kamera, lidar, radar, enkoder, atau sensor inersial.
  2. Mengubah data sensor ke dalam kerangka koordinat yang seragam.
  3. Melakukan penyaringan, penggabungan, dan interpretasi data sensor.
  4. Menghasilkan perintah kendali untuk motor dan aktuator.
  5. Menjalankan algoritme lokalisasi dan pemetaan.
  6. Menyediakan perencanaan jalur serta penghindaran rintangan.
  7. Menyajikan informasi robot melalui antarmuka pemantauan.
  8. Mencatat data untuk keperluan pengujian dan analisis.

Eksekusi dan pemanggilan balik

Node biasanya merespons peristiwa melalui fungsi pemanggilan balik atau callback. Pemanggilan tersebut dapat dipicu oleh pesan yang diterima, permintaan layanan, hasil pengatur waktu, atau perubahan keadaan. Pengelola eksekusi menentukan kapan callback dijalankan dan apakah beberapa callback dapat diproses secara bersamaan.

Pemilihan model eksekusi berpengaruh terhadap kinerja dan determinisme sistem. Eksekusi satu utas lebih sederhana dan mengurangi risiko konflik akses data, sedangkan eksekusi banyak utas dapat meningkatkan pemanfaatan prosesor untuk tugas yang berjalan secara paralel. Pada model banyak utas, pengembang perlu mengelola sinkronisasi agar tidak terjadi perlombaan data atau kebuntuan.

Node dalam ROS 1 dan ROS 2

Pada ROS 1, node bergantung pada sistem penamaan terpusat yang umumnya disediakan oleh ROS Master. Pendekatan ini relatif mudah dipahami dan banyak digunakan dalam penelitian, tetapi dapat menjadi keterbatasan ketika sistem memerlukan ketahanan terhadap kegagalan pusat atau komunikasi lintas jaringan yang lebih kompleks.

ROS 2 dirancang untuk mendukung sistem terdistribusi, penggunaan waktu nyata, serta penerapan pada perangkat dengan sumber daya dan tingkat keandalan yang beragam. Node ROS 2 memanfaatkan lapisan abstraksi bernama ROS middleware atau RMW, yang memungkinkan pemilihan implementasi komunikasi tanpa mengubah antarmuka utama aplikasi.

Penemuan dan kualitas layanan

Dalam ROS 2, node melakukan penemuan peserta komunikasi secara otomatis melalui lapisan komunikasi yang mendasarinya. Setelah menemukan node lain, sistem dapat mencocokkan topic, layanan, atau action berdasarkan nama dan jenis antarmuka. Proses ini mengurangi kebutuhan akan pengelola pusat, tetapi dapat meningkatkan kebutuhan konfigurasi pada jaringan tertentu.

ROS 2 menyediakan pengaturan kualitas layanan (QoS), seperti tingkat keandalan, durasi penyimpanan pesan, serta perilaku pengiriman data. Pengaturan QoS memungkinkan komunikasi disesuaikan dengan karakteristik data. Data sensor berfrekuensi tinggi mungkin lebih mengutamakan keterkinian, sedangkan perintah kendali atau status keselamatan dapat memerlukan pengiriman yang lebih andal.

Pembuatan dan pengujian node

Node dapat dikembangkan menggunakan bahasa pemrograman yang didukung oleh ROS, terutama C++ dan Python. Pustaka klien ROS menyediakan antarmuka untuk membuat node, mendefinisikan publisher dan subscriber, mengakses parameter, serta menjalankan layanan dan action. Pengembang biasanya mengorganisasi node dalam sebuah paket ROS yang juga berisi berkas konfigurasi, definisi pesan, dan instruksi pembangunan.

Pengujian node dilakukan secara bertahap, mulai dari pengujian fungsi individual hingga pengujian integrasi antarkomponen. Data tiruan, simulator, dan rekaman topic dapat digunakan untuk menguji perilaku node tanpa menjalankan perangkat keras sebenarnya. Pendekatan tersebut membantu menemukan kesalahan dalam pemrosesan data, penanganan keadaan, dan komunikasi jaringan.

Pengelolaan dan pemantauan

ROS menyediakan berbagai alat untuk mengamati node yang sedang berjalan, hubungan komunikasi, serta isi pesan. Perintah pada lingkungan ROS dapat digunakan untuk menampilkan daftar node, topic, layanan, dan parameter. Alat visualisasi seperti RViz membantu memeriksa data sensor, peta, posisi robot, dan lintasan secara grafis.

Pencatatan data melalui mekanisme seperti bag file memungkinkan aktivitas node direkam dan diputar kembali. Fasilitas ini penting untuk reproduksi eksperimen, perbandingan algoritme, dan diagnosis kesalahan. Pemantauan juga dapat mencakup penggunaan prosesor, konsumsi memori, frekuensi pesan, serta keterlambatan komunikasi.

Keamanan dan keandalan

Node yang berkomunikasi melalui jaringan dapat menghadapi risiko penyadapan, pemalsuan pesan, dan akses tidak sah. ROS 2 mendukung mekanisme keamanan berbasis DDS Security untuk autentikasi peserta, pengendalian akses, dan perlindungan kerahasiaan komunikasi. Penerapan fitur keamanan perlu disesuaikan dengan kebutuhan sistem karena dapat menambah beban komputasi dan kompleksitas konfigurasi.

Keandalan node juga dipengaruhi oleh penanganan kesalahan, pengawasan proses, dan strategi pemulihan. Sistem dapat menggunakan pengawas eksternal untuk mendeteksi node yang berhenti merespons, kemudian memulai ulang node atau mengalihkan fungsi kepada komponen cadangan. Dalam sistem kritis, perilaku ketika komunikasi terputus harus ditentukan secara eksplisit dan diuji dalam berbagai kondisi.

Peran dalam pengembangan robotika

Penggunaan node memungkinkan sistem robotik dibangun secara bertahap dan kolaboratif. Tim yang berbeda dapat mengembangkan node sensor, kendali, navigasi, dan antarmuka secara terpisah selama antarmuka komunikasinya disepakati. Struktur tersebut juga memudahkan penggunaan kembali komponen pada robot atau lingkungan yang berbeda.

Meskipun demikian, terlalu banyak node dapat meningkatkan jumlah hubungan komunikasi, penggunaan sumber daya, dan kesulitan pelacakan kesalahan. Oleh sebab itu, pembagian node perlu mempertimbangkan batas fungsi, kebutuhan waktu nyata, biaya komunikasi, serta kemudahan pemeliharaan. Node yang dirancang dengan antarmuka jelas dan tanggung jawab terbatas biasanya lebih mudah diuji dan diintegrasikan.