如何在Matlab中自定义Message

描述

自定义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目录,直接看一下目录结构:

ROS

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

ROS

% 注意,该目录是到大的目录,而不是在包的目录
% 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
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分