ROS-7.2.发布者节点和订阅者节点的创建和运行

本文介绍了如何在ROS中创建和运行发布者节点和订阅者节点。首先,创建名为ros_tutorials_topic的功能包,然后修改配置文件和构建配置文件。接着,创建MsgTutorial消息文件,并分别建立发布者和订阅者节点。最后,构建并运行这些节点,检查它们之间的通信状态。整个过程有助于理解ROS中的topic通信机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

ROS消息通信中使用的发布者(Publisher)和订阅者(Subscriber)可以被发送和接收所代替。在ROS中,发送端称为发布者,接收端称为订阅者。本节旨在创建一个简单的msg文件,并创建和运行发布者和订阅者节点
通过 topic 通讯时,不同的 node 可以向同一个 topic 上发送、接收数据,发送数据的 node 不知道数据是从哪个 node 发送过来的,同样地,发送数据的 node 也不知道是哪个 node 接收了数据。因此,每个 node 都是相对独立的,只需要负责自己的功能实现以及外部接口,不需要关心其他 node 的行为。这是一种开放式的收、发数据的方式,也是 node 之间通讯的主要形式,有利于构造分布式大系统。

创建功能包

以下命令是创建ros_tutorials_topic功能包的命令。这个功能包依赖于message_generation、std_msgs和roscpp功能包,因此将这些用作依赖选项。第二行命令意味着将使用创建新的功能包时用到的message_generation表示将使用创建新消息的功能包std_msgs(ROS标准消息功能包)和roscpp(在ROS中使用C/C ++的客户端程序库)必须在创建功能包之前安装。用户可以在创建功能包时指定这些相关的功能包设置,但也可以在创建功能包之后直接在package.xml中修改。

$cd ~/catkin_ws/src
$catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp

创建功能包时,将在~/catkin_ws/src目录中创建ros_tutorials_topic功能包目录,并在该功能包目录中创建ROS功能包的默认目录和CMakeLists.txt和package.xml文件。可以使用下面的ls命令检查它,并使用基于GUI的Nautilus(类似Windows资源管理器)来检查功能包的内部。

修改功能包配置文件

ROS的必备配置文件package.xml是一个包含功能包信息的XML文件,其中包含用于描述功能包名称、作者、许可证和依赖包的信息。使用以下命令,利用编辑器(gedit、vim、emacs等)打开文件,并修改它以匹配当前节点。

修改构建配置文件

ROS的构建系统catkin基本上使用CMake,它在功能包目录中的CMakeLists.txt文件中描述了构建环境。该文件设置可执行文件的创建、依赖包优先构建、链接创建等。

cmake_minimum_required(VERSION 2.8.3)
project(ros_tutorials_topic)
##catkin构建时需要的组件包。
##是依赖包,是message_generation、std_msgs和roscpp。
##如果这些功能包不存在,在构建过程中会发生错误。
find_package(catkin REQUIRED COMPONENTS message_generation td_msgs roscpp)
##消息声明:MsgTutorial.msg
add_message_files(FILES MsgTutorial.msg)
##这是设置依赖性消息的选项。
##如果未安装std_msgs,则在构建过程中会发生错误。
generate_messages(DEPENDENCIESstd_msgs)
##catkin功能包选项,描述了库、catkin构建依赖项和系统依赖的功能包。
catkin_package(
LIBRARIES ros_tutorials_topic
)
CATKIN_DEPENDS std_msgs roscpp
##设置包含目录。
include_directories(${
   
   catkin_INCLUDE_DIRS})
##topic_publisher节点的构建选项。
##配置可执行文件、目标链接库和其他依赖项。
add_executable(topic_publisher src/topic_publisher.cpp)
add_dependencies(topic_publisher ${
   
   ${
   
   PROJECT_NAME}_EXPORT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DoubleYuanL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值