Pada tutorial kali ini kita akan membuat sebuah Node yang berfungsi untuk mengambil informasi posisi dari kura-kura dari node /turtlesim. Ingat kembali bahwa node /turtlesim meng-publish topic /turtle1/pose, topic ini memuat informasi dari posisi kura-kura tersebut.

Ada beberapa hal yang harus kita persiapkan terlebih dahulu:


#1 Message dari topic
rostopic info /turtle1/pose

output:

#2 Variabel primitif dari message
rosmsg show turtlesim/Pose

output :


Setelah kita mengakses message dan vairabel primitif dari message, kemudian kita  buat koding seperti berikut:


#!/usr/bin/env python
import rospy
from turtlesim.msg import Pose

def pose_callback(pose_message):
  #get_caller_id(): Get fully resolved name of local node
  rospy.loginfo(rospy.get_caller_id() + " pose x of the robot = %f",pose_message.x)

def listener():
  
  #inisialisasi node dengan nama 
  robot_callback
  rospy.init_node('robot_callback', anonymous=False)

  #deklar Subscriber
  rospy.Subscriber("/turtle1/pose", Pose, pose_callback)
  rospy.spin()

if __name__ == '__main__':
  listener()

PENJELASAN


import rospy
import library bahasa phyton untuk ROS karena kita mem-pogram node dengan bahasa phyton


from turtlesim.msg import Pose
Karena node kita akan meng-subscribe topic /turtle1/pose dengan tipe topicnya Pose. maka kita perlu mengimport library untuk message Pose


if __name__ = '__name__'
  listener()
koding diatas adalah bagian yang akan pertama sekali dijalankan, yaitu method listener()

rospy.ini_node('robot_callback',anonymou=False)
Meng-inisialisasi node dengan nama robot_callback


rospy.Subscriber("/turtle1/pose",Pose,pose_callback)
Membuat subscriber dengan topic yang akan di subscribe yaitu /turtle1/pose  dengan tipe topic (message) yaitu Pose dan method yang akan dieksekusi saat topic berhasil di subsribe yaitu method pose_callback 



def pose_callback(pose_message)
mendefinisikan method yang akan dieksekusi saat ada topic yang disubscribe dengan nama method pose_callback, topic yang berhasil di subscribe akan tersimpan dalam variabel pose_message


rospy.loginfo(rospy.get_caller_id() + "pose of the robot = %f", pose_message.x)
Kita tahu variabel primitif dari message turtlesim/Pose ada 5 yaitu x,y,theta, linear_velocity, angular_velocity. contoh untuk mengkases variabel x yaitu pose_mesage.x, atau untuk mengakses varibel theta yaitu pose_message.theta