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