ROS创建使用srv
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相关推荐
- ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点(python版本)
ROS 创建msg和srv 编写发布者和订阅者节点 编写服务端和客户端节点-python版本 rosed msg和srv 创建msg 使用rosmsg 创建srv 使用rossrv 重新make一下软 ...
- ROS学习笔记八:创建ROS msg和srv
ROS学习笔记八:创建ROS msg和srv 本节主要讲述了如何创建和建立ROS msg和srv,同时使用命令行工具rosmsg.rossrv和roscp. msg和srv简介 msg:描述ROS m ...
- 11_创建ROS msg和srv文件
本教程介绍了如何创建msg和srv文件,以及rosmsg,rossrv,roscp等命令行工具.至于为什么选择deepin而不是ROS通用的ubuntu,也仅仅是为了支持国产系统.鉴于本人水平有限,如 ...
- ubuntu ROS 创建项目
ubuntu ROS 创建项目 打开Termianl 创建工作空间 创建功能包 打开Termianl Ctrl+Alt+t 创建工作空间 mkdir -p catkin_testmarker/src ...
- ros创建功能包和编译过程问题处理
文章目录 1. 创建工作空间和功能包 2.新建cpp文件 3.修改CMakeLists.txt 4.编译问题 4.1 Could NOT find rospy (missing: rospy_DIR) ...
- ros创建工作空间_ROS入门学习之七Moveit机械臂控制
1.MoveIt!系统架构 MoveIt是什么: 一个易于使用的集成化开发平台 由一系列移动操作的功能包组成:运动规划.操作控制.3D感知.运动学.控制与导航算法 提供友好的GUI 可应用于工业.商业 ...
- 【RK3399Pro学习笔记】四、ROS 创建工作空间与功能包
目录 创建工作空间 编译工作空间 功能包 创建功能包 编译功能包 设置环境变量 检查环境变量 平台:华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本:Tinker_Edge_R ...
- ros创建工作空间_ROS 初级 - 安装和配置 ROS 环境
这个 ROS 系列教程主要来自 ROS Wiki,加上自己学习过程中踩过的一些坑和个人理解. 1.安装 ROS 在配置 ROS 环境前要完全安装 ROS,参看之前的安装 ROS 的文章:Ubuntu ...
- ROS学习(11)使用ROS创建地图
文章目录 前言 一.创建编译功能包 二.更新启动文件 三.启动模型 四.保存地图 五.加载地图 六.总结 前言 创建地图是一件比较复杂的工作,ROS利用map_server地图服务器,借助激光雷达和机 ...
最新文章
- nginx进程管理之worker进程
- 【深度学习】Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)...
- arraylist 线程安全_数据结构之Array、ArrayList、List、LinkedList对比分析
- 基于深度学习的病理_组织病理学的深度学习(第二部分)
- mysql.sock 111,错误2002(HY000):无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(111)...
- ASP如何限定中英文混合的文字输出字数?
- 4月1日见!小米9王源定制版官宣:透明版背壳加持
- SAP License:MR22借贷物料一步设置可以把差异带走
- cxpacket_如何避免CXPACKET?
- 计算机维修师高级证书好考吗,本人在考计算机维修工证书,现有诸多典型问题,求答案...
- 永中Office—公文的数据集成(转)
- Domain Driven Design(领域驱动设计)
- GIAC全球互联网架构大会2017上海站圆满结束,PPT合集下载
- 程序员又要背锅?虾米音乐客户端代码惊现神注释:穷逼 VIP!
- 显卡内存和计算机内存,显卡爆显存和满显存有什么区别
- php用date语句获取时间,PHP date函数获取时间几个例子
- mybatis表不存在的解决办法
- C++ 直接计算多项式的值
- bilibili缓存文件在哪里_2020年最新最全实现转换bilibili的m4s为MP4的画质无损教程 专治各种不服!...
- DPC_WATCHDOG_VIOLATION蓝屏分析
热门文章
- Feign get接口传输对象引发一场追寻
- 2022年驾驶员考试公交车司机考试模拟试题卷及答案
- [Luogu P3997] [BZOJ 4418] [SHOI2013]扇形面积并
- 电脑上控制面板的管理工具打开什么也没有
- java毕业生设计冰鲜鱼管理系统的设计与实现计算机源码+系统+mysql+调试部署+lw
- KVM最初的2小时——KVM从入门到放弃
- 物联网云平台用到的那些基本协议
- 绝对定位——absolution
- 网易云:2019年云综合收入5.5亿元,越来越重软件服务
- 年末回顾 | 华为云AIoT+5G,开启万物智能世界新篇章