Robot Operating System 2 (ROS 2) adalah framework dan middleware yang memungkinkan berbagai komponen perangkat lunak saling berkomunikasi dalam sebuah sistem terdistribusi. Meskipun dikembangkan terutama untuk robotika, ROS 2 juga menawarkan kemampuan menarik bagi pengembangan proyek Internet of Things (IoT) yang melibatkan mikrokontroler seperti Arduino dan ESP32.
Dalam proyek IoT sederhana, mikrokontroler biasanya membaca sensor, memproses data, kemudian mengendalikan aktuator atau mengirimkan informasi melalui jaringan. ROS 2 memungkinkan proses tersebut dikembangkan menjadi sistem yang lebih modular, dengan pengolahan data, pengambilan keputusan, dan pengendalian perangkat yang dapat dijalankan oleh komponen berbeda.
Perbedaan ROS 2 dan Arduino IDE
Arduino IDE digunakan untuk menulis, mengompilasi, dan mengunggah program ke mikrokontroler. Program tersebut kemudian berjalan langsung pada perangkat, misalnya untuk membaca sensor HC-SR04, mengendalikan servo, atau memproses data dari sensor MQ-2.
ROS 2 memiliki peran berbeda. ROS 2 menyediakan mekanisme komunikasi dan koordinasi antarbagian sistem yang disebut node. Setiap node dapat menjalankan tugas tertentu dan bertukar informasi dengan node lainnya.
Sebagai contoh, satu node menerima data sensor, node berikutnya melakukan analisis, dan node lainnya menghasilkan perintah pengendalian perangkat.
Dengan demikian, ROS 2 bukan pengganti Arduino IDE. Keduanya dapat digunakan bersama: Arduino IDE untuk mengembangkan program mikrokontroler, sedangkan ROS 2 mengoordinasikan proses dan komunikasi pada sistem yang lebih luas.
Apa yang Ditambahkan ROS 2 pada Proyek IoT?
1. Pengolahan Data yang Lebih Kompleks
Mikrokontroler memiliki keterbatasan memori dan kemampuan komputasi. Melalui integrasi dengan komputer yang menjalankan ROS 2, data dari mikrokontroler dapat diproses menggunakan algoritma yang lebih kompleks, termasuk pengolahan citra, pengenalan objek, dan pembelajaran mesin.
Hasil pengolahan tersebut kemudian dapat dikirimkan kembali kepada mikrokontroler untuk menentukan tindakan aktuator.
2. Komunikasi Antarperangkat yang Modular
ROS 2 menggunakan konsep topic untuk pertukaran data melalui mekanisme publish-subscribe. Sebuah node dapat mengirimkan data tanpa harus mengetahui secara langsung seluruh aplikasi yang akan menerimanya.
ROS 2 juga menyediakan service untuk komunikasi permintaan dan respons, serta action untuk pekerjaan yang berlangsung lebih lama dan memerlukan informasi perkembangan proses.
Arsitektur ini memungkinkan sistem IoT dikembangkan secara bertahap tanpa harus menyatukan seluruh proses ke dalam satu program besar.
3. Integrasi Beberapa Mikrokontroler
Sebuah proyek dapat menggunakan beberapa ESP32 sekaligus. Misalnya, satu perangkat membaca sensor lingkungan, perangkat lain mengendalikan relay, dan perangkat berikutnya mengatur motor atau servo.
Komputer yang menjalankan ROS 2 dapat mengoordinasikan informasi dari perangkat-perangkat tersebut melalui node dan antarmuka komunikasi yang sesuai.
4. Pencatatan, Visualisasi, dan Pengujian Data
ROS 2 memiliki fasilitas untuk memantau aliran pesan, merekam data menggunakan rosbag2, serta mengintegrasikan data dengan perangkat visualisasi.
Kemampuan ini berguna dalam praktikum IoT karena data sensor dapat dianalisis kembali, dibandingkan antarpercobaan, atau digunakan untuk menguji perubahan algoritma tanpa harus selalu mengulang seluruh pengambilan data fisik.
Contoh Proyek: Penyortiran Paket Berdasarkan Alamat
Salah satu contoh penerapan ROS 2 di luar robotika adalah sistem penyortiran paket otomatis berdasarkan informasi alamat yang tertulis pada label pengiriman.
Misalnya, paket yang mencantumkan tujuan Bogor harus diarahkan ke kotak Bogor, sedangkan paket dengan tujuan Jakarta diarahkan ke kotak Jakarta.
Arsitektur sistem dapat dirancang sebagai berikut:
- Kamera: Mengambil gambar label alamat pada paket.
- Node pengolahan citra: Memproses gambar dan menjalankan Optical Character Recognition (OCR) untuk membaca teks alamat.
- Node klasifikasi: Menganalisis teks untuk menentukan kota tujuan, misalnya Bogor atau Jakarta.
- Node pengendali: Mengirimkan instruksi penyortiran kepada ESP32 melalui antarmuka komunikasi.
- ESP32 dan aktuator: Menggerakkan servo atau mekanisme pengarah paket menuju kotak tujuan.
Pada rancangan tersebut, ROS 2 berfungsi menghubungkan dan mengoordinasikan proses. Pengenalan tulisan tetap dikerjakan menggunakan perangkat lunak OCR, sedangkan pengendalian fisik dilaksanakan oleh mikrokontroler.
Keuntungannya, algoritma OCR dapat diperbaiki atau diganti tanpa harus menulis ulang seluruh program pengendali servo. Begitu pula mekanisme penyortiran dapat dikembangkan dengan menambah node atau perangkat baru.
Bagaimana ESP32 Berkomunikasi dengan ROS 2?
Ada beberapa pendekatan yang dapat digunakan untuk menghubungkan mikrokontroler dengan ROS 2.
- Serial atau protokol jaringan: ESP32 menjalankan firmware biasa, sementara program penghubung pada komputer menerjemahkan data Serial, MQTT, atau protokol lain menjadi pesan ROS 2.
- micro-ROS: ESP32 yang didukung dapat menjalankan perangkat lunak micro-ROS sehingga berpartisipasi dalam komunikasi ROS 2 melalui micro-ROS Agent.
Penggunaan micro-ROS tidak selalu diperlukan. Untuk tahap pembelajaran, pendekatan Serial dengan program penghubung pada komputer dapat menjadi pilihan yang lebih sederhana sebelum mengembangkan integrasi menggunakan micro-ROS.
Variasi Proyek IoT yang Bisa Dikembangkan
Selain penyortiran paket, beberapa variasi proyek yang dapat memanfaatkan ROS 2 antara lain:
- Sistem pemantauan lingkungan: Menggabungkan data suhu, kelembapan, gas, dan sensor lainnya untuk dianalisis dari beberapa lokasi.
- Smart greenhouse: Mengombinasikan sensor tanah, pemantauan kamera, pengolahan data, dan pengendalian pompa.
- Inspeksi visual otomatis: Memeriksa objek menggunakan kamera, kemudian memerintahkan mikrokontroler untuk mengaktifkan mekanisme pemisah.
- Sistem monitoring industri: Mengintegrasikan data dari beberapa mesin, mencatat perubahan kondisi, dan meneruskan hasil analisis kepada sistem kendali.
Untuk proyek yang hanya membaca satu sensor dan mengaktifkan satu relay, ROS 2 mungkin belum diperlukan. Manfaatnya lebih terasa ketika proyek melibatkan beberapa proses yang perlu dipisahkan, diintegrasikan, atau dikembangkan secara bertahap.
Apakah Harus Menggunakan Raspberry Pi?
Tidak. Eksperimen ROS 2 dapat dimulai menggunakan laptop atau komputer biasa. Raspberry Pi merupakan salah satu alternatif perangkat komputasi yang dapat digunakan ketika proyek ingin dibuat lebih ringkas atau dioperasikan secara mandiri.
Komputer Linux, termasuk Fedora, dapat digunakan untuk eksperimen ROS 2 dengan memperhatikan dukungan paket dan metode instalasi yang sesuai dengan versi distribusinya.
Pada tahap awal, ROS 2 bahkan dapat dipelajari tanpa mikrokontroler. Kita dapat membuat node pengirim data simulasi, node pemrosesan, dan node penerima perintah sebelum menghubungkannya dengan ESP32 atau Arduino yang sebenarnya.
Kesimpulan
ROS 2 memberikan variasi baru dalam pengembangan proyek IoT melalui pemisahan tugas, komunikasi antarproses, integrasi beberapa perangkat, serta kemampuan memanfaatkan komputasi yang lebih kompleks.
Mikrokontroler tetap menjalankan peran penting sebagai penghubung sensor dan aktuator. Sementara itu, komputer yang menjalankan ROS 2 dapat menangani koordinasi dan pengolahan informasi yang melampaui kemampuan mikrokontroler.
Dengan pendekatan ini, pembelajaran IoT dapat berkembang dari sekadar membaca sensor dan mengendalikan output menjadi perancangan sistem terdistribusi yang melibatkan pemrograman, elektronika, komunikasi data, dan pengolahan informasi.
Referensi
- Open Robotics. ROS 2 Documentation.
- Open Robotics. ROS 2 Documentation Repository.
- micro-ROS. ROS 2 for Microcontrollers.
- micro-ROS. micro-ROS Agent.