Simulink与ROS通信(以小乌龟为例)
接上篇 Linux环境安装MATLAB,这里默认大家已经完成安装
更改MATLAB默认工作路径
首先要更改MATLAB的默认工作路径
redwall@redwall-G3-3500:~$ locate matlabrc.m
/usr/local/MATLAB/R2019b/toolbox/local/matlabrc.m
然后编辑该文件
redwall@redwall-G3-3500:~$ sudo gedit /usr/local/MATLAB/R2019b/toolbox/local/matlabrc.m
在文件末尾添加如下,引号中为期望设置的路径
cd '/home/redwall/MATLAB_Data/'
简单通信测试
配置完成后检查MATLAB能够操作ROS,打开小乌龟节点
redwall@redwall-G3-3500:~$ rosrun turtlesim turtlesim_node
[ INFO] [1672839004.968318336]: Starting turtlesim with node name /turtlesim
[ INFO] [1672839004.977814450]: Spawning turtle [turtle1] at x=[5.544445], y=[5.544445], theta=[0.000000]
在MATLAB命令行窗口简单测试
>> rosinit
Initializing ROS master on http://redwall-G3-3500:11311/.
Initializing global node /matlab_global_node_61262 with NodeURI http://redwall-G3-3500:36741/
>> rostopic list
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose
>> rostopic echo /turtle1/pose
X : 6.311942100524902
Y : 9.387969970703125
Theta : 2.739405870437622
LinearVelocity : 0
AngularVelocity : 0
---
X : 6.311942100524902
Y : 9.387969970703125
Theta : 2.739405870437622
LinearVelocity : 0
AngularVelocity : 0
---
X : 6.311942100524902
Y : 9.387969970703125
Theta : 2.739405870437622
LinearVelocity : 0
AngularVelocity : 0
---
可以顺利回显小乌龟位置信息,说明MATLAB/Simulink与ROS通信正常
Simulink控制小乌龟
消息发布
- 注意将Blank Message的采样时间设为-1,不然会出现小乌龟在运动一会儿就停止的问题
话题订阅
- 注意将Bus Selector构建为Enabled Subsystem,IsNew输入给Enable
- 这样可以避免没有接收到消息时输出空白消息(例如,消息的值为0)
将仿真时间设置为Inf,最终效果如下
Simulink可以发送速度指令给小乌龟,同时可以接受小乌龟的位置等信息,通信顺利