Matlab&Simulink与ROS的通讯
第一步:获取 Ubuntu 地址
在 Ubuntu 系统中获取 IP 地址,可通过以下步骤完成:
- 打开终端。
- 输入
ifconfig
命令。这个命令与 Windows 的ipconfig
类似,但略有不同。 - 终端将显示虚拟机的 IP 地址。
ifconfig
第二步:配置 MATLAB 环境
在 MATLAB 中进行以下操作以设置环境:
- 打开 MATLAB。
- 设置 ROS 主节点的 URI。使用
setenv
函数并输入 Ubuntu 的 IP 地址。例如,如果 IP 地址是10.193.119.15
,则输入setenv('ROS_MASTER_URI','10.193.119.15')
。 - 在运行
rosinit
之前,确保roscore
已经在运行中,否则 MATLAB 无法成功连接到 ROS。
setenv('ROS_MASTER_URI','http://10.193.119.15:11311')
rosinit
第三步:运行 ROS 节点
建立 MATLAB 与 ROS 的通信后,执行以下操作:
- 运行 ROS 主节点:
roscore
。 - 打开新终端,运行 turtlesim 节点:
rosrun turtlesim turtlesim_node
。 - 使用快捷键 Ctrl+Alt+T 打开另一个新终端,运行控制海龟的键盘节点:
rosrun turtlesim turtle_teleop_key
。 - 将鼠标放在最后一个新终端上,使用键盘的方向键来控制海龟的移动。
- 为了验证 ROS 与 MATLAB 的通信,新开一个终端并显示一个话题信息。
第四步:在 MATLAB 中运行 ROS 和 turtlesim
准备阶段
- 启动 ROS 核心:确保您已经启动了
roscore
。 - 在 MATLAB 中初始化 ROS:使用
rosinit
命令连接 MATLAB 到 ROS 环境。
观察 turtlesim 状态
- 检查 turtlesim 状态:在 MATLAB 命令窗口,使用
rostopic echo /turtle1/pose
来观察 turtlesim 的位置和方向。 - 对比信息:当 turtlesim 移动时,确认 Ubuntu 终端显示的信息与 MATLAB 中的信息是否一致。
控制 turtlesim
-
创建发布者对象:使用
rospublisher
创建一个发布者对象,以向/turtle1/cmd_vel
主题发送消息。turtleCmdVel = rospublisher('/turtle1/cmd_vel', 'geometry_msgs/Twist');
-
创建消息对象:使用
rosmessage
创建一个消息对象,用于指定 turtlesim 的运动参数。velMsg = rosmessage(turtleCmdVel);
-
设定运动参数:通过设置
velMsg
的属性来控制 turtlesim 的速度和旋转。velMsg.Linear.X = 1.0; % 前进速度 velMsg.Angular.Z = 0.5; % 转动速度
-
发送消息:使用
send
函数通过发布者对象发送消息,控制 turtlesim 的运动。send(turtleCmdVel, velMsg);
-
调整参数和重复发送:根据需要调整
velMsg
中的值,重复发送指令来改变 turtlesim 的运动。
第五步:配置 Simulink 模型并运行
在 Simulink 中进行以下操作:
- 打开 Simulink 并新建模型。
- 引入订阅(Subscribe)模块,并加入 Bus Selector 以选择想要观察的信号。
- 双击 Subscribe 模块,选择 Configure network addresses。
- 完成配置后,将 Simulink 的仿真时间设置为无限(
inf
),然后点击运行。 - 在 Ubuntu 上控制海龟移动,观察 Ubuntu 上的海龟位置(pose)信息是否与 Simulink 中显示的一致。