ROS 自定義訊息型別 c

2021-10-12 07:33:31 字數 1879 閱讀 4885

一、msg

用於發布-訂閱的通訊方式中。

1、在包的src同級目錄下建立msg資料夾。

2、在msg資料夾中,建立.msg檔案(例:my_msg.msg)

3、編輯my_msg.msg檔案      

int32 data1

string data2

4、編輯package.xml , 新增依賴

message_generation

message_generation

message_runtime

5、編輯cmakelists.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} $) #該項讓編譯器知道要注意編譯順序
target_link_libraries(***$ )

具體例子如下:

add_executable(talker src/talker.cpp) #可執行檔案

target_link_libraries(talker $)#鏈結庫

add_executable(listener src/listener.cpp)

target_link_libraries(listener $)#鏈結庫

add_dependencies(listener $_exported_targets} $) #該項讓編譯器知道要注意編譯順序

add_dependencies(talker $_exported_targets} $) #該項讓編譯器知道要注意編譯順序

include_directories(

include

$)

6、編譯,catkin_make,在devel/include 中可以看到標頭檔案

#include

#include "ros/ros.h"

#include "std_msgs/string.h"

#include

void chattercallback(const ros_test::my_msg::constptr &msg)

",msg->data1,msg->data2.c_str());

}int main(int argc, char **ar**)

#include

#include "ros/ros.h"

#include "std_msgs/string.h"

#include

int main(int argc, char **ar**)

}

ROS 自定義訊息型別方法

1 在package中新建資料夾名為msg 2 在msg資料夾中建立訊息 此處以my msg.msg 為例,注意的是要以msg為字尾名 內容舉例如下 int32 data1 float64 data2關於訊息內容,需要注意的是如果型別錯誤,那麼將不能生成標頭檔案。例如float64寫成了float,...

ROS2 C 自定義訊息型別

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

自定義srv訊息之ros

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