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