Membangun Node Subscriber Menggunakan C++
Tutorial Robot Operating System (Bagian 4)
Sebelumnya, embeddednesia telah membahas mengenai bagaimana membuat Node pada ROS yang berfungsi sebagai Publisher. Pada tulisan kali ini, embeddednesia akan melanjutkan membuat program Node yang berfungsi sebagai Subscriber dari Node yang telah dipublish oleh node publisher dari program yang sebelumnya pernah dibahas.
Jika anda belum mengikuti tulisan sebelumnya tentang bagaimana membuat node publisher pada ROS, disarankan untuk membaca terlebih dahulu tulisan sebelumnya sebagai pondasi sebelum menginjak ke bahasan ini.
Hal pertama yang perlu diketahui sebelum menulis program untuk mensubscribe sebuah topic adalah, anda harus mengetahui nama topic yang ingin disubscribe, beserta jenis tipe data pada message-nya. Untuk melihat topic yang sedang dipublish pada suatu environment ROS, gunakan perintah rostopic list
Dalam tutorial ini, topic
yang ingin disubscribe adalah /chatter
. Untuk mengetahui lebih rinci tentang topic /chatter
gunakan perintah rostopic info [nama topic]
Dari informasi tersebut, diketahui bahwa topic chatter memiliki message yang berjenis std_msgs/String
. Oke, mari dibuat programnya, buka text editor pada workspace di package tutorial_ros pada tutorial sebelumnya, buat file bernama listener.cpp
Program tersebut terdiri dar dua bagian besar, fungsi main
yang merupakan titik awal eksekusi program, dan fungsi callback yang diberi nama chatterCallback
. fungsi callback ini akan dipanggil secara internal apabila message diterima dari topic yang ingin disubscribe.
Perintah subscribe diberikan oleh fungsi subscribe
di nomer 11, fungsi ini memiliki 3 argumen. Argumen pertama, diisi oleh nama topic yang ingin disubscribe, argumen kedua adalah antrian message yang bisa dibuffer oleh program, sedangkan yang ketiga adalah nama fungsi callback yang ingin dipanggil apabila satu message baru berhasil diterima.
Fungsi subscriber
pada baris 11 akan memberikan return object ros::Subscriber
yang mesti ditampung hingga dilakukan unsubscribe. ketika object tersebut didestruct maka node akan otomatis me-subscribe topic
. Sedangkan fungsi ros::spin()
, berlaku seperti superloop yang akan melakukan listening dan mentrigger fungsi callback secepat mungkin begitu sebuah message diterima.
Sama seperti di tulisan sebelumnya, untuk mengcompile, menjadikan source code menjadi binary. Ubah CMakelist.xml, tambahkan 3 baris sebagai berikut
Gunakan perintah catkin_make, untuk meng-compile program. Jangan lupa untuk selalu berada posisi root workspace ketika akan melakukan compile program
Jika tidak ada error, maka proses build berjalan sukses, jalankan program dengan menggunakan perintah rosrun. Sebelumnya, pastikan master ros (roscore) dan node simple_publisher telah running sebelum node simple_listener dijalankan, masing – masih di jendela terminal yang terpisah
Perhatikan pada jendela terminal simple_listener menampilkan data yang dikirim pada jendela terminal simple_publisher
Untuk menampilkan info dari node listener, gunakan rosnode info nama_node
Sedangkan untuk melihat visualisasi yang terjadi pada masing – masing node, gunakan rqt_graph.
Dari gambar dapat diketahui bahwa node my_talker
mempublish topic bernama /chatter
dan disubscribe oleh node /listener
(perhatikan arah tanda panah).
Anda harus log masuk untuk menerbitkan komentar.