利用Matlab/Simulink构建ROS应用

2022-04-19 17:10:15 浏览数 (1)

上篇主要分享了如何建立Matlab/Simulink与ROS的通讯,这次简单介绍如何利用Matlab/Simulink进行ROS算法的搭建和验证。以常见的turtlesim为例,我们经常会启动turtle_teleop_key的ROS节点,通过移动键盘上的光标来控制小乌龟的移动,其原理是 turtle_teleop_key的节点会发布运动控制的topic:/turtle1/cmd_vel,turtlesim的节点会订阅该topic从而实现运动,运行原理图如下图所示:

其中/turtle1/cmd_vel的topic包含的rosmsg是:geometry_msgs/Twist

geometry_msgs/Twist的数据结构如下:

因此要想实现小乌龟的运动,需要在Matlab/Simulink中搭建模型,发布含有rosmsg:geometry_msgs/Twist的 /turtle1/cmd_vel topic即可实现,当只改变线速度X和角速度Z 时,小乌龟将做旋转运动,搭建的模型如下图所示:

当搭建好模型后即可进行算法的仿真验证,如上篇介绍,当建立好Matlab/Simulink与ROS的通讯后,首先在Ubuntu中运行turtlesim节点,再点击Simulink的仿真按钮即可进行该简单算法的仿真验证,从仿真结果可看到搭建的模型可满足要求。

此时需要将搭建的算法模型,生成为实际的代码,并在Ubuntu中编译成实际的ROS节点并运行,以此来检验实际的运行效果。首先在Simulink的Model Configuration Parameters—Hardware Implementation中选中Robot Operating System后点击确定,再点击代码生成按钮,即可生成相应的C 代码。

生成的代码文件如下图所示:

将上图标红的.sh和压缩文件拷贝至Ubuntu环境中,如下图所示:

再打开终端输入如下命令,即可自动将代码编译成一个名为Circle的ROS 节点。

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

该篇主要简单介绍了如何利用Matlab/Simulink构建ROS的算法并进行仿真和应用的案例,相信通过Matlab/Simulink这个强大的工具,我们可构建更多复杂而有趣的ROS应用。

0 人点赞