使用Si金宝appmulink®控制在单独的基于ros的模拟器中运行的模拟机器人。
这个例子涉及一个实现简单闭环比例控制器的模型。控制器从模拟机器人(运行在单独的基于ros的模拟器中)接收位置信息,并发送速度命令来驱动机器人到指定位置。在模型运行过程中调整参数,观察对模拟机器人的影响。
下图总结了Simulink和机器人模拟器之间的交互(图中箭头表示ROS消息传输)。金宝app的/奥多姆
主题传递位置信息,而/ mobile_base /命令/速度
主题conveys速度命令。
步骤中的步骤从Simulink®连接到支持ros的机器人金宝app执行以下操作:
启动MATLAB®或Gazebo®机器人模拟器。
配置Simulink金宝app以连接到ROS网络。
连接到ROS网络后,打开示例模型.
Open_System(“robotROSFeedbackControlExample.slx”);
该模型实现了差动驱动移动机器人的比例控制器。在每一个时间步长,算法将机器人定位到所需的位置并驱动它前进。一旦到达目标位置,算法就会停止机器人。
Open_System(“robotROSFeedbackControlExample /比例控制器”);
注意,模型中有4个可调参数(由彩色块表示)。
期望的位置(在模型的顶层):所需的位置(X, Y)
坐标
距离阈值:如果距离目标位置比这个距离近,机器人就会停止
线速:机器人的前向线性速度
增益:修正机器人方向时的比例增益
该模型也有一个仿真速度控制块(在模型的顶层)。此块确保模拟更新间隔遵循时钟运行时间。
在机器人模拟器中运行模型并观察机器人的行为。
在屏幕上定位窗口,以便可以同时观察Simulink模型和机器人模拟器。金宝app
点击玩开始模拟。
在模拟运行时,双击所期望的职位阻止并改变不变
价值3 [2]
.观察机器人改变了它的标题。
虽然模拟正在运行,但打开比例控制器子系统并双击线速度(滑块)块。将滑块移动到2
.观察机器人速度的增加。
点击停止结束模拟。
使用基于matlab的模拟器来观察传入消息的时间和速率。
关闭任何现有的机器人模拟器图窗口。
点击玩开始模拟。
打开范围块。观察到的是新的
的输出订阅块总是0
,表示没有接收到任何消息/奥多姆
话题。绘图的水平轴表示模拟时间以秒为单位。
在matlab命令行,键入ExampleHelper金宝appSimulinkRobotROS
启动基于matlab的机器人模拟器。这个模拟器发布/奥多姆
大约消息20.
Hz在墙上时钟经过时间。
在Scope显示中,观察是新的输出值为1
大约以…的速度20.
时间/秒,单位为经过的墙壁时钟时间。
与壁钟时间的同步是由于仿真速度控制块。通常,Simulink仿真金宝app在一个自由运行的循环中执行,其速度取决于模型的复杂性和计算机速度(参见模拟循环阶段(金宝app模型))。的仿真速度控制块尝试调节Simulink执行,以便每个更新都需要金宝app0.02
墙上的秒钟秒表可能。(这等于模型的基本采样时间。)有关更多信息,请参阅块内的注释。
此外,启用子系统比例控制器和命令速度出版商确保模型只对真正的新消息作出反应。如果启用的子系统没有被使用,模型将重复地处理相同的(最近收到的)消息,导致浪费的处理和命令消息的冗余发布。