Ros學習筆記(四)建立Ros訊息

2021-10-21 11:40:58 字數 2409 閱讀 1911

學習如何使用.msg檔案建立使用者自定義的訊息,並且在節點中使用這些自定義訊息,這包含乙個關於要傳輸的資料型別的標準。

首先在chapter2_turtleial包中建立乙個msg資料夾,在資料夾中建立乙個chapter2_msg.msg檔案,並新增以下命令列:

int32 a

int32 b

int32 c

此外在package.xml檔案中查詢以下命令列並取消注釋:

message_generation<

/build_depend>

message_runtime<

/exec_depend>

這些命令列支援在ros構建系統中配置訊息和服務。此外需要在cmakelist.txt中新增一行**如下:

find_package

(catkin required components

roscpp

std_msgs

message_generation

)

然後在cmakelist.txt中查詢以下命令列並取消注釋,同時新增新訊息檔名稱:

add_message_files

( files

chapter2_msg.msg

)generate_messages

( dependencies

std_msgs

)

最後編譯包:

$ cd ~

/catkin_ws

$ catkin_make

可以使用rosmsg命令檢查一切是否正常執行:

$ rosmsg show chapter2_turtleial/chapter2_msg
然後在src目錄下編寫cpp**建立測試節點。

example_2a.cpp

#include

"ros/ros.h"

#include

"chapter2_turtleial/chapter2_msg.h"

#include

"sstream"

intmain

(int argc,

char

** ar**)

return0;

}

example_2b.cpp

#include

"ros/ros.h"

#include

"chapter2_turtleial/chapter2_msg.h"

void

messagecallback

(const chapter2_turtleial::chapter2_msg::constptr& msg)

intmain

(int argc,

char

**ar**)

編輯cmakelist.txt檔案

add_executable

(example2a src/example_2a.cpp)

add_executable

(example2b src/example_2b.cpp)

add_dependencies

(example2a chapter2_turtleial_generate_messages_cpp)

add_dependencies

(example2b chapter2_turtleial_generate_messages_cpp)

target_link_libraries

(example2a $

)target_link_libraries

(example2b $

)

編譯所有節點的包:

$ cd ~

/catkin_ws/

$ catkin_make --pkg chapter2_turtleial

測試:

執行節點管理器:

$roscore
在其他終端中分別執行:

$ rosrun chapter2_turtleial example2a

$ rosrun chapter2_turtleial example2b

測試效果截圖:

(3)ROS學習 建立ROS訊息和ROS服務

2 srv 服務 乙個srv檔案描述乙個服務。它由兩部分組成 請求 request 和響應 response 3 msg檔案存放在軟體包的msg目錄下,srv檔案則存放在srv目錄下。下面,我們將在之前建立的軟體包裡定義乙個新的訊息。1 在 catkin ws src learning commun...

ROS學習筆記(四) ROS命令

roscd pkg 切換到指定的ros功能包目錄 rosls pkg 列印指定的ros功能包目錄下的檔案和目錄 rosed pkg file 編輯指定的ros功能包目錄下的指定檔案,預設使用vim編輯器,可在 bashrc檔案中修改預設編輯器 export editor emacs nw rosco...

建立ROS訊息和ROS服務

1.1在工作空間下的功能包下新建名為msg的資料夾 新建person.msg檔案 int64 num1.2為確保msg檔案被轉換成python或者其他語言的源 需要修改功能包下package.xml檔案,以新增功能包依賴 message generation build depend message...