ROS 2節點-nodes-

  • 2019 年 12 月 20 日
  • 筆記

教程演示環境為Windows+ROS2,過程和方法同樣適合MacOS和Linux。

ros2的常用命令如下所示:

本節詳細介紹節點node。

安裝與環境配置參考鏈接:

1. 如何理解節點node:

ROS中的每個節點用於實現單個模塊功能(例如,一個節點用於控制電機,一個節點用於控制激光測距儀等)。每個節點都可以通過主題topic,服務service,行動action或參數param向其他節點發送和接收數據。一個完整的機械人系統由許多協同工作的節點組成。在ROS 2中,單個可執行文件(C ++程序或Python程序等)可以包含一個或多個節點。

2. 節點node有哪些命令功能:

使用如下命令:

ros2 node -h

得到如下:

主要有:

  • info 輸出節點信息
  • list 輸出正在運行的節點列表

3. 運行節點並掌握

3.1 標準命令格式

命令ros2 run可以從功能包中啟動一個可執行程序:

ros2 run <package_name> <executable_name>

以turtlesim為例,開啟一個CMD,輸入如下命令:

ros2 run turtlesim turtlesim_node

將會看到如下窗口:

這裡,功能包名為turtlesim,可執行文件名為turtlesim_node。

3.2 命令工具

ros2 node list將顯示所有正在運行的節點的名稱。當要與節點進行交互時,或者當系統運行着許多節點並需要對其進行跟蹤時,此功能特別有用。

當turtlesim仍在另一個終端中運行時,打開一個新終端,然後輸入以下命令:

ros2 node list

終端會顯示節點的名稱:

再打開另一個新終端,並使用以下命令啟動遙控Teleop節點:

ros2 run turtlesim turtle_teleop_key

此時,將再次搜索turtlesim軟件包,這一次是啟動名為turtle_teleop_key的可執行文件。

返回之前運行的終端,然後再次運行ros2 node list。現在,將看到兩個活動節點的名稱:

3.3 重命名

有時候,並不期望默認的命令,如何修改呢?

將默認節點屬性(例如節點名稱,主題名稱,服務名稱等)重新分配自定義值。

現在,讓重新分配節點/turtlesim的名稱。在新的終端中,運行以下命令:

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

由於再次調用turtlesim,因此將打開另一個turtlesim窗口。但是,現在,如果返回運行的終端,然後再次運行list,將看到三個節點名稱,如下:

3.4 節點信息

通過以下方式訪問有關節點的更多信息:

ros2 node info <node_name>

要檢查最新的節點ros2_turtle,請運行以下命令:

ros2 node info /ros2_turtle

返回與該節點交互的訂閱者,發佈者,服務和行動(ROS圖連接)的列表。輸出應如下所示:

現在,嘗試在/teleop_turtle節點上運行相同的命令,並查看其連接與ros2_turtle的區別。

ros2 node info /teleop_turtle

4. 小結

節點是基本的ROS 2單元,在機械人系統中實現模塊化的目標。

關鍵詞:

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