利用闭环控制算法改进两轮汽车转向
这个例子展示了如何实现一个闭环控制算法,使两轮LEGO®MINDSTORMS®EV3车辆驱动更直。
简介
在使用独立车轮控制的车辆中,对每个车轮施加相同的功率通常不会导致车辆直线行驶。这是由每个轮子所经历的机械和表面差异引起的。为了减少车辆航向的偏差,一个更好的方法是使用一个闭环控制器,它根据两个电机的旋转差异来调整应用于两个电机的功率。其中一种控制器就是著名的比例-积分-导数(PID)控制器。
PID控制是一种基本的控制回路反馈机制。控制器通过调节系统控制输入,使所选系统变量的测量值与期望值之间的差值最小化。
本示例演示了控制算法的实现,首先是无反馈控制(开环控制),然后是基于P控制器的反馈控制(闭环控制)。
先决条件
完成两个开始使用LEGO MINDSTORMS EV3硬件的MATLAB支持包而且与EV3砖外设交互,读取传感器值和控制电机的例子。
所需的硬件
这个例子需要额外的硬件:
两台EV3大型电机
任务1 -设置硬件
1.用两个马达控制两个独立的轮子制造一辆汽车。将一台电机连接到输出端口“一个”另一个为输出端口“B”.例如,您可以在教育核心集中构建与打印的建筑说明中描述的类似的交通工具。
2.无线连接比USB线更容易与移动的车辆通信。因此,我们建议设置WiFi或蓝牙通信,如开始使用LEGO MINDSTORMS EV3硬件的MATLAB支持包的例子。
任务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车辆电机控制的实现。你学到了:
开环控制不能保证具有独立驱动车轮的车辆直线行驶。
闭环控制利用两个编码器输出之间的差值来同步两个轮子的转速。