PID循迹控制算法

本文详细介绍了PID控制在小车循迹中的应用,包括PID控制原理、传感器选择及控制策略等关键技术点,并提供了完整的代码实现。
该文章已生成可运行项目,

前言

 让小车进行循迹最重要的是获取车相对于循迹线的位置,关于循迹模块的原理我已经在之前的一篇博客上讲过,如果大家没看过的话可以点此链接:PID循迹模块原理

大家最关心的整车资料链接(百度云):整车资料链接
提取码:wki1

视频演示链接:视频演示链接

PID循迹原理简介

循迹车

图1 循迹车寻线行走图示

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

在这里插入图片描述

图2 市场常见的红外循迹传感器只能输出0和1

 所以这种传感器控制效果很差,速度慢了还好,速度稍微一块就会很容易偏离循迹线。如果我们需要实现更为精确的控制就需要引入比例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为微分时间常数。
在这里插入图片描述

图3 PID控制系统原理框图

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

图4 循迹小车控制原理系统框图

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			//赋值微分值
};	

本文章已经生成可运行项目
基于Arduino的循迹小车是一种经典的机器人项目,其核心是利用Arduino控制器引导小车沿着预设的黑色轨迹行进。其中,PID算法(比例-积分-微分算法)是实现精准循迹的关键技术。PID算法是一种自动控制反馈算法,通过实时调整小车的行驶速度和转向角度,使其能够精确地沿着设定路径行驶。P部分根据当前误差进行调整,I部分考虑累积误差,D部分预测误差趋势,三者结合使小车快速稳定地达到目标位置。 Arduino是一个开源电子平台,以简单易用的硬件和软件为基础,适合从初学者到专业人士的广泛用户群体。它包含多种易于编程的开发板,以及一个支持多种编程语言的IDE,极大地简化了电子项目的开发过程。在循迹小车中,通常会使用一组传感器(如红外或光敏传感器)作为循迹模块,这些传感器安装在小车前方,用于检测地面的黑白颜色差异,从而识别黑线并将数据反馈给Arduino。当小车偏离路径时,传感器读数发生变化,Arduino根据这些变化调整小车的行驶方向。 不同的赛道环境(如90度弯道、十字路口和S形弯道)对循迹小车提出了不同的挑战。例如,在90度弯道上,小车可能需要更大幅度的转向;而在S形弯道中,则需要更频繁且细腻的调整。因此,PID参数的优化至关重要,通常需要通过实验和调整来实现,以确保小车在各种环境下都能保持良好的循迹性能。 在实际开发中,Arduino代码需要完成初始化传感器、设置PID参数、处理传感器输入和控制电机输出等任务。通过不断调试和优化代码,可以提高小车循迹能力。同时,硬件的搭建也非常重要,包括传感器的布局、电机的选择和车轮的调整等,这些都会直接影响小车的性能。 基于Arduino的循迹小车是一个综合了电子、机械和控制理论的项目。它不仅展示了Arduino的灵活性和实用性,还体现了PID算法在自动化控制中的强大功能。通过持续的学习和实践,我们可以不断提升相关技能,开发出更智能、更精
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值