iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
0
自我挑戰組

ROS自學筆記系列 第 29

Day 29 - ROS Bags

今天來介紹一個好用的工具,rosbag。這個功能剛好可以解決我之前在做機器人的時候遇到的限制,也就是在機器人行走的時候,由於沒辦法接螢幕的關係,很難在實際應用的時候debug。rosbag就是一個用來記錄的工具,他可以記錄某個topic輸出的訊息,並在之後可以重新執行一遍記錄內的訊息,這樣講有點抽象,直接來實作看看吧!
首先先執行我們昨天寫好的startup.launch檔:

$ roslaunch beginner_tutorials startup.launch

roslaunch 執行畫面
可以看到他自動幫我們執行了talker.py這個檔案,也就是我們之前寫的會針對/chatter這個topic發送訊息的教學,簡單來講,這個node會每秒輸出一個hello from python就對啦!

使用rosbag可以針對該topic接收到的訊息,進行紀錄的部分,只需要執行這個指令:

$ rosbag record <topic_name>

rosbag record 執行畫面
(請忽略我的硬碟空間不足XD)
這樣他就會開始記錄囉! 我大概過25秒之後關掉,會發現多了一個.bag檔,這時候可以用rosbag info查看該bag檔的資訊:

$ rosbag info <bag_name>

rosbag info 執行畫面
可以看到這個bag檔的資訊,其中有25條message就是被記錄下來的資訊。

使用rosbag play可以重新執行這個紀錄檔,並使用rostopic echo 可以看到該topic重新接收到該紀錄檔發布的訊息:

$ rosbag play <bag_name>

https://ithelp.ithome.com.tw/upload/images/20181113/20112348vlVVfgtq5d.png
可以看到左邊是使用rosbag執行紀錄檔,並在右邊的topic監聽中重新播出來。

簡單來講,這個rosbag的功能就是用來紀錄啦! 可以在出去外面跑實作的時候先把狀態記錄下來,之後再回放查看有沒有bug,是不是真的很方便呢!

參考資料

ros wiki - rosbag
ros wiki - rosbag command line
ros tutorials - recording and playing back data


上一篇
Day 28 - ROS Launch file
下一篇
Day 30 - 完賽啦!! 做個總結
系列文
ROS自學筆記30

尚未有邦友留言

立即登入留言