Simulink支持机器人操作系统(ROS),使得用户可用Simulink创建模型在ROS网络中使用。ROS是一个通信布局,允许机器人系统的不同部分以消息的形式交换信息。一个组件通过发布消息到一个话题,例如“/odometry”,其它组件通过订阅该话题接收。
Simulink支持ROS包括Simulink库用于发送和接收指定话题的消息,当用户仿真模型时,Simulink连接到ROS网络,该网络可以运行在Simulink上的机器人,也可以是远程的系统。一旦建立连接,Simulink一直与ROS网络交换消息直到仿真结束。如果安装了嵌入式代码,用户还可以从Simulink模型为单独的ROS组件或者节点生成C++代码。
本例中,用户将学习:
设置ROS网络;
创建和运行Simulink模型以发送和接收ROS消息;
在ROS消息中使用消息。
预备知识
如果用户对Simulink或者ROS陌生,建议复习如下内容:
Create a Simple Model;
1.2 开始使用ROS.
模型
用户将会使用Simulink发布机器人的(x,y)位置坐标,还会订阅相同的定位话题并显示接收到的(x,y)坐标。你将在本例程创建的模型如下图所示。
初始化ROS
每一个ROS网络都有一个ROS主控节点,用于协调ROS网络中的所有部分,在本例程,用户将会使用MATLAB在本地系统创建ROS主控节点。Simulink将会自动检测并使用本地主控节点,在MATLAB命令行,执行如下代码:
rosinit
任务1-创建发布器
本任务中,用户将配置一个块以发送“geometry_msgs/Point”消息到“/location”话题。(“/”是标准的ROS语法)。
从MATLAB的工具栏,选择“HOME > New > Simulink Model”以打开一个新的Simulink模型。
从模型窗口选择“View > Library Browser”以打开Simulink库浏览器,点击“Robotics System Toolbox”选项卡(用户还可以在MATLAB的命令行窗口输入“robotlib”)。
拖放一个“Publish”块到模型中并双击以配置话题和消息的类型。
在“Topic source”域选择“Specify your own”,在“Topic”域输入“/locatio