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