服务调用乌龟案例

实现步骤:
1.启动乌龟显示节点。
2.通过ros命令,获取乌龟生成服务的服务名称以及服务消息类型。
3.编写服务请求节点,生成新的乌龟。
实现流程:
1.通过ros命令获取服务与服务消息信息。
2.编码实现服务请求节点。
3.启动roscore,turtlesim_node,乌龟生成节点,生成新的乌龟。

获取服务话题

rosservice list
# 获取服务列表

显示ros正在服务的列表

/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/rqt_gui_py_node_19784/get_loggers
/rqt_gui_py_node_19784/set_logger_level
/rqt_gui_py_node_20438/get_loggers
/rqt_gui_py_node_20438/set_logger_level
/spawn
/teleop_turtle/get_loggers
/teleop_turtle/set_logger_level
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level

rosservice  info  /spawn

/spawn的信息结果

Node: /turtlesim
URI: rosrpc://makus-AFS:60819
Type: turtlesim/Spawn
Args: x y theta name

查看 turtlesim/Spawn信息

rossrv info turtlesim/Spawn

turtlesim/Spawn类型信息

float32 x
float32 y
float32 theta
string name---string name

命令的方式调用服务

rosservice call /spawn "x: 0.0
y: 05.0
theta: 90.0
name: 'turtle2'"

c++程序实现

#include "ros/ros.h"
#include "turtlesim/Spawn.h"
/** 需求:向服务端发送请求,生成一只新乌龟* 话题:/spawn* 消息:turtlesim/Spawn*/
int main(int argc,char *argv[])
{ros::init(argc,argv,"service_call");ros::NodeHandle nh;ros::ServiceClient client= nh.serviceClient<turtlesim::Spawn>("/spawn");//组织数据turtlesim::Spawn spawn;spawn.request.x = 1.0;spawn.request.y = 4.0;spawn.request.theta = 1.5;spawn.request.name = "turtle2";//发送数据请求//判断服务器状态//ros::service::waitForService("spawn"); //可以判断client.waitForExistence();bool flag = client.call(spawn);//flag接收响应状态if(flag){ROS_INFO("generate turtle:%s ",spawn.response.name.c_str());}else{ROS_INFO("Requst failed!");}
}

CmakeLists.txt设置

add_executable(service_pub_spawn src/service_pub_spawn.cpp)
target_link_libraries(service_pub_spawn ${catkin_LIBRARIES})

编译代码

catkin_make

测试代码运行

roscore
rosrun turtlesim turtlesim_node
rosrun pakage_02 service_PUB_spawn
[ INFO] [1647933957.137713494]: generate turtle:turtle2

结果展示,这里你可以看到2只啦。

ROS服务通信《客户端》 C++向服务端发送信息(乌龟案例,生成第二个乌龟)相关推荐

  1. 快速的从电脑端发送信息到手机端的方法介绍

    我昨天碰到一个场景是这样的,在手机端需要填写自己的所在的部门名称,由于部门名称很长还且还是中英文夹杂的,这时候在手机端输入感到非常麻烦,而在电脑端的是有这个信息,那么怎么才能把这个信息直接发送到手机上 ...

  2. ROS系统 实现客户端Client和服务端Server

    服务编程流程: 创建服务器 创建客户端 添加编译选项 运行可执行程序 实现客户端Clien 创建功能包 cd ~/catkin_ws/src catkin_create_pkg learning_se ...

  3. 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理

    微服务架构的实现首先需要提供一些基础组件,这些基础的功能性组件主要包括服务之间的通信.面向事件驱动的架构设计方法.负载均衡.服务路由.API网关和分布式配置中心等,我们对这六大基本组件进行初步的分析定 ...

  4. SpringCloud系列二:Restful 基础架构(搭建项目环境、创建 Dept 微服务、客户端调用微服务)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Restful 基础架构 2.具体内容 对于 Rest 基础架构实现处理是 SpringCloud 核心所在,其基本操 ...

  5. SpringCloud 搭建项目环境、创建 Dept 微服务、客户端调用微服务

    对于 Rest 基础架构实现处理是 SpringCloud 核心所在,其基本操作形式在 SpringBoot 之中已经有了明确 的讲解,那么本次为 了清晰可见,创建一套新的微服务架构:部门微服务(De ...

  6. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

  7. 关于Socket通信客户端是否需要绑定端口号

    参见http://blog.chinaunix.net/uid-23193900-id-3199173.html 无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函 ...

  8. 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现...

    目录 什么是微服务 微服务与分布式的区别 HOW - 怎么具体实践微服务 So What - 思考 服务发现 微服务之客户端发现,服务端发现 参考资料和推荐阅读 什么是微服务 https://zhua ...

  9. 【微服务】什么是微服务?微服务与分布式的区别?微服务怎么具体实践微服务?服务端发现和客户端发现

    目录 什么是微服务 微服务与分布式的区别 HOW - 怎么具体实践微服务 So What - 思考 服务发现 微服务之客户端发现,服务端发现 参考资料和推荐阅读 什么是微服务 https://zhua ...

最新文章

  1. java反射的性能_java反射的性能问题
  2. 基于SSM实现绿色有机产品直营网
  3. 软件性能测试关注点,盘点性能测试必须掌握的技术点
  4. first review of team blog(4.26)
  5. SAP算号器 license key Developer Access Key 完美解决方案
  6. 测试攻城狮必备技能点!一文带你解读DevOps下的测试技术
  7. 53.NFS 服务器
  8. vgremore 删除卷组
  9. vivo S9无法激活手机了vivoS9e怎么解锁平台刷机教程屏幕锁不记得了可以用这个方法教程重装系统固件软件S9手机如果已忘记密码可以自己学习升级降级USB操作了
  10. Linux nohup命令详解
  11. 等压线上怎么画风向_如何利用等压线图判定天气
  12. python实现规则引擎_规则引擎python
  13. Reaction of travel book-ShanXi
  14. 十年前的知识产权战争 | 历史上的今天
  15. JavaScript数据结构与算法 基础
  16. oeasy教您玩转linux 010211 牛说 cowsay
  17. 端到端的框架DeepInf
  18. 判断今天属于这月的第几周,并展示这一周的日期(含自定义日期拼接显示)
  19. C. Swap Game
  20. 机器学习进阶之概率论(1)

热门文章

  1. blender设置渲染图背景(透明或纯色)
  2. 考研从机械到计算机难吗,考研机械真的不行吗?
  3. jetpack4.5.1使用tensorrt加速模型
  4. 使用FileZilla下载Jason2和Jason3雷达高度计数据
  5. 【笔记本加配置记录】笔记本加内存条,华硕拆后盖
  6. MAC BOOK用命令解压RAR文件
  7. 好斗or炒作?甲骨文“撕咬”过的那些对手 - 爱上英语题库系统|郭雄飞
  8. 逆水寒7.25服务器维护,逆水寒7月4日更新维护公告 角色交易功能上线
  9. 从电子印章到印控一体化,企业印章管理更安全高效
  10. 参考文献起止页码怎么写_参考文献是图书,怎么标注页码啊,用到哪页就写哪页吗(⊙_⊙?)...