2 1 4 話題通訊自定義msg

2021-10-20 10:17:37 字數 1638 閱讀 7342

在 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 相當於定義了乙個含...