【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/24 17:22:21 阅读更多 →
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 阅读更多 →

最新新闻

大家望古今

大家望古今

大家望古今今音作古韵,昔言寻时声。嘻嘻自圣贤,叽叽己俗称。乐语千载事,苦行万年证。悠悠春秋月,哞哞光阴风。大树知汉萌,小草聊唐僧?古籍定正统,国风记真梦。再临此时渊,重提当天峰…

2026/7/24 17:22:15 阅读更多 →
Edge浏览器插件:将AI生成内容转为Word导出

Edge浏览器插件:将AI生成内容转为Word导出

不知道大家有没有遇到过这种情况:在 ChatGPT、DeepSeek 或 Claude 里生成的内容看着很整齐,但一复制到 Word——表格变成一堆竖线, 公式不是乱码就是只能截图, #、## 标题也原样保留, 最后还得花很长时间重新排版。因为…

2026/7/24 17:22:15 阅读更多 →
C++虚析构函数原理与实战:避免多态内存泄漏的关键

C++虚析构函数原理与实战:避免多态内存泄漏的关键

1. 项目概述:为什么“虚析构函数”是C进阶的必修课? 最近在带新人做项目,又遇到了那个经典的老问题:一个基类指针指向了派生类对象,delete之后,程序虽然没有崩溃,但调试时发现派生类的析构函数根…

2026/7/24 17:22:15 阅读更多 →
AI内容去重实战:3大策略降低检测率至1.2%

AI内容去重实战:3大策略降低检测率至1.2%

1. 为什么我们需要去除文章的"AI味"?在内容创作领域,AI生成文本的泛滥已经成为一个不容忽视的问题。根据我的实测数据,未经处理的AI生成内容检测率普遍高达95%以上。这种高识别率会带来三个致命问题:首先,搜…

2026/7/24 17:22:15 阅读更多 →
3分钟快速上手:抖音直播间弹幕数据抓取终极指南

3分钟快速上手:抖音直播间弹幕数据抓取终极指南

3分钟快速上手:抖音直播间弹幕数据抓取终极指南 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要实时监控抖音直播间的…

2026/7/24 17:22:15 阅读更多 →
如何高效获取抖音直播间实时数据:专业开发者的实战指南

如何高效获取抖音直播间实时数据:专业开发者的实战指南

如何高效获取抖音直播间实时数据:专业开发者的实战指南 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取(2025最新版本) 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 在直播电商时代&am…

2026/7/24 17:21:15 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

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

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

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

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

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

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

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

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

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

2026/7/23 17:49:47 阅读更多 →

月新闻