ROS 自定義訊息型別方法

2021-09-12 02:06:19 字數 1730 閱讀 6226

1、在package中新建資料夾名為msg

2、在msg資料夾中建立訊息(此處以my_msg.msg)為例,注意的是要以msg為字尾名

內容舉例如下:

int32 data1

float64 data2

關於訊息內容,需要注意的是如果型別錯誤,那麼將不能生成標頭檔案。例如float64寫成了float,那麼編譯時將會出現錯誤:***.h: no such file or directory;而不會告訴你是**出錯了,我曾經就遇到過這麼坑的問題,所以這點需要注意。

3、修改cmakelist.txt 和package.xml

3.1、在package.xml中新增編譯、執行依賴項

message_generation

message_runtime

此處需要注意的是indigo版本的中是找不到下面語句的:

message_runtime
如果加上會出現以下問題:

- the manifest (with format version 2) must not contain the following tags: run_depend
刪除掉又會出現:

catkin_package() depends on the catkin package 'message_runtime' which must

therefore be listed as a run dependency in the package.xml

即告訴我們應該新增run_time依賴,此時需新增

message_runtime
3.2、cmakelist.txt 

find_package()中新增message_generation

find_package(catkin required components

message_generation

roscpp

rospy

std_msgs

)

add_message_files()中新增my_msg.msg

add_message_files(files

my_msg.msg

)

generate_messages()新增std_msgs

generate_messages(dependencies

std_msgs

)

catkin_package()新增message_runtime

catkin_package(

catkin_depends

message_runtime)

最後在add_executable(*** src/***.cpp)後面新增一行

add_dependencies(*** $_exported_targets} $)
否則仍可能生成不了my_msg.h標頭檔案

1、包含標頭檔案

#include
2、定義變數

package_name::my_msg msg;

ROS 自定義訊息型別 c

一 msg 用於發布 訂閱的通訊方式中。在包的src同級目錄下建立msg資料夾。在 sg資料夾中,建立.msg檔案 例 my msg.msg 編輯my msg.msg檔案 int32 data1 string data2 編輯package.xml 新增依賴 message generation m...

ROS2 C 自定義訊息型別

首先注意一點,在ros 2 dashing發行版裡面,只有c 的功能包可以自定義訊息型別 也就是說,在建立包的時候,只有選擇 ament cmake方式建立的包才可以自定義訊息,但是python型別的功能包可以匯入由c 型別包建立的自定義訊息。進入工作空間 cd ros ws src建立功能包 ro...

自定義srv訊息之ros

在ros中,如果沒有現成的訊息型別來描述要去傳遞的訊息時,我們會自定義訊息。我們會新建乙個package來去自定義訊息,通常這個package寫任何的業務邏輯,只是用來宣告自定義的訊息型別,可以只定義一種訊息型別,也可以定義多種訊息型別,根據業務需求來定。所以,首先我們單獨的建立乙個package,...