當前位置: 華文問答 > 科學

ROS 2入門教程——1.8 使用rqt_console

2021-03-07科學

1.8.1 目標

了解rqt_console,這是一個用於檢查日誌訊息的工具。

1.8.2 教程級別

入門

1.8.3 學習時間

5分鐘

1.8.4 內容

1.8.4.1 背景知識

rqt_console是一個GUI工具,用於檢查ROS 2中的日誌訊息。通常來說,日誌訊息顯示在終端中。用rqt_console工具可以隨著時間的推移不停地收集這些日誌訊息,以更有條理的方式仔細檢視它們,過濾它們,保存它們,甚至重新載入保存的檔以在不同的時間進行內部檢查。

節點用日誌以各種方式輸出有關事件和狀態的訊息。為了使用者的利益,它們的內容通常是資訊性的。日誌訊息的意圖由節點的作者定義,盡管其內容可以在執行時寫入。

1.8.4.2 前提條件

需要安裝好rqt_console工具和turtlesim軟體包。

與往常一樣,不要忘記在每個新開啟的終端中source ROS 2的安裝檔。

1.8.4.3 任務

(1)設定

在一個新的終端中用以下命令啟動rqt_console:

ros2 run rqt_console rqt_console

rqt_console視窗將會開啟,如下所示:

rqt控制台的第一部份用於顯示來自系統的日誌訊息。

在中間部份,可以透過設定排除嚴重程度級別來過濾訊息。也可以使用右側的「+」加號按鈕添加更多的排除過濾器。

底部部份用於突出顯示包含輸入的字串訊息。也可以在此部份添加更多過濾器。

現在,用以下命令在一個新終端中啟動turtlesim節點:

ros2 run turtlesim turtlesim_node

(2)rqt_console上的訊息

為生成日誌訊息給rqt_console顯示,可以烏龜撞到墻上。在一個新的終端中,輸入以下ros2 topic pub命令(在話題教程中詳細討論過):

ros2 topic pub -r 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0,y: 0.0,z: 0.0}}"

由於該命令以穩定的頻率釋出話題,因此烏龜會不斷地撞到墻上。 在rqt_console中,會看到反復顯示嚴重程度級別為「警告」級別的同一訊息,如下所示:

在執行ros2 topic pub命令的終端中按下Ctrl + C鍵來停止烏龜繼續撞墻。

(3)日誌的級別

ROS 2的日誌級別按以下嚴重程度(從高到低)排序:

Fatal
Error
Warn
Info
Debug

每個級別指代什麽具體內容並沒有確切的標準,但可以安全地作以下假設:

● 「致命」(Fatal)訊息表示系統將終止程式,以嘗試保護其自身免受損害。

● 「錯誤」(Error)訊息表示重大問題,雖然不一定會損壞系統,但會阻止系統正常執行。

● 「警告」(Warn)訊息表示意料之外的活動或不理想的結果,可能代表更深層的問題,但不會直接損害功能。

● 「資訊」(Info)訊息表示事件和狀態的更新,可以用作系統是否按預期執行的一種視覺化驗證方式。

● 「偵錯」(Debug)訊息一步一步地詳細說明了系統執行的整個過程。

預設級別為「資訊」。僅能看到預設嚴重程度級別和更高級別的訊息。

通常來說,只有偵錯訊息是隱藏的,因為它們是唯一不如資訊訊息嚴重的級別。例如,如果將預設級別設定為「警告」,則只會看到嚴重程度級別為「警告」、「錯誤」和「致命」的訊息。

1)設定預設的日誌級別

在使用重對映命令首次執行/ turtlesim節點時,可以設定預設日誌級別。在終端中輸入以下命令:

ros2 run turtlesim turtlesim_node --ros-args --log-level WARN

現在,您將不會看到上一次啟動turtlesim節點時控制台中出現的「資訊」級別警告了。這是因為「資訊」訊息的嚴重程度級別低於新設定的預設嚴重程度級別「警告」。

1.8.5 小結

如果需要仔細檢查系統中的日誌訊息,rqt_console會非常有用。 可能會出於多種原因想要檢查日誌訊息,通常用來找出問題出在哪裏以及導致該問題的一系列事件。

1.8.6 下一步

下一個教程將教您如何建立launch檔。

*英語原文地址:Using rqt_console