ros新建訊息型別 新建服務資料型別。

2021-09-29 16:33:47 字數 3504 閱讀 1778

繼續我們的ros初學之旅。

發布節點:

send_msg.cpp

#include

"ros/ros.h"

#include

"std_msgs/string.h"

#include

intmain

(int argc,

char

**ar**)

return0;

}

接受節點:

//receive_msg.cpp

#include

"ros/ros.h"

#include

"std_msgs/string.h"

void

messagecallback

(const std_msgs::string::constptr& msg)

intmain

(int argc,

char

**ar**)

兩個節點同時執行可以得到結果。

在功能包下,新建msg資料夾,建立名為chapter2_msg1.msg的檔案,在其中寫入一下內容:

int32 a

int32 b

int32 c

在package.xml中修改;

message_generation<

/build_depend>

message_generation<

/build_export_depend>

message_runtime<

/exec_depend>

取消這三行的注釋

cmakelists.txt中找到指定位置並修改為一下內容:

find_package

(catkin required components

roscpp

std_msgs

message_generation

)add_message_files

( files

chapter2_msg1.msg

)generate_messages

( dependencies

std_msgs

)

編譯,然後建立使用這種訊息型別的節點

//example3_a

#include

"ros/ros.h"

#include

"chapter2/chapter2_msg1.h"

#include

intmain

(int argc,

char

**ar**)

return0;

}

example3_b

#include

"ros/ros.h"

#include

"chapter2/chapter2_msg1.h"

void

messagecallback

(const chapter2::chapter2_msg1::constptr& msg)

intmain

(int argc,

char

**ar**)

## 新建服務資料型別

在功能包下新建srv資料夾,在其下新建chapter2_srv1.srv檔案,寫入一下內容:

int32 a 

int32 b

int32 c

---

int32 sum

在cmakelists.txt種修改:

catkin_package

(catkin_depends message_runtime

)add_service_files

( files

chapter2_srv1.srv

)

編譯一下

//example2_a.cpp

#include

"ros/ros.h"

#include

"chapter2/chapter2_srv1.h"

bool

add(chapter2::chapter2_srv1::request &req,

chapter2::chapter2_srv1::response &res)

intmain

(int argc,

char

**ar**)

//example2_b.cpp

#include

"ros/ros.h"

#include

"chapter2/chapter2_srv1.h"

#include

intmain

(int argc,

char

**ar**)

ros::nodehandle n;

ros::serviceclient client = n.serviceclient

("add_3_ints");

chapter2::chapter2_srv1 srv;

srv.request.a =

atoll

(ar**[1]

);srv.request.b =

atoll

(ar**[2]

);srv.request.c =

atoll

(ar**[3]

);if(client.

call

(srv)

)else

return0;

}

catkin_create_pkg package_name std_msgs roscpp

依賴標準訊息和從c++庫

catkin_make 編譯當前工作區下的所有功能包

catkin_make --pkg package_name 編譯制定功能包

rosnode list 列出當前工作的節點

rosnode info node_name   列出節點的具體資訊

rostopic list 列出當前的主題名稱

rostopic type theme_name  列出主題名對應的具體的訊息型別

rosmsg show msg_name  列出訊息所具體包括的基本資料型別

rosservice list  列出當前可用服務

rosservice node service_name  列出提供制定服務的節點

rosservice info service_name   查詢服務的資料型別data_name

rossrv show data_name    列出服務資料型別的具體內容

新建ros訊息型別,用rosbuild編譯。

以orb slam2中的ros資料夾下為例。1 cd到ros資料夾下的orb slam2資料夾,新建msg資料夾 2 在msg中新增乙個名為images.msg的檔案,新增如下 use this header as both rgb depth header std msgs header head...

新建WINDOWS服務C

當前作業環境 windows8.1 visual studio 2013 一.建立專案,選擇 windows服務 模板 二.檢視生成的專案,結構很像winform的專案,其中program.cs是程式入口,service1.cs是服務類.service1.cs,按f7從設計檢視轉到 服務類繼承自服務...

建立ROS訊息和ROS服務

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