这个例子向您展示了如何使用Simulink®来控制运行在Gazebo金宝app®机器人模拟器通过ROS 2网络的模拟机器人。
在这个例子中,你将运行模式,实现了一个简单的闭环比例控制器。所述控制器从模拟机器人接收位置信息,并发送速度命令给机器人驱动到指定的位置。该模式运行时,你会调整一些参数,观察对仿真机器人的效果。
下图概括Simulink和机器人模拟器(图中的箭头表示ROS 2消息传输)之间的相互作用。金宝app这/奥多姆
主题传达的位置信息,/ cmd_vel
主题传达速度命令。
在此任务中,您将开始对差分驱动机器人基于ROS-模拟器,开始与机器人仿真的ROS桥配置MATLAB®连接。
下载使用说明虚拟机开始使用凉亭和模拟乌龟机器人.
在Ubuntu桌面,单击露台空图标开始空荡荡的露台世界。
单击ROS桥(短跑)图标启动ROS桥接,在Simulink ROS 2节点和Turtlebot3 ROS支持的机器人之间传递消息。金宝app
在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
连接到ROS 2网络后,打开示例模型.
open_system (“robotROS2FeedbackControlExample.slx”);
该模型实现了差分驱动移动机器人比例控制器。每个时间步长,该算法定向朝向所期望的位置和向前驱动它的机器人。一旦达到所需的位置,则算法停止机器人。
open_system (“robotROS2FeedbackControlExample /比例控制器”);
请注意,有模型4个可调参数(由彩色方块表示)。
期望位置(模型的顶层):在(X,Y)坐标中期望的位置
距离阈值:如果它是从所希望的位置比该距离更近的机器人停止
线速度:机器人向前的线速度
增益:比例增益校正机器人方位时
该模型还具有模拟速率控制块(在模型的顶层)。此块确保模拟更新间隔遵循墙壁时钟运行时间。
在此任务中,您将配置的Simulink在ROS 2启用ROS机器人金宝app仿真器进行通信,运行模型,观察机器人仿真机器人的行为。
配置ROS 2的网络配置。
在下面模拟选项卡,在准备, 选择ROS工具箱> ROS网络.
在配置ROS网络地址中,设置ROS 2域ID值,以25..
点击好吧应用更改并关闭对话框。
运行模型。
在屏幕上的位置的窗口,这样就可以观察到两个Simulink模型和机器人模拟器。金宝app
点击Simulink中的播放按钮开始模拟。金宝app
在模拟运行时,双击期望的职位框并改变恒定值[2 3]
.观察机器人改变了它的方向。
在模拟运行时,打开比例控制器子系统和上双击线速度(滑块)块。将滑块移动到2。观察机器人速度的增加。
点击在Simulink停止按钮停止模拟。金宝app
在此任务中,您将观察传入消息的时间和速率。
点击Simulink中的播放按钮开始模拟。金宝app
打开Scope块。观察到的IsNew的输出订阅块总是零,表明正在接收用于/奥多姆主题没有消息。图的水平轴表示模拟时间。
开始凉亭模拟器中ROS网络和ROS 2开始ROS桥梁,让ROS 2网络,能够接收模拟凉亭发布的消息。
在Scope显示,观察到IsNew输出值为1,以大约每秒20次的速度输出,以墙钟时间为单位。
与wall-clock时间同步是由于模拟速率控制块。通常,在一个自由运行的循环金宝app,其速度的Simulink仿真执行依赖于模型和计算机速度的复杂性(见仿真循环阶段(金宝appSimulink中))。这模拟速率控制block试图调节Simulink执行,以便在可能的情金宝app况下,每次更新都需要0.02秒的壁钟时间(这等于模型的基本采样时间)。更多信息请参阅区块内的注释。
此外,对于比例控制器和指令速度出版商启用子系统确保模型仅反应真正的新的消息。如果不使用启动子系统,该模型将反复一遍遍处理相同(最近最常收到的)消息,导致浪费的处理和指挥信息的冗余发布。
这个例子向你展示了如何使用Simulink对一个模拟机器人进行简单的闭金宝app环控制。它还展示了如何使用Enabled子系统来减少ROS 2网络中的开销。