天天看點

ROS2學習之旅(11)——記錄和回放資料

ROS2學習之旅(11)——記錄和回放資料

學會使用bag工具...

ros2 bag是一個指令行工具,用于記錄釋出在系統中話題上的資料。它累積記錄任意數量話題的資料,并将其儲存在資料庫中。然後可以重放資料以再現測試和實驗的結果。記錄話題資料也是分享工作和讓别人重制工作的好方法。

接下來在turtlesim系統中記錄鍵盤輸入,将其儲存并回放它們。

是以,運作/turtlesim和/teleop_turtle兩個節點,分别在兩個終端運作:

此時,出現視窗:

ROS2學習之旅(11)——記錄和回放資料

建立一個檔案夾已儲存記錄檔案:

ros2 bag隻能記錄釋出的話題的資料,要檢視系統的話題清單,打開一個新終端,并運作以下指令:

此時傳回:

/turtle_teleop節點在/turtle1/cmd_vel話題上釋出指令以使海龜在turtlesim中移動。

要檢視/turtle1/cmd_vel釋出的資料,運作以下指令:

一開始什麼都不會顯示出來,因為teleop沒有釋出任何資料。傳回運作teleop的終端,使其處于活動狀态。使用方向鍵移動海龜,将看到在運作ros2 topic echo的終端上釋出的資料。

為了記錄話題釋出的資料,使用指令文法:

打開一個新的終端并移動到之前建立的bag_files目錄中,因為rosbag檔案将儲存在運作它的目錄中,然後執行:

将在終端中看到以下消息(日期和時間會不同):

現在,ros2 bag正在記錄/turtle1/cmd_vel話題上釋出的資料:

ROS2學習之旅(11)——記錄和回放資料

按下ctrl+c來停止記錄。

儲存的檔案名稱具有以下格式:

使用ros2 bag同樣可以記錄多個資料:

-o選項允許為封包件選擇一個唯一的名稱,下面的字元串(subset)是檔案名。

要一次記錄多個話題,隻需用空格分隔出每個話題即可。

将看到以下消息,确認正在錄制兩個話題:

按下ctrl+c結束記錄,此時記錄的檔案夾為:

ROS2學習之旅(11)——記錄和回放資料

注意:

還可以向指令添加另一個選項-a,它記錄系統上的所有話題。

可以檢視記錄包的細節:

在subset封包件上運作這個指令将傳回一個關于該檔案的資訊清單:

要檢視各個消息,必須打開資料庫(在本例中是sqlite3)來檢查它,這超出了ROS2的範圍。

在運作teleop的終端中鍵入Ctrl+C,重新播放bag檔案,確定海龜視窗是可見的:

終端傳回:

海龜将遵循在記錄時輸入的相同路徑(盡管不是100%準确,turtlesim對系統時間的微小變化很敏感)。

ROS2學習之旅(11)——記錄和回放資料

可以使用ros2 bag指令記錄在ROS2系統中傳遞的話題上的資料。無論是在與他人分享工作,還是在檢查自己的實驗,這都是一個值得了解的好工具。

如果給您帶來幫助,希望能給點個關注,以後還會陸續更新有關機器人的内容,點個關注不迷路~歡迎大家一起交流學習。

未經允許,禁止轉載。