刘昌林
苏州大学机电工程学院 江苏苏州 215007
随着当今世界信息化技术的不断发展和进步,人工智能也在不断地飞速发展,同时也受到人们日益的关注。其中智能小车是人们关注和研究的热点方向之一,它可以帮助人们完成许多事情,尤其是在一些复杂和危险的路况环境中可以发挥更加重要的作用。比如,它可以帮助人们完成货物搬运、设备检测、路况探寻、人员搜救等任务。对智能小车而言,要使其完成人们所需要的功能,正确地行驶在人们规划好的路线并躲避障碍物是智能小车技术实现的关键所在。
智能小车技术实现的重点问题在于:(1)智能避障。(2)自动循迹。基于此背景,本文以STM32单片机为控制核心,设计了一辆可以在规定路线上行驶的小车,利用传感器采集信息并将该信息传送给单片机,单片机通过改变PWM的占空比可以控制电机转子的转速,同时配合PID速度控制算法,可以实现小车在直道加速和弯道减速的控制,从而实现小车循迹的稳定性和速度的提升。小车上安装一个光电编码器,通过光电编码器获取小车速度并反馈给单片机,单片机对收集到的信息进行处理,并控制电机进行加速或减速运动,从而实现小车速度的闭环控制。小车头部装有两个红外传感器,通过红外传感器检测障碍物来实现小车的避障功能。
本设计的智能避障小车是以单片机为控制核心,控制驱动电机运动,并通过传感器采集路线信息和障碍信息传送到单片机,单片机接收信息以后控制电机实现循迹和避障。小车的总体设计构成图如图1所示。
图1 系统总体设计框图
本设计的控制模块是以单片机为核心,采用STM32系列微处理器芯片的LBT-4控制器,STM32微处理器的程序存储器为512k。并通过LBT-4型控制器上的USB接口进行程序的烧录。该控制器上还装有显示屏,其与按键配合可以选择相应的模式。
本设计采用四个伺服电机,用以驱动左右两边的四个轮子,使其实现小车的运动。由于单片机引脚输出高,电平信号比较弱,直接驱动使小车运动较为困难,所以我们增加了一个LBT-4型大功率驱动器,LBT-4型大功率驱动器的工作电压为4~36V,该大功率驱动器输入电压需与所驱动的电机电压相匹配。输入电压低于电机电压时,会使驱动能力下降,过高时,会使电机使用寿命减少或烧毁。且LBT-4型大功率驱动器可以与控制器直接相连,从而方便对其进行控制。LBT-4型大功率驱动器可以通过电机驱动端口驱动四个电机正常运行,并控制其只能单向转动,单向转动时每路的最大驱动电流为5A。
当8通道集成灰度传感器检测到弯道时,通过单片机改变PWM的占空比控制四个电机的转速以及转向,从而实现转弯。通过PID闭环速度控制算法,可以实现电机在直道加速和弯道减速。在给大功率驱动器供电时,最好通过稳压模块稳压后再给大功率驱动器供电,这样可以使电机的转速高低不受电压高低的影响。
传感器能够很好地获取小车前方的路况信息,并将采集到的信息实时反馈给单片机进行处理,对小车进行控制。循迹路线是在地面上提前设置好的白色引导线,小车通过8通道集成灰度传感器来采集灰度信息。该8通道集成灰度传感器上有多组发光二极管,点亮发光二极管照到白色引导线上,由于光在白色引导线和其他颜色的线上的反射系数不同,所以其反射光的程度也大不相同,从而传感器接收到的光的变化曲线不同,就实现了引导线的区分,即实现灰度信息的采集。之后传感器将采集到的信息传递给单片机,单片机读取传感器的信息来判断相应的动作,并经过内部信号处理后,送出一个信号给电机,控制电机驱动实现小车前进、转弯等功能,完成循迹,并通过小车头部的两个红外传感器检测障碍物。红外线在不同颜色的物体表面具有不同的反射性质,当红外传感器采集到障碍物的信息时,传感器将该信息传递给单片机,单片机进行内部处理,并控制电机完成相应的动作实现避障。
本设计系统软件程序采用模块化结构,由主程序、电机控制程序端口操作程序、串口操作程序、系统延时程序、多任务操作程序等构成。主要功能是单片机通过对传感器信号的接收,并控制驱动电机进行速度调节和转弯,从而实现小车的避障和循迹。但小车由于硬件的安装和路况的影响,会使其速度在实际运动过程中与设定值产生偏差。这会对电机产生损耗并对小车循迹避障功能的稳定性产生一定的影响,所以我们在小车上安装有一光电编码器,通过实时获取小车的速度反馈给单片机,从而实现小车速度的闭环控制。主程序流程图如图2所示。
图2 主程序流程图
在小车运动过程中,通过传感器对跑道的识别和检测,实现在直道加速、弯道减速,并且在半径不同的弯道其速度也是不同的,这就需要控制电机转速实现相应的功能。在小车的运动过程中我们通过光电编码器反馈当前速度值,并通过PID算法进行调节,实现闭环控制。其控制系统原理图如图3所示。
图3 控制系统原理图
模拟PID调节器的控制规律如式(1)所示:
(1)
将模拟PID控制规律离散化为式(2):
(2)
(3)
由数字PID位置式(3)推导出PID增量式(4):
()=[()-(-1)]+()+
[()-2(-1)+(-2)]
(4)
式中()、(-1)、(-2)分别为第k次、k-1次和k-2次的偏差值。
在PID处理的过程中,每次计算完(),需要将其赋值给电机控制对应的PWM通道信号,通过PWM信号值的改变,实现电机速度的改变。同时提前设定好PWM信号的最大值和最小值,保证()的取值处于最大值和最小值的区间内,若()的值大于最大值,则()的值用最大值取代,若()的值小于最小值,则()的值用最小值取代。
当小车在直道运动时,设置其为加速或匀速运动,速度设定值满足小车实现以最大速度进入弯道,当小车驶出弯道后进入直道,其速度增加。小车速度设定如式(5)所示:
(5)
其中:补偿效果系数;调速补偿变量。
当小车进入弯道时,出于对小车稳定性的考虑,以及循迹的稳定性和可靠性,需对小车进行减速控制。应将小车速度在原来的直道速度设定值的基础上,将小车的速度降低至低速运行的设定值,从而确保小车能够更加平稳地进入和驶出弯道。小车速度设定公式如(6)所示:
()=-·|()|
(6)
其中:()为小车速度闭环设定值;为小车全程运动平均速度设定值;为减速控制比例系数;()为车体偏离理想轨迹的偏差值。
在实际应用中发现,算法中的PID参数是通过人工“试凑”得来的,这种方式极大地增加了实验任务的工作量,同时也不能高效地获得我们所需要的准确PID参数数值。基于此,本设计采用遗传算法对PID参数进行整定,以求计算出最佳的PID参数。在本设计中我们要优化的变量为(),即车体偏离理想轨迹的误差值,为了获得比较合适的小车动态性能,采用误差的绝对值时间积分特征作为最小目标函数,()>0时目标函数如式(7)所示:
(7)
其中:、、为系统的加权值;()为车体偏离理想轨迹的误差值;()为控制器输出;为上升时间。
为了避免系统超调,采用了惩罚措施,即一旦产生超调,则将超调量作为优化指标之一。当()<0时最终优化指标函数如式(8)所示:
(8)
其中:为加权值,且>>。
某一个体的适应度函数取为:
(9)
则该个体被选中的概率为:
=∑
(10)
在选择过程中,为防止适应度值高的某个体被淘汰,采用适应度比例法和最优保留策略进行选择操作,以便更快地寻找到最优解。
之后通过MATLAB系统仿真可得到优化后的PID参数,并将其代入小车算法中去,最终得到电机转速优化和位置优化。
在小车循迹和避障的运动过程中,通过传感器检测路线和障碍物信息,将其反馈给单片机,单片机控制直流电机实现转速和转向的转变。通过对小车的速度采用PID算法进行控制,使其在直道能够加速行驶以及在弯道能够减速行驶,并通过光电编码器进行速度的闭环控制,以达到稳定的速度控制效果。采用传感器和PID算法的双重控制可以提高小车循迹的稳定性,并且可以提升小车的行驶速度。这种控制手段大幅度地提升了小车在自动循迹和避障过程中的可靠性和稳定性。在之后的设计中,可以考虑在不同的环境状况下,通过改变小车的形状和组装结构,使其可以适应不同的环境状况,以完成更有实际操作价值的循迹和避障功能。