ROS话题通信流程自定义数据格式

2024-06-24 13:28

本文主要是介绍ROS话题通信流程自定义数据格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ROS话题通信流程自定义数据格式

  • 需求
  • 流程
  • 实现步骤
    • 定义msg文件
    • 编辑配置文件
    • 编译

在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息… std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型

需求

创建自定义消息,该消息包含人的信息:姓名、身高、年龄等。

流程

1.按照固定格式创建 msg 文件
2.编辑配置文件
3.编译生成可以被 Python 或 C++ 调用的中间文件

实现步骤

定义msg文件

plumbing_pub_sub 功能包下创建一个 msg 文件夹,添加文件 Person.msg
在这里插入图片描述

编辑配置文件

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

    <build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>
    

    在这里插入图片描述

  • CMakeLists.txt编辑 msg 相关配置

    • 加入 message_generation
      在CMakeLists.txt中找到 find_package 添加message_generation编译依赖,如图所示:
      在这里插入图片描述

    • 配置 msg 源文件

      在CMakeLists.txt中找到 add_message_files 配置自己定义的msg文件,如图所示:
      在这里插入图片描述

    • 添加生成消息时依赖std_msgs
      在CMakeLists.txt中找到 generate_messages 添加生成依赖,如图所示:
      在这里插入图片描述

    • 添加执行时依赖
      在CMakeLists.txt中找到 catkin_package 添加执行依赖,如图所示:
      在这里插入图片描述

编译

  • 按快捷键 ctrl + shift + B 编译
    在这里插入图片描述

  • 编译成功后生成的文件

  • C++ 需要调用的中间文件(…/topic_ws/devel/include/plumbing_pub_sub/xxx.h)
    在这里插入图片描述

  • Python 需要调用的中间文件(…/topic_ws/devel/lib/python2.7/dist-packages/plumbing_pub_sub/msg)
    在这里插入图片描述

这篇关于ROS话题通信流程自定义数据格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090275

相关文章

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3