ROS学习笔记—编写&检验简单的发布者和订阅者(python)

目录

一、编写发布者(Publisher)节点

二、编写订阅者(Subscriber)节点

三、构建节点

四、检验发布者和订阅者


学习ROSwiki官方教程时的笔记,以便后续回顾

一、编写发布者(Publisher)节点

$ roscd beginner_tutorials
$ mkdir scripts                #在功能包下创建scripts文件夹,存放python代码
$ cd scripts                   

编写scripts/talker.py,源码如下:

#!/usr/bin/env python

import rospy
from std_msgs.msg import String     
#导入std_msgs.msg,以能够重用std_msgs/String消息类型(即一个简单的字符串容器)来发布。

def talker():
    pub = rospy.Publisher('chatter', String, queue_size=10)  
    #创建发布者,声明该节点正在使用String消息类型发布到chatter话题,
    #在订阅者接收消息的速度不够快的情况下,限制排队的消息数量为10

    rospy.init_node('talker', anonymous=True)     
    #注册和初始化节点Node,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()
     #当节点未关闭开始循环
     #定义要发布的消息
     #打印消息到屏幕上;把消息写入节点的日志文件中;写入rosout。
     #发布消息

if __name__ == '__main__':  #当模块直接运行,运行以下代码;当模块被导入,不运行以下代码
    try:
        talker()
    except rospy.ROSInterruptException:
        pass

跳转到scripts文件目录,运行以下代码,将talker.py文件修改为可执行文件,才可以使用rosrun运行该文件

$ chmod +x talker.py

二、编写订阅者(Subscriber)节点

$ roscd beginner_tutorials
$ mkdir scripts                #在功能包下创建scripts文件夹,存放python代码
$ cd scripts                   

编写scripts/listenerr.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():
    rospy.init_node('listener', anonymous=True) 
    #注册和初始化节点Node2,anonymous=True会让名称末尾添加随机数

    rospy.Subscriber("chatter", String, callback)
    #创建订阅者,声明该节点正在使用String消息类型订阅chatter话题,
    #且当接收到消息/数据是,回调函数callback被调用

    rospy.spin()
    #spin() simply keeps python from exiting until this node is stopped

if __name__ == '__main__':
    listener()

跳转到scripts文件目录,运行以下代码,将talker.py文件修改为可执行文件,才可以使用rosrun运行该文件

$ chmod +x listener.py

三、构建节点

上述操作后,运行以下代码构建节点,确保能为创建的消息和服务自动生成Python代码,保证后续节点运行,并设置环境变量

$ cd ~/catkin_ws
$ catkin_make

$ source ./devel/setup.bash

四、检验发布者和订阅者

确保roscore已经开启:

$ roscore

打开新终端,运行发布者:

$ rosrun beginner_tutorials talker.py   # (Python)

#或者在scripts目录下运行

$ python talker.py

打开新终端,运行订阅者:

$ rosrun beginner_tutorials listener.py   # (Python)

#或者在scripts目录下运行

$ python listener.py

检验完毕!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值