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
    +关注

    关注

    175

    文章

    2924

    浏览量

    228454
  • 机器人
    +关注

    关注

    206

    文章

    27043

    浏览量

    201423
  • imessage
    +关注

    关注

    0

    文章

    13

    浏览量

    9498
  • ROS
    ROS
    +关注

    关注

    1

    文章

    271

    浏览量

    16682
收藏 人收藏

    评论

    相关推荐

    matlab自定义窗口属性命令

    matlab自定义窗口属性命令函数名    功能描述    函数名 
    发表于 09-22 15:53

    不能自定义安装matlab

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

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

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

    Labviewmatlab scripe调用matlab自定义的函数报错

    Labview2017,matlab2015b利用matlab scripe想调用matlab自定义的函数(.m文件已经放在matlab默认
    发表于 12-11 20:44

    OpenHarmony自定义组件介绍

    可以在其他自定义组件的build()函数多次创建,实现自定义组件的重用。 class HelloComponentParam { message
    发表于 09-25 15:36

    matlab自定义函数调用的方法

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

    1602自定义字符

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

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

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

    何在LabVIEW中实现自定义控件

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

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

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

    ArkUI如何自定义弹窗(eTS)

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

    labview自定义控件

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

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

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