主要内容

采用闭环控制算法改进两轮汽车的转向

这个例子展示了如何实现闭环控制算法,使两轮乐高®MINDSTORMS®EV3™车辆驾驶直管。

介绍

在使用独立车轮控制的车辆中,对每个车轮施加相同的动力通常不会导致车辆直线移动。这是由于机械和表面差异经验的每个车轮。为了减少车辆航向的偏差,一个更好的方法是使用一个闭环控制器,该控制器根据两个电机旋转的不同调整功率。其中一个这样的控制器是众所周知的比例-积分-微分(PID)控制器。

PID控制是一种基本的控制回路反馈机制。该控制器通过调整系统控制输入,使所选系统变量的测量值与期望值之间的差异最小化。

这个例子演示了控制算法的实现,首先是无反馈控制(开环控制),然后是基于P控制器的反馈控制(闭环控制)。

先决条件

完成两个LEGO®MINDSTORMS®EV3™硬件MATLAB®金宝app支持包入门与EV3砖外设交互,读取传感器值,控制电机的例子。

所需的硬件

这个例子需要额外的硬件:

  • 两个EV3大型马达

任务1 -设置硬件

1.用两个马达来控制两个独立的轮子。连接一个电机到输出端口“一个”另一个输出端口“B”.例如,您可以构建与教育核心集中打印的构建说明中所描述的类似的车辆。

2.通过无线连接与行驶中的车辆通信比通过USB连接线更容易。因此,我们建议设置WiFi或蓝牙通信,如所述LEGO头脑风暴EV3硬件MATLAB支持包入门金宝app的例子。

任务2 -打开和运行开环控制MATLAB脚本

1.打开开循环控制脚本模板。

编辑(“gostraight_openloop.m”)

该代码将两个电机设置为相同的速度,并在执行过程中保持不变。

2.运行脚本。

点击运行按钮运行开环控制脚本。执行时间为10秒

EXE_TIME = 10

3.用开环系统观察偏差。

该脚本为两个轮子指定了相同的速度。然而,机械和环境条件使车轮以不同的速度旋转,导致车辆偏离直线路径。

任务3 -打开和运行闭环控制MATLAB脚本

1.打开闭环控制脚本模板。

编辑(“gostraight_closeloop.m”)

该代码读取每个轮子上的编码器,计算每个轮子的转速之间的比例差,并通过调整一个电机的速度来补偿这个差。

2.运行脚本。

点击运行按钮运行闭环控制脚本。执行时间为10秒

EXE_TIME = 10

3.用闭环系统观察偏差。

观察到,采用闭环反馈控制系统时,车辆运动直线比使用开环控制时。

任务4 -其他可以尝试的事情

1.改变初始速度设置,并相应地调整P参数

速度= 20 p = 0.01

使车辆直线行驶。

2.用积分和导数参数改进控制算法。

总结

本实例演示了两轮EV3汽车电机控制的实现。你知道:

  • 开环控制并不能保证车辆的直线行驶与独立动力车轮。

  • 闭环控制使用两个编码器输出之间的差异来同步两个轮子的旋转速度。