Simulink中使用ROS1自定义消息

Simulink中使用ROS1自定义消息

简介

最近在做的项目里需要使用SimulinkROS 联合仿真,这里就遇到了一个问题,Simulink 无法直接使用ROS 中的自定义消息,需要在MATLAB 中生成一下,再引入进MATLAB中才能使用,这里简单介绍下,并分享下过程里遇到了几个问题,给一些参考。

前提条件

系统:Windows11

MATLAB版本:2021b

ROS版本:ROS noetic

此外还需要下载Python2.7CMake 这两个版本倒没有什么要求,由于MATLAB 2021b 自带ROS Toolbox ,所以Robotics System Toolbox Interface for ROS Custom Messages 这个插件不需要下载,另一个要下载的是VS2019 ,这里要用到VS2019 里的编译器,而且VS2019 是支持MATLAB 2021b 的,换VS2022 的话要用更高版本的MATLAB,这里未作尝试,其实我觉得更高版本的MATLAB问题应该会少不少。

VS2019 的安装包我放在了gitee仓库,有需要可以去下载。

操作流程

参照matlab simulink与 ros通信时messgae注册教程。

其实只要rosgenmsg 能执行完,按照MATLAB 提示进行操作就可以了,不过这之前还会遇到几个小问题。

问题一

首先就是执行rosgenmsg 报找不到Python ,即使安装Python 后在MATLAB 里使用pyversion 命令会显示我们安装的Python,这里也还是报错,这里需要使用命令手动设置一下,设置如下:

matlab 复制代码
pyversion('C:\Python27\python.exe')

问题二

之后执行rosgenmsg 还会报找不到CMake,这里查到是因为MATLAB 2021b本身的bug,需要修改提示出错的那个.m文件,修改如下:

问题三

最后一个问题就是执行rosgenmsg 还会报没有编译器,这里试了直接用MinGW 发现还是不行,参考别人的经验发现可以使用VS2019 的编译器,只是不知道为什么在此之前还需要下载MinGWMATLAB 插件才能使用 mex -setup C++来选择VS2019的编译器,MinGW 的插件也放在了gitee仓库

吐槽

近期实在有点搞,基本每天都是灵魂三问:"我是谁,我在哪,我在干什么",有点离谱,我一个做汽车电子嵌入式软件开发的被临时拉来要做自动驾驶,ROSSimulinkTruckSim,人麻了QAQ。

相关推荐
M-Robots echo9 小时前
驱动抽象层解析:标准化硬件接口,解决机器人硬件碎片化适配难题
人工智能·机器人·ros·开源社区·m-robots
M-Robots echo1 天前
M-CLAW,面向具身智能的机器人任务编排开发框架
机器人·ros·鸿蒙·开源社区·m-robots
M-Robots echo1 天前
王成录:机器人产业下一个十年,拼的是 “系统级智能化” 而非单点算法堆叠
机器人·ros·鸿蒙·开源社区·m-robots·王成录
M-Robots echo1 天前
M-Robots ROS 兼容适配方案,实现存量机器人项目低成本迁移
机器人·ros·鸿蒙·开源社区·m-robots
M-Robots echo2 天前
王成录:黑客松不只是赛事,是开源机器人生态快速试错、挖掘创新的试验场
机器人·ros·鸿蒙·具身智能·开源社区·m-robots
M-Robots echo4 天前
王成录:分布式软总线是 M-Robots 实现群体智能的技术内核
机器人·ros·鸿蒙·开源社区·m-robots
kobesdu16 天前
激光雷达运动畸变是怎么来的,FAST-LIO又如何用IMU反向传播消除它?
ros·slam·fastlio
咕噜咕噜啦啦1 个月前
ROS2自主导航
机器人·ros·gazebo
Agilex松灵机器人1 个月前
UMR × NAVIS:移动机器人行业级通用一体化底盘与3D导航解决方案
人工智能·3d·机器人·ros·slam·vla·松灵机器人
暂未成功人士!2 个月前
点云处理的关键技术流程和常用算法
ros·pcl·点云处理·点云去噪滤波