為了方便除錯,ros提供了資料記錄與回放的功能包:rosbag。該指令記錄了ros系統執行時的訊息流,開發者可以在離線狀態下回放這些資料。
以下以ros小烏龜為例進行實驗。
$ roscore
$ rosrun turtlesim turtlesim_node
$ rosrun turtlesim turtle_teleop_key
$ mkdir bagfiles && cd bagfiles
$ rosbag record -a
$ rosbag info bagfile.bag
$ rosbag play bagfile.bag
前面3條指令是啟動ros小烏龜,通過鍵盤控制小烏龜的移動;
第4條指令是建立資料夾存放記錄的bag包;
第5條指令是資料記錄,-a(all)引數意思是記錄所有發布的訊息。停止記錄在該視窗按下ctrl+c即可。停止後在bagfiles資料夾內會新生成乙個.bag檔案,該檔案的名稱是自動的,以時間進行的命名。這條指令也可以用如下指令:
$ rosbag record -o result /turtle1/cmd_vel /turtle1/pose
其中,-o引數的含義是指定了我們要儲存的bag檔案的名字,這裡會生成result.bag。後面的/turtle1/cmd_vel
和/turtle1/pose
則指定了我們要記錄資訊的話題;
第6條指令是檢視bag包的相關資訊;
即:[ warn] [1576311065.082263288]: /use_sim_time set to true and no clock published. still waiting for valid time...
表現出的現象是:暫停了,並沒有進行資料的錄製。解決方案如下:
#錄製前
$ rosparam set /use_sim_time false
$ rosparam set /use_sim_time true
ROS記錄回放資料
一 使用rostopic記錄資料 rostopic list 檢視所有topic列表 mkdir bagfile 新建乙個bagfile資料夾存放生成的rosbag檔案 cd bagfile rosbag record a 記錄所有topic資料,生成rosbag資料報 rosbag record ...
Vim 命令記錄與回放
步驟如下 q a.z 暫存器名 執行你要執行的操作 q 結束操作 呼叫為 暫存器 列子如下 在寫php 程式時用的比較多的是建立函式 如function add in q 結束 使用方法 add in f 為重複上一次呼叫 命令記錄的暫存器和用於yank和刪除命令的暫存器是同乙個東西 修改暫存器的內...
ROS錄製與回放資料
rosbag record a附加 a選項,該選項表示將當前發布的所有話題資料都錄製儲存到乙個bag檔案中,個以年份 日期和時間命名並以.bag作為字尾的檔案。rosbag info 檢視bag檔案中的內容而無需回放出來。rosbag play 回放bag檔案以再現系統執行過程rosbag play...