0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Matlab中自定义Message

麦辣鸡腿堡 来源:古月居 作者:敢敢のwings 2023-11-15 18:12 次阅读

自定义Message

当我们的 message 消息比较复杂时,通常要用到自定义的 message 消息,MATLAB 2020b以上的版本自带了ROS Toolbox Interface for ROS Custom Messages 工具,如果低于这个版本就需要通过链接ROS Toolbox Interface for ROS Custom Messages 下载

自定义 Message 编译的目录结构,必须是特定的,即有一个文件夹下放 ROS package,该文件夹可以放多个 ROS 包,然后在某个包下放其 ROS message,ROS message 放置该包目录的msg/ 下,服务文件放于该包目录的 srv/ 目录下,这里就是基本的ROS目录,直接看一下目录结构:

图片

然后MATLAB 下采用 rosgenmsg 命令来编译msg信息,这是我们的路径。

图片

% 注意,该目录是到大的目录,而不是在包的目录
% folderpath = "./all_package"
folderPath = fullfile(pwd,"custom");
copyfile("example_*_msgs",folderPath);
rosgenmsg(folderpath)
% ros2genmsg(folderPath) %ros2

编译完成后,会在大目录下生成一个 custom文件夹,

Identifying message files in folder ‘C:/Work/custom’.Done.
Removing previous version of Python virtual environment.Done.
Creating a Python virtual environment.Done.
Adding required Python packages to virtual environment.Done.
Copying include folders.Done.
Copying libraries.Done.
Validating message files in folder ‘C:/Work/custom’.Done.
[3/3] Generating MATLAB interfaces for custom message packages… Done.
Running colcon build in folder ‘C:/Work/custom/matlab_msg_gen/win64’.
Build in progress. This may take several minutes…
Build succeeded.build log
ros2 msg list
  • example_a_msgs/DependsOnB
  • example_b_msgs/Standalone
  • example_c_msgs/DependsOnB

matlab 提示,进行下面三个操作后,可以使用addpath将message位置添加到MATLAB路径,并使用savepath保存这些更改。

1.编辑javaclasspath.txt,添加以下文件位置作为新行,并保存文件:

D:matlabDemoros-messagescustomjartest_pkg-0.0.0.jar

2.通过执行以下命令将自定义消息文件夹添加到MATLAB路径:

addpath('D:matlabDemoros-messagescustommsggen') 
savepath

3.重新启动MATLAB并验证您可以使用自定义消息。输入“rosmsg list”,并确保输出包含生成的自定义消息类型。

注意:javaclasspath.txt文件放置于 prefdir 目录,可以在matlab 命令行中输入prefdir命令进行查看。

特别特别注意:实践中将javaclasspath.txt放入 prefdir 目录中,通过查相关问题,则可以从快捷方式启动;如果将javaclasspath.txt放入bin/目录下,也就是matlab 的启动目录后,重启matlab 之后,可以查看 msg,不能从快捷方式启动,要从bin/目录下的matlab.exe启动,所以,还是把该文件放到 prefdir 目录下最好。

# 将 javaclasspath.txt 放入 prefdir 目录,通过 rosmsg list 可查找到消息
rosmsg list
# 但是查看具体消息内容时会报错
rosmsg show test_pkg/BodyIMU
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • matlab
    +关注

    关注

    185

    文章

    2980

    浏览量

    230939
  • 机器人
    +关注

    关注

    211

    文章

    28632

    浏览量

    208296
  • imessage
    +关注

    关注

    0

    文章

    13

    浏览量

    9578
  • ROS
    ROS
    +关注

    关注

    1

    文章

    280

    浏览量

    17083
收藏 人收藏

    评论

    相关推荐

    不能自定义安装matlab

    用WIN7安装matlab的时候怎么不能自定义安装,自定义安装的时候总是弹出一个对话框
    发表于 03-10 13:11

    新手请教一个关于MATLAB自定义函数的问题?

    我请教大家一个MATLAB的问题,就是关于自定义函数的。假如我的一个程序里面有我自定义的一个函数,以前的做法就是把这个自定义的函数保存一个M文件,然后在程序里面直接调用就是,那这样一来
    发表于 04-11 08:53

    matlab自定义函数调用的方法

    matlab自定义函数调用的方法 命令文件/函数文件+ 函数文件 - 多
    发表于 11-29 13:14 88次下载

    SOPC自定义外设和自定义指令性能分析

    SOPC自定义外设和自定义指令性能分析 NiosII是一个建立在FPGA上的嵌入式软核处理器,灵活性很强。作为体现NiosII灵活性精髓的两个最主要方面,自
    发表于 03-29 15:12 1634次阅读
    SOPC<b class='flag-5'>中</b><b class='flag-5'>自定义</b>外设和<b class='flag-5'>自定义</b>指令性能分析

    1602自定义字符

    1602液晶能够显示自定义字符,能够根据读者的具体情况显示自定义字符。
    发表于 01-20 15:43 1次下载

    何在android设备上安装自定义rom

    完成后,请执行相同的操作,但不要选择自定义rom,而是选择间隙。安装间隙之前需要使用一些自定义rom,您可以从自定义rom的开发人员网页上了解,如果他们没有提及任何相关内容,只需在自定义
    的头像 发表于 11-05 10:48 5220次阅读

    何在LabVIEW实现自定义控件

    本文档的主要内容详细介绍的是如何在LabVIEW实现自定义控件。
    发表于 01-14 17:17 48次下载
    如<b class='flag-5'>何在</b>LabVIEW<b class='flag-5'>中</b>实现<b class='flag-5'>自定义</b>控件

    浅谈如何在Vivado更改自定义的Interface方法

    因为 BD 连线太多,所以想自定义下 interface 简化连线,定义好了一个 interface,但当准备在自定义 IP 中指定它时,发现我把一个信号的方向搞错了,应该
    的头像 发表于 03-30 15:49 5009次阅读
    浅谈如<b class='flag-5'>何在</b>Vivado<b class='flag-5'>中</b>更改<b class='flag-5'>自定义</b>的Interface方法

    自定义视图组件教程案例

    自定义组件 1.自定义组件-particles(粒子效果) 2.自定义组件- pulse(脉冲button效果) 3.自定义组件-progress(progress效果) 4.
    发表于 04-08 10:48 14次下载

    何在Vivado更改自定义的Interface

    因为 BD 连线太多,所以想自定义下 interface 简化连线,定义好了一个 interface,但当准备在自定义 IP 中指定它时,发现我把一个信号的方向搞错了,应该
    的头像 发表于 08-02 09:49 2986次阅读
    如<b class='flag-5'>何在</b>Vivado<b class='flag-5'>中</b>更改<b class='flag-5'>自定义</b>的Interface

    ArkUI如何自定义弹窗(eTS)

    自定义弹窗其实也是比较简单的,通过CustomDialogController类就可以显示自定义弹窗。
    的头像 发表于 08-31 08:24 2289次阅读

    labview自定义控件

    labview自定义精美控件
    发表于 05-15 16:46 18次下载

    自定义算子开发

    一个完整的自定义算子应用过程包括注册算子、算子实现、含自定义算子模型转换和运行含自定义op模型四个阶段。在大多数情况下,您的模型应该可以通过使用hb_mapper工具完成转换并顺利部署到地平线芯片上……
    的头像 发表于 04-07 16:11 2867次阅读
    <b class='flag-5'>自定义</b>算子开发

    labview超快自定义控件制作和普通自定义控件制作

    labview超快自定义控件制作和普通自定义控件制作
    发表于 08-21 10:32 13次下载

    Python自定义输出格式

    自定义输出格式 我们可以在之前添加的输出格式添加其他的格式内容 import coloredlogs import logging def func_name (): # 增加了 modules
    的头像 发表于 10-07 11:49 827次阅读
    Python<b class='flag-5'>自定义</b>输出格式