ROS服务通信自定义srv

服务通信自定义srv

  • 流程:
  • 创建ROS功能包
  • 按照固定格式创建srv文件
  • 编译配置文件
  • 编译生成中间文件

流程:

srv 文件内的可用数据类型与 msg 文件一致,且定义 srv 实现流程与自定义 msg 实现流程类似,需查阅msg文件的可以浏览ROS话题通信流程自定义数据msg格式:

  • 1.创建一个ROS功能包

  • 2.按照固定格式创建srv文件

  • 3.编辑配置文件

  • 4.编译生成中间文件

创建ROS功能包

  • 选定 src 右击 —> create catkin package
    在这里插入图片描述
  • 创建一个 pluming_server_client 功能包
    在这里插入图片描述
  • 使用 roscpp rospy std_msgs 作为依赖库
    在这里插入图片描述
  • pluming_server_client 功能包下的结构如图所示,功能包创建成功
    在这里插入图片描述

按照固定格式创建srv文件

  • 在功能包下创建一个 srv 文件夹
    在这里插入图片描述

  • srv文件夹下新建一个 AddInts.srv文件
    在这里插入图片描述

  • 编辑 srv 文件
    在这里插入图片描述

服务通信中,数据分成两部分,请求与响应,在 srv 文件中请求和响应使用---分割,具体实现如上所示

编译配置文件

  • package.xml中添加编译依赖与执行依赖
    plumbing_server_client 功能包下的 package.xml 文件添加如图所示的编译依赖和执行依赖

    在这里插入图片描述

  • CMakeLists.txt 编辑 srv 相关配置

    • 加入 message_generation
      CMakeLists.txt 中找到 find_package 添加 message_generation 编译依赖,如图所示:

      在这里插入图片描述

    • 配置 srv 源文件
      CMakeLists.txt 中找到 add_service_files 配置 srv 文件,如图所示:

      在这里插入图片描述

    • 添加生成消息时依赖std_msgs
      CMakeLists.txt 中找到 generate_messages 添加生成依赖,如图所示:

      在这里插入图片描述

    • 添加执行时依赖
      CMakeLists.txt 中找到 catkin_package 添加执行依赖,如图所示:

      在这里插入图片描述

编译生成中间文件

  • 编译
    按快捷键 ctrl + shift + B 编译

    在这里插入图片描述

  • 生成的中间文件
    编译完成后就生成了 C++Python 调用时所需的中间文件

    • C++ 的中间文件
      生成的 C++ 中间文件在工作空间的 devel/include/pluming_server_client 文件下,有一个请求文件和一个响应文件,请求文件就是需要请求的数据,响应文件就是响应请求数据后的返回数据
      在这里插入图片描述

    • Python的中间文件
      生成的Python中间文件在工作空间的 devel/lib/python2.7/dist-packages/plumbing_server_client/srv 文件下

      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/790528.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7月报名 | 海克斯康CAEfatigue疲劳分析培训

您好!感谢您长期以来对优飞迪科技与海克斯康的关注与支持。我们诚邀您参加海克斯康CAEfatigue疲劳分析培训,特邀海克斯康原厂讲师将通过培训帮助您了解CAEfatigue的功能并使用其进行疲劳分析的过程、参数设置以及软件操作方法和技巧,学会使用…

VS2019使用C#写窗体程序技巧(1)

1、打开串口 private void button1_Click(object sender, EventArgs e){myPort cmb1.Text;mybaud Convert.ToInt32(cmb2.Text, 10);databit 8;parity Parity.None;stopBit StopBits.One;textBox9.Text "2";try{sp new SerialPort(myPort, mybaud, parity, dat…

Linux:进程池制作(基于匿名管道和命名管道两个版本)

Linux:进程池制作 & 匿名管道 & 命名管道 前言一、匿名管道制作进程池一、进程池框架二、创建管道、创建进程、工作进程执行任务2.1 创建管道、创建进程 2.2 工作进程执行任务三、主进程向子进程发送任务3.1 任务封装3.2 主进程向子进程发送任务 四、回收资…

数学建模·层次分析法

层次分析法 LAF 定义 具体用途 评价体系的优劣影响,计算评价指标的权重 主要步骤 关键在于一致性检验和求权值 权重的计算 注意权重之和为1,需要归一化 算数平均法 特征值法 矩阵的一致性检验 为什么要检验?:简单来说就…

Qt 实战(2)搭建开发环境 | 2.3、qmake详解

文章目录 一、qmake详解1、相关概念2、qmake作用3、运行qmake4、Qt Creator构建项目与执行qmake操作之间的区别4.1、功能与目的4.2、执行时机与流程 5、总结 前言: Qt qmake 是一个用于自动化生成 Makefile 的工具,它极大地简化了 Qt 应用程序和库的编译…

免费听书TV版v1.0.1

使用非常稳定流畅,UI界面设计美观简洁,纯净无广。资源虽然不是特别多,但是日常听书还是可以满足需求。 完全免费,操作简单方便,安装即用,没有任何限制。 可以适配遥控器操作,OK键开启或关闭语…

第二证券:销量暴跌95%,这一巨头市值蒸发超3000亿元!

在多重要素刺激下,PCB工作站上风口。 波音销量堕入停滞 6月仅售出3架客机 据央视财经,在一系列丑闻的影响下,波音公司本年出售遭到明显冲击。当地时间9日,波音发布的数据闪现,在以前一个月,该公司仅卖出…

【鸿蒙学习笔记】Stage模型

官方文档:Stage模型开发概述 目录标题 Stage模型好处Stage模型概念图ContextAbilityStageUIAbility组件和ExtensionAbility组件WindowStage Stage模型-组件模型Stage模型-进程模型Stage模型-ArkTS线程模型和任务模型关于任务模型,我们先来了解一下什么是…

旷野之间8 - LLMOps 与 MLOps操作化 AI 模型

介绍 随着人工智能越来越多地应用于商业应用,简化人工智能系统(尤其是机器学习模型)的开发和持续管理的新实践也不断涌现。MLOps 已成为一种基于 DevOps 原则实施机器学习的流行方法。 现在,随着 GPT-3 等大型语言模型 (LLM) 的…

火热夏季:浦语*书生InternLM大模型实战闯关-入门岛之Linux基础知识

一、ssh链接与端口映射并运行hello_wold.py 1.创建开发机 InternStudio创建开发机 2.进入开发机 3.Ssh链接开发机 powerShell终端ssh链接开发机。 4.创建一个hello_world.py文件web demo 5.运行web demo 6.端口映射 7.本地浏览器打开web 二、 VSCODE 远程连接开发机并创建一个…

LeetCode67(二进制求和[位运算,大数运算])

二进制求和 题目要求: 给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。 这道题其实有几种解法.我们先来介绍简单的方法. 我们可以将两个字符串的二进制转成十进制,获取对应值相加之后,我们可以不断对2取余,获取尾数拼接即可.也就是像我们平常求一…

笔试算法刷题

猿辅导2021校园招聘笔试(算法一) 牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com) 第一眼看到这个题想到的是蓝桥杯飞机降落,贪心题。但是这样算的是最大不相交区间数量&#xff0…

docker笔记2

docker笔记2 一、阿里云镜像配置二、docker基本原理1.docker是如何启动一个容器的2.docker的底层原理 三、镜像命令总结 一、阿里云镜像配置 配置镜像的目的 由于Docker Hub等公共镜像仓库的服务器可能位于国外,直接从中拉取镜像时可能会遇到网络延迟或不稳定的问…

MySQL Undo Log

总结自bojiangzhou undo log称为撤销日志或回滚日志。在一个事务中进行增删改操作时,都会记录对应的 undo log。在对数据库进行修改前,会先记录对应的 undo log,然后在事务失败或回滚的时候,就可以用这些 undo log 来将数据回滚到…

(2024,测试时训练(TTT),线性注意力,RNN,嵌套循环)学习(在测试时学习):具有表达性隐藏状态的 RNN

Learning to (Learn at Test Time): RNNs with Expressive Hidden States 公和众与号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 1. 简介 2. 方法 2.1 使用 TTT 更新隐藏状态 2.2 …

常用的JVM启动参数

JVM的启动参数有很多,但是我们平常能用上的并不是特别多,这里介绍几个我们常用的: 1. 堆设置: 。 -Xms:设置堆的初始大小。 。.-Xmx:设置堆的最大大小。 2. 栈设置: 。 -XsS:设置每个…

​​​防御第一次作业

1、拓扑图及实验要求: 2、配置: 配置终端及服务器IP地址: Pc2: Client1: Pc4: Client2: PC1: Server1: Server2: 防火墙基础配置: [fw1]int g …

光学、SAR卫星影像助力洞庭湖决堤抢险(附带数据下载)

​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 7月5日下午,湖南岳阳市华容县团洲乡团北村团洲垸洞庭湖一线堤防发生决口&#xff0…

怎样在 PostgreSQL 中优化对 UUID 数据类型的索引和查询?

文章目录 一、UUID 数据类型概述二、UUID 索引和查询的性能问题三、优化方案(一)选择合适的索引类型(二)压缩 UUID(三)拆分 UUID(四)使用覆盖索引(五)优化查询…

Meta发布Llama 2驱动的AI代码生成器:Code Llama,开源来袭!

Meta 刚刚了号称是编程领域 “最先进的大语言模型”—— Code Llama ,可根据 代码和自然语言提示 生成代码和有关代码的自然语言,支持多种主流编程语言, 包括 Python、C、Java、PHP、Typescript (Javascript)、C# 和 Bash 。 Code Llama 完全…