MATLAB-SIMULATOR: ROS Custom messages

  1. 安装 插件

在这里插入图片描述

  1. 自定义 ROS 包, ros 包的结构需要一定的结构
.
├── fw_msgs
│   ├── CMakeLists.txt
│   ├── include
│   │   └── fw_msgs
│   ├── msg
│   │   ├── ACKflag.msg
│   │   ├── ACK.msg
│   │   ├── commands.msg
│   │   ├── DataLinkDown.msg
│   │   ├── EXITflag.msg
│   │   ├── flyMode.msg
│   │   ├── FormationData.msg
│   │   ├── FormationNavigator.msg
│   │   ├── FormationPositionContoller.msg
│   │   ├── formations.msg
│   │   ├── ModeSetting.msg
│   │   ├── NormalSwitchMode.msg
│   │   ├── processer.msg
│   │   ├── ProtectFlag.msg
│   │   ├── QgcCommands.msg
│   │   ├── target.msg
│   │   ├── uavflag.msg
│   │   ├── uav_ids.msg
│   │   ├── UDPData.msg
│   │   ├── udpDataTypes.msg
│   │   ├── UpdHP.msg
│   │   └── Yaw.msg
│   ├── package.xml
│   └── src
├── generateMessages.m
├── matlab_gen
│   ├── build
│   │   ├── gradle_cache
│   │   │   ├── caches
│   │   │   │   ├── 1.8
│   │   │   │   │   └── scripts
│   │   │   │   │       ├── build_4u0ra07b3pqc2krrpem2h9ijj0
│   │   │   │   │       │   └── ProjectScript
│   │   │   │   │       │       ├── buildscript
│   │   │   │   │       │       │   ├── cache.properties
│   │   │   │   │       │       │   ├── cache.properties.lock
│   │   │   │   │       │       │   └── classes
│   │   │   │   │       │       │       └── emptyScript.txt
│   │   │   │   │       │       └── no_buildscript
│   │   │   │   │       │           ├── cache.properties
│   │   │   │   │       │           ├── cache.properties.lock
│   │   │   │   │       │           └── classes
│   │   │   │   │       │               ├── build_4u0ra07b3pqc2krrpem2h9ijj0.class
│   │   │   │   │       │               └── build_4u0ra07b3pqc2krrpem2h9ijj0$_run_closure1.class
│   │   │   │   │       ├── build_6roqjsvd404o9d77g9offol26t
│   │   │   │   │       │   └── ProjectScript
│   │   │   │   │       │       ├── buildscript
│   │   │   │   │       │       │   ├── cache.properties
│   │   │   │   │       │       │   ├── cache.properties.lock
│   │   │   │   │       │       │   └── classes
│   │   │   │   │       │       │       └── emptyScript.txt
│   │   │   │   │       │       └── no_buildscript
│   │   │   │   │       │           ├── cache.properties
│   │   │   │   │       │           ├── cache.properties.lock
│   │   │   │   │       │           └── classes
│   │   │   │   │       │               ├── build_6roqjsvd404o9d77g9offol26t.class
│   │   │   │   │       │               └── build_6roqjsvd404o9d77g9offol26t$_run_closure1.class
│   │   │   │   │       ├── build_7ojsc3hup4mbg6tv5gpmggandg
│   │   │   │   │       │   └── ProjectScript
│   │   │   │   │       │       ├── buildscript
│   │   │   │   │       │       │   ├── cache.properties
│   │   │   │   │       │       │   ├── cache.properties.lock
│   │   │   │   │       │       │   └── classes
│   │   │   │   │       │       │       ├── build_7ojsc3hup4mbg6tv5gpmggandg.class
│   │   │   │   │       │       │       ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure1.class
│   │   │   │   │       │       │       ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure1_closure2.class
│   │   │   │   │       │       │       └── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure1_closure3.class
│   │   │   │   │       │       └── no_buildscript
│   │   │   │   │       │           ├── cache.properties
│   │   │   │   │       │           ├── cache.properties.lock
│   │   │   │   │       │           └── classes
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure1.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure2.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure2_closure4.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure2_closure5.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure2_closure6.class
│   │   │   │   │       │               ├── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure3.class
│   │   │   │   │       │               └── build_7ojsc3hup4mbg6tv5gpmggandg$_run_closure3_closure7.class
│   │   │   │   │       └── settings_4n9d6eckaoaoevsee3ds05qj0c
│   │   │   │   │           └── SettingsScript
│   │   │   │   │               ├── buildscript
│   │   │   │   │               │   ├── cache.properties
│   │   │   │   │               │   ├── cache.properties.lock
│   │   │   │   │               │   └── classes
│   │   │   │   │               │       └── emptyScript.txt
│   │   │   │   │               └── no_buildscript
│   │   │   │   │                   ├── cache.properties
│   │   │   │   │                   ├── cache.properties.lock
│   │   │   │   │                   └── classes
│   │   │   │   │                       ├── settings_4n9d6eckaoaoevsee3ds05qj0c.class
│   │   │   │   │                       ├── settings_4n9d6eckaoaoevsee3ds05qj0c$_run_closure1.class
│   │   │   │   │                       ├── settings_4n9d6eckaoaoevsee3ds05qj0c$_run_closure2.class
│   │   │   │   │                       ├── settings_4n9d6eckaoaoevsee3ds05qj0c$_run_closure2_closure3.class
│   │   │   │   │                       └── settings_4n9d6eckaoaoevsee3ds05qj0c$_run_closure2_closure3_closure4.class
│   │   │   │   └── artifacts-26
│   │   │   │       ├── artifacts-26.lock
│   │   │   │       ├── dynamic-revisions.bin
│   │   │   │       └── module-metadata.bin
│   │   │   └── native
│   │   │       └── jna
│   │   │           └── linux-amd64
│   │   │               └── libjnidispatch.so
│   │   └── rosjava_build
│   │       ├── build.gradle
│   │       ├── build.gradle.template
│   │       ├── CATKIN_IGNORE
│   │       ├── fw_msgs
│   │       │   ├── build
│   │       │   │   ├── classes
│   │       │   │   │   └── main
│   │       │   │   │       └── fw_msgs
│   │       │   │   │           ├── ACK.class
│   │       │   │   │           ├── ACKflag.class
│   │       │   │   │           ├── commands.class
│   │       │   │   │           ├── DataLinkDown.class
│   │       │   │   │           ├── EXITflag.class
│   │       │   │   │           ├── flyMode.class
│   │       │   │   │           ├── FormationData.class
│   │       │   │   │           ├── FormationNavigator.class
│   │       │   │   │           ├── FormationPositionContoller.class
│   │       │   │   │           ├── formations.class
│   │       │   │   │           ├── ModeSetting.class
│   │       │   │   │           ├── NormalSwitchMode.class
│   │       │   │   │           ├── processer.class
│   │       │   │   │           ├── ProtectFlag.class
│   │       │   │   │           ├── QgcCommands.class
│   │       │   │   │           ├── target.class
│   │       │   │   │           ├── uavflag.class
│   │       │   │   │           ├── uav_ids.class
│   │       │   │   │           ├── UDPData.class
│   │       │   │   │           ├── udpDataTypes.class
│   │       │   │   │           ├── UpdHP.class
│   │       │   │   │           └── Yaw.class
│   │       │   │   ├── dependency-cache
│   │       │   │   ├── generated-src
│   │       │   │   │   └── fw_msgs
│   │       │   │   │       ├── ACKflag.java
│   │       │   │   │       ├── ACK.java
│   │       │   │   │       ├── commands.java
│   │       │   │   │       ├── DataLinkDown.java
│   │       │   │   │       ├── EXITflag.java
│   │       │   │   │       ├── flyMode.java
│   │       │   │   │       ├── FormationData.java
│   │       │   │   │       ├── FormationNavigator.java
│   │       │   │   │       ├── FormationPositionContoller.java
│   │       │   │   │       ├── formations.java
│   │       │   │   │       ├── ModeSetting.java
│   │       │   │   │       ├── NormalSwitchMode.java
│   │       │   │   │       ├── processer.java
│   │       │   │   │       ├── ProtectFlag.java
│   │       │   │   │       ├── QgcCommands.java
│   │       │   │   │       ├── target.java
│   │       │   │   │       ├── uavflag.java
│   │       │   │   │       ├── uav_ids.java
│   │       │   │   │       ├── UDPData.java
│   │       │   │   │       ├── udpDataTypes.java
│   │       │   │   │       ├── UpdHP.java
│   │       │   │   │       └── Yaw.java
│   │       │   │   ├── libs
│   │       │   │   │   └── fw_msgs-0.0.0.jar
│   │       │   │   └── tmp
│   │       │   │       └── jar
│   │       │   │           └── MANIFEST.MF
│   │       │   └── build.gradle
│   │       ├── gradle.properties
│   │       ├── mavros_msgs
│   │       │   ├── build
│   │       │   │   ├── classes
│   │       │   │   │   └── main
│   │       │   │   │       └── mavros_msgs
│   │       │   │   │           ├── SetModeRequest.class
│   │       │   │   │           ├── SetModeResponse.class
│   │       │   │   │           ├── SetMode$Service.class
│   │       │   │   │           └── State.class
│   │       │   │   ├── dependency-cache
│   │       │   │   ├── generated-src
│   │       │   │   │   └── mavros_msgs
│   │       │   │   │       ├── SetModeRequest.java
│   │       │   │   │       ├── SetModeResponse.java
│   │       │   │   │       ├── SetMode$Service.java
│   │       │   │   │       └── State.java
│   │       │   │   ├── libs
│   │       │   │   │   └── mavros_msgs-0.0.0.jar
│   │       │   │   └── tmp
│   │       │   │       └── jar
│   │       │   │           └── MANIFEST.MF
│   │       │   └── build.gradle
│   │       ├── package.xml
│   │       └── settings.gradle
│   ├── jar
│   │   ├── fw_msgs-0.0.0.jar
│   │   ├── fw_msgs-0.0.0.md5
│   │   ├── mavros_msgs-0.0.0.jar
│   │   └── mavros_msgs-0.0.0.md5
│   └── msggen
│       └── +robotics
│           └── +ros
│               └── +custom
│                   ├── +msg
│                   └── +msggen
│                       ├── CustomMsgConsts.m
│                       ├── +fw_msgs
│                       │   ├── ACKflag.m
│                       │   ├── ACK.m
│                       │   ├── commands.m
│                       │   ├── DataLinkDown.m
│                       │   ├── EXITflag.m
│                       │   ├── flyMode.m
│                       │   ├── FormationData.m
│                       │   ├── FormationNavigator.m
│                       │   ├── FormationPositionContoller.m
│                       │   ├── formations.m
│                       │   ├── ModeSetting.m
│                       │   ├── NormalSwitchMode.m
│                       │   ├── processer.m
│                       │   ├── ProtectFlag.m
│                       │   ├── QgcCommands.m
│                       │   ├── target.m
│                       │   ├── uavflag.m
│                       │   ├── uav_ids.m
│                       │   ├── UDPData.m
│                       │   ├── udpDataTypes.m
│                       │   ├── UpdHP.m
│                       │   └── Yaw.m
│                       └── +mavros_msgs
│                           ├── SetModeRequest.m
│                           ├── SetModeResponse.m
│                           └── State.m
├── mavros_msgs
│   ├── CMakeLists.txt
│   ├── include
│   │   └── mavros_msgs
│   ├── msg
│   │   └── State.msg
│   ├── package.xml
│   └── srv
│       └── SetMode.srv
└── output.txt

82 directories, 168 files
  1. 在 matlab command windows 输入下面指令
# 定义消息定义包存在的目录
folderpath = '/home/fengxuewei/matlabcode/custom_msgs/packages'
rosgenmsg(folderpath)

# 若成功, 按照提示完成下面的步骤:
# 将若干路径保存到 javaclasspath.txt 文本中
/home/fengxuewei/matlabcode/custom_msgs/packages/matlab_gen/jar/fw_msgs-0.0.0.jar
/home/fengxuewei/matlabcode/custom_msgs/packages/matlab_gen/jar/mavros_msgs-0.0.0.jar

## 将生成目录 保存到路径
addpath('/home/fengxuewei/matlabcode/custom_msgs/packages/matlab_gen/msggen')
savepath

# 重启 matlab, 输入下面指令查看自定义文件是否生成
rosmsg list

# 使用 rosmessage 查看当前 生成的msg文件 的类型
custommsg = rosmessage('mavros_msgs/State')
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页