【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多语言支持:国际化与本地化实现原理

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…

2026/7/20 20:06:58 阅读更多 →
python的安装

python的安装

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

2026/7/20 20:06:58 阅读更多 →
武汉企业税务筹划指南:合法节税需关注哪些核心点

武汉企业税务筹划指南:合法节税需关注哪些核心点

武汉企业税务筹划指南:合法节税需关注哪些核心点在金税四期全面深化应用的背景下,武汉地区的中小企业主常面临一个核心疑问:怎么合规地实现节税?传统的“避税”思维往往伴随着发票不规范、账务混乱等高风险操作,而现代…

2026/7/20 20:06:58 阅读更多 →

最新新闻

Vibe-Trading:基于社交媒体情绪分析的量化研究框架部署与实践指南

Vibe-Trading:基于社交媒体情绪分析的量化研究框架部署与实践指南

这次我们来看一个名为 Vibe-Trading 的开源项目,它来自 HKUDS (香港大学数据科学实验室)。这个项目的核心目标很直接:利用社交媒体上的“氛围感”(Vibe)数据来辅助金融市场的交易决策。简单来说&#x…

2026/7/21 10:15:36 阅读更多 →
网盘直链解析工具:突破下载限制的专业级解决方案

网盘直链解析工具:突破下载限制的专业级解决方案

网盘直链解析工具:突破下载限制的专业级解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

2026/7/21 10:15:36 阅读更多 →
英伟达N1X芯片技术解析与市场应用前景

英伟达N1X芯片技术解析与市场应用前景

1. 英伟达N1X芯片技术解析与市场定位 在联想内部认证系统出现的"NVIDIA N1x Portal"标识,揭示了这款面向消费级市场的新品已进入实质性合作阶段。从现有信息来看,N1X采用低功耗GPU联发科Arm架构CPU的异构设计,这种组合在移动计算领…

2026/7/21 10:15:36 阅读更多 →
Delta Lake液态聚类:替代传统分区的数据局部性优化方案

Delta Lake液态聚类:替代传统分区的数据局部性优化方案

1. 项目概述:为什么 Liquid Clustering 正在悄悄取代传统分区 最近在 Databricks 上跑一个日均处理 42TB 原始日志的 ETL 流水线时,我遇到了一个典型但顽固的问题:分区字段选得再“合理”,查询一涉及多天多业务线多设备类型组合&a…

2026/7/21 10:15:36 阅读更多 →
AgentScope 2.0:生产级智能体开发框架解析与实践

AgentScope 2.0:生产级智能体开发框架解析与实践

1. AgentScope框架概述AgentScope 2.0是一个面向生产环境设计的智能体开发框架,它通过模块化设计降低了构建可信AI代理的门槛。我在实际企业级AI项目中验证过这套框架,发现其独特的"事件总线权限沙箱"架构能有效解决传统智能体系统常见的三个痛…

2026/7/21 10:15:36 阅读更多 →
# 软考软件设计师题目总结 — 2026年7月20日

# 软考软件设计师题目总结 — 2026年7月20日

软考软件设计师题目总结 — 2026年7月20日自动生成于 2026-07-20 17:53 | 来源:希赛网、CSDN、叩课网等 适用范围:2026年下半年(10月)软考软件设计师备考一、2026下半年考试关键时间节点时间备注报名开始2026年8月中旬各地时间略有…

2026/7/21 10:14:16 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻