【ROS】rospy 发布器和订阅器(Publisher and Subscriber)

这篇博客介绍了如何在ROS环境中使用rospy库创建publisher和subscriber。首先,创建名为beginner_tutorials的功能包,并在其中设立脚本文件夹。接着,详细讲解了创建talker节点(发布消息)的talker.py脚本和listener节点(接收消息)的listener.py脚本。最后,指导读者如何编译和运行这两个节点,以实现ROS中的消息传递。

rospy L1: Publisher and Subscriber

参考(http://wiki.ros.org/rospy_tutorials/Tutorials/WritingPublisherSubscriber)

1 准备开发环境

1.1 创建功能包beginner_tutorials

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

如果没有工作空间需要创建catkin workspace 参考(http://wiki.ros.org/ROS/Tutorials/CreatingPackage)

1.2 创建脚本文件夹

在包文件夹beginner_tutorials下创建脚本文件夹

$ mkdir scripts
$ cd scripts

注意: scripts下的文件需要可执行权限chmod +x file

2 talker节点

文件:talker.py

#!/usr/bin/env pytho
在Robot Operating System (ROS)中,编写简单的消息发布器订阅通常涉及以下几个步骤: 1. **安装必要的包**: 首先,确保已经安装了ROS并配置好环境。如果还没有,可以访问ROS官方网站下载适合的操作系统的版本,并按照教程设置。 2. **创建消息类型**: 使用`msg`包定义自定义的消息类型,例如`std_msgs/String`或自定义的消息文件。例如: ```bash rosmsg gen msg MyCustomMessage ``` 3. **发布器Publisher)**: 使用`rospy`库中的`publisish()`函数创建一个发布器。这里是一个基本示例,假设你有名为`my_message`的变量存储自定义消息: ```python import rospy from my_custom_package.msg import MyCustomMessage def publish_message(): pub = rospy.Publisher('my_topic', MyCustomMessage, queue_size=10) msg = MyCustomMessage(data="Hello ROS!") while not rospy.is_shutdown(): pub.publish(msg) rospy.sleep(1) if __name__ == '__main__': rospy.init_node('publisher') try: publish_message() except rospy.ROSInterruptException: pass ``` 这里,我们创建了一个节点,并指定主题(`my_topic`),然后每秒发送一条消息。 4. **订阅Subscriber)**: 使用`subcriber()`函数创建一个订阅,它会在接收到消息时触发回调函数: ```python import rospy from my_custom_package.msg import MyCustomMessage def message_callback(msg): print("Received message:", msg.data) def subscribe_to_topic(): rospy.Subscriber('my_topic', MyCustomMessage, message_callback) rospy.spin() if __name__ == '__main__': rospy.init_node('subscriber') try: subscribe_to_topic() except rospy.ROSInterruptException: pass ``` 这里,我们创建了一个监听者,当`my_topic`上发布新消息时,会打印消息内容。 5. **启动节点服务**: 确保发布器订阅都在各自的独立节点上运行。分别运行这两个Python脚本,发布器会开始在指定主题上发送消息,而订阅会接收并处理这些消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值