从Simulink®连接到一个支持ros的机器人金宝app
您可以使用Simulin金宝appk连接到启用ros的物理机器人或启用ros的机器人模拟器,例如露台。这个例子展示了如何配置Simulink以使用ROS连接到单独的机器人模拟金宝app器。然后演示如何从模拟机器人发送速度命令和接收位置信息。
您可以按照示例中的步骤创建自己的模型,也可以使用这个完整的模型版本代替。
open_system (“robotROSConnectToRobotExample”);
先决条件:从ROS开始,与ROS发布者和订阅者交换数据,在Simulink中开始使用ROS金宝app。
机器人模拟器
为差动驱动机器人启动一个基于ros的模拟器。模拟器接收和发送关于以下主题的消息:
发送
nav_msgs /测程法
致/奥多姆
主题接收
geometry_msgs /扭
的Velocity命令消息mobile_base /命令
或/ cmd_vel
主题,基于ros的模拟器
您可以从两个选项中选择一个来设置基于ros的模拟器。
选项A: MATLAB®模拟器
使用一个简单的基于matlab的模拟器在一个单独的图形窗口中绘制机器人的当前位置。
输入
rosinit
在MATLAB命令行。这将创建一个本地ROS的主人的网络地址(URI)http://localhost:11311
。输入
ExampleHelper金宝appSimulinkRobotROS
启动机器人模拟器:
注意:的
geometry_msgs /扭
Velocity命令消息在/mobile_base /命令/速度
的话题。
选项B:凉亭模拟器
在Gazebo中使用模拟TurtleBot®。
看到在凉亭中添加、构建和移除对象查阅设置凉亭环境的指引。在虚拟机的Ubuntu®桌面中,点击“Gazebo Empty”图标。
注意ROS主服务器的网络地址(URI)。它看起来就像
http://192.168.84.128:11311
,但你的具体IP地址。类型验证凉亭环境是否已正确设置
rostopic
列表
在Ubuntu终端窗口。您应该会看到一个主题列表,包括/ cmd_vel
而且/奥多姆
。注意:的
geometry_msgs /扭
在/cmd_vel主题上接收Velocity命令消息。
配置Simulink金宝app连接ROS网络
1.从模拟选项卡上,选择ROS工具箱>ROS网络。
2.在ROS Master (ROS 1)部分中,选择自定义
从网络地址下拉。
选项A (MATLAB模拟器):确保主机名或IP地址设置为
本地主机
,港口设置为11311
。选项B(凉亭模拟器):在凉亭中指定ROS主机的IP地址和端口号。例如,如果它是
http://192.168.60.165:11311
,然后进入192.168.60.165
在主机名或IP地址盒子,11311
在港口盒子。
向机器人发送速度指令
创建一个向模拟器发送控制命令(线性速度和角速度)的发布者。使这些速度可调使用滑块获得块。
ROS使用右手坐标系,因此x轴是向前的,y轴是向左的,z轴是向上的。控件命令使用geometry_msgs /扭
消息,线性的。X
表示正向线性速度,单位为m/s角。Z
表示绕z轴的角速度(单位:rad/s)。
配置发布服务器块
打开一个新的Simul金宝appink模型。
从ROS工具箱>ROS选项卡,在库浏览器中拖动发布块到模型。双击该块。
集课题来源字段选择ROS网络。根据模拟器选择一个主题,如下所示。
选项A (MATLAB模拟器):单击选择旁边主题中,选择
/ mobile_base /命令/速度
,并单击好吧。注意消息类型(geometry_msgs /扭
)自动设置。选项B(凉亭模拟器):单击选择旁边主题中,选择
/ cmd_vel
,并单击好吧。注意消息类型(geometry_msgs /扭
)自动设置。
配置消息块
从ROS工具箱>ROS选项卡中,删除一个空白的信息块到模型。双击该块。
点击选择旁边消息类型并选择
geometry_msgs /扭
。集样品时间来
0.01
并点击好吧。
配置消息输入
从金宝app>信号路由选项卡,在库浏览器中拖动总线分配块到模型。
连接
味精
的输出空白的信息块到公共汽车
的输入总线分配Block和公共汽车
输出到味精
的输入发布块。从建模选项卡上,单击更新模型以确保总线信息被正确传播。如果出现错误,请忽略“在总线分配块'untitled/Bus Assignment'中无法在输入总线信号中找到选定的信号'signal1'”。下一步将解决此错误。
双击总线分配块。选择
???
signal1
2 .在右侧列表框中,单击删除。在左边的列表框中,展开Linear和Angular属性。选择线性>X而且角>Z并点击选择。点击好吧关闭块掩码。
添加一个常数块,获得Block和2滑块获得块。如图所示,将它们连接在一起,并设置获得价值
1。
将线速度滑块的限制和当前参数设置为
0.0
来2.0
,1.0
分别。将转向增益滑块的相应参数设置为-1.0
来1.0
,0.1
。
从机器人接收位置信息
创建订阅服务器以接收发送到/奥多姆
的话题。提取机器人的位置,并绘制出它在xy平面上的路径。
配置订阅者块
从ROS工具箱>ROS选项卡,在库浏览器中拖动订阅块到模型。双击该块。
集课题来源来选择ROS网络,并单击选择旁边是主题盒子。选择主题“/odom”,单击好吧。注意消息类型
nav_msgs /测程法
自动设置。
读取消息输出
从金宝app>信号路由选项卡,在库浏览器中拖动总线选择器块到模型。
连接输出端口订阅块的输入端口总线选择器块。在建模选项卡上,单击更新模型以确保总线信息被正确传播。
双击总线选择器块。选择
???
signal1
而且???
signal2
在右侧列表框中单击删除。在左侧列表框中展开构成>构成>位置并选择X而且Y。点击选择然后好吧。从金宝app>汇选项卡,拖动XY图块到模型。连接
X
而且Y
输出端口总线选择器块的输入端口XY图块。
该图显示了完成的模型。一个预先配置的模型是为了方便您。
注意:出版商块在此模型中使用
/ mobile_base /命令/速度
主题使用MATLAB模拟器选项。对于凉亭模拟器选项,选择/ cmd_vel
主题如下所示以上。
配置并运行模型
从建模选项卡上,单击模型设置。在解算器窗格中,设置类型来固定步而且固定的大小来
0.01
。设置仿真停止时间为
正
。点击运行开始模拟。
在模拟器和XY图中,您应该看到机器人在一个圆圈中移动。
的值,在模拟运行时更改滑块获得方块来控制机器人。双击XY图块并更改
X
而且Y
如果需要,轴限制。(您可以在模拟运行时执行此操作。)单击,停止模拟停止。