ROS中使用srv需要一个服务器端和一个客户端。客户端向服务器端发出服务请求,服务器端根据客户端的请求给出回应。在本文前两节的基础上继续讲解ROS系统中的srv使用。

1. 创建srv文件

在~/catkin_ws/src/ROS_Test1路径中创建srv文件:

mkdir srv

cd srv

vim ROS_Test1_srv.srv

编辑内容如下所示:

2. 编辑功能包清单package.xml

rosed ROS_Test1 package.xml

找到如下模块并按图所示取消注释

3. 编辑文件CMakeLists.txt

分别找到如下模块取消注释并编辑:

执行命令行:

cd ~/catkin_ws

source /devel/setup.bash

rossrv show ROS_Test1/ROS_Test1_srv

若显示内容与ROS_Test1_srv.srv文件中的内容一致,说明服务创建成功。

4. 服务端创建

在src文件下编辑node_d1.cpp内容如下:

#include "ros/ros.h"
#include "ROS_Test1/ROS_Test1_srv"bool add(ROS_Test1::ROS_Test1_srv::Request &req,ROS_Test1::ROS_Test1_srv::Response &res)
{res.result = req.i1 + req.i2 + req.i3;ROS_INFO("sending service add");return true;
}int main(int argc, char **argv)
{ros::init(argc, argv, "service_server");ros::NodeHandle n;ros::ServiceServer service = n.advertiseService("service1", add);ROS_INFO("service Ready!");ros::spin();return 0;
}

5. 客户端创建

#include "ros/ros.h"
#include "ROS_Test1/ROS_Test1_srv.h"
#include <cstdlib>int main(int argc, char **argv)
{ros::init(argc, argv, "service_client");ros::NodeHandle n;ros::ServiceClient client = n.serviceClient<ROS_Test1::ROS_Test1_srv>("service1");ROS_Test1::ROS_Test1_srv srv;srv.request.i1 = 1;srv.request.i2 = 2;srv.request.i3 = 3;if(client.call(srv)){ROS_INFO("service success. result : %d", srv.response.result);}else{ROS_INFO("service failed!");return 1;}return 0;}

6. 编辑ROS_Test1文件夹下的CMakeLists.txt文件

7. 编译节点与节点运行

cd ~/catkin_ws

catkin_make

roscore

另外打开两个终端分别运行一下命令行(先source):

rosrun ROS_Test1 Test1_node_d1

rosrun ROS_Test1 Test1_node_d2

运行结果如下所示:

ROS创建使用srv相关推荐

  1. ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)

    ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本 rosed msg和srv 创建msg 使用rosmsg 创建srv 使用rossrv 重新make一下软 ...

  2. ROS学习笔记八:创建ROS msg和srv

    ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...

  3. 11_创建ROS msg和srv文件

    本教程介绍了如何创建msg和srv文件,以及rosmsg,rossrv,roscp等命令行工具.至于为什么选择deepin而不是ROS通用的ubuntu,也仅仅是为了支持国产系统.鉴于本人水平有限,如 ...

  4. ubuntu ROS 创建项目

    ubuntu ROS 创建项目 打开Termianl 创建工作空间 创建功能包 打开Termianl Ctrl+Alt+t 创建工作空间 mkdir -p catkin_testmarker/src ...

  5. ros创建功能包和编译过程问题处理

    文章目录 1. 创建工作空间和功能包 2.新建cpp文件 3.修改CMakeLists.txt 4.编译问题 4.1 Could NOT find rospy (missing: rospy_DIR) ...

  6. ros创建工作空间_ROS入门学习之七Moveit机械臂控制

    1.MoveIt!系统架构 MoveIt是什么: 一个易于使用的集成化开发平台 由一系列移动操作的功能包组成:运动规划.操作控制.3D感知.运动学.控制与导航算法 提供友好的GUI 可应用于工业.商业 ...

  7. 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包

    目录 创建工作空间 编译工作空间 功能包 创建功能包 编译功能包 设置环境变量 检查环境变量 平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R ...

  8. ros创建工作空间_ROS 初级 - 安装和配置 ROS 环境

    这个 ROS 系列教程主要来自 ROS Wiki,加上自己学习过程中踩过的一些坑和个人理解. 1.安装 ROS 在配置 ROS 环境前要完全安装 ROS,参看之前的安装 ROS 的文章:Ubuntu ...

  9. ROS学习(11)使用ROS创建地图

    文章目录 前言 一.创建编译功能包 二.更新启动文件 三.启动模型 四.保存地图 五.加载地图 六.总结 前言 创建地图是一件比较复杂的工作,ROS利用map_server地图服务器,借助激光雷达和机 ...

最新文章

  1. nginx进程管理之worker进程
  2. 【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...
  3. arraylist 线程安全_数据结构之Array、ArrayList、List、LinkedList对比分析
  4. 基于深度学习的病理_组织病理学的深度学习(第二部分)
  5. mysql.sock 111,错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(111)...
  6. ASP如何限定中英文混合的文字输出字数?
  7. 4月1日见!小米9王源定制版官宣:透明版背壳加持
  8. SAP License:MR22借贷物料一步设置可以把差异带走
  9. cxpacket_如何避免CXPACKET?
  10. 计算机维修师高级证书好考吗,本人在考计算机维修工证书,现有诸多典型问题,求答案...
  11. 永中Office—公文的数据集成(转)
  12. Domain Driven Design(领域驱动设计)
  13. GIAC全球互联网架构大会2017上海站圆满结束,PPT合集下载
  14. 程序员又要背锅?虾米音乐客户端代码惊现神注释:穷逼 VIP!
  15. 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
  16. php用date语句获取时间,PHP date函数获取时间几个例子
  17. mybatis表不存在的解决办法
  18. C++ 直接计算多项式的值
  19. bilibili缓存文件在哪里_2020年最新最全实现转换bilibili的m4s为MP4的画质无损教程 专治各种不服!...
  20. DPC_WATCHDOG_VIOLATION蓝屏分析

热门文章

  1. Feign get接口传输对象引发一场追寻
  2. 2022年驾驶员考试公交车司机考试模拟试题卷及答案
  3. [Luogu P3997] [BZOJ 4418] [SHOI2013]扇形面积并
  4. 电脑上控制面板的管理工具打开什么也没有
  5. java毕业生设计冰鲜鱼管理系统的设计与实现计算机源码+系统+mysql+调试部署+lw
  6. KVM最初的2小时——KVM从入门到放弃
  7. 物联网云平台用到的那些基本协议
  8. 绝对定位——absolution
  9. 网易云:2019年云综合收入5.5亿元,越来越重软件服务
  10. 年末回顾 | 华为云AIoT+5G,开启万物智能世界新篇章