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