overview
ROS (Robot Operating System, 機器人操作系統) 提供一系列程序庫和工具以幫助軟件開發者創建機器人應用軟件。它提供了硬件抽象、設備驅動、函數庫、可視化工具、消息傳遞和軟件包管理等諸多功能。
rosbag 記錄深度相機數據
rosbag package提供了一個命令行工具以及cpp類和python的API, rosbag使用命令行能夠:錄制,從包重新發布,獲取包的概括信息,檢查包的消息類型,使用Python表達式過濾包中信息,壓縮解壓縮包,重新索引包。
rosebag支持的命令列表:
1.查看.bag中包含的信息 : rosbag info
2.回放.bag中包含的信息: rosbag play
2.1以某一頻率發布消息 : rosbag play -r 2
2.2從某一時間節點開始發布消息 : rosbag play -s 2
3.記錄所有topic信息: rosbag record -a
3.1記錄部分信息 : rosbag record -o subset /turtle1/cmd_vel /turtle1/pose 產生一個名為subset.bag的文件。
4.other command:
4.1檢查。確定一個.bag是否可以在當前系統中播放,或者是否可以遷移。rosbag check
4.2修復。修復.bag文件中的消息,以便它可以在當前系統中播放。rosbag fix
4.3過濾。使用python表達式轉換.bag文件。rosbag filter
4.4壓縮。壓縮一個或多個.bag文件。rosbag compress
4.5解壓縮。解壓縮一個或多個.bag文件。rosbag decompress
4.6重建。重建一個或多個破損的.bag文件。rosbag reindex
5.將.bag記錄的圖像數據輸出為圖片或視頻。
a.創建文件 export.luach 並寫入一下內容
1 <launch> 2 <node pkg="rosbag" type="play" name="rosbag" args="-d 2 $(find image_view)/test.bag"/> 3 <node name="extract" pkg="image_view" type="extract_images" respawn="false" output="screen" cwd="ROS_HOME"> 4 <remap from="image" to="/camera/image_raw"/> 5 </node> 6 </launch>
1 $(find image_view)/test.bag" 其中image_view表示package名字,此處改為你的.bag文件所處的package的名字即可,同時test改為對應的名字。 2 <remap from="image" to="/camera/image_raw"/> 此處表示需將你記錄的topic名字覆蓋掉/image 這個原始的topic。
b.運行launch文件,即
1 roslaunch export.launch
此時數據將被分離成一組圖片,並存在“.ros”文件夾中。
c.創建文件夾 /source
將/.ros中的圖片轉移到/source中,即
1 mv ~/.ros/frame*.jpg source/
d.轉換視頻
1 cd ~/source 2 jpeg2yuv -I p -f 15 -j frame%04d.jpg -b 1 > tmp.yuv 3 //其中-f 15 表示頻率, -b 1 表示起始圖片的編號。
如果要產生.ogv文件:
1 ffmpeg2theora --optimize --videoquality 10 --videobitrate 16778 -o output.ogv tmp.yuv
如果要產生mpg文件:
1 mencoder "mf://*.jpg" -mf type=jpg:fps=15 -o output.mpg -speed 1 -ofps 30 -ovc lavc -lavcopts vcodec=mpeg2video:vbitrate=2500 -oac copy -of mpeg
在本步驟中可能會需要安裝部分package,按提示安裝即可:
sudo apt-get install packeage-name