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

相关推荐
悄悄敲敲敲9 分钟前
Linux:进程间通信->共享内存
linux·运维·服务器
PLUS_WAVE9 分钟前
CogCoM: A Visual Language Model with Chain-of-Manipulations Reasoning 学习笔记
学习·语言模型·大模型·cot·vlm·推理模型·reasoning
yc_2310 分钟前
KAG:通过知识增强生成提升专业领域的大型语言模型(二)
人工智能·语言模型·自然语言处理
绵绵细雨中的乡音17 分钟前
Linux进程学习【环境变量】&&进程优先级
linux·运维·学习
贺函不是涵22 分钟前
【沉浸式求职学习day27】
学习
努力奋斗的小杨22 分钟前
学习MySQL的第十二天
数据库·笔记·学习·mysql·navicat
自不量力的A同学23 分钟前
字节 AI 原生 IDE Trae 发布 v1.3.0,新增 MCP 支持
人工智能
涛涛讲AI28 分钟前
当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。
人工智能·搜索引擎
engchina37 分钟前
来自B站AIGC科技官的“vLLM简介“视频截图
人工智能·vllm
说私域1 小时前
基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究
人工智能·小程序·重构·开源·零售