首先是在Linux下载matlab,我的系统是Ubuntu20.04,参考这篇文章安装的Matlab2021b,具体安装过程比较简单,我就不在赘述了。下面是我的学习过程(以自带的小海龟为例):
首先查看本机的IP地址:
ifconfig
我的地址为192.168.0.111,把这个地址在==.bashrc==文件中引入,意思是让你的引入ROS的IP:
export ROS_IP=你的IP地址
然后就是打开Simulink,切记接下来你创建的文件都要在matlab打开的工作空间内!!!
接下来就是配置Matlab的ROS环境:
1,打开roscore查看ROS_MASTER_URI:
2,在Matlab中设置环境并且初始化
setenv('ROS_MASTER_URI','http://192.168.0.111:11311')
rosinit
接下来检查ROS和Matlab的链接:
1,启动turtlesim和键盘控制节点:
2,查看运动节点:
我们知道,控制小乌龟物理学运动的节点是cmd_vel这个节点。
3,打开Simulink创建一个空白模型:
用ROS里面的subscriber来查看链接是否正常
为了方便显示,我加了几个示波器来看一下运动波形。
subscriber要链接cmd_vel节点:
上面接口接终端,下面的接口直接解析就行:
接下来就是将运行时间改为inf:
那么准备工作做完,运行之后随便打开一个示波器,接下来控制小海龟随便运动一下:
接下来将示波器停止,缩放一下XY轴看到这样就说明链接是没有问题的:
准备工作做完,接下来就可以使用Simulink生成ros代码了,具体操作如下:
因为输出的运动学数值均为Twist类型的:
所以,在simulink中,我们新建一个模板:
使用空白消息订阅Twist,采样周期依旧是inf。
接口接出来接到一个publisher上,首先得将数据解析,使用bus assignment解析:
将解析出来的数据接到publisher上,并且订阅的还是cmd_vel:
对于输入的Bus,由于我想要小海龟做圆周运动,所以对输入进行赋值操作,给x和z一个数值正好就是做圆周运动:
运行脚本可以看到小海龟是做圆周运动的,说明我们的操作都正常,可以将这些输出成代码。
最后就是将输出进行配置:
在设置中配置Hardware为ROS:
配置好之后就可以编译文件了:
接下来不出意外没有报错的话会在你的工作空间内生成两个文件:
将这两个文件编译到你的ROS工作空间内:
编译成功后在你的ROS工作空间内就会生成一个以你simulink文件为名字的文件夹:
接下来编译catkin_make生成执行文件:
运行生成的那个文件,你的小乌龟就可以动起来了:
为了对比之前调试的时候的位置,我手动调整了一下小乌龟的位置,现在形成了对比,可以看到用simulink生成ros的代码可以完美运行!
到这里最基本的内容就已经完成了,后续开发还是得下功夫多研究~~
参考视频