# 5.4 Rosbag
## 5.4.1 簡介
rosbag是一個這是一套用于記錄和回放ROS主題的工具。它旨在提高性能,并避免消息的反序列化和重新排序。rosbag package提供了命令行工具和代碼API,可以用C++或者python來編寫包。而且rosbag命令行工具和代碼API是穩定的,始終保持向后的兼容性。
## 5.4.2 命令
rosbag對軟件包來操作,一個包是ROS用于存儲ROS消息數據的文件格式,rosbag命令可以記錄、回放和操作包。指令列表如下:
| 命令 | 作用 |
| :------: | :------: |
| `cheak` | 確定一個包是否可以在當前系統中進行,或者是否可以遷移。 |
| `decompress` | 壓縮一個或多個包文件。 |
| `filter` | 解壓一個或多個包文件。 |
| `fix ` | 在包文件中修復消息,以便在當前系統中播放。|
| `help ` | 獲取相關命令指示幫助信息|
| `info ` | 總結一個或多個包文件的內容。|
| `play` | 以一種時間同步的方式回放一個或多個包文件的內容。|
| `record ` | 用指定主題的內容記錄一個包文件。|
| `reindex` | 重新索引一個或多個包文件。|
* [參考鏈接](https://youtu.be/pwlbArh_neU)
## 5.4.3 小結
rosbag通過命令行能夠對軟件包進行很多的操作,更重要的擁有代碼API,可以對包進行重新編寫。增加一個ROS API,用于通過服務調用與播放和錄制節點進行交互。
- 前言
- 第一章 ROS簡介
- 機器人時代的到來
- ROS發展歷程
- 什么是ROS
- 安裝ROS
- 安裝ROS-Academy-for-Beginners教學包
- 二進制與源碼包
- 安裝RoboWare Studio
- 單元測試一
- 第二章 ROS文件系統
- Catkin編譯系統
- Catkin工作空間
- Package軟件包
- CMakeLists.txt
- package.xml
- Metapacakge軟件元包
- 其他常見文件類型
- 單元測試二
- 第三章 ROS通信架構(一)
- Node & Master
- Launch文件
- Topic
- Msg
- 常見msg類型
- 單元測試三
- 第四章 ROS通信架構(二)
- Service
- Srv
- Parameter server
- Action
- 常見srv類型
- 常見action類型
- 單元測試四
- 第五章 常用工具
- Gazebo
- RViz
- Rqt
- Rosbag
- Rosbridge
- moveit!
- 單元測試五
- 第六章 roscpp
- Client Library與roscpp
- 節點初始、關閉與NodeHandle
- Topic in roscpp
- Service in roscpp
- Param in roscpp
- 時鐘
- 日志與異常
- 第七章 rospy
- Rospy與主要接口
- Topic in rospy
- Service in rospy
- Param與Time
- 第八章 TF與URDF
- 認識TF
- TF消息
- tf in c++
- tf in python
- 統一機器人描述格式
- 附錄:TF數學基礎
- 三維空間剛體運動---旋轉矩陣
- 三維空間剛體運動---歐拉角
- 三維空間剛體運動---四元數
- 第九章 SLAM
- 地圖
- Gmapping
- Karto
- Hector
- 第十章 Navigation
- Navigation Stack
- move_base
- costmap
- Map_server & Amcl
- 附錄:Navigation工具包說明
- amcl
- local_base_planner
- carrot_planner
- clear_costmap_recovery
- costmap_2d
- dwa_local_planner
- fake_localization
- global_planner
- map_server
- move_base_msg
- move_base
- move_slow_and_clear
- navfn
- nav_core
- robot_pose_ekf
- rotate_recovery