繼續我們的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...