Understanding nodes:理解节点(nodes)
迪丽瓦拉
2025-05-28 15:41:55
0

文章目录

  • 背景
    • 1. ROS 2 graph(ROS 2 图)
    • 2. ROS 2 中的节点
  • 1. ros2 run 命令
  • 2. ros2 node list 命令
    • 2.1 重映射(Remapping)
  • 3. ros2 node info 命令

参考官方文档: Understanding nodes

背景

1. ROS 2 graph(ROS 2 图)

在接下来的几个教程中,你将学习一系列ROS 2的核心概念,这些概念构成了所谓的 “ROS(2)图”。

ROS图是一个由ROS 2元素组成的网络,在同一时间一起处理数据。它包括所有的可执行文件和它们之间的联系,如果你把它们全部映射出来并加以可视化的话。

2. ROS 2 中的节点

ROS中的每个节点应该负责一个单一的、模块的目的(例如,一个节点负责控制车轮马达,一个节点负责控制激光测距仪,等等)。每个节点可以通过(Topic)主题、(Service)服务、(Action)行动或(Parameters)参数向其他节点发送和接收数据。
在这里插入图片描述
一个完整的机器人系统是由许多节点协同工作组成的。在ROS 2中,一个可执行文件(C++程序、Python程序等)可以包含一个或多个节点。

1. ros2 run 命令

ros2 run命令从一个软件包中启动一个可执行文件。

ros2 run  

要运行turtlesim,打开一个新的终端,并输入以下命令。

ros2 run turtlesim turtlesim_node

正如你在上一个教程(使用 turtlesim 和 rqt)中看到的那样,海龟模拟窗口将打开。在这条命令中,软件包的名称是turtlesim,可执行文件的名称是turtlesim_node。

然而,我们仍然不知道节点的名称。你可以通过使用这条命令找到节点名称。

ros2 node list

2. ros2 node list 命令

ros2 node list 将显示所有运行中的节点的名字。当你想与某个节点进行交互时,或者当你有一个运行着许多节点的系统,需要跟踪它们时,这一点特别有用。

当turtlesim在另一个终端中运行时,打开一个新的终端,并输入以下命令:

ros2 node list

终端将返回节点名称:

/turtlesim

打开另一个新终端,用命令启动teleop节点:

ros2 run turtlesim turtle_teleop_key

返回到你运行ros2 node list的终端,再次运行它。现在你会看到两个活动节点的名字。

/turtlesim
/teleop_turtle

2.1 重映射(Remapping)

重映射允许你将默认的节点属性,如节点名称、主题名称、服务名称等,重新设置为自定义值。在上一个教程中,你在turtle_teleop_key上使用重映射来改变被控制的默认乌龟。

现在,让我们重新设置我们的/turtlesim节点的名称。在一个新的终端,运行以下命令:

ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle

现在如果你回到运行ros2 node list的终端,并再次运行它,你会看到三个节点名称。

/my_turtle
/turtlesim
/teleop_turtle

3. ros2 node info 命令

当你知道了节点的名字,你可以通过这条命令查看关于它们的更多信息。

ros2 node info 

例如查看刚才在步骤2.1中打开的节点my_turtle,运行以下命令:

ros2 node info /my_turtle

ros2 node info 返回一个与该节点交互的订阅者(subscribers)、发布者(publishers)、服务(services)和行动(actions)(ROS图连接)的列表。输出应该是这样的:

/my_turtle
Subscribers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/turtle1/cmd_vel: geometry_msgs/msg/Twist
Publishers:
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/turtle1/color_sensor: turtlesim/msg/Color
/turtle1/pose: turtlesim/msg/Pose
Service Servers:
/clear: std_srvs/srv/Empty
/kill: turtlesim/srv/Kill
/my_turtle/describe_parameters: rcl_interfaces/srv/DescribeParameters
/my_turtle/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/my_turtle/get_parameters: rcl_interfaces/srv/GetParameters
/my_turtle/list_parameters: rcl_interfaces/srv/ListParameters
/my_turtle/set_parameters: rcl_interfaces/srv/SetParameters
/my_turtle/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
/reset: std_srvs/srv/Empty
/spawn: turtlesim/srv/Spawn
/turtle1/set_pen: turtlesim/srv/SetPen
/turtle1/teleport_absolute: turtlesim/srv/TeleportAbsolute
/turtle1/teleport_relative: turtlesim/srv/TeleportRelative
Service Clients:

Action Servers:
/turtle1/rotate_absolute: turtlesim/action/RotateAbsolute
Action Clients:

现在试着在/teleop_turtle节点上运行同样的命令,看看它的连接与my_turtle有什么不同。

ros2 node info /teleop_turtle

在这里插入图片描述

你将在接下来的教程中学习更多关于ROS图连接的概念,包括消息(message)类型。

现在你已经了解了ROS 2中的节点,你可以继续学习话题(Topic)教程了。话题是连接节点的通信类型之一。

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...