目录
Subscribe模块
Simulink中msg以bus(结构体)形式存在,通过Subscribe模块实现对topic msg的订阅。Subscribe模块较为关键参数:IsNew、Msg、ROS Network Configure、Sample time。
ROS Network Configure
配置主节点的Address、Port地址。
IsNew
IsNew为Subscribe模块输出之一,当在上一采样时刻有新消息订阅时,输出为1。该输出可与Enabled Subsystem模块配合使用。
Msg
Msg为Subscribe模块输出之一,其输出可分为Blank Message与非Blank Message。
Blank Message
当无消息进入时,Msg输出为Blank Message,即0。
非Blank Message
当有消息进入时,Msg输出为topic中的Message。因自定义或ROS消息中含有可变嵌套结构体数组,对该Msg一般处理如下:
- 判断数据是否有截断。通过比较Bus中CurrentLength与ReceivedLength大小来判断,若CL<RL,则认为该Msg在Simulink支持的最大长度不足,需要调整。
- 调整Msg最大支持长度。通过Simulink中的APPS,搜索ROS,调出VariableSize Messages,在该界面下对该Msg的最大长度进行调整,使其CL=RL。
以上步骤是针对可变而引起的Msg截图,进行的操作。
- 读取Msg中的嵌套结构体数组。利用Matlab

本文介绍了如何在Simulink中通过Subscribe模块订阅ROS topic,并处理BlankMessage和非BlankMessage,包括判断和调整可变嵌套结构体数组长度,以及使用Matlabfunction添加Header和管理复杂Msg格式。还重点讲解了Sampletime设置和BusAssignment/matlabfunction的使用技巧。
最低0.47元/天 解锁文章
293





