ROS學習(六):ROS信息命令

    ROS信息命令用於識別話題、服務、節點和參數等信息。尤其是rostopic、 rosservice、rosnode和rosparam經常被使用,並且rosbag是ROS的主要特徵之一,它 具有記錄數據和回放功能。

 運行節點

      我們將使用下面的命令,利用ROS提供的turtlesim來了解相關的節點、話題和服 務。在使用ROS信息命令進行測試之前,需要做好以下準備工作。

運行roscore

    爲確保順利進行,關閉所有以前運行的終端。然後打開一個新的終端並運行以下命令。

$ roscore

    爲了運行turtlesim功能包中的turtlesim_node節點,打開一個新的終端並運行以下命 令。這將從turtlesim功能包運行turtlesim_node。用戶會在一個藍色的屏幕上看到烏龜。

$ rosrun turtlesim turtlesim_node

運行turtlesim功能包中的turtle_teleop_key節點

    打開一個新的終端並運行以下命令。這將在turtlesim功能包中運行turtle_teleop_ key。一旦執行,可以在該終端窗口上,用鍵盤上的方向鍵控制烏龜。當按下方向鍵時,屏幕上的烏龜會移動,這是一個簡單的仿真,但這是將驅動機器人所需的 移動速度(m/s)和旋轉速度(rad/s)用消息傳送的。

$ rosrun turtlesim turtle_teleop_key

 一.rosnode:ROS節點

    首先,我們需要了解節點(node),所以先看一些術語。

 1.rosnode list:列出正在運行中的所有節點

    這是列出連接到roscore的所有節點的命令。如果已經運行了roscore和之前準備 好的節點(turtlesim_node,turtle_teleop_key),則可以看到終端中列出了用於在 roscore進行日誌記錄的rosout,以及teleop_turtle和turtlesim節點。

2.rosnode ping [節點名稱]:與指定的節點進行連接測試

 以下是測試turtlesim節點是否確實連接到當前使用的計算機。如果已連接,它將從 節點收到XMLRPC響應,如下所示。

如果在該節點運行出現問題或通信中斷,則顯示以下錯誤消息。

3.rosnode info [節點名稱]:檢查指定節點的信息

     使用rosnode info命令可以查看指定節點的信息。基本上,用戶可以檢查發佈者、訂 閱者和服務等。此外,還可以檢查關於節點運行URI和話題輸入/輸出的信息。由於會顯 示大量信息,因此省略了內容,所以請務必親自運行。

4.rosnode機器[PC名稱或IP]:查看此PC上運行的所有節點

可以看到指定設備(PC或終端)上運行的所有節點。

 

5.rosnode kill [節點名稱]:終止指定節點的運行

    這是一個終止正在運行的節點的命令。您可以在運行節點的終端窗口中使用[Ctrl+c] 直接終止節點,但也可以指定要結束的的節點,如下所示。

    如果使用該命令終止了節點,則會在運行該節點的終端窗口上顯示如下警告消息,並 關閉該節點。

6.rosnode cleanup:刪除無法驗證連接信息的虛擬節點的註冊信息

    刪除連接信息未被確認的虛擬節點的註冊信息。當節點由於意外事件而異常終止時, 該命令將從節點目錄中刪除連接中斷的節點。這個命令很少使用,但是它非常有用,因爲 用戶不需要重新運行roscore。

 二.rostopic: ROS話題

首先,讓我們參考第4.1節“ROS術語”,因爲我們需要了解話題。

 

   在運行ROS話題示例之前,請先關閉所有節點。通過在不同的終端窗口中分別運行以 下命令來運行turtlesim_node和turtle_teleop_key。

 1.rostopic list:列出活動話題

    rostopic list命令顯示當前正在發送和接收的所有話題的列表。

通過將“-v”選項添加到rostopic list命令,可以分開發布話題和訂閱話題,並將每 個話題的消息類型一起顯示。

2.rostopic echo [話題名稱]:實時顯示指定話題的消息內容

    以下示例實時顯示組成/turtle1/pose話題的x、y、theta、linear_velocity和 angular_velocity的數據。

3.rostopic find [類型名稱]:顯示使用指定類型的消息的話題

rostopic type [話題名稱]:顯示指定話題的消息類型

4.rostopic bw [話題名稱]:顯示指定話題的消息數據帶寬(bandwidth)

在以下示例中,用於/turtle1/pose話題的數據帶寬平均爲每秒1.27 KB。

5.rostopic hz [話題名稱]:顯示指定話題的消息數據發佈週期

在以下示例中,用戶可以檢查/turtle1/pose數據的發佈週期。從結果可以看出,該消 息以大約62.5Hz(0.016秒= 16毫秒)的頻率被髮布。

6.rostopic info [話題名稱]:顯示指定話題的信息

在以下示例中,用戶可以看到/turtle1/pose話題使用turtlesim/Pose消息類型,發佈 到/turtlesim節點,並且沒有實際訂閱的話題。

7.rostopic pub [話題名稱] [消息類型] [參數]:使用指定的話題名稱發佈消息

以下是使用/turtle1/cmd_vel話題名稱發佈類型爲geometry_msgs/Twist的消息的 示例。

每個選項的描述如下。

■ -1只發布一次消息(實際上只運行一次,但會像以前的結果一樣運行3秒)。

■ /turtle1/cmd_vel 指定的話題名稱

■ geometry_msgs/Twist 要發佈的消息類型名稱

■ -- ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’ 在x軸座標上以每秒2.0 m的速度移動,以z軸爲中心,每秒旋轉 1.8rad

 三.rosservice:ROS服務

在運行ROS服務相關例子之前先關閉所有節點。通過在不同的終端窗口中運行以下命 令來運行turtlesim_node和turtle_teleop_key。

1.rosservice list:顯示活動的服務信息

顯示活動中的服務的信息。會顯示在同一網絡中使用的所有服務。

2.rosservice info [服務名稱]:顯示指定服務的信息

以下是使用rosservice的info選項查看/turtle1/set_pen服務的節點名稱、URI、類型 和參數的示例。

3.rosservice type [服務名稱]:顯示服務類型

    在以下示例中,可以看到/turtle1/set_pen服務是turtlesim/SetPen類型。

rosservice find [服務類型]:查找指定服務類型的服務

    以下示例搜索turtlesim/SetPen類型的服務。因此,可以看到搜索出/turtle1/ set_pen。

rosservice uri [服務名稱]:顯示ROSRPC

   uri服務 用戶也可以使用rosservice的uri選項來檢查/turtle1/set_pen服務的ROSRPC URI, 如下所示:

rosservice args [服務名稱]:服務參數輸出

我們來看看/turtle1/set_pen服務的每個參數,如下例所示,該命令顯示在/turtle1/ set_pen服務中使用r、g、b、width和off參數。

 

rosservice call [服務名稱] [參數]:用輸入的參數服務請求

以下示例是請求/turtle1/set_pen服務的命令。所使用的“255 0 0 5 0”是對應於用 於/turtle1/set_pen服務的參數(r,g,b,width,off)的值。紅色的r的最大值是255, 因爲g和b都是0,所以筆的顏色是紅色的。width設置爲5,off爲0(假)。rosservice call是一個非常有用的命令,通常用於測試服務。

通過使用前面的命令,發送了服務請求,更改了turtlesim中使用的筆的屬性,並且 從turtle_teleop_key中下達了下移命令。作爲結果,可以從下面圖中看到原來是白色的 筆色顯示爲紅色。

四.rosparam:ROS參數

在運行ROS參數相關示例之前先關閉所有節點。通過在不同的終端窗口中運行以下命 令來運行turtlesim_node和turtle_teleop_key。

1.rosparam list:查看參數列表

顯示在同一網絡中使用的參數列表。

2.rosparam get [參數名稱]:獲取參數值

如果要查看特定參數的值,可以將該參數名稱指定爲rosparam get命令的選項。

如果要檢查所有參數的值,而不是某一特定的參數,可以使用“/”作爲選項來顯示所 有參數的值,如下所示。

3.rosparam dump [文件名]:將參數保存到指定的文件

    以下示例將當前參數值保存到parameters.yaml文件中。因爲它保存了每次使用的參 數值,並且可以在下次執行時使用(“~/”表示用戶的home目錄),所以很方便。

4.rosparam set [參數名稱]:設置參數值

這是設置參數值的命令。在以下示例中,將turtlesim節點的background_b參數 (與背景色相關的參數)設置爲0。

RGB從255,86,69變爲0,86,69,所以變成深綠色,如圖5-4右圖所示。但是,由於 turtlesim節點並不是每次讀取參數,因此需要使用“rosparam set background_b 0” 命令修改參數之後,用“rosservice call clear”命令刷新屏幕。參數的反映結果決於節 點的運行方式。

5.rosparam load [文件名稱]:將參數保存到指定的文件

    此命令與rosparam dump相反,是讀取parameters.yaml文件並將其用作當前參數 值。如下例所示,運行“rosservice call clear”命令,參數值將會變爲所加載的文件的 參數值,並且在執行dump命令時,圖5-4中變爲綠色的背景將變爲藍色背景。rosparam load是一個非常有用的命令,會經常使用,讀者需要掌握。

6.rosparam delete [參數名稱]:刪除參數

該命令刪除指定的參數。

五.rosmsg: ROS消息信息
 

在運行ROS消息信息示例之前,先關閉所有節點。通過在不同的終端窗口中運行以下 命令來運行turtlesim_node和turtle_teleop_key。

1.rosmsg list:顯示所有消息

該命令顯示當前ROS中安裝的功能包的所有消息。根據當前ROS中包含的功能包,顯 示結果可能會有所不同。

2.rosmsg show [消息名稱]:顯示指定的消息信息

顯示指定的消息信息。以下是顯示turtlesim/Pose消息信息的例子。float32是一個 浮點變量,可以確認它是一個包含5條信息(x、y、theta、linear_velocity和angular_ velocity)的消息。

3.rosmsg md5 [消息名稱]:顯示md5sum

以下是查看turtlesim/Pose消息的md5信息的示例。有時如果在消息通信期間遇到 MD5問題,則需要檢查md5sum。這時會用到該命令,一般不常用。

4.rosmsg package [功能包名稱]:顯示用於指定功能包的所有消息

   可以看到特定功能包中使用的消息。

5.rosmsg packages:顯示使用消息的所有功能包

六.rossrv:ROS服務信息

在運行ROS服務信息相關示例之前,先關閉所有節點。通過在不同的終端窗口中運行 以下命令來運行turtlesim_node和turtle_teleop_key。

1.rossrv list:顯示所有服務

    該命令顯示了ROS上當前安裝的功能包的所有服務。根據目前包含在ROS中的功能 包,顯示結果可能會有所不同。

2.rossrv show [服務名稱]:顯示指定服務的信息

    以下示例顯示turtlesim/SetPen服務信息。可以確認uint8是包含r、g、b、width 和off等5種信息的服務。請注意,“---”在服務文件中用作請求和響應的分隔符。對於 turtlesim/SetPen,用戶可以看到只有請求,沒有任何響應。

 

3.rossrv md5 [服務名稱]:顯示md5sum

在以下示例中,使用該命令來查看turtlesim/SetPen服務的md5信息。有時如果在 服務請求和響應期間遇到MD5問題,則需要檢查md5sum。這時會用到該命令,一般不 常用。

4.rossrv package [功能包名稱]:顯示用於指定功能包的所有服務

可以看到指定功能包中用到的服務。

5.rossrv packages:顯示使用服務的所有功能包

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章