【ROS】ros学习笔记(10)——通讯实操03_服务调用

发布时间:2026/7/22 2:17:55

【ROS】ros学习笔记(10)——通讯实操03_服务调用
通讯实操03_服务调用1.服务名称和消息的获取1.1 获取话题1.2 获得消息类型1.3 获得消息格式2.功能实现2.0 编写launch文件2.1 写cpp文件2.2 修改CMake3.运行4.命令方式简单运行需求描述:编码实现向 turtlesim 发送请求在乌龟显示节点的窗体指定位置生成一乌龟这是一个服务请求操作。结果演示:实现分析:首先需要启动乌龟显示节点。要通过ROS命令来获取乌龟生成服务的服务名称以及服务消息类型。编写服务请求节点生成新的乌龟。实现流程:通过ros命令获取服务与服务消息信息。编码实现服务请求节点。启动 roscore、turtlesim_node 、乌龟生成节点生成新的乌龟。1.服务名称和消息的获取1.1 获取话题rosservice list得到结果如下话题名为/spawnspawn是下蛋的意思1.2 获得消息类型rosservicetype/spawn得到结果如下或者用rosservice info /spawn来获得消息类型消息类型为turtlesim/Spawn1.3 获得消息格式rossrv info turtlesim/Spawn得到结果如下消息格式为float32 x float32 y float32 theta string name --- string name2.功能实现创建功能包需要依赖的功能包: roscpp rospy std_msgs turtlesim2.0 编写launch文件在功能包下添加launch文件夹在launch文件夹下面添加launch文件内容如下!--启动乌龟GUI和键盘控制节点--launch!-- 乌龟GUI --nodepkgturtlesimtypeturtlesim_nodenameturtleoutputscreen/!-- 键盘控制 --nodepkgturtlesimtypeturtle_teleop_keynamekeyoutputscreen//launch这样可以通过roslaunch命令同时启动小乌龟节点和小乌龟键盘控制节点source./devel/setup.bash roslaunch plumbing_test start_turtle.launch2.1 写cpp文件在功能包下面的src目录下创建新的cpp文件内容如下#includeros/ros.h#includeturtlesim/Spawn.h/* 需求向服务端发送请求生成一只新乌龟 话题:/spawn 消息turtlesim/Spawn 1.包含头文件 2.初始化ros节点 3.创建节点句柄 4.创建服务端对象 5.组织数据并发送 6.处理响应 */intmain(intargc,char*argv[]){setlocale(LC_ALL,);// 2.初始化ros节点ros::init(argc,argv,service_call);// 3.创建节点句柄ros::NodeHandle nh;// 4.创建服务端对象ros::ServiceClient clientnh.serviceClientturtlesim::Spawn(/spawn);// 5.组织数据并发送//5.1 组织请求数据turtlesim::Spawn spawn;spawn.request.x1.0;spawn.request.y4.0;spawn.request.theta1.57;spawn.request.nameturtle2;//5.2 发送请求//判断服务器状态//ros::service::waitForService(/spawn);client.waitForExistence();boolflagclient.call(spawn);//flag 接收响应状态响应结果也会被设置进spwan对象// 6.处理响应if(flag){ROS_INFO(乌龟生成成功新乌龟名字叫%s,spawn.response.name.c_str());}else{ROS_INFO(乌龟生成失败);}return0;}2.2 修改CMake修改功能包下的src下的cmake文件第136行取消注释add_executable(节点名 cpp文件)注意一般节点名选用和cpp文件名一致add_executable(test_o1_severclient src/test_o1_severclient.cpp)第149-151行target_link_libraries取消注释target_link_libraries(和上一条同名的节点名 ${catkin_LIBRARIES} )即target_link_libraries(test_o1_severclient ${catkin_LIBRARIES} )3.运行先编译然后先开一个终端source一下然后用roslaunch启动多个节点source./devel/setup.bash oslaunch plumbing_test_sever start_turtle.launch再开一个终端source一下rosrun启动服务source./devel/setup.bash rosrun plumbing_test_sever test_o1_severclient4.命令方式简单运行可以使用rosservice call来简单实现功能新开一个终端输入rosservice call按tab补齐然后就可以自定义新生成的乌龟的x坐标、y坐标和姓名回车运行指令指令运行后会返回乌龟名称theta的角度是弧度制3.0接近pai所以乌龟的头向右侧学习的为赵虚左老师的教程 1.老师的文档 2.老师的视频在笔记上理论部分大量参考了老师的文档

相关新闻

dotnet-core-uninstall多语言支持:国际化与本地化实现原理

dotnet-core-uninstall多语言支持:国际化与本地化实现原理

2026/7/20 20:06:23

dotnet-core-uninstall多语言支持:国际化与本地化实现原理 【免费下载链接】cli-lab A guided tool will be provided to enable the controlled clean up of a system such that only the desired versions of the Runtime and SDKs remain. 项目地址: https://g…

python的安装

python的安装

2026/7/20 20:06:23

安装 Python 分为两个部分:一是环境配置,即安装 Python(Welcome to Python.org);二是软件安装,即安装 PyCharm(PyCharm,您需要的唯一 Python IDE)。 第一部分&#xff1…

3个强力功能彻底解决重复文件难题:Krokiet跨平台清理工具终极指南

3个强力功能彻底解决重复文件难题:Krokiet跨平台清理工具终极指南

2026/7/20 19:56:23

3个强力功能彻底解决重复文件难题:Krokiet跨平台清理工具终极指南 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 你是否曾因磁盘空间不…

国有资产管理数字化实践:三个阶段的技术架构与数据治理

国有资产管理数字化实践:三个阶段的技术架构与数据治理

2026/7/22 2:08:13

核心摘要国资委穿透式监管要求下,国有资产管理正从静态台账向动态运营加速转型。本文基于多个城投国企的资产管理实践,明源云梳理出资产管理的三个核心阶段——盘清(资产家底盘清)、盘活(资产精细运营)、风…

清理AI污染:如何用超大黑名单净化搜索引擎结果

清理AI污染:如何用超大黑名单净化搜索引擎结果

2026/7/22 2:08:13

清理AI污染:如何用超大黑名单净化搜索引擎结果 【免费下载链接】uBlockOrigin-HUGE-AI-Blocklist A huge blocklist of manually curated sites that contain AI generated imagery for uBlock Origin & uBlacklist. 项目地址: https://gitcode.com/GitHub_Tr…

【数据结构】哈夫曼编码如何节省内存

【数据结构】哈夫曼编码如何节省内存

2026/7/22 2:08:13

哈夫曼编码通过为高频字符分配短码、低频字符分配长码的变长编码策略,并确保编码为前缀码以避免歧义,从而显著减少表示相同信息所需的总比特数,达到节省内存的目的。 以下通过一个具体例子对比常规的等长编码与哈夫曼编码,清晰展…

开源给开发者的意义:ZGI 希望和社区一起补齐 AI 应用工程化

开源给开发者的意义:ZGI 希望和社区一起补齐 AI 应用工程化

2026/7/22 2:08:13

开源不是把代码放出来就结束了。真正有价值的开源,是让开发者能够看见项目怎么设计,能够在自己的环境里跑起来,能够指出问题,也能够按自己的场景改造它。ZGI 这次在 Gitee 同步开源,也是希望和国内开发者建立更直接的连…

从零到一:用Duix-Avatar在本地构建你的专属AI数字人

从零到一:用Duix-Avatar在本地构建你的专属AI数字人

2026/7/22 2:08:13

从零到一:用Duix-Avatar在本地构建你的专属AI数字人 【免费下载链接】Duix-Avatar 🚀 Truly open-source AI avatar(digital human) toolkit for offline video generation and digital human cloning. 项目地址: https://gitcode.com/GitHub_Trending…

Obsidian-skills终极指南:让AI助手掌握Obsidian的完整教程

Obsidian-skills终极指南:让AI助手掌握Obsidian的完整教程

2026/7/22 1:58:13

Obsidian-skills终极指南:让AI助手掌握Obsidian的完整教程 【免费下载链接】obsidian-skills Agent skills for Obsidian. Teach your agent to use Obsidian CLI and open formats including Markdown, Bases, JSON Canvas. 项目地址: https://gitcode.com/GitHu…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

2026/7/22 0:08:09

定位:公司 EDA 技术最高负责人、技术天花板、战略级专家、流片总兜底人 属于P9/Fellow/ 首席科学家级,不做日常执行,管方向、管架构、管风险、管突破。1. 对标层级内部职级:P9 / 首席专家 / Fellow 外部对标:华为 20–…

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

2026/7/22 0:08:09

很多企业费用管控存在严重滞后性:日常差旅、招待、营销、人力费用持续发生,但费用率只能等到月末结账、营收数据出来后才能计算核对,月度中途费用超标、营收不达标导致的费用率失衡完全无法感知。等到月末发现整体费用率远超预算目标时&#…

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

2026/7/22 0:08:09

定位:公司 EDA / 设计平台最高管理岗,技术 管理 经营三重决策,对整体流片、效率、质量、成本、团队负最终责任1. 对标层级内部职级:M3 / P8 / 总监级 外部对标:华为 20 级、互联网 M2 / 总监、头部芯片 / EDA 公司研…