当前位置:首页 > 作文大全 >

自适应智能循迹车的控制算法研究与实现

发布时间: 2022-03-19 09:45:25 浏览:

摘 要:为了克服传统循迹车控制算法中参数固定以及环境适应性不强的问题,提出了一种基于嵌入式CPU的自适应智能循迹车控制算法。该方法将参数列表引入到传统PID控制理论中,在车辆的运行过程中,CPU周期性的读取外围传感器数据并计算误差信息,同时根据车辆运行状态,遍历列表中的PID参数,选取环境适应性最好的一组作为当前控制参数。实验表明,该方法具有较强的环境适应性,同时大大降低了算法调试的工作量。

关键词:STM32;PID算法;差速控制;串行通讯

中图分类号:TP391.4 文献标志码:A 文章编号:2095-2945(2018)22-0019-03

Abstract: In order to overcome the problem of fixed parameters and weak environmental adaptability in traditional tracking vehicle control algorithms, an adaptive intelligent tracking vehicle control algorithm based on embedded CPU is proposed. The method introduces the parameter list into the traditional PID control theory. During the running of the vehicle, the CPU periodically reads out the peripheral sensor data and calculates the error information. At the same time, according to the running status of the vehicle, it traverses the PID parameters in the list and select the best environmental adaptability group as the current control parameters. Experiments show that this method has strong environmental adaptability and greatly reduces the workload of algorithm debugging.

Keywords: STM32; PID algorithm; differential control; serial communication

1 概述

近年來,由于国内的许多企业纷纷酝酿建立自动化物流系统,作为柔性运输的理想工具和无人生产的典型代表,自动导引车得到了越来越多的重视和推广应用。其研究不断深入,涉及的领域不断扩展,其中对导引与定位等运动控制技术的研究一直是导引车研究领域的重点。当前,低成本、小型化的自动导引车研究得到了越来越多的重视,尤其是智能化的导引运动控制,已经成为研究领域的热点。因此对自动导引车的运动控制进行深入研究具有重要的理论和实际意义。南宁职业技术学院的周文军在其双轮驱动智能小车循迹算法研究中采用PID控制算法让机器人小车对白条循迹稳定,纠偏能力强。但这种算法的PID参数不易整定,当机器人小车平台改变后,需要重新整定PID参数。为了克服传统循迹车控制算法中参数固定以及环境适应性不强的问题,本文提出了一种基于嵌入式CPU的自适应智能循迹车控制算法。该方法将参数列表引入到传统PID控制理论中,在车辆的运行过程中,CPU周期性的读取外围传感器数据并计算误差信息,同时根据车辆运行状态,遍历列表中的PID参数,选取环境适应性最好的一组作为当前控制参数。

2 系统描述

本次设计的智能循迹小车采用四轮驱动的工作方式,以左右轮差速控制的方式实现转向的智能小车;小车的左侧后轮和右侧后轮分别安装了编码器用来实时获取左右轮的速度,小车前端安装有用于探测黑色线路的循迹传感器。

3 算法设计

本设计的整个程序大致可分为四大模块:主程序模块,定时中断服务程序模块,外部中断服务程序模块和USART3接收中断服务程序模块。其中主程序以及定时中断服务程序实现流程如图1所示,程序一开始进行初始化,设置时钟,配置GPIO口,绑定中断服务程序,然后主程序等待中断;整个程序的实际工作流程是,每1ms执行一次定时中断服务程序,与此同时,编码器产生的外部中断使得外部中断服务程序被调用,两个外部中断服务程序对两个编码器的中断进行计数;定时中断服务程序被调用时,第1ms给传感器发送请求数据帧;第2ms根据两个编码器中断的计数值计算小车左右轮的实际速度,并将两个计数值清零,与此同时,传感器回传的数值给控制器,将产生串口接收中断,串口接收中断服务程序将被调用来处理接收到的数据帧,并提取出数据帧中传感器的状态值;第3ms分析接收到的传感器的状态值,并对数值进行分类处理;第4ms处理分类后的数值,得到小车偏离黑线的距离,并应用PID算法计算出所有调整的左右轮的目标速度。第5ms根据实际速度与目标速度,应用PID算法计算出回传给电机驱动的数值,并通过串口发送数据帧。因此,整个过程总的来说就是控制器每5ms获得一次传感器处置和小车左右轮速度,并通过计算来调整一次左右轮速度。

3.1 PID算法实现

循迹小车运动控制属于刚体运动控制,对控制实时性和稳定性要求较高,可以采用PID控制实现较高的控制质量。离散化的位置型PID算法的偏差值量化了循迹小车在行驶过程中偏离路线的程度,便于程序实现。循迹小车方向的PID控制如图2虚线上半部分,通过PID算法,改变左右两侧驱动轮的速度来修正方向。循迹小车速度的PID控制如图2下半部分,根据两轮实际速度与给定速度,通过PID算法,使速度稳定。如图2所示,将上述两个PID控制算法串联在一起,将主PID的输出量TargetSpeed作为副PID算法的速度给定量。同步采样控制调节小车方向和小车行驶的速度,使小车在弯曲的线路上既稳定又保持高速地行驶。通过实时的位置与速度反馈,提高系统的工作频率,使振荡周期减小,调节时间缩短,系统的快速性、稳定性增强。为了克服传统PID算法环境适应性差的问题,本系统在设计与调试中分别选取了不同的环境。根据不同环境以及不同PID参数控制下车辆表现出来的性能,记录得到不同的PID控制参数,并将其制成表格,写入CPU内存中。当车辆进入新的环境中时,CPU遍历表中的控制参数,选取环境适应性最好的一组作为当前控制参数。

3.2 循迹模块的数据处理

循迹模块以数字信号输出,探测到黑线时输出高电平,对应指示灯亮;反之输出低电平,对应指示灯灭。7个传感器感应范围r=3mm,测得黑线宽度D=17mm,传感器的间距分别为15mm、17.5mm、15mm、15mm、17.5mm、15mm。对于此次7个传感器组的布置方式,剔除一些不符和实际的信号组合(例如010 1010 、101 1011等)。得到有效的信号组合16个。其中有14种直线或近似直线行驶的信号组合以及大角度转弯时的两种情况(1111000和0001111)。如图3所示(di的长度表示对应第i种情况的移动位置范围,其中i=1,2,…,13,且di的長度可以实际测量和计算),14种直线或近似直线行驶的信号组合:仅一个指示灯亮(L1,L2,L3,L4,L5,L6,L7),仅两个相邻的指示灯亮(L1L2,L2L3,L3L4,L4L5,L5L6,L6L7)以及全灭。小车的实际位置不是一个精确值,可以是某个区间内的任意位置。由小车偏移趋势决定此刻实际位置,可降低位置波动,使数据相对稳定,有利于进一步的速度以及方向调节系统更加稳定。相对上一时刻,小车向右移动,实际位置=此刻区间的最远位置,小车向左移动,实际位置=此刻区间的最近位置,小车保持方向,实际位置=此刻区间的平均位置(最远和最近是实际位置波动区间相对于循迹板正中间位置而言的)。

对于第14,15,16种情况,即000 0000,111100和0001111的情况,实际位置的确定方法如下:第15种(111 1000)近似于第1种,实际位置=第1种(100 0000)的最远位置-X;第16种(000 1111)近似于第13种,实际位置=第13种(000 0001)的最远位置+X;第14种(000 0000),若上一时刻小车偏右,实际位置=等同于第15种的实际值,若上一时刻小车偏左,实际位置=等同于第16种的实际值(参数X的值很小,可以根据实际情况调整)。

4 硬件设计

小车整体设计如图4所示,智能循迹小车由STM32F103控制器核心模块、传感器模块、电机模块、电机驱动模块、测速模块和电源模块六大模块组成。循迹传感器模块采用一个7路光电传感器探测黑色线路,电机模块采用4个14.5V直流减速电机,PWM方式驱动控制,电机驱动模块采用两个电机驱动分别控制智能车左侧两个轮子的速度和右侧两个轮子的速度,测速模块采用两个334线AB相编码器,分别测量智能小车左侧后轮的实时速度和右侧后轮的实时速度;电源模块采用一个7.4V锂电池给控制器以及传感器供电,一个14.5V锂电池驱动四个电机。

4.1 主控模块

主控模块使用的是基于 STM32F103的微控制器,智能小车各个模块与STM32微控制器的具体接线如图5所示,STM32上的PC0与PC1引脚设置为外部中断,分别用来响应两个编码器A相的中断信号;PC2与PC3引脚设置为输入模式,用来接收两个编码器B相的电平信号;PB10,PB11,PE14,PE15则分别设置为USART3的接收与发送端口以及USART3接收使能信号和发送使能信号;这四个引脚的信号经过图中Digital Servo模块将发送信号和接受的信号分时送到串行总线BUS UART上;循迹传感器以及两个电机驱动都挂载到串行总线上与STM32微控制器通讯。

4.2 循迹模块与电机驱动模块

循迹模块由七个红外反射式传感器组成,每个传感器都对应一个电位器,通过调节电位器的阻值对循迹板上的七个传感器的灵敏度进行调节。经过对电位器多次调节,使得传感器距离地面的距离大约6mm时,每个传感器感应周围3mm以内的黑色胶带。电机驱动模块根据STM32微控制器传来的数据(-1023~1023)来调节PWM占空比,从而来调整电机的速度,数据的正负分别表示电机正转和反转。另外循迹板与电机驱动都采用串行的方式与STM32微控制器通讯,循迹板的通讯协议格式与电机驱动通讯协议格式相同,都是字头(0XFF 0XFF)+ID+有效数据长度+指令+参数+校验和,循迹板的 ID 地址固定为0x00,两个电机驱动的ID地址通过软件分别设置为0x01和0x02,波特率都为 1000000,因此循迹板通过固定一条固定的协议即可请求 7 个传感器的状态,通讯协议格式具体为FF FF 00 04 02 32 01 C6(请求返回7个传感器状态指令),检验 0xC6=~(0x00+0x04+0x02+0x32+0x01);返回协议为:FF FF 00 03 00 1C D0,校验 0xD0=~(0x00+0x03+0x00+0x1C),返回值中0X30即为循迹板7个传感器的状态(低7位为有效),0x1C转为二进制为1110000(最高位无效)即传感器1、2、3、4检测的白色(从循迹板上方看传感器从左到右为1~7,分别对应返回值的1~7位)。电机驱动的协议相对于循迹板只是指令部分与参数部分不同,其参数部分即为-1023~1023之间的16进制数值。

4.3 测速模块

测速模块采用两个334线AB相编码器,AB相共输出两路正交(相位相差90°)脉冲信号。当A相有脉冲产生时,通过检测B相的电平信号即可判断电机是正转还是反转,另外334线指电机每转一圈,AB相将能分别产生334个脉冲信号,精度高,足够满足智能循迹小车的测速要求。

5 实验结果

经测试表明,小车在不同的环境下,通过遍历列表中的PID参数,选取环境适应性最好的一组作为当前控制参数,实现预期循迹功能,沿设定路径快速稳定的完成循迹任务。主要有以下几个方面的优点:左侧两个轮和右侧两个轮分别驱动,以左右轮差速控制的方式实现转向的智能小车;小车的左侧后轮和右侧后轮分别安装了编码器用来实时获取左右轮的速度。将七个光电传感器的数字量组合起来将以前只能确定小车偏离黑色线的7个位置增加到14个位置,将传感器由原来离散性很大的数据处理为离散性小的数据,即将小车的位置偏离黑线的距离应用软件的方法得到了更加精确更多的数据。另外,我们获得了小车距离黑线的距离后,采用自适应PID串级闭环控制方式,增加了系统的稳定性,增强了小车适应不同环境的能力;小车自动控制自己的运动状态,实现了快速稳定自动循迹的目的。为了使小车更加智能化,还可为小车扩展避障、复杂线路选择、自动制动等功能。

参考文献:

[1]卢杉.基于单片机的差速驱动导引小车运动控制[D].西安理工大学,2010.

[2]张猛,丁爱国,陈欣欢.基于单片机的智能循迹小车设计[J].山东工业技术,2017(08):281.

[3]赵涓涓,杜麒麟,屈明月,等.智能小车的无支路循迹算法设计[J].计算机应用与软件,2013,30(06):147-149+201.

[4]STM3210x参考手册[Z].

相关热词搜索: 算法 自适应 控制 智能 研究

版权所有:无忧范文网 2010-2024 未经授权禁止复制或建立镜像[无忧范文网]所有资源完全免费共享

Powered by 无忧范文网 © All Rights Reserved.。冀ICP备19022856号