【ROS】PublisherとSubscriberの作成
Publisherの作成
$ roscd ros_start $ mkdir scripts $ cd scripts/ $ vi talker.py
#!/usr/bin/env python import rospy from std_msgs.msg import String rospy.init_node('talker') #node name # chatter : name # String : std_msg Topic [Publisher] # pueue_size : buffer pub = rospy.Publisher('chatter', String, queue_size=10) rate = rospy.Rate(10) #10kHz while not rospy.is_shutdown(): #loop hello_str = String() #make String data #writing data (helloworld and time) hello_str.data = "hello world %s" % rospy.get_time() #publish pub.publish(hello_str) #loop(because 10kHz) rate.sleep()
Subscriberの作成
$ vi listener.py
#!/usr/bin/env python import rospy from std_msgs.msg import String def callback(message): # output rospy.loginfo("I heard %s", message.data) rospy.init_node('listener') # node name sub = rospy.Subscriber('chatter', String , callback) # if reception->run rospy.spin() # loop and reception
これで完成です。
実行
以下をそれぞれ別のターミナルで実行してください。
$ roscore
$ rosrun ros_start talker.py
$ rosrun ros_start listener.py [INFO] [1556022065.478649]: I heard hello world 1556022065.47 [INFO] [1556022065.568496]: I heard hello world 1556022065.57 [INFO] [1556022065.668592]: I heard hello world 1556022065.67 [INFO] [1556022065.768532]: I heard hello world 1556022065.77 [INFO] [1556022065.869021]: I heard hello world 1556022065.87 [INFO] [1556022065.968412]: I heard hello world 1556022065.97 [INFO] [1556022066.068923]: I heard hello world 1556022066.07 [INFO] [1556022066.169275]: I heard hello world 1556022066.17 [INFO] [1556022066.268587]: I heard hello world 1556022066.27
このようになれば正常に動いています。