自己写srv文件vscode提示找不到文件

在学习古月居的教程中,提到,不同于消息通信,服务通信过程中服务的数据类型需要自己定义。节点并不提供标准服务类型。服务类型的定义文件一般是:*.srv为扩展名,且一般都放在功能包下的srv文件夹目录。ros中的服务数据可以通过srv文件进行语言无关的接口定义。一般写在功能包的srv目录。目的是client输入两个数,server返回这两个数相加的结果,下面是实践:

本地环境: ubuntu16.04 + ROS kinetic

1.在一个catkin_ws/src 下,创建一个pkg:
catkin_create_pkg learning_communication roscpp rospy
依赖会被默认写到功能包的CMakeLists.txt和package.xml中

2.创建自定义服务数据结构在learning_communication/srv 下创建 AddTwoInts.srv文件,文件内容:

int64 a
int64 b

---
int64 sum

中间用’—'隔开,上面的client的数据结构,下面是 server的数据结构

注:定义好服务数据结构后,要想让服务类型在c++,python中使用,必须要做相应的编译与运行配置。
编译依赖message_generation
运行依赖message_runtime

本文为了方便演示,只说在vscode等下,找不到自定义数据结构的情况,所以server, client的源代码只包含头文件进行测试。

server.cpp的内容:

#include<ros/ros.h>
#include "learning_communication/AddTwoInts.h"            
int main(){}

client.cpp的内容:

#include<ros/ros.h>
#include "learning_communication/AddTwoInts.h"
int main(){}
注: 以上的AddTwoInts.h 本来没有这个头文件,但根据作者的解释说,该头文件根据我们之前创建的服务数据类型AddTwoInts.srv自动创建,但是,后来经过测试,还是没有找到这个头文件,这里不报错,不知道是为什么。

接着打开package.xml (这里,这里打开的是包learning_communication下的package.xml, 后面的CMakeLists.txt也是, catkin_ws工作空间下的CM

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值