主要内容

基于Simulink的露台差速驱动机器人控制万博1manbetx

这个例子展示了如何使用Simulink在Gazebo联合仿真中控制差动驱动机器人。机器人通过读取姿态和车轮编码器的位置来跟踪一组航路点,并生成扭矩控制命令来驱动它。万博1manbetx

要下载此示例中使用的虚拟机(VM),请参阅带有ROS和Gazebo的虚拟机.

对于凉亭共同仿真和第一次连接,请参阅在Simulink和Gazebo之间执行联合仿真万博1manbetx.

运行虚拟机

打开从安装的虚拟机带有ROS和Gazebo的虚拟机.

露台世界

此示例使用VM中给出的世界,diumerialialdriverobot.world.,作为具有默认物理设置的简单地平面。世界使用先锋机器人,默认控制器被移除,因此内置控制器不会与Simulink提供的扭矩竞争。先锋机器人在默认的露台安装中可用。Gazebo插件引用了连接Simulink所需的插件,如中所述万博1manbetx在Simulink和Gazebo之间执行联合仿真万博1manbetx.

双击露台差动驱动机器人偶像

替代,在终端中运行这些命令:

cd/home/user/src/GazeboPlugin/export-export-SVGA_VGPU10=0 gazebo../world/differenticsdriverobot.world

如果Gazebo模拟器无法打开,您可能需要重新安装插件。看见安装凉亭插件手动在里面在Simulink和Gazebo之间执行联合仿真万博1manbetx.

模型概述

打开模型:

Open_System(“GazeboDifferentialDriveControl”)

该模型有四个部分:

  • 眺望台步行者

  • 读取传感器数据

  • 控制移动机器人

  • 将致动数据发送到凉亭

眺望台步行者

本节建立与凉亭的连接。双击眺望台步行者块打开其参数,然后单击配置凉亭网络和仿真设置链接这将打开一个对话框。

指定IP地址为你的VM。默认情况下,眺望台连接在14581港口。点击试验按钮以验证与露台的连接。

如果测试不成功,请务必检查指令在Simulink和Gazebo之间执行联合仿真万博1manbetx并确保露台已正确配置,相关世界已启动并运行。

凉亭传感器输出

传感器从Gazebo输出读取的传感器数据,并将其传递到相应的Simulink块。XY图形绘制当前机器人位置,姿势数据保存到模拟输出中。万博1manbetx

这个阅读露台传感器子系统提取机器人姿势和车轮传感器数据。姿势数据是xy-坐标和用于方向的四元素四元数。车轮转速是根据车轮旋转时车轮位置的变化率计算的。

移动机器人控制

这个移动机器人控制部分接受一组目标航点,电流姿势和当前轮速,并输出具有机器人所需的车轮扭矩遵循追踪航点的路径。

有三个主要组件。

这个纯粹的追求块是一个控制器,指定在给定当前姿势的情况下,以固定速度跟随航路点所需的车辆速度和航向角速度。

这个设置车轮速度MATLAB功能块使用差分驱动机器人的运动学转换为左右车轮速度的车速和标题角速度:

φ. ˙ L = 1. R ( v - D 2. )

φ. ˙ R = 1. R ( v + D 2. )

φ. ˙ L φ. ˙ R 是左右车轮速度, v 是车速,, 是车辆前线角速度, D 是轨道宽度,以及 R 是车轮半径。此外,此MATLAB®功能还包括调节车轮速度的代码。自从纯粹的追求块在始终使用固定速度,在Matlab功能块内,有两个if-statement。当机器人在一定距离阈值内时,首先以与目标的距离成比例的速度减慢速度。第二个IF-DIUNAL在紧缩阈值时停止机器人。这有助于机器人来温和。

最后是先锋轮控制子系统使用比例控制器将所需的车轮转速转换为扭矩。

执行器扭矩指令

模型的最后一部分采用控制器生成的扭矩命令,并将其发送到使用来自的块来模拟万博1manbetxGazebo联合仿真库。

在该块中的每个子系统内公交车分配块用于将接头扭矩分配给正确的接头。

例如,内部左轮转台扭矩指令子系统,如上图所示,是一个凉亭空白消息与之ApplyJointTorque命令类型用于指定总线类型。该模型和联合名称由此提供露台选择实体块,链接到与露台世界中的左轮关联的关节,左车轮铰链.扭矩施加在整个步骤时间,0.01秒,以纳秒指定,因为这些输入必须作为整数提供。总线的输出传递给凉亭应用命令

模拟机器人

要运行模型,请初始化航路点并设置采样时间:

航路点=[0;42;37;-36];采样时间=0.01;

点击按钮或使用模拟命令运行模型。在执行期间,机器人应该在凉亭中移动,并且XY图更新在Simulink中观察到的姿势。万博1manbetx

这些图形绘制了一组航路点和机器人的最终执行路径。