当前位置: 首页 > news >正文

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

学习大纲:

1. 编写发布服务器节点

在 ROS 中,节点是连接到 ROS 网络的可执行文件。我创建了一个名为 talker 的发布者节点,它会向一个主题 chatter 不断发送消息。

首先,进入你的工作包 beginner_tutorials(假设你已经完成了 rosbuild 包的创建):

cd ~/catkin_ws/src/beginner_tutorials

在 src 目录下创建文件 talker.cpp:touch src/talker.cpp

编辑 talker.cpp 文件,并粘贴以下代码:

代码解释

#include:引入 ROS 的头文件和 std_msgs 的字符串消息类。

ros::init():初始化 ROS 节点,并将节点命名为 talker。

ros::NodeHandle:创建节点句柄,控制节点的初始化和关闭。

advertise():声明这个节点将向主题 chatter 发布消息,并设置队列大小为 1000。

ros::Rate:设置发布频率为 10Hz。

ros::spinOnce():检查是否有回调需要处理。

日志输出:ROS_INFO() 打印消息到控制台。

2. 编写订阅服务器节点

接下来,我编写了一个订阅者节点 listener,它会接收来自 chatter 主题的消息并显示出来。

代码

在 src 目录下创建文件 listener.cpp:

touch src/listener.cpp

编辑 listener.cpp 文件,并粘贴以下代码:

代码解释

回调函数:每当收到消息时,chatterCallback() 函数会被调用并显示消息内容。

subscribe():订阅 chatter 主题,并将收到的消息传递给回调函数。

ros::spin():进入回调循环,等待消息到达。

3. 构建您的节点

在 ROS 中,我们使用 CMake 来构建项目。在这里,我们需要确保我们的 CMake 文件配置正确。

CMake 配置 :打开 beginner_tutorials 包的 CMakeLists.txt 文件:

nano ~/catkin_ws/src/beginner_tutorials/CMakeLists.txt

在文件末尾添加以下内容:

构建步骤

首先,进入你的工作区目录:cd ~/catkin_ws

使用 catkin_make 命令构建节点:catkin_make

构建完成后,使用以下命令运行 talker 和 listener 节点。

4. 运行并测试节点

运行发布者节点

在一个终端中,启动 roscore: /opt/ros/noetic/bin/roscore

在另一个终端中,运行发布者节点:

source ~/catkin_ws/devel/setup.bash

rosrun beginner_tutorials talker

运行订阅者节点

打开第三个终端,并运行订阅者节点:

source ~/catkin_ws/devel/setup.bash

rosrun beginner_tutorials listener

会看到类似如下的输出:

http://www.lryc.cn/news/499824.html

相关文章:

  • AIQuora:开启论文写作新篇章
  • 【C语言】库函数常见的陷阱与缺陷(1):字符串处理函数
  • Mysql索引原理及优化——岁月云实战笔记
  • AGCRN论文解读
  • Python机器学习笔记(五、决策树集成)
  • Kafka单机及集群部署及基础命令
  • 如何使用 Python 实现链表的反转?
  • react跳转传参的方法
  • Scala:正则表达式
  • 【数电】常见时序逻辑电路设计和分析
  • Spring IOCAOP
  • Scala中的隐式转换
  • GESP 2024年12月认证 真题 及答案
  • C++多态性
  • PyODBC: Python 与数据库连接的桥梁
  • 专题二十五_动态规划_两个数组的 dp (含字符串数组)_算法专题详细总结
  • PHP语法学习(第七天)-循环语句,魔术常量
  • 数据库授权讲解一下
  • 组件开发的环境准备: nodejs安装,npm镜像源的修改,pnpm包管理器的安装(全局安装),基于pnpm创建脚手架项目
  • 学生成绩统计系统
  • 【Spring项目】图书管理系统
  • Vivado ILA数据导出MATLAB分析
  • 【开源免费】基于SpringBoot+Vue.JS高校学科竞赛平台(JAVA毕业设计)
  • 【机器学习】——windows下安装anaconda并在vscode上进行配置
  • 【H2O2|全栈】Node.js与MySQL连接
  • 汽配行业数字化解决方案(一)
  • 前端路径“@/“的使用和配置
  • 动态规划子序列问题系列一>最长递增子序列
  • 链表头文件大更新!!!
  • 力扣3381.长度可被K整除的子数组的最大元素和