主要内容

ROS机器人在ROS 2上的反馈控制

此示例演示如何使用Simulink®控制通过ROS 2网络在Gaze万博1manbetxbo®机器人模拟器中运行的模拟机器人。

介绍

在本例中,您将运行一个实现简单闭环比例控制器的模型。控制器接收模拟机器人的位置信息,并发送速度指令将机器人驱动到指定位置。您将在模型运行时调整一些参数,并观察对模拟机器人的影响。

下图总结了Simulink与机器人模拟器之间的交互(图中的箭头表示ROS 2消息传输)。万博1manbetx的/奥多姆主题传递位置信息,而主题/ cmd_vel主题传达速度命令。

任务1 -启动机器人模拟器并配置Simulink万博1manbetx

在本任务中,您将启动一个基于ROS的差动驱动机器人模拟器,启动ROS桥,配置MATLAB®与机器人模拟器的连接。

  1. 使用中的说明下载虚拟机开始使用露台和模拟的高跷机器人

  2. 在Ubuntu桌面上,单击露台空着图标开始空露台世界。

  3. 点击ROS桥(的)启动ROS桥接器的图标,以在Simulink ROS 2节点和Turtlebot3 ROS启用机器人之间中继消万博1manbetx息。

  4. 在MATLAB命令窗口中,设置ROS_DOMAIN_ID环境变量来25要匹配机器人模拟器ROS桥接器设置并运行ros2主题列表验证机器人模拟器中的主题在MATLAB中可见。

setenv (“ROS_DOMAIN_ID”“25”) ros2 (“主题”“列表”
/clock/cmd_vel/gazebo/link_states/gazebo/model_states/imu/joint_states/odom/parameter_events/rosout/rosout_agg/scan/tf

任务2 -打开现有模型

连接到ROS 2网络后,打开示例模型

开放式系统('robotROS2FeedbackControlExample.slx');

该模型实现了差动驱动移动机器人的比例控制器。在每一个时间步长上,算法将机器人定位到期望的位置,并驱动机器人前进。一旦到达期望的位置,算法就会停止机器人。

开放式系统(“Robotros2反馈控制示例/比例控制器”);

注意,模型中有四个可调参数(由彩色块表示)。

  • 所需位置(模型顶层):在(X,Y)坐标中的所需位置

  • 距离阈值:如果机器人距离目标位置的距离小于此阈值,则机器人将停止运行

  • 线速度:机器人的前进线速度

  • 增益:校正机器人方向时的比例增益

该模型还具有仿真速度控制块(在模型的顶层)。此块确保模拟更新间隔遵循挂钟运行时间。

任务3 -配置Simulink并运行模万博1manbetx型

在这个任务中,你将配置Simulink,通过ROS 2与支持ROS万博1manbetx的机器人模拟器通信,运行模型并在机器人模拟器中观察机器人的行为。

为ROS 2配置网络设置。

  • 模拟标签,在准备中,选择ROS工具箱> ROS网络

  • 在里面配置ROS网络地址,设置“ROS 2 Domain ID”为25

  • 点击好啊应用更改并关闭对话框。

运行模型。

  • 将窗口放置在屏幕上,以便您可以同时观察Simulink模型和机器人模拟器。万博1manbetx

  • 在Simulink中单击Play按钮开始模拟。万博1manbetx

  • 在模拟运行时,双击期望位置块并将常量值更改为3 [2].观察机器人是否改变了方向。

  • 在模拟运行时,打开比例控制器并双击线速度(滑块)阻塞。将滑块移动到2。观察机器人速度的增加。

  • 在Simulink中单击Stop按钮以停止模拟。万博1manbetx

任务4 -观察传入消息的速率

在本任务中,您将观察传入消息的时间和速率。

  • 在Simulink中单击Play按钮开始模拟。万博1manbetx

  • 打开范围块。注意是新的输出订阅块总是0,表示没有接收到/odom主题的消息。图的横轴表示模拟时间。

  • 在ROS网络中启动Gazebo Simulator,并在ROS 2中启动ROS Bridge,使ROS 2网络能够接收由Gazebo Simulator发布的消息。

  • 在Scope显示中,观察是新的输出值为1,大约每秒20次,以已用的挂钟时间为单位。

与挂钟时间的同步是由于仿真速度控制块。典型地,Simulink仿万博1manbetx真在一个自由运行的循环中执行,其速度取决于模型的复杂性和计算机速度(参见模拟循环阶段(万博1manbetx模型))。的仿真速度控制块尝试调节Simulink执行,以便在可能的情况下,每万博1manbetx次更新都需要0.02秒的挂钟时间(这等于模型的基本采样时间)。有关详细信息,请参见块内的注释。

此外,比例控制器和命令速度发布者的Enabled子系统确保模型只对真正的新消息作出反应。如果未使用启用的子系统,则模型将反复处理相同(最近接收到的)消息,从而导致浪费的处理和命令消息的冗余发布。

总结

本示例向您展示了如何使用Simulink对模拟机器人进行简单的闭环控制万博1manbetx。它还展示了如何使用启用的子系统来减少ROS 2网络中的开销。