练习ROS 记录-话题通信

话题通信是ros当中比较常用的通信手段。在使用话题通信(topic)时需要着重注意两个角色:发布方与订阅方。两者之间的关系不难理解,以生活中的订阅杂志为例,发布方假设为某出版社,订阅方为杂志读者,订阅话题可以理解为邮寄地址,

读者通过与出版社约定好邮寄地点,出版社每个月定期到邮寄地点发放杂志,读者收到杂志。

订阅方与发布方约定好同一通信话题,发布方以某一频率通过话题发布信息,订阅方接受信息。

题目:

使用 ROS 话题(Topic)机制实现消息发布与订阅

要求:编写代码实现 ROS 中消息的发布与订阅:创建一个发布者,每隔 100ms 依次发送斐波

拉契数列的数字到话题/fibonacci 中;创建一个订阅者,订阅该话题,输出订阅结果。

如,订阅者依次输出: 1 1 2 3 5 8 …

用python语言编写程序

自定义msg文件

int32 feibo

发布方代码

#!/usr/bin/env python
import rospy
from mission01.msg import number_f
if __name__ == "__main__":
    #2.初始化ros节点
    rospy.init_node("fibonacci_pub")
    #3.创建发布者对象
    pub = rospy.Publisher("fibonacci",number_f,queue_size=10)
    #4.组织数据并发布
    #设置发布频率
    rate = rospy.Rate(10)
    #创建数列消息
    num=number_f()
    n1=0
    n2=1

    #循环
    while not rospy.is_shutdown():
        num.feibo=n2
        pub.publish(num)
        n2=n1+n2
        n1=num.feibo
        rospy.loginfo("%d",num.feibo)
        rate.sleep()

订阅方代码

#! /usr/bin/env python

import rospy
from mission01.msg import number_f

def printout(rrrr):
    rospy.loginfo("%d",rrrr.feibo)

if __name__ == "__main__":
    #2.初始化ros节点
    rospy.init_node("fibonacci_sub")
    #3.创建订阅对象
    sub = rospy.Subscriber("fibonacci",number_f,printout,queue_size=100)
    #4.使用回调函数处理消息
    #5.spin()
    rospy.spin()

萌新代码,请大佬们批评指正

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值