# 3.4 Message
## 3.4.1 簡介
topic有很嚴格的格式要求,比如上節的攝像頭進程中的rgb圖像topic,它就必然要遵循ROS中定義好的rgb圖像格式。這種數據格式就是Message。Message按照定義解釋就是topic內容的數據類型,也稱之為topic的格式標準。這里和我們平常用到的Massage直觀概念有所不同,這里的Message不單單指一條發布或者訂閱的消息,也指定為topic的格式標準。
## 3.4.2 結構與類型
基本的msg包括bool、int8、int16、int32、int64(以及uint)、float、float64、string、time、duration、header、可變長數組array[]、固定長度數組array[C]。那么具體的一個msg是怎么組成的呢?我們用一個具體的msg來了解,例如上例中的msg `sensor_msg/image`,位置存放在`sensor_msgs/msg/image.msg`里,它的結構如下:
std_msg/Header header
uint32 seq
time stamp
string frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint8[] data
觀察上面msg的定義,是不是很類似C語言中的結構體呢?通過具體的定義圖像的寬度,高度等等來規范圖像的格式。所以這就解釋了Message不僅僅是我們平時理解的一條一條的消息,而且更是ROS中topic的格式規范。或者可以理解msg是一個“類”,那么我們每次發布的內容可以理解為“對象”,這么對比來理解可能更加容易。
我們實際通常不會把Message概念分的那么清,通常說Message既指的是類,也是指它的對象。而msg文件則相當于類的定義了。
## 3.4.2 操作命令
rosmsg的命令相比topic就比較少了,只有兩個如下:
| rosmsg命令 | 作用 |
| :------: | :------: |
| `rosmsg list` | 列出系統上所有的msg |
| `rosmsg show msg_name` | 顯示某個msg的內容 |
- 前言
- 第一章 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