ROS 学习笔记(三):自定义服务数据srv+Server+Client 示例运行
一、自定义服务数据:
1.向功能包添加自定义服务文件(AddTwoInts.srv)
cd ~/catkin_ws/src/mypackage
mkdir srv
cd srv
2.生成并编辑自定义服务文件:
gedit AddTwoInts.srv
添加内容:
int64 a
int64 b
---
int64 sum
3.修改添加~/catkin_ws/src/mypackage/package.xml 文件中内容
...
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
...
4.修改添加~/catkin_ws/src/mypackage/CMakeList.txt 文件中内容
(message_generation 同时针对话题消息和服务消息类型描述文件生成相应的代码)
// 添加生成依赖的功能包
find_package(catkin REQUIRED COMPONENTS
...
message_generation
)
// 添加需要编译的.srv文件
add_service_files(
FILES
AddTwoInts.srv
)
5.编译后查看服务.srv
cd ~/catkin_ws
rosservice list
注意:对于AddTwoInts.h 是 AddTwoInts.srv文件在编译后自动生成的
二、Server+Client 示例:
1,~/catkin_ws/mypackage/src 目录中,编写俩个源文件server.cpp和client.cpp
(编译器编写或文本编写)
server.cpp 源码:
#include "ros/ros.h"
#include "mypackage/AddTwoInts.h"
// 回调函数部分(实现服务功能)
bool add(mypackage::AddTwoInts::Request &req,
mypackage::AddTwoInts::Response &res)
{
res.sum = req.a + req.b