利用Matlab/Simulink构建ROS应用

这次简单介绍如何利用Matlab/Simulink进行ROS算法的搭建和验证。以常见的turtlesim为例,我们经常会启动turtle_teleop_key的ROS节点,通过移动键盘上的光标来控制小乌龟的移动,其原理是 turtle_teleop_key的节点会发布运动控制的topic:/turtle1/cmd_vel,turtlesim的节点会订阅该topic从而实现运动,运行原理图如下图所示:
利用Matlab/Simulink构建ROS应用
其中/turtle1/cmd_vel的topic包含的rosmsg是:geometry_msgs/Twist
利用Matlab/Simulink构建ROS应用
geometry_msgs/Twist的数据结构如下:
利用Matlab/Simulink构建ROS应用
因此要想实现小乌龟的运动,需要在Matlab/Simulink中搭建模型,发布含有rosmsg:geometry_msgs/Twist的 /turtle1/cmd_vel topic即可实现,当只改变线速度X和角速度Z 时,小乌龟将做旋转运动,搭建的模型如下图所示:
利用Matlab/Simulink构建ROS应用
当搭建好模型后即可进行算法的仿真验证,如上篇介绍,当建立好Matlab/Simulink与ROS的通讯后,首先在Ubuntu中运行turtlesim节点,再点击Simulink的仿真按钮即可进行该简单算法的仿真验证,从仿真结果可看到搭建的模型可满足要求。

利用Matlab/Simulink构建ROS应用
利用Matlab/Simulink构建ROS应用
此时需要将搭建的算法模型,生成为实际的代码,并在Ubuntu中编译成实际的ROS节点并运行,以此来检验实际的运行效果。首先在Simulink的Model Configuration Parameters—Hardware Implementation中选中Robot Operating System后点击确定,再点击代码生成按钮,即可生成相应的C++代码。
利用Matlab/Simulink构建ROS应用
利用Matlab/Simulink构建ROS应用
将上图标红的.sh和压缩文件拷贝至Ubuntu环境中,如下图所示:
利用Matlab/Simulink构建ROS应用
再打开终端输入如下命令,即可自动将代码编译成一个名为Circle的ROS 节点。

利用Matlab/Simulink构建ROS应用
利用Matlab/Simulink构建ROS应用
最后在Ubuntu中运行实际的Circle节点,可看到实际运行效果同仿真结果保持一致,从背后的运行机理更能清楚的看到这一点。
利用Matlab/Simulink构建ROS应用