windows11 解决matlab使用自定义rosmsg问题
准备环境
1、windows 11
2、Matlab2021a
3、cmake 3.17.1
4、Microsoft Visual C++ 2019
亲测安装rosmsg编译成功。
出现画红框的这三个步骤们就说明rosmsg使用matlab编译成功了;
创建rosmsg
新创建一个文件夹,如我创建的msg_common,该文件夹结构如下:
包含定义的消息文件夹planning_msg,planning_msg包含msg(存放自定义的.msg格式消息)和package.xml文件,package.xml没显示出来;
package.xml编写
需要注意的是 <name>planning_msgs</name>
中间这个名字一定要和编译的msg保持一致,否则编译会失败,我自定义的msg是planning_msgs,所以这里写的是planning_msgs;
下面贴上我的这个文件内容:
<?xml version="1.0"?>
<package format="2">
<name>planning_msgs</name>
<version>0.0.0</version>
<description>The planning_msgs package</description>
<maintainer email="alex@todo.todo">alex</maintainer>
<license>TODO</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>message_generation</build_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>geometry_msgs</build_depend>
<build_export_depend>message_generation</build_export_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<build_export_depend>geometry_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>geometry_msgs</exec_depend>
<exec_depend>message_runtime</exec_depend>
<export>
</export>
</package>
编译自定义msg
由于我编译的是ros1的消息,所以直接使用rosgenmsg进行编译,编译的选择到消息的上一级目录,下面是我的编译命令:
rosgenmsg('E:\Lu_Procedure\TEST\msg_common\')
编译成功
等matlab出现红框的这三个步骤以及左上角的matlab_msg_gen_ros1
,就表示成功了,按照提示的三个步骤操作就可以使用自己定义的msg了;
这里值得注意的是编译不成功的时候也会出现matlab_msg_gen_ros1
文件夹,但是不会出现这三个步骤,而且matlab会进行报错
报错及解决办法
1、编译时选择的文件夹不对,导致编译失败;
这个提示是变异的文件夹中找不到msg,是因为直接选了消息文件夹,应该选择上一层文件夹;
2、matlab编译器配置错误
没有编译rosmsg之前使用的MinGW64 Compiler ,在编译msg时,显示不支持ros build,后来改选程vs2019,即可编译成功;设置matlab编译器时可以输入mex -setup
查看matlab当前使用的什么编译器,然后也可以进行配置,非常方便。
其他的暂时没有遇到问题,如果大家在使用的时候遇到问题,可以进行留言交流。
本文转载时请注明出处。