ROS机器人程序设计(原书第2版)2.4.9 创建节点

简介:

2.4.9 创建节点

在本节中,我们要学习如何创建两个节点:一个发布数据,另一个接收这些数据。这是两个节点之间最基本的通信方式,也就是操作数据并使用这些数据来做些工作。

使用以下命令返回chapter2_tutorials/src/文件夹:

 

创建两个文件并分别命名为example1_a.cpp和example1_b.cpp。example1_a.cpp文件将会发送带有节点名称的数据,example1_b.cpp文件会把这些数据显示在命令行窗口中。将下面的代码复制到example1_a.cpp文件或者从库中下载它:

 

就以上代码做进一步解释。

 

要包含的头文件是ros/ros.h、std_msgs/String.h和sstream。其中,ros/ros.h包含了使用ROS节点所有必要的文件,而std_msgs/String.h包含了我们要使用的消息类型:

 

启动该节点并设置其名称,请记住该名称必须是唯一的:

 

下面是设置节点进程的句柄:

 

将节点设置成发布者,并将所发布主题和类型的名称告知节点管理器。第一个参数是缓冲区的大小,名为message。如果主题发布数据速度较快,那么将缓冲区设置为1000个消息,如下所示:

 

在本例中,设置发送数据的频率为10Hz:

 

当收到Ctrl + C的按键消息或ROS停止当前节点运行时,ros::ok()行会执行停止节点运行的命令:

 

在这里,我们创建一个消息变量,变量的类型必须符合发送数据的要求:

 

这样,消息被发布:

 

如果有一个订阅者出现,ROS就会更新并读取所有主题:

 

按照10Hz的频率将程序挂起。

现在我们创建另一个节点。将下面的代码复制到example1_b.cpp文件或者从库中下载它:

 

 

这里是一些对上面代码的解释。

 

首先要包含头文件和主题所使用的消息类型:

 

每次该节点收到一条消息时都将调用此函数,我们就可以使用或处理数据。在本示例中,我们将收到的数据在命令行窗口中输出:

 

创建一个订阅者,并从主题获取以message为名称的消息数据。设置缓冲区为1000个消息,处理消息的回调函数为messageCallback:

 

ros::spin()行是节点开始读取主题和在消息到达时,回调函数messageCallback被调用的循环。当用户按下Ctrl + C,节点会退出消息循环,于是循环结束。

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
1119 14
|
XML 算法 自动驾驶
ROS进阶:使用URDF和Xacro构建差速轮式机器人模型
【11月更文挑战第7天】本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。
1012 6
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
2156 1
|
传感器 数据可视化 机器人
【ROS速成】半小时入门机器人ROS系统简明教程之可视化系统(三)
半小时入门机器人ROS系统简明教程之可视化系统
1487 0
|
人工智能 自然语言处理 机器人
9.9K star!大模型原生即时通信机器人平台,这个开源项目让AI对话更智能!
"😎高稳定、🧩支持插件、🦄多模态 - 大模型原生即时通信机器人平台"
560 0
|
12月前
|
数据采集 自动驾驶 机器人
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
数据喂得好,机器人才能学得快:大数据对智能机器人训练的真正影响
1092 1
|
弹性计算 自然语言处理 Ubuntu
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
本文描述在阿里云上从0开始构建一个LLM智能问答钉钉机器人。LLM直接调用了阿里云百炼平台提供的调用服务。
1139 4
从0开始在阿里云上搭建基于通义千问的钉钉智能问答机器人
|
机器人
陌陌自动回复消息脚本,陌陌自动打招呼回复机器人插件,自动聊天智能版
这是一款为陌陌用户设计的自动回复软件,旨在解决用户无法及时回复消息的问题,提高成交率和有效粉丝数。软件通过自动化操作实现消息检测与回复功能
|
机器学习/深度学习 人工智能 自然语言处理
TsingtaoAI具身智能机器人开发套件及实训方案
该产品套件创新性地融合了先进大模型技术、深度相机与多轴协作机械臂技术,构建了一个功能强大、灵活易用的人机协作解决方案。其核心在于将智能决策、精准感知与高效执行完美结合,为高校实训领域的发展注入新动力。
1353 10
|
人工智能 自然语言处理 算法
具身智能高校实训解决方案 ----从AI大模型+机器人到通用具身智能
在具身智能的发展历程中,AI 大模型的出现成为了关键的推动力量。高校作为培养未来科技人才的摇篮,需要紧跟这一前沿趋势,开展具身智能实训课程。通过将 AI 大模型与具备 3D 视觉的机器人相结合,为学生搭建一个实践平台。
2210 64

热门文章

最新文章

推荐镜像

更多
  • ros