1.1 Beginner Level学习之“编写简单的发布服务器和订阅服务器”(第十二节)

学习大纲:

1. 编写发布服务器节点

在ROS中,**节点(Node)**是与ROS网络通信的基本单位。在这个部分,我们将创建一个简单的发布节点(talker),它会不断向话题(topic)广播消息。

创建ROS包

首先,我要确保我的工作空间结构正确。我创建的工作空间在~/catkin_ws目录下,所以我需要先创建beginner_tutorials包:

cd ~/catkin_ws/src

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

编写发布节点

接下来,我们进入beginner_tutorials包并创建一个scripts目录来存放Python脚本:

cd ~/catkin_ws/src/beginner_tutorials

mkdir scripts

cd scripts

然后,我下载示例代码文件talker.py并将其设为可执行:

wget

​​​​​​https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/talker.py

chmod +x talker.py

代码解释

#!/usr/bin/env python:

确保Python解释器执行该脚本。

导入ROS模块:我们需要rospy模块来编写ROS节点,同时需要String消息类型来发布字符串消息。

创建发布者:

Publisher()声明了该节点会发布消息到名为chatter的话题上。

init_node()初始化节点,并设置名称为talker。

anonymous=True确保每次运行的节点名唯一。

循环发布消息:

这个循环会每秒10次发布消息,直到节点关闭。

2. 写入订阅节点

接下来,我会创建一个简单的**订阅节点(listener)**来接收发布节点发送的消息。

进入scripts目录并下载listener.py代码:

cd ~/catkin_ws/src/beginner_tutorials/scripts

wget https://raw.github.com/ros/ros_tutorials/kinetic-devel/rospy_tutorials/001_talker_listener/listener.py

chmod +x listener.py

代码解释

创建订阅节点:

这个节点订阅了chatter话题,并调用回调函数callback()来处理接收到的消息。

回调函数处理消息:

当接收到消息时,callback()会打印消息内容。

保持节点运行:rospy.spin()

该函数会保持节点运行,直到节点被手动关闭。

3. 构建并运行节点

编译ROS工作空间

我们需要回到工作空间的根目录并运行catkin_make来构建工作空间:

cd ~/catkin_ws

catkin_make

然后刷新环境:source devel/setup.bash

运行发布节点和订阅节点

在两个终端窗口中分别运行发布和订阅节点:

终端 1(运行发布节点):rosrun beginner_tutorials talker.py

终端 2(运行订阅节点):rosrun beginner_tutorials listener.py

如果一切正常,订阅节点会在终端中显示类似以下内容:

/listener_12345 I heard hello world 1697812456.12

相关推荐
冬奇Lab10 小时前
Agent 系列(23):Web Agent——让 Agent 真正浏览网页
人工智能·llm·agent
冬奇Lab11 小时前
每日一个开源项目(第135篇):codebase-memory-mcp - 给 AI Agent 一张代码库的知识图谱
人工智能·开源·llm
IT_陈寒13 小时前
JavaScript的闭包把我坑惨了,说好的内存会自动回收呢?
前端·人工智能·后端
jooloo17 小时前
Codex 间歇性 400 之谜:一条对话里,它为什么有时候用 chat/completions,有时候切到 responses?
人工智能
用户51914958484517 小时前
OpenSSL PKCS#12 PBMAC1 堆栈缓冲区溢出漏洞 (CVE-2025-11187) 分析与验证
人工智能·aigc
用户51914958484518 小时前
HP Sound Research SECOMNService 权限提升漏洞利用工具
人工智能·aigc
用户0183493016918 小时前
给 AI 智能体能力包一层 BFF,前端只调一个接口
人工智能
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux