Matlab/Simulink与ROS的通讯

2022-04-19 17:08:52 浏览数 (1)

Matlab/Simulink作为强大的数据处理和算法设计工具,提供了与ROS的交互接口,可使两者建立连接实现对算法调试过程中所关心数据的监测和分析,同时通过Matlab/Simulink还可设计开发诸如机器视觉、运动控制等机器人应用算法,实现算法在ROS中的快速原型及集成,加速机器人复杂算法设计流程和验证工作。

Matlab/Simulink可作为ROS master或普通节点,分别实现在ROS中对节点的管理和通讯。

如上图所示,运行有Matlab/Simulink的计算机作为一个ROS节点,通过同一网络,与另外一台运行有节点管理器的计算机建立通讯连接,从而实现与ROS网络中所有节点的通讯连接,这次分享如何配置Matlab/Simulink与ROS的通讯。

首先进入Ubuntu打开终端,并输入:ifconfig,查看虚拟机内Ubuntu的IP地址,如下:

然后在Ubuntu端打开~/.bashrc文件将export ROS_IP=192.168.248.128(IP为Ubuntu的IP,即上面标红的IP)添加进去,如下:

在Window下的Matlab中配置Matlab的环境,首先打开Matlab,输入setenv('ROS_MASTER_URI','http://192.168.248.128:11311')(Ubuntu的IP地址)

192.168.248.128:11311的信息实质是在运行roscore主节点的信息,如下:

配置完成后,即可启动Ubuntu下的roscore,然后在Matlab中输入rosinit测试是否可以与Master主节点建立通讯,如下:

需要说明的是,若想使用Matlab/Simulink进行ROS的调试和开发,在每次启动Matlab时,如下两句都需要运行一次:

通过如上设置,即可在Matlab环境下进行ROS的调试和测试,但若Simulink与运行在虚拟机Ubuntu中的ROS主节点建立通讯,除了运行如上两句,还需要进行进一步的设置,下面以一个Demo进行简单的说明,首先我在虚拟机Ubuntu中启动主节点(roscore),运行turtlebotsim节点,并通过键盘控制其运动,我们知道turtlebosim的运动信息将会通过/turtle1/cmd_vel的主题发布出来,如下:

此时利用Simulink建立模型并订阅该topic,在控制移动turtlesim的过程中将运动信息打印出来,首先建立如下模型,并打开Configure network address进行通讯设置。

然后移动turtlesim并运行Simulink模型实时接收turtlesim的运动信息,并打印出来,由于是平面运动,则只有X方向的线速度和Z方向的角速度,如下:

通过如上的说明即可实现Matlab/Simulink与ROS的通讯,从而利用Matlab/Simulink这个强大的工具进行ROS应用的开发和测试。

0 人点赞