主要内容

从Simulink®连接到一个支持ros的机器人万博1manbetx

您可以使用Simulin万博1manbetxk连接到启用ROS的物理机器人或启用ROS的机器人模拟器,如露台.此示例显示如何配置Simulink以使用ROS连接到单独的机器人模拟器。万博1manbetx然后,它示出了如何从模拟机器人发送速度命令并接收位置信息。

您可以按照示例中的步骤来创建您自己的模型,或者您可以使用这个已完成的模型版本代替。

Open_System('robotrosconnecttorobotexample');

先决条件:开始使用ROS与ROS发布商和订阅者交换数据在Simulink®中开始使用ROS万博1manbetx

机器人模拟器

启动一个基于ros的差动驱动机器人模拟器。模拟器接收和发送关于以下主题的消息:

  • 发送nav_msgs / odometry.消息/奥多姆话题

  • 收到geometry_msgs / twist./上的速度命令消息mobile_base /命令或者/ cmd_vel课题,基于ros的模拟器

您可以从两个选项中选择一个来设置基于ros的模拟器。

选项A: MATLAB®模拟器

使用简单的基于MATLAB的模拟器绘制机器人的当前位置在单独的数字窗口中。

  • 输入罗斯尼特在MATLAB命令行。这将创建一个本地ROS的主人使用网络地址(URI)http://localhost:11311

  • 输入ExampleHelper万博1manbetxSimulinkRobotROS要启动机器人模拟器:

  • 注意:geometry_msgs / twist.速度命令消息在/上接收mobile_base /命令/速度的话题。

选项B:凉亭模拟器

在凉亭中使用一个模拟的TurtleBot®。

  • 看到在凉亭中添加、构建和删除对象参阅设置露台环境的说明。在虚拟机的Ubuntu®桌面中,点击“Gazebo Empty”图标。

  • 请注意ROS Master的网络地址(URI)。它看起来像http://192.168.84.128:11311,但具体的IP地址。

  • 单击,验证是否正确设置了Gazebo环境叛逆列表在Ubuntu终端窗口中。您应该看到一个主题列表,包括/ cmd_vel/奥多姆

  • 注意:geometry_msgs / twist.在/ cmd_vel主题上收到速度命令消息。

配置Simulink万博1manbetx为“Connect to ROS Network”

1.模拟选项卡,选择ROS工具箱>ROS网络

2.活性氧大师(ROS 1)部分中,选择风俗从这一点来网络地址下拉。

  • 选项A(MATLAB模拟器):确保主机名或IP地址设置为localhost.,和港口设置为11311.

  • 选项B(凉亭模拟器):指定凉亭中ROS主的IP地址和端口号。例如,如果它是http://192.168.60.165:11311,然后输入192.168.60.165在里面主机名或IP地址盒子,11311.在里面港口盒子。

向机器人发送速度命令

创建一个发送控制命令(线速度和角速度)到模拟器的发布者。通过使用使这些速度可调滑块获得块。

ROS使用右手坐标系,所以x轴是向前的,y轴是向左的,z轴是向上的。控制命令使用geometry_msgs / twist.消息,linear.x.表示线性前进速度(单位为m/s)Angular.z.表示Z轴周围的角速度(在Rad / s中)。

配置发布者块

  1. 打开一个新的Simul万博1manbetxink模型。

  2. ROS工具箱>罗斯选项卡,在库浏览器中拖动发布块到模型。双击。

  3. 主题来源领域从ROS网络中选择.根据模拟器选择主题,如下所示。

  • 选项A (MATLAB模拟器):单击选择旁边话题中,选择/ mobile_base /命令/速度,然后单击.请注意,消息类型(geometry_msgs / twist.)自动设置。

  • 选项B(凉亭模拟器):点击选择旁边话题中,选择/ cmd_vel,然后单击.请注意,消息类型(geometry_msgs / twist.)自动设置。

配置消息块

  1. ROS工具箱>罗斯选项卡中,删除空白消息块到模型。双击。

  2. 点击选择旁边消息类型并选择geometry_msgs / twist.

  3. 样品时间0.01然后点击

配置消息输入

  1. 万博1manbetx>信号路由选项卡,在库浏览器中拖动总线分配块到模型。

  2. 连接味精输出空白消息块的公共汽车输入的总线分配块,公共汽车输出到味精输入的发布块。

  3. 建模选项卡上,单击更新模型以确保总线信息被正确传播。忽略这个错误:“在总线分配块‘untitled/Bus Assignment’中选中的信号‘signal1’在输入总线信号中找不到”,如果它出现的话。下一步将解决此错误。

  4. 双击总线分配块。选择???signal1在右侧列表框中,单击删除.在左侧列表框中,展开线性和角度属性。选择线性>X棱角>Z然后点击选择.点击关闭块掩码。

  • 添加A.常数块,Again块和两个滑块获得块。如图所示,将它们连接在一起,并设置gain价值-1.

  • 设置线速度滑块的极限和当前参数为0.02.0,和1.0分别。将转向增益滑块的相应参数设置为-1.01.0,和0.1

从机器人接收位置信息

创建一个订户以接收发送给的消息/奥多姆的话题。提取机器人的位置并在xy平面中绘制它的路径。

配置订户块

  1. 罗斯工具箱>罗斯选项卡,在库浏览器中拖动订阅块到模型。双击。

  2. 主题来源从ROS网络中选择,然后单击选择旁边的话题盒子。为主题选择“/ odom”,然后单击.请注意消息类型nav_msgs / odometry.自动设置。

读消息输出

  1. 万博1manbetx>信号路由选项卡,在库浏览器中拖动总线选择器块到模型。

  2. 连接输出端口订阅块到输入端口总线选择器块。在建模选项卡上,单击更新模型以确保总线信息被正确传播。

  3. 双击总线选择器块。选择???signal1???signal2在右侧列表框中单击删除.在左侧列表框中,展开构成>构成>姿势并选择XY.点击选择接着

  4. 万博1manbetx>在库浏览器中的选项卡,拖动一个xy图形块到模型。连接XY输出端口总线选择器块的输入端口xy图形块。

该图显示了已完成的模型。A.预先配置的模型是为了你的方便。

  • 注意:出版商在此模型中的块使用/ mobile_base /命令/速度与MATLAB模拟器选项一起使用的主题。对于凉亭模拟器选项,请选择/ cmd_vel如图所示的主题以上

配置并运行模型

  1. 建模选项卡上,单击模型设置.在求解器窗格中,设置类型固定步固定的大小0.01

  2. 设置模拟停止时间INF.

  3. 点击运行开始模拟。

  4. 在模拟器和XY图中,您应该看到机器人在一个圆圈中移动。

  5. 在模拟运行时,更改滑块获得阻止控制机器人。双击xy图形阻止并改变XY如果需要,轴限制。(您可以在模拟运行时进行此操作。)

  6. 若要停止模拟,请单击停止