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,...