PENJELASAN PUBLISHER 
Pada tutorial kali ini kita akan membahas dari koding talker yang dari tutorial sebelumnya. Ingat kembali koding dari talker.py berfungsi untuk menggerakan gambar kura-kura dengan menggunakan node tanpa perlu kit amenggunakan keyboard.

#!/usr/bin/env python
import rospy
import math
from geometry_msgs.msg import Twist
#method
def talker():
#Membuat publisher
pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)
# inisialisasi nama node sebagai robot_move
rospy.init_node('robot_move', anonymous=False)
#frekuensi 1hz
rate = rospy.Rate(1) # 1hz

while not rospy.is_shutdown():
  twist = Twist()
  twist.linear.x = 5.0
  twist.angular.z = math.radians(90)
  pub.publish(twist)
  rate.sleep()

#main function
if __name__ == '__main__':
  try:
    talker()
  except rospy.ROSInterruptException:
    pass

PENJELASAN :

#!/usr/bin/env python
Jika kita menggunakan bahasa phyton sebagai bahasa pemogramannya, maka kita menuliskan perintah berikut, sehingga sistem akan mengenali bahasa pemograman yang kita pakai


import rospy
Import librabry phyton untuk ros karena kita akan menggunakan bahasa phyton untuk isi pogram node

from geometry_msgs.msg import Twist
import library Message Twist

pub = rospy.Publisher(’/turtle1/cmd_vel’,Twist,queue_size = 10)
  • kita akan membuat sebuah objek untuk class Publisher dengan nama objek yaitu pub
  • dalam Publisher tersebut kita membuat topic yang akan dipublish yaitu dengan nama /turtle1/cmd_vel
  • Menetapkan tipe message dari topic tersebut, tipe yang kita gunakan yaitu Twist
  • Menetapkan ukuran buffer message yaitu dengan cara queue_size =10


rospy.init_node(’robot_move’,anonymous = false)
Setelah kita membuat objek dari publisher dengan nama pub dari class Publisher serta menentukan nama topic dan tipe topicnya, selanjut kita meng-inisialisasi node tersebut dengan nama robot_move.


rate = rospy.Rate(1)
baris diatas meng--inisialisasikan besar frekuensi untuk meng-publish data, 1 pada argumen fungsi rate diatas berrarti 1hz maksudnya data akan dipublish dengan frekuensi 1hz


while not rospy.is_shutdown():
baris diatas berfungsi untuk meng-loop pogram utama, sehingga pogram kita akan terus meng-publish selama node tidak dimatikan/ditutup.


twist =Twist()
membuat objek untuk class message Twist dengan nama twist. twist ini berfungsi untuk mengakeses variabel primitif yang terdapat didalam message


pub.publish(twist)
publish data


#main function
if __name__ == '__main__':
  try:
    talker()
  except rospy.ROSInterruptException:
    pass
baris koding diatas adalah baris yang pertama kali dieksekui, talker() adalah method yang kita buat


twist.linear.x = 5.0
twist.angular.z = math.radians(90)
untuk memahami koding diatas ingat kembali mengenai tipe topic (message) yang dipublish oleh node file turtlesim_node dari package turtlesim yaitu topic /turtle1/cmd_vel dengan message geometry msgs/Twist
Karena twist adalah nama objek dari class message Twist yang berfungsi untuk meng-akses variabel primitif dari messagem.

twist.linear.x = 5.0
baris diatas berfungsi untuk mengakses variabel primitf x dari bagian linear.


twist.angular.z = math.radians(90)
baris diatas untuk mengakses variabel z pada bagian angular. baris ini berfungsi untuk membuat kura-kura berputar terhadap sumbu z  dengan memberikan nilai dalam satuan radian.

Silahkan Anda variasikan nilai dari twist.linear.x dan twist.angular.z , kedua perintah tersebut berfungsi untuk memvariasikan pergerakan kura-kura dari turtlesim_node