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

相关文章

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理