前言
让小车进行循迹最重要的是获取车相对于循迹线的位置,关于循迹模块的原理我已经在之前的一篇博客上讲过,如果大家没看过的话可以点此链接:PID循迹模块原理。
大家最关心的整车资料链接(百度云):整车资料链接
提取码:wki1
视频演示链接:视频演示链接
PID循迹原理简介

PID循迹的原理我们大致可以用常识性思维去思考下,如图1所示为循迹车寻线行走图示,现在小车要按照中间那条黑线循迹行走,如果车头往左偏则需要控制方向盘让车往右转,车头往又偏则需要让车往左转。但是仅仅只有左转和右转的话,车一到左边就向右转,一到右边就向左转,则车会来回在线左右晃动,速度一快就会偏离航向。这种循迹方法是最简单的方法,市场上常用的循迹传感器控制方法也就是这种,因为这种循迹传感器只能输出0或1,如图2所示。

所以这种传感器控制效果很差,速度慢了还好,速度稍微一块就会很容易偏离循迹线。如果我们需要实现更为精确的控制就需要引入比例P控制,也就是我们需要通过考验获取到线性输出的循迹传感器,获取到小车偏离黑线的程度,偏离的越远就向黑线方向转的程度就越大,偏离的越近就向黑线方向转的程度就越小,这就是引入比例P控制。但是转的时候又不能使小车转的过快,这就需要引入微分d控制,也就是PI转向控制器即可控制小车的循迹转向。小车在循迹的的时候有时也需要控制小车的循迹速度,控制小车的循迹速度需要PI速度控制器,前提当然我们也需要一个获取小车速度的传感器,也就是编码器,下面开始介绍下PID控制器原理。
PID控制器原理
PID控制器是一种线性控制方法,控制原理如图3-1所示,它根据给定值r(t)与实际输出值y(t)构成控制偏差e(t),即e(t)=r(t)-y(t)。对偏差进行比例、积分、微分运算,将三种运算结果相加,即可得到PID控制器的控制输出u(t)。在连续时间域中,PID控制器算法表达式如下:

式中:kp为比例系数,Ti为积分时间常数;Td为微分时间常数。

在循迹控制中,只需要PD控制器即可,公式中输入偏差e(t)为循迹传感器输出值,经过PD控制器后输出u(t)直接控制小车转向。在循迹控制中我们也需要控制循迹车的前进的速度,控制循迹车前进速度需要通过PI控制器来实现。循迹小车的整个控制原理系统框图如图所示。

PID控制器代码实现
PID控制器实现代码如下:
//定义pid结构体
struct PID
{
float kp;
float ki;
float kd;
};
typedef struct PID _PID;
//定义转向pid参数结构体
_PID TurnPdate=
{
.kp=100, //赋值比例值60
.ki=0, //赋值积分值
.kd=-34 //赋值微分值-45
};
//定义速度pid参数结构体
_PID SpdPdate=
{
.kp=-50, //赋值比例值-80
.ki=-6, //赋值积分值-10
.kd=0 //赋值微分值
};

本文详细介绍了PID控制在小车循迹中的应用,包括PID控制原理、传感器选择及控制策略等关键技术点,并提供了完整的代码实现。
最低0.47元/天 解锁文章
2057

被折叠的 条评论
为什么被折叠?



