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