【ROS入门2总结:ROS-TOPIC的Publisher和Subscriber的实现】

本文档详细介绍了ROS中Topic的Publisher和Subscriber的实现过程,包括创建工作空间、编写及编译publisher和subscriber代码,以及如何运行和控制小乌龟节点。通过学习,读者能够理解ROS中节点间通过Topic进行异步通信的基本操作。

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

前言

感谢古月居大大的教程:https://www.bilibili.com/video/BV1zt411G7Vn?p=2&spm_id_from=pageDriver
强推古月大大:课件、源码下载方式:关注“古月居”微信公众号,回复“ROS入门21讲”获取;
线上提问/课程答疑:请移步古月居论坛,点击相关板块发帖提问即可。🔗:https://www.guyuehome.com/forums

关于ROS-topic

ros的topic是一种通信方式,类似于一种异步通信,发送者视为publisher(发布者),接受者视为subscriber(订阅者),中间存在topic,是连接两者的中间。偷图古月大大:

topic的Publisher和Subscriber的实现相当于使用中间节点截取双方的信息显示出来
在这里插入图片描述

准备

创建工作空间learning_topic,功能包的创建是在工作空间的src文件夹下:

进入catkin_wksp工作空间的srcwe文件夹

cd src/

创建一个名为learning_topic的功能包文件夹

catkin_creat_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

运行之后会出现一个learning_topic功能包文件夹

pblisher的实现

publisher代码总结:
第一步:初始化ros节点;
第二步:向ROS master注册节点信息,包括发布的话题名和话题中的消息类型;
第三步:循环等待话题消息,如果收到消息就进入到回调函数
第四步:处理回调函数的相关功能

将程序文件放入新建的功能包的src文件夹里

课程代码来源为古月居大大,文件名是velocity_publisher.cpp,同样也有.py文件(大家可以关注一下古月居大大获取,强推

这个文件主要是控制turtle运动的,设置的运动速度是0.5,角速度为0.2

对velocity_publisher文件进行编译

配置CMakeLists.txt文件

打开learning_topic路径下的CMakeLists.txt文件,在build功能代码底部添加

add executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})

如图
在这里插入图片描述

编译velocity_publisher.cpp

编译还是在工程文件夹的路进行进行相关的编译,也就是catkin_wksp文件夹下,也就是放置功能包的src文件夹夹

cd catkin_wksp/

编译

catkin_make

每次进行发布者或者订阅者需要source一下路径

source devel/setup.bash

为了避免麻烦,可以将上面的命令添加到主目录文件夹下的.bashrc文件里,一定要注意改路径这是我的
在这里插入图片描述

比如添加进去后就是
source /home/linder/桌面/catkin_wksp/devel/setup.bash
重启终端才会生效

publisher实现的功能

首先运行roscore

roscore

在这里插入图片描述

如果运行不了大部分就是环境变量的问题,大家可以上网找找资料,看看具体使用什么样的环境变量配置。

运行小乌龟

需要重新打开一个终端

输入

rosrun turtlesim turtle_node 

如果提示找不到文件就再source一下,输入:

source /opt/ros/noetic/setup.bash

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrcsource ~/.bashrc

rosrun turtlesim turtlesim_node

在这里插入图片描述

这儿我需要自己手动配置环境变量才能成功,,,,

运行src里面的发布者代码

rosrun learning_topic velocity_publisher

我的得进入到工作空间所在的文件夹catkin_wksp下再source一下才能运行publisher

cd catkin_wksp
source devel/setup.bash
rosrun learning_topic velocity_publisher

在这里插入图片描述这儿没有调出控制小乌龟的键盘,是通过publisher发布velocity_publisher代码到topic进行相关的操控

点击回车以后,小乌龟会像代码中以X方向速度0.5角速度0.2进行画圆

在这里插入图片描述点击 CTRL+C 停止

到这publisher的功能差不多结束了,就是实现发布者向话题发布一个发布者代码,话题接收后小乌龟会进行相应的运动

subscriber的实现

subscriber代码总结:
第一步:初始化ros节点;
第二步:订阅需要的话题;
第三步:循环等待话题消息,如果收到消息就进入到回调函数
第四步:处理回调函数的相关功能

将程序文件放入新建的功能包的src文件夹里

课程代码来源为古月居大大,文件名是pose_subscriber.cpp,同样也有.py文件(大家可以关注一下古月居大大获取,强推

这个文件主要获取小乌龟运动时的位置信息,并输出

对pose_subscriber文件进行编译

配置CMakeLists.txt文件

打开learning_topic路径下的CMakeLists.txt文件,在build功能代码底部添加

add executable(pose_subscribersrc/pose_subscriber.cpp)
target_link_libraries(pose_subscriber${catkin_LIBRARIES})

如图
在这里插入图片描述

编译velocity_publisher.cpp

编译还是在工程文件夹的路进行进行相关的编译,也就是catkin_wksp文件夹下,也就是放置功能包的src文件夹夹

cd catkin_wksp/

编译

catkin_make

source一下路径我的不是自动的,我得source

source devel/setup.bash

publisher实现的功能

首先运行roscore

只能运行一个roscore,上一个roscore没关的话得关了,用 CTRL+C

roscore

在这里插入图片描述

如果运行不了大部分就是环境变量的问题,大家可以上网找找资料,看看具体使用什么样的环境变量配置。

运行小乌龟

需要重新打开一个终端

输入

rosrun turtlesim turtle_node 

如果提示找不到文件就再source一下,输入:

source /opt/ros/noetic/setup.bash

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrcsource ~/.bashrc

rosrun turtlesim turtlesim_node

运行src里面的订阅者代码

rosrun learning_topic pose_subscriber

我的得进入到工作空间所在的文件夹catkin_wksp下再source一下才能运行publisher

cd catkin_wksp
source devel/setup.bash
rosrun learning_topic pose_subscriber

在这里插入图片描述
可以调出控制小乌龟的键盘(打开新终端),也可用publisher发布

在这里插入图片描述

程序原理是通过subscriber订阅pose_subscriber代码到topic进行相关的操控

点击回车以后,小乌龟的位置会显示出来

在这里插入图片描述
用键盘控制小乌龟运动,可以发现位置信息在变

用键盘控制
发布者发布

点击 CTRL+C 停止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值