天天看點

rosbag 錄制小烏龜的軌迹

本文最初目的是為了使用rosbag 指令錄制自己的bag資料檔案。發現了一個很好玩的例程就記錄一下。

rosbag record

首先打開terminal 分别運作一下三個指令

roscore
rosrun turtlesim turtlesim_node 
rosrun turtlesim turtle_teleop_key
           

運作一下代碼就能看到目前的published 和 subscribed 的topics

![topics](https://img-blog.csdn.net/20170829151724099?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 同時會有看到一個藍底的視窗上有一隻小烏龜,用鍵盤控制其移動,可以産生軌迹。 運作一下的代碼生成存在bag檔案的路徑,并開始錄制, -a參數表示錄制所有的topic

mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a
           

以下是我控制行走出的軌迹

![軌迹](https://img-blog.csdn.net/20170829151314802?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 完成控制後,直接在rosbag 的 指令視窗 ctrl+c 就可以完成錄制。以上操作結束後就可以在bagfiles 目錄下看到一個以時間命名的.bag檔案。 運作以下代碼就能看到.bag檔案的資訊

如圖:

![這裡寫圖檔描述](https://img-blog.csdn.net/20170829152444236?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 可以看到錄制的topics一些資訊。 **rosbag play** ———- 接下來運作指令

這個時候小烏龜會按照之前錄制的軌迹自己跑了

![這裡寫圖檔描述](https://img-blog.csdn.net/20170829153349134?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 另外還可以改變運作的頻率 ![這裡寫圖檔描述](https://img-blog.csdn.net/20170829153509631?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 驚奇的發現軌迹跟原來錄制的不一樣了。另外最後小烏龜撞牆了…我就看小烏龜怼牆怼了幾秒(這個是我寫這篇部落格的主要原因),看了下terminal 上有消息的回報: ![這裡寫圖檔描述](https://img-blog.csdn.net/20170829153839973?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjI2MzcwNDk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) **rosbag record part of topics ** 很多時候topics 太多了,我們希望隻錄制一部分的topics 是以就可以運作以下的指令:

rosbag record -O subset /turtle1/command_velocity /turtle1/pose
           

這樣隻錄制了command_velocity 和 pose 兩個topics

kill 原來的turtlesim_node 、turtle_teleop_key 兩個terminal,然後重新運作

rosrun turtlesim turtlesim_node 
rosrun turtlesim turtle_teleop_key
           

運作record 部分topics 并控制小烏龜移動:

rosbag 錄制小烏龜的軌迹
rosbag 錄制小烏龜的軌迹

觀察topics确實隻有兩個…

參考:

ROS/tutorials/recording and playing back data