发布时间:2026/7/22 3:37:39
【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.老师的视频在笔记上理论部分大量参考了老师的文档

相关新闻

2026/7/20 20:07:00

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:07:00

python的安装

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

2026/7/20 20:07:00

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

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

2026/7/22 7:03:48

Apple Watch隐藏功能大全:健康、效率与系统优化

1. Apple Watch隐藏功能概览作为智能手表领域的标杆产品,Apple Watch在常规功能之外,其实隐藏着许多鲜为人知但极其实用的功能。这些功能往往被系统默认关闭,或者埋藏在多层菜单之下,导致90%的用户从未体验过它们带来的便利。经过…

2026/7/22 7:03:48

无人机仿真飞行培训系统综合介绍

一、核心技术与真实飞行体验系统采用半实物仿真框架,搭配物理引擎实时运算传感器数据、碰撞效果,上层运行逻辑与真实无人机完全一致;依托UE5引擎完成3D实景渲染,画面高度逼真,支持吊舱、第三人称、顶视等多视角切换&am…

2026/7/22 7:03:48

Pandas数据分析实战:从基础到项目应用的完整指南

如果你正在学习数据分析,或者工作中需要处理Excel表格、数据库查询结果,那么Pandas这个工具你一定绕不开。但很多人第一次接触Pandas时都会陷入一个误区:以为它只是"Python版的Excel"。实际上,Pandas真正强大的地方在于…

2026/7/22 6:58:47

本地部署开源音乐神器 MusicN 并实现外部访问

MusicN 是一款强大而简洁的命令行 MP3 音乐下载器,用户能够快速、免费地获取高质量的音乐文件。本文将详细介绍如何利用 Docker 在局域网内部署 MusicN 并结合路由侠实现外网访问局域网内部署的 MusicN 。 第一步,本地部署安装 MusicN 1,本…

2026/7/20 6:33:00

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/22 0:02:17

抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具

抓包代理链路下的 TLS 指纹变化分析:为什么调试环境会影响访问结果 摘要 在网页调试、接口联调、自动化巡检和授权采集排查中,抓包是常见手段。但很多开发者会遇到一个现象:正常访问页面时没有问题,一进入抓包或代理调试环境&…

2026/7/22 0:02:17

微信QQ聊天记录误删恢复与备份方案全指南

1. 聊天记录误删的常见场景与恢复思路作为一名长期关注数据安全的技术博主,我处理过上百起聊天记录误删的求助案例。手机误操作、系统升级失败、设备损坏是三大常见诱因。上周就遇到用户更新微信时断电,导致近两年的工作群聊记录全部消失的极端案例。不同…

2026/7/22 0:02:17

2026最新8款个人AI编程免费工具深度实测

作为一名全栈独立开发者,我最近半年一直在折腾副业项目,每个月在AI编程工具上的订阅费算下来其实也不算便宜。作为个人开发者,我们追求的就是用最少的成本获得最高效的开发体验。TRAE 基础版免费,字节跳动出品的国内首款 AI 原生 …

2026/7/21 20:02:44

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…