首先新建功能包,可利用VS Code或者 catkin_create_pkg server_client roscpp rospy std_msgs

在其下建立srv文件夹,再建立Addints.srv文件(---用于区分请求和响应)

int32 num1

int32 num2

---

int32 sum

再在package.xml中修改如下:

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

再在CMakeList.txt修改如下:

find_package(catkin REQUIRED COMPONENTS

roscpp

rospy

std_msgs

message_generation

)

add_service_files(

FILES

Addints.srv

)

generate_messages(

DEPENDENCIES

std_msgs

catkin_package(

CATKIN_DEPENDS roscpp rospy std_msg message_runtime

)

在c_cppc_properies.json文件中的includePath加入:

"/home/jhx/demo03_ws/devel/include/server_client/**"

对srv的初步编译完成

现在编写server.cpp文件:

#include "ros/ros.h"

#include <sstream>

#include "server_client/Addints.h"

bool doNums(server_client::Addints::Request &request, server_client::Addints::Response &response){

int num1=request.num1;

int num2=request.num2;

ROS_INFO("Received data: num1 = %d, num2 = %d",num1,num2);

int sum=num1+num2;

response.sum=sum;

ROS_INFO("calculated data: sum = %d",sum);

return true;

}

int main(int argc,char *argv[]){

setlocale(LC_ALL,"");

ros::init(argc,argv,"server");

ros::NodeHandle n;

ros::ServiceServer server=n.advertiseService("Addints",doNums);

ros::spin();

return 0;

}

再对CMakeList.txt进行修改:

add_executable(server src/server.cpp)

add_dependencies(server ${PROJECT_NAME}_gencpp)

target_link_libraries(server

${catkin_LIBRARIES}

)

然后roscore,source ./devel/setup.bash,进行rosrun操作

再开启一个终端,输入rosservice call Addints,敲击空格再使用tab键,再直接修改num1和num2的值,敲击回车,就能得到结果。

效果如下:

服务通信:自定义srv文件以及服务端的编写相关推荐

  1. 【服务通信自定义srv调用3----客户端的优化】

    客户端的优化 服务通信自定义srv调用,客户端随意提交两个数,完成数的相加.也就是实现参数的动态提交: 1.格式:rosrun xxxx xxxx 12 34 2.节点执行时候,需要获取命令中的参数, ...

  2. 服务通信—自定义srv

    1.创建工作空间并初始化与生成srv文件 1.创建工作空间并初始化 mkdir -p demo02_ws/src cd demo03_ws catkin_make 2.进入 src 创建 ros 包并 ...

  3. ROS通信机制(二) —— 服务(service)与srv文件

    文章目录 简述 特点 相关常用命令 通信模型 核心元素 通信过程 代码示例(服务端和客户端) 服务端(server.cpp) 客户端(client.cpp) 配置 CMakeLists.txt 编译和 ...

  4. ROS通信机制:话题、服务、参数

    目录 话题通信 理论模型 流程 通信样例 自定义消息的通信 服务通信 理论模型 服务通信自定义srv 参数服务器 理论模型 参数操作 话题通信 话题通信是ROS中使用频率最高的一种通信模式,话题通信是 ...

  5. 在服务器端调用微软office接口,Office 365 服务通信 API 参考

    Office 365 服务通信 API 参考 2021/8/11 本文内容 重要 Microsoft Graph 中的服务运行状况和通信 API 现已推出. Microsoft Graph API 替 ...

  6. 2.6 自定义srv python

    功能介绍 以自定义数据类型为基础,完成一个节点作为服务器,另一个节点接收传送两个数字到服务端,服务端计算后反馈到客户端进行打印输出 1.工作空间 1.1 创建工作空间lee_ws mkdir -p ~ ...

  7. 2.5 自定义srv C++

    功能介绍 以自定义数据类型为基础,完成一个节点作为服务器,另一个节点接收传送两个数字到服务端,服务端计算后反馈到客户端进行打印输出 1.工作空间 1.1 创建工作空间lee_ws mkdir -p ~ ...

  8. ROS话题通信自定义msg实现发送接收(六)c++、python

    目录 自定义msg简介 自定义msg实现 话题通信自定义msg调用(C++) vscode配置 实现发布方 实现订阅方 Python实现 编写发布方 实现订阅方 自定义msg简介 在 ROS 通信协议 ...

  9. android显示服务器端文件夹,Android上传文件到服务端并显示进度条

    最近在做上传文件的服务,简单看了网上的教程.结合实践共享出代码. 由于网上的大多数没有服务端的代码,这可不行呀,没服务端怎么调试呢. Ok,先上代码. Android 上传比较简单,主要用到的是 Ht ...

最新文章

  1. C++和Python的OpenCV中关于图像坐标的注意事项
  2. 了解这些,你就可以在Spring启动时为所欲为了
  3. 增强使用功能的Steam开源工具箱一枚
  4. PHP代码为什么不能直接保存HTML文件——PHP生成静态页面教程
  5. DataGridRow的创建
  6. day8网络编程,面向对象1
  7. matlab矩阵论文,回归函数论文,关于基于Matlab矩阵运算的多元回归函数编程相关参考文献资料-免费论文范文...
  8. Visio画图允许两条线交叉的操作
  9. java将输入的阿拉伯数字金额转换为中文大写金额
  10. Java MMdd 日期格式转换问题
  11. 目录-中文版Excel 2016宝典(第9版)
  12. PCL中仿射变换Affine3f(四维)矩阵与Matrix4f(四维)矩阵之间的转换
  13. 中国文化产业基地(园区)前景预测和发展战略规划建议报告2021年版
  14. ROG 冰刃 3 枪神 2 Plus 第二时间上手体验
  15. Pytorch深度学习实战教程:UNet语义分割网络
  16. 简单的按键继电器控制
  17. 在windows本地创建svn及遇到错误:svn create repository here 报错
  18. 程序人生:从全栈工程师看技术人生
  19. html代码高亮带行号,无法解决的难题:代码高亮插件SyntaxHighlighter Evolved的行号问题...
  20. 小试牛刀---用python实现超市买水果

热门文章

  1. 数据可视化 为业务提供决策建议
  2. 用 Axure RP 9 设计百度搜索网页
  3. 没有python基础直接学爬虫_只针对 Python 爬虫,该如何学习?
  4. Sigmoid和tanh的异同
  5. 【西北工业大学】程序设计实训(python)
  6. python3 抓取必应bing首页图片作为桌面背景
  7. Vue进阶(幺捌柒):vue项目build报错的解决办法(ERROR in static/js/***.js from UglifyJs)
  8. vue项目引入外部字体文件
  9. Word论文格式汇总
  10. Flutter2重磅发布支持Web和桌面应用