Simulink的Ros工具箱

科技   2024-12-26 07:52   福建  




不懂编程又想玩ROS怎么办

很多对自动驾驶感兴趣的老铁一定都听说过ROS,也想试着玩玩看。但苦于不会编程一直望而却步、望洋兴叹今天我们介绍Simulink的ROS工具箱,可以让不会编码的老铁们也入门ROS开发

Simulink不知从哪个版本开始有了ROS工具箱,该工具箱可以实现ROS通讯的仿真及ROS代码的生成,目前已经支持ROS与ROS2。

使用Simulink完成ROS仿真及ROS代码生成,建议在Ubuntu下安装ROS与Matlab。如果只是建模据说Win环境也可以,但是没实践过。ROS就不介绍,2024年了装个ROS应该是什么难事,建议使用小鱼ROS的脚本,能够实现一件安装!




【思想】选择的是Ubuntu20.04,安装Linux版的Matlab R2020b,安装的时候要注意勾选ROS工具箱。




安装ROS工具后,就能在Library Browser看到ROS Toolbox,支持ROS与ROS2。




下面的演示以ROS为例演示下基本的建模以及代码生成。



如何发布一个信息


先从ROS Toolbox中拖一个Publish模块到空白模型中




在Publish模块的参数设置中,设置Topic的名称和发送信息的数据类型。




从ROSToolBox中再拉一个Blank Message模块,将其数据类型改成与Publish模块一致,为std_msg/UInit64。Sample time要设置为0.01。




接着使用Bus Assignment对Message进行组包,BUS端口连接ROS数据类型作为包头,Data连接具体的数据。




还要把Stop Time设置为inf,否则仿真任务将在迅雷不及掩耳盗铃儿响叮当中结束。




如果需要控制程序运行的周期,可以在Simulation Pacing Options中设置!


如何启动仿真





这时如果着急按下Run按钮则会报错,提示ROS没有运行




这时候需要打开终端,运行roscore,启动ros主节点!




现在点击RUN就不会提示任何错误,也不会有任何其他反馈,除了时间戳在跳。




使用rqt_topic或ros_topic就能够看到数据的发送。


如何订阅话题


为了更好的展示订阅话题后的数据变化,对上面的publish作出更改。




基础建模就不展开了,仅将发送固定数值更改为连续递增。




新建一个空白模型,从ROS ToolBox中拉一个Subscribe模块,配置采样时间与要订阅的话题(My topic)。




读取Msg的时候一定要使用Bus Selector,把数据与包头分离开,才能够正确解析。


古德曼汽车工业
分享交流传统/新能源汽车领域的经验与知识,分享自制作小工具提高你我工作效率
 最新文章