主要内容

ROS- enabled Robot Over ROS 2的反馈控制

这个例子向您展示了如何使用Simulink®来控制运行在Gazebo金宝app®机器人模拟器通过ROS 2网络的模拟机器人。

介绍

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

下图总结了Simulink和机器人模拟器之间的交互(图中的箭头表示ROS 2消息传输)金宝app/奥多姆主题传递位置信息,而/cmd_级主题传达速度命令。

任务1-启动机器人模拟器并配置Simulink金宝app

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

  1. 使用中的说明下载虚拟机开始使用凉亭和模拟乌龟机器人

  2. 在Ubuntu桌面中,单击露台空图标开始空荡荡的露台世界。

  3. 单击罗斯桥(冲刺)图标启动ROS桥接,在Simulink ROS 2节点和Turtlebot3 ROS支持的机器人之间传递消息。金宝app

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

塞滕夫(“ROS\u域\u ID”,'25')罗斯2(“主题”,“列表”)
/clock /cmd_vel /gazebo/link_states /gazebo/model_states /imu /joint_states /odom /parameter_events /rosout /rosout_agg /scan /tf

任务2-打开现有模型

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

open_system (“robotROS2FeedbackControlExample.slx”);

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

open_system (“robotROS2FeedbackControlExample /比例控制器”);

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

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

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

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

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

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

任务3-配置Simulink并运行模型金宝app

在本任务中,您将配置Simulink通过ROS 2与启用ROS的机金宝app器人模拟器通信,运行模型并在机器人模拟器中观察机器人的行为。

配置ROS 2的网络配置。

  • 模拟选项卡,在准备选择ROS工具箱>ROS网络

  • 配置ROS网络地址,将ROS 2域ID值设置为25

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

运行模型。

  • 在屏幕上定位窗口,以便可以观察Simulink模型和机器人模拟器。金宝app

  • 单击Simulink中的“播放”按钮以开始模拟。金宝app

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

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

  • 单击Simulink中的停止按钮以停止模拟。金宝app

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

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

  • 单击Simulink中的“播放”按钮以开始模拟。金宝app

  • 打开Scope块。观察到的IsNew的输出订阅block始终为零,表示未收到/odom主题的任何消息。绘图的水平轴表示模拟时间。

  • 在ROS网络中启动Gazebo模拟器,在ROS 2中启动ROS桥接器,以便ROS 2网络能够接收Gazebo模拟器发布的消息。

  • 在示波器显示中,观察IsNew输出值为1,以大约每秒20次的速度输出,以墙钟时间为单位。

与wall-clock时间同步是由于模拟速率控制块通常,Simulink模拟在自由运行的金宝app循环中执行,其速度取决于模型的复杂性和计算机速度(请参阅)模拟环路相位(金宝appSimulink))。这个模拟速率控制block试图调节Simulink执行,以便在可能的情金宝app况下,每次更新都需要0.02秒的壁钟时间(这等于模型的基本采样时间)。更多信息请参阅区块内的注释。

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

总结

这个例子向你展示了如何使用Simulink对一个模拟机器人进行简单的闭金宝app环控制。它还展示了如何使用Enabled子系统来减少ROS 2网络中的开销。