ROS 2 | 节点 -nodes-

772
0
2020年3月6日 00时58分

教程演示环境为Windows+ROS2,过程和方法同样适合MacOS和Linux。

 

ros2的常用命令如下所示:

 

ROS 2 | 节点 -nodes-插图

 

本节详细介绍节点node。

 

安装与环境配置参考链接:

 

·     ROS2初学者教程(Dashing和Eloquent)

·     https://blog.csdn.net/ZhangRelay/article/details/103284223

 

1. 如何理解节点node:

 

ROS中的每个节点用于实现单个模块功能(例如,一个节点用于控制电机,一个节点用于控制激光测距仪等)。每个节点都可以通过主题topic,服务service,行动action或参数param向其他节点发送和接收数据。一个完整的机器人系统由许多协同工作的节点组成。在ROS 2中,单个可执行文件(C ++程序或Python程序等)可以包含一个或多个节点。

 

2. 节点node有哪些命令功能:

 

使用如下命令:

ros2 node -h

 

得到如下:

 

ROS 2 | 节点 -nodes-插图(1)

 

主要有:

·  info 输出节点信息
·  list 输出正在运行的节点列表

 

3. 运行节点并掌握

 

3.1 标准命令格式

 

命令ros2 run可以从功能包中启动一个可执行程序:

ros2 run <package_name> <executable_name>

 

以turtlesim为例,开启一个CMD,输入如下命令:

ros2 run turtlesim turtlesim_node

 

将会看到如下窗口:

 

ROS 2 | 节点 -nodes-插图(2)

 

这里,功能包名为turtlesim,可执行文件名为turtlesim_node。

 

3.2 命令工具

 

ros2 node list将显示所有正在运行的节点的名称。当要与节点进行交互时,或者当系统运行着许多节点并需要对其进行跟踪时,此功能特别有用。

 

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

ros2 node list

 

终端会显示节点的名称:

 

ROS 2 | 节点 -nodes-插图(3)

 

再打开另一个新终端,并使用以下命令启动遥控Teleop节点:

ros2 run turtlesim turtle_teleop_key

 

ROS 2 | 节点 -nodes-插图(4)

 

此时,将再次搜索turtlesim软件包,这一次是启动名为turtle_teleop_key的可执行文件。

 

返回之前运行的终端,然后再次运行ros2 node list。现在,将看到两个活动节点的名称:

 

ROS 2 | 节点 -nodes-插图(5)

 

3.3 重命名

 

有时候,并不期望默认的命令,如何修改呢?

 

将默认节点属性(例如节点名称,主题名称,服务名称等)重新分配自定义值。

 

·  更多内容参考:重映射

 

现在,让重新分配节点/turtlesim的名称。在新的终端中,运行以下命令:

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

 

由于再次调用turtlesim,因此将打开另一个turtlesim窗口。但是,现在,如果返回运行的终端,然后再次运行list,将看到三个节点名称,如下:

 

ROS 2 | 节点 -nodes-插图(6)

 

3.4 节点信息

 

通过以下方式访问有关节点的更多信息:

ros2 node info <node_name>

 

要检查最新的节点ros2_turtle,请运行以下命令:

ros2 node info /ros2_turtle

 

返回与该节点交互的订阅者,发布者,服务和行动(ROS图连接)的列表。输出应如下所示:

 

ROS 2 | 节点 -nodes-插图(7)

 

现在,尝试在/teleop_turtle节点上运行相同的命令,并查看其连接与ros2_turtle的区别。

ros2 node info /teleop_turtle

 

ROS 2 | 节点 -nodes-插图(8)

 

4. 小结

 

节点是基本的ROS 2单元,在机器人系统中实现模块化的目标。

 

关键词:

 

·   turtlesim
·   node
·   teleop
·   list
·   info
·   –ros-args –remap __node:=ros2_turtle

 

发表评论

后才能评论