【PX4-AutoPilot教程-TIPS】Matlab使用ROS Toolbox编译MAVROS2消息报错缺少geographic_msgs消息

news2024/11/28 13:55:04

Matlab使用ROS Toolbox编译MAVROS2消息报错缺少geographic_msgs消息的解决方法

    • 问题描述
    • 解决方法

环境:

MATLAB : R2022b

ROS Toolbox : 1.6

Windows :Windows 10 22H2

ROS :ROS2 Foxy

问题描述

在使用Matlab的ROS Toolbox工具箱编译与PX4联合调试的代码,Matlab官方给出的示例是使用ROS2配合microRTPS连接无人机,并发送控制命令来导航模拟无人机。

Control a Simulated UAV Using ROS 2 and PX4 Bridge

但是实际中使用更多的是MAVROS2连接的方法,所以这里选择了编译MAVROS2消息来实现与Matlab的联合调试。

MAVROS2

在官网下载MAVROS2的源码,使用Matlab中的ros2genmsg命令生成ROS2消息。

Generate custom messages from ROS 2 definitions

新建一个PX4-ROS2-Simulink文件夹用来存储工程文件(名字可以任取),在其下新建custom文件夹、others文件夹。

将下载的MAVROS2包的Zip压缩包放在PX4-ROS2-Simulink/others文件夹下。

解压,将其中的mavros_msgs文件夹放在PX4-ROS2-Simulink/custom文件夹下。

最后的结构为下列所示。

PX4-ROS2-Simulink
├─custom
|  └─mavros_msgs
|      ├─include
|      ├─msg
|      ├─srv
|      ├─CHANGELOG.rst
|      ├─CMakeLists.txt
|      ├─mavros_msgs_mapping_rule.yaml
|      └─package.xml
└─others
   └─mavros-ros2.zip

用Matlab打开PX4-ROS2-Simulink文件夹,在Matlab命令行中输入以下命令。

folderPath = fullfile(pwd,"custom");
ros2genmsg(folderPath);

编译过程中报错如下:

>> ros2genmsg(folderPath);
Identifying message files in folder 'F:/PX4-ROS2-Simulink/custom'..Done.
Validating message files in folder 'F:/PX4-ROS2-Simulink/custom'..Done.
[0/1] Generating MATLAB interfaces for custom message packages... 0%错误使用 ros.internal.utilities.locateMessage
Specified message package geographic_msgs does not exist. Check the message package specified.

出错 ros.internal.MessageParser/getMessageDefinitionHelper (第 143 行)
            filePath = ros.internal.utilities.locateMessage(...

出错 ros.internal.MessageParser/nestedMessageParser (第 662 行)
            dataStructure = getMessageDefinitionHelper(obj, CirDependList);

出错 ros.internal.MessageParser/getDataStructure (第 356 行)
                                nestedMessageParser(obj,dataType,CirDependList);

出错 ros.internal.MessageParser/getMessageDefinitionHelper (第 160 行)
            messageDefinition = getDataStructure(obj,filePath,contentsOfFile,...

出错 ros.internal.MessageParser/getMessageDefinition (第 135 行)
            messageDefinition = getMessageDefinitionHelper(obj,CirDependList);

出错 ros.internal.pubsubEmitter (第 47 行)
    msgDefn = getMessageDefinition(parser);

出错 ros2genmsg (第 233 行)
            [genFiles, dependencies] = ros.internal.pubsubEmitter(msgFullName{end}, ...

原因是Matlab的内置ROS2中缺少geographic_msgs这个消息包。

Matlab安装路径的D:\MATLAB\R2022b\sys\ros2\win64\ros2\share文件夹中没有geographic_msgs这个消息包。

但是在Matlab的帮助文档中,Supported Messages栏目中是有列出这个消息的。

Built-In Message Support

在这里插入图片描述

这可能是一个BUG。

解决方法

解决方法就是下载geographic_msgs这个消息包,一起放到custom文件夹下进行编译。

打开官网链接进行下载,注意需要下载的是ROS2版本的。

ros-geographic-info/geographic_info

解压后将其中的geographic_msgs文件夹复制到custom文件夹下

将下载的geographic_msgs包的Zip压缩包放在PX4-ROS2-Simulink/others文件夹下。

解压,将其中的geographic_msgs文件夹放在PX4-ROS2-Simulink/custom文件夹下。

最后的结构为下列所示。

PX4-ROS2-Simulink
├─custom
|  ├─geographic_msgs
|  |   ├─include
|  |   ├─msg
|  |   ├─srv
|  |   ├─test
|  |   ├─CHANGELOG.rst
|  |   ├─CMakeLists.txt
|  |   ├─geographic_msgs_mapping_rule.yaml
|  |   ├─mainpage.dox
|  |   └─package.xml
|  └─mavros_msgs
|      ├─include
|      ├─msg
|      ├─srv
|      ├─CHANGELOG.rst
|      ├─CMakeLists.txt
|      ├─mavros_msgs_mapping_rule.yaml
|      └─package.xml
└─others
   └─mavros-ros2.zip

用Matlab打开PX4-ROS2-Simulink文件夹,再次编译即可。

folderPath = fullfile(pwd,"custom");
ros2genmsg(folderPath);

参考资料:

Generate custom messages from ROS 2 definitions

Built-In Message Support

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

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

相关文章

蓝桥杯EDA客观题

目录 前言 一、PCB类知识点和题目分析 1.电阻 2.电容 3.封装类 4.单位转换类 5.电路板结构类 6.PCB绘制规则 7.立创软件 8.PCB硬件 线性电源和开关电源 二、数电知识点和题目分析 1.门电路 2.逻辑代数 3.组合逻辑电路 4.触发器 5.时序逻辑电路 6.其他 三、模…

怎么编辑百度百科

百度百科是一个开放、免费的在线百科平台,由百度公司推出,旨在创造一个涵盖各领域知识的中文信息收集平台。任何人都可以通过注册百度账号并登录后,对符合条件的词条进行编辑和修改。以下是编辑百度百科的步骤和注意事项: 注册和登…

河北公司推行精益管理咨询时需要注意哪些问题?

近年来,越来越多的河北公司开始关注并推行精益管理咨询,以期通过优化流程、降低成本、提高效率来获得竞争优势。然而,在实施过程中,公司需要注意一系列问题,以确保精益管理咨询能够顺利推进并取得预期效果。天行健精益…

Java实现Excel导入和校验

文章目录 效果实现1,添加依赖2,实体类Member.javaMemberVO.java3,校验、监听器ValidationTool.javaExcelReadListener.java4,请求接口参考博文效果 输入:导入测试.xlsx postman调用实例: postman输出结果: 日志输出: 实现 1,添加依赖 easyexcel要去掉poi-ooxm…

Web地理空间引擎

Web地理空间引擎是指用于在Web上创建和显示地理空间信息的软件平台。它们通常提供一组API和工具,用于加载、可视化和分析地理空间数据。Web地理空间引擎被广泛应用于各种应用,例如地图、导航、位置服务、游戏和模拟等。北京木奇移动技术有限公司&#xf…

021、Python+fastapi,第一个Python项目走向第21步:ubuntu 24.04 docker 安装mysql8集群、redis集群(二)

系列文章目录 pythonvue3fastapiai 学习_浪淘沙jkp的博客-CSDN博客https://blog.csdn.net/jiangkp/category_12623996.html 前言 安装redis 我会以三种方式安装,在5月4号修改完成 第一、直接最简单安装,适用于测试环境玩玩 第二、conf配置安装 第三…

面试智慧:巧妙应对,展现真我风采

你是否曾经因为面试时太过“老实”,而错失了心仪的职位?很多人学历高、经验足,却在面试中未能如愿以偿。其实,面试不仅仅是考察你的能力和经验,更是考察你如何巧妙地展现自己。 下面,我将为你揭示一些常见的…

python循环结构练习

目录 前言 1、使用while实现模拟用户登录 1.1 题目要求 1.2 解题 2、输入数字,生成对应等腰三角形 2.1 题目要求 2.2 解题 3、输入数字,生成对应的菱形 3.1 题目要求 3.2 解题 总结 前言 本系列主要是讲解python中的题目,目的是为…

【网站项目】SpringBoot819图书馆管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

ASP.NET MVC 如何使用 Form Authentication?

前言 .NET 的 Form Authentication 是一种基于表单的简单且灵活的身份验证机制,用户通过输入用户名和密码来登录应用程序,并且通过配置来控制用户访问权限。 在使用 Form Authentication 时,我们需要在 web.config 文件中配置身份验证和授权…

【资源分享】最新版PS2024免费和谐安装教程

“时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验,帮助大家尽早适应研究生生活,尽快了解科研的本质。祝一切顺利!——时问桫椤 非…

Jmeter(三十三) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy6(详解教程)

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 1.简介 今天分享的就是在上一篇文章的基础上来进行讲解和分享:Badboy使用数据源Excel进行脚本参数化。然后在使用读取的参数进行对比断言。 2.具体场景 Badboy录制一个搜索…

高端建站和普通建站有哪些不同

高端建站与普通建站之间存在着显著的差异,从设计到功能、用户体验以及服务质量等各个方面都有所区别。以下是高端建站和普通建站的不同之处: ### 1. 设计质量 - **高端建站**:注重精美、独特的设计风格,通常由专业设计师团队负责。…

深入了解二叉搜索树:原理、操作与应用

文章目录 二叉搜索树二叉搜索树的操作1.查找操作2.插入操作3.查找最大值或者最小值4.删除操作5.前序中序后序遍历 总结 二叉搜索树 形如上图的二叉树就是二叉搜索树,接下来我们来具体阐述一下什么是二叉搜索树。 二叉搜索树的概念:满足左子树的值小于根…

NVIDIA 配置 Jetson 扩展针座

系列文章目录 前言 每个 Jetson 开发套件包括多个扩展接头和连接器(统称 "接头"): 40 针扩展接头: 可让您将 Jetson 开发套件连接到现成的 Raspberry Pi HAT(顶部附加硬件),如 Seee…

智慧公厕:打造智能、安全、舒适的公共厕所新时代

随着智慧城市建设的不断推进,公共设施的智能化也已成为一种必然趋势。在这一背景下,智慧公厕作为城市管理的一个重要方面,正逐渐走进人们的视野。通过对所在辖区内所有公共厕所的全域感知、全网协同、全业务融合以及全场景智慧的赋能&#xf…

保姆级Lora炼丹教程,让你实现真人模特定制

最近发现很多朋友学会了Stable Diffusion后,都是停留在“玩”的层面。但我觉得让大家“用”起来,才是关键 于是我思考了很久,找出了SD在“应用”层面,最重要的两个功能:Lora和ControlNet Lora负责把自己生活中有关联的…

一篇教你学会HTML:常用标签 | 表格 | 表单 | 特殊符号转义

标题标签 <h1></h1>....<h6></h6> <h1>一级标题</h1><h2>二级标题</h2><h3>三级标题</h3>我们可以添加 align属性 来改变标签的位置 (左对齐&#xff0c;居中&#xff0c;右对齐)&#xff0c;还可以设置颜色等。 …

InfiniGate自研网关实现四

13.服务发现组件搭建和注册网关连接 以封装 api-gateway-core 为目的&#xff0c;搭建 SpringBoot Starter 组件&#xff0c;用于服务注册发现的相关内容处理。 这里最大的目的在于搭建起用于封装网关算力服务的 api-gateway-core 系统&#xff0c;提供网关服务注册发现能力。…

什么是包装ERP软件

在当今的商业环境中&#xff0c;ERP软件已经成为了企业管理的关键工具。然而&#xff0c;许多企业主可能还不完全明白什么是ERP软件&#xff0c;特别是包装ERP软件。 首先&#xff0c;我们需要了解ERP软件的基本概念。它是一种集成的软件应用程序&#xff0c;旨在帮助企业管理…