在 ros 通訊協議中,資料載體是乙個較為重要組成部分,ros 中通過 std_msgs 封裝了一些原生的資料型別,比如:string、int32、int64、char、bool、empty… 但是,這些資料一般只包含乙個 data 字段,結構的單一意味著功能上的侷限性,當傳輸一些複雜的資料,比如: 雷射雷達的資訊… std_msgs 由於描述性較差而顯得力不從心,這種場景下可以使用自定義的訊息型別
ros中還有一種特殊型別:header
,標頭包含時間戳和ros中常用的座標幀資訊。會經常看到msg檔案的第一行具有header標頭
。
**需求:**建立自定義訊息,該訊息包含人的資訊:姓名、身高、年齡等。
流程:
按照固定格式建立 msg 檔案
編輯配置檔案
編譯生成可以被 python 或 c++ 呼叫的中間檔案
功能包下新建 msg 目錄,新增檔案 person.msg
string name
uint16 age
float64 height
package.xml中新增編譯依賴與執行依賴
message_generation
message_runtime
find_package(catkin required components
roscpp
rospy
std_msgs
message_generation
)# 需要加入 message_generation,必須有 std_msgs
## 配置 msg 原始檔
add_message_files(
files
person.msg
)
# 生成訊息時依賴於 std_msgs
generate_messages(
dependencies
std_msgs
)
#執行時依賴
catkin_package(
# include_dirs include
# libraries demo02_talker_listener
catkin_depends roscpp rospy std_msgs message_runtime
# depends system_lib
)
編譯後的中間檔案檢視:c++ 需要呼叫的中間檔案(…/工作空間/devel/include/包名/***.h)
python 需要呼叫的中間檔案(…/工作空間/devel/lib/python3/dist-packages/包名/msg)
用的中間檔案(…/工作空間/devel/lib/python3/dist-packages/包名/msg)
後續呼叫相關 msg 時,是從這些中間檔案呼叫的
ROS通訊機制(二) 話題通訊自定義msg
在 ros 通訊協議中,資料載體是乙個較為重要組成部分,ros 中通過 std msgs 封裝了一些原生的資料型別,但這些資料一般只包含乙個 data 字段,當傳輸一些複雜的資料,可以使用自定義的訊息型別 建立自定義msg 功能包下新建msg目錄,新增person.msg string name i...
ROS通訊程式設計 話題程式設計 自定義話題訊息
系統環境 ubuntu16.04 定義msg檔案 在功能包目錄下新建msg資料夾。在msg資料夾下新建person.msg檔案。在檔案person.msg中輸入以下內容並儲存。string name uint8 uint8 age uint8 unknown 0 uint8 male 1 uint8...
ROS之msg檔案定義以及自定義發布主題訊息型別
一 建立msg檔案 相當於乙個結構體 總結 二 使用msg檔案 注意 msg檔案自定義資料型別其實就是乙個結構體型別,所以使用的時候就是相當於定義乙個結構體成員變數 struct stustu1,stu2 三 自定義發布訊息的型別 這裡舉乙個例子 robotcontrol.msg 相當於定義了乙個含...