自定義Message
當(dāng)我們的 message 消息比較復(fù)雜時,通常要用到自定義的 message 消息,MATLAB 2020b以上的版本自帶了ROS Toolbox Interface for ROS Custom Messages 工具,如果低于這個版本就需要通過鏈接ROS Toolbox Interface for ROS Custom Messages 下載。
自定義 Message 編譯的目錄結(jié)構(gòu),必須是特定的,即有一個文件夾下放 ROS package,該文件夾可以放多個 ROS 包,然后在某個包下放其 ROS message,ROS message 放置該包目錄的msg/ 下,服務(wù)文件放于該包目錄的 srv/ 目錄下,這里就是基本的ROS目錄,直接看一下目錄結(jié)構(gòu):
然后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 提示,進(jìn)行下面三個操作后,可以使用addpath將message位置添加到MATLAB路徑,并使用savepath保存這些更改。
1.編輯javaclasspath.txt,添加以下文件位置作為新行,并保存文件:
D:matlabDemoros-messagescustomjartest_pkg-0.0.0.jar
2.通過執(zhí)行以下命令將自定義消息文件夾添加到MATLAB路徑:
addpath('D:matlabDemoros-messagescustommsggen')
savepath
3.重新啟動MATLAB并驗證您可以使用自定義消息。輸入“rosmsg list”,并確保輸出包含生成的自定義消息類型。
注意:javaclasspath.txt文件放置于 prefdir 目錄,可以在matlab 命令行中輸入prefdir命令進(jìn)行查看。
特別特別注意:實踐中將javaclasspath.txt放入 prefdir 目錄中,通過查相關(guān)問題,則可以從快捷方式啟動;如果將javaclasspath.txt放入bin/目錄下,也就是matlab 的啟動目錄后,重啟matlab 之后,可以查看 msg,不能從快捷方式啟動,要從bin/目錄下的matlab.exe啟動,所以,還是把該文件放到 prefdir 目錄下最好。
# 將 javaclasspath.txt 放入 prefdir 目錄,通過 rosmsg list 可查找到消息
rosmsg list
# 但是查看具體消息內(nèi)容時會報錯
rosmsg show test_pkg/BodyIMU
-
matlab
+關(guān)注
關(guān)注
186文章
2981瀏覽量
231082 -
機器人
+關(guān)注
關(guān)注
211文章
28687瀏覽量
208629 -
imessage
+關(guān)注
關(guān)注
0文章
13瀏覽量
9581 -
ROS
+關(guān)注
關(guān)注
1文章
280瀏覽量
17122
發(fā)布評論請先 登錄
相關(guān)推薦
新手請教一個關(guān)于MATLAB自定義函數(shù)的問題?
matlab自定義函數(shù)調(diào)用的方法
SOPC中自定義外設(shè)和自定義指令性能分析
![SOPC<b class='flag-5'>中</b><b class='flag-5'>自定義</b>外設(shè)和<b class='flag-5'>自定義</b>指令性能分析](https://file1.elecfans.com//web2/M00/A4/AC/wKgZomUMNTmAMwqyAAAZMrUo_VI741.gif)
如何在android設(shè)備上安裝自定義rom
如何在LabVIEW中實現(xiàn)自定義控件
![如<b class='flag-5'>何在</b>LabVIEW<b class='flag-5'>中</b>實現(xiàn)<b class='flag-5'>自定義</b>控件](https://file.elecfans.com/web1/M00/DA/CF/pIYBAGAAEQ-AWZxaAAH7jECsKBI933.png)
淺談如何在Vivado中更改自定義的Interface方法
![淺談如<b class='flag-5'>何在</b>Vivado<b class='flag-5'>中</b>更改<b class='flag-5'>自定義</b>的Interface方法](https://file.elecfans.com/web1/M00/E7/FA/pIYBAGBi2bKAFahAAABBw8Rh2YQ929.png)
自定義視圖組件教程案例
如何在Vivado中更改自定義的Interface
![如<b class='flag-5'>何在</b>Vivado<b class='flag-5'>中</b>更改<b class='flag-5'>自定義</b>的Interface](https://file.elecfans.com/web2/M00/1F/63/poYBAGGYICaAZJ0BAAEUYDcKrIQ581.png)
自定義算子開發(fā)
![<b class='flag-5'>自定義</b>算子開發(fā)](https://file.elecfans.com/web2/M00/3B/CA/pYYBAGJOnJuAA6w0AAF7WVVBBy4278.png)
Python自定義輸出格式
![Python<b class='flag-5'>自定義</b>輸出格式](https://file1.elecfans.com/web2/M00/A8/A5/wKgZomUg0FeABw1YAAAQwyfP-OU881.jpg)
評論