Ros学习——Python发布器publisher和订阅器subscriber

1.编写发布器

  • 初始化 ROS 系统
  • 在 ROS 网络内广播我们将要在 chatter 话题上发布 std_msgs/String 类型的消息

  • 以每秒 10 次的频率在 chatter 上发布消息

在 beginner_tutorials package 里创建 script/talker.py 文件:

#!/usr/bin/env python
# license removed for brevity import rospy from std_msgs.msg import String  def talker():  pub = rospy.Publisher('chatter', String, queue_size=10)  rospy.init_node('talker', anonymous=True)  rate = rospy.Rate(10) # 10hz  while not rospy.is_shutdown():  hello_str = "hello world %s" % rospy.get_time()  rospy.loginfo(hello_str)  pub.publish(hello_str)  rate.sleep()  if __name__ == '__main__':  try:  talker()  except rospy.ROSInterruptException:  pass

 

 赋予文件执行权限:

$ chmod +x listener.py

2.编写订阅器

  

  • 初始化ROS系统
  • 订阅 chatter 话题

  • 进入自循环,等待消息的到达
  • 当消息到达,调用 chatterCallback() 函数

 

在 beginner_tutorials 目录下创建 script/listener.py 文件:

#!/usr/bin/env python
import rospy from std_msgs.msg import String  def callback(data):  rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)  def listener():   # In ROS, nodes are uniquely named. If two nodes with the same  # node are launched, the previous one is kicked off. The  # anonymous=True flag means that rospy will choose a unique  # name for our 'listener' node so that multiple listeners can  # run simultaneously.  rospy.init_node('listener', anonymous=True)   rospy.Subscriber("chatter", String, callback)   # spin() simply keeps python from exiting until this node is stopped  rospy.spin()  if __name__ == '__main__':  listener()

 赋予文件执行权限:

$ chmod +x listener.py

 

3.编译

  • 在catkin_ws目录下运行 catkin_make

 

 4.测试结果:

 

转载于:https://www.cnblogs.com/yrm1160029237/p/9995226.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值