<microros> 如何自定义uROS2数据类型

如何自定义数据类型

在microros中,我们可以看到,官方给我们提供了很多数据类型。
在这里插入图片描述
如果我们在实际使用的时候,这些类型无法满足我们的传输要求怎么办呢?

官方也提供了自定义数据类型的办法。

参考:

https://github.com/micro-ROS/micro_ros_msgs

在这个库中给我们定义了三种demo 类型
在这里插入图片描述
我们也可以参考官方提供的interface增加我们的自定义数据类型

https://github.com/ros2/common_interfaces.git

假设我要增加这么一个结构体在传感器目录:

typedef struct sensor_msgs__msg__CustomerTestType
{bool test_bool;uint8_t test_uint8_array[32];uint16_t test_uint16;uint32_t test_uint32;float test_float32;double test_float64;
} sensor_msgs__msg__CustomerTestType;

通过以下两个步骤就可以实现:

step 1.创建CustomerTestType.msg

在这里插入图片描述

  • 注意两点:
    1. .msg 文件名必须满足驼峰式命名结构,不可以使用_*、等特殊符号
    2. 定义在.msg文件内的基础类型参考std_msg的base type

step 2.将CustomerTestType.msg加入CMAKE中编译
在这里插入图片描述
step 3: 将自定义msg加入rosidl_generate_interfaces生成数据结构

  1. cmake 中引用rosidl_generate_interfaces函数
    在这里插入图片描述
  2. package中加入到生成队列中
    在这里插入图片描述
    上面方法,我们直接将自定义的数据类型放在官方的sensor_msgs下面,只要实现step1/2就可以。

最后运行ros2编译

ros2 run micro_ros_setup build_firmware.sh $(pwd)/my_custom_toolchain.cmake $(pwd)/my_custom_colcon.meta

我们在编译好的interface中找到我们的自定义类型
在这里插入图片描述
和我们想要的完全一致

我们在后期项目引用的时候,只要包含我们的头文件即可:

1.包含头文件

#include <std_msgs/msg/customer_test_type.h>

2,定义自定义变量

sensor_msgs__msg__CustomerTestType msg;

3.初始化topic

 rclc_publisher_init_default(&publisher,&node,ROSIDL_GET_MSG_TYPE_SUPPORT(sensor_msgs, msg, CustomerTestType),"testtopic"));

4.sender送数据

	sensor_msgs__msg__CustomerTestType * Data = &msg;Data->data.data = &testdata;Data->data.size = sizeof(sensor_msgs__msg__CustomerTestType);RCSOFTCHECK(rcl_publish(&publisher, Data, NULL));

5.接收数据

void subscription_callback(const void * msgin)
{const sensor_msgs__msg__CustomerTestType * msg = (const sensor_msgs__msg__CustomerTestType *)msgin;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【活动通知 — 线上 Meetup】:ES|QL 及 B 站 Elasticsearch 平台实践 - 6 月 19 日

会议时间 2024年6月19日 19:00 — 21:00 参与方式 线上直播&#xff1a;Elastic 中国社区官方博客&#xff0c;elasticstack B 站号。链接请参考下面的报名地址。 活动议程 19:00-19:50 主题演讲&#xff1a;Elasticsearch 简单而高效的管道查询语言 - ES|QL 讲师&#xff…

想要提升地推效果吗?试试Xinstall数据查看功能,让您事半功倍!

在如今竞争激烈的移动互联网时代&#xff0c;地推作为一种直接有效的推广方式&#xff0c;受到了越来越多企业和品牌的青睐。然而&#xff0c;地推过程中产生的数据如何高效地收集、整理和分析&#xff0c;成为了摆在推广者面前的一大难题。Xinstall作为一款专业的App推广工具&…

AWS S3存储桶中如何下载文件

AWS S3存储桶中如何下载文件 1.单个下载 AWS S3 控制台提供了下载单个文件的功能&#xff0c;但是不支持直接在控制台中进行批量下载文件。您可以通过以下步骤在 AWS S3 控制台上下载单个文件&#xff1a;   1.1登录 AWS 管理控制台。   1.2转到 S3 服务页面。   1.3单击…

将web项目打包成electron桌面端教程(二)vue3+vite+ts

说明&#xff1a;我用的demo项目是vue3vitets&#xff0c;如果是vue2/cli就不用往下看啦&#xff0c;建议找找其他教程哦~下依赖npm下载不下来的&#xff0c;基本换成cnpm/pnpm/yarn就可以了 一、项目准备 1、自己新创建一个&#xff0c;这里就不过多赘述了 2、将需要打包成…

docker构建java项目镜像

资料参考 参考自黑马教程&#xff1a;10.Docker基础-自定义镜像_哔哩哔哩_bilibili 初步准备 打包好java项目jar包&#xff0c;和Dockerfile文件一起放到指定目录下&#xff0c;后续操作都是在该目录下操作&#xff0c; 我这边是&#xff1a;/usr/local/src/train-ticket/ …

【git】TortoiseGitPlink Fatal Error 解决方法

背景 使用 TortoiseGit报错&#xff1a; TortoiseGitPlink Fatal Error No supported authentication methods available (server sent: publickey) 解决方法 1、有很多是重置git的秘钥解决的 2、重置ssh工具

AI-知识库搭建(一)腾讯云向量数据库使用

一、AI知识库 将已知的问答知识&#xff0c;问题和答案转变成向量存储在向量数据库&#xff0c;在查找答案时&#xff0c;输入问题&#xff0c;将问题向量化&#xff0c;匹配向量库的问题&#xff0c;将向量相似度最高的问题筛选出来&#xff0c;将答案提交。 二、腾讯云向量数…

路由器设置桥接(作为网络扩展器)

下面提到的路由器都是家用路由器 一、原理图(使用交换模式&#xff0c;有线连接) 二、无线连接 &#xff08;副路由器的无线信号 连接 主路由器的无线信号&#xff09; 三、注意事项 1、路由器之前配置过怎么办&#xff1f; 长按重置键7秒&#xff0c;重置路由器 2.副路由…

python脚本打包为exe并在服务器上设置定时执行

python脚本打包为exe并在服务器上设置定时执行 1. Python脚本打包2. 将打包好的Python脚本放入服务器3. 在服务器上设置其定时执行 1. Python脚本打包 首先&#xff0c;下载pyinstaller 键盘winR打开终端&#xff0c;输入命令&#xff1a;pip install pyinstaller&#xff0c;…

谷歌的AI大变革:商业模式转型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

界面控件DevExpress WinForms的流程图组件 - 可完美复制Visio功能(二)

DevExpress WinForms的Diagram&#xff08;流程图&#xff09;组件允许您复制Microsoft Visio中的许多功能&#xff0c;并能在下一个Windows Forms项目中引入信息丰富的图表、流程图和组织图。 P.S&#xff1a;DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows F…

【论文速读】| BIOCODER:一个具有上下文实用知识的生物信息学代码生成基准测试

本次分享论文&#xff1a;BIOCODER: A Benchmark for Bioinformatics Code Generation with Contextual Pragmatic Knowledge 基本信息 原文作者&#xff1a;Xiangru Tang, Bill Qian, Rick Gao, Jiakang Chen, Xinyun Chen, Mark Gerstein 作者单位&#xff1a;耶鲁大学, Go…

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包&#xff0c;包还是比较大的如果直接从社区下载比较费劲&#xff0c;所以建议配置国内镜像源&#xff0c;这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…

具有 MOSFET 的电压到电流 (V-I) 转换器电路

设计说明 该单电源、低侧、V-I 转换器向可以连接到比运算放大器电源电压更高的电压的负载提供经过良好调节的电流。该 电路接受介于 0V 和 2V 之间的输入电压&#xff0c;将其转换为介于 0mA 和 100mA 之间的电流。通过将低侧电流检测电 阻 R3 上的压降反馈到运算放大器的反相…

十、C语言:数据存储(大端小端存储,整型、浮点型存储)

一、大端存储与小端存储 大端字节序&#xff1a; 数据的低位字节序内容存放在高地址处&#xff0c;高位字节序内容存放在低地址处 小端字节序&#xff1a; 数据的低位字节序内容存放在低地址处&#xff0c;高位字节序内容存放在高地址处 //每个地址单元对应一个字节 二、 整型存…

AI绘画如何打造高质量数据集?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答11 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你…

鸿蒙开发教程:新手入门必看

一 开发设备要求 Windows环境运行要求&#xff1a; 根据华为官方文档&#xff0c;为了开发基于鸿蒙系统的应用&#xff0c;电脑的配置需求如下&#xff1a; 操作系统&#xff1a;建议至少为Windows 10 64位或Windows 11 64位版本。内存&#xff1a;至少需要8GB以上。硬盘空间…

使用Redis缓存实现短信登录逻辑,手机验证码缓存,用户信息缓存

引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 加配置 spring:redis:host: 127.0.0.1 #redis地址port: 6379 #端口password: 123456 #密码…

毫米波雷达深度学习技术-1.6目标识别1

1.6 目标识别 利用检测和跟踪在距离、多普勒和角度这两个维度中的任意一个进行精确的目标定位后&#xff0c;将检测到的目标分类到所需的类别中。与检测类似&#xff0c;提出了多种框架来同时使用图像和点云进行目标分类。使用图像进行目标分类的最常见方法是从检测到的目标特征…

10款必备软件,每款都是神器,赶快用起来吧!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/最近有很多小伙伴在咨询&#xff0c;我也抓紧时间整理了一些不错的软件和我陆续收到的&#xff0c;希望对大家有所帮助。 1. 全球鼠标——MouseI…