贺佳辉 侯明 路悦 蒋泽鑫
北京信息科技大学,北京 100192
随着汽车数量的急剧增长,对交通系统提出了越来越高的要求。优化道路网络系统,提供安全舒适的驾车环境成为目前科技界需要攻克的一大难题。
在提出的各种解决方案中,无人驾驶技术脱颖而出,这种解决方法受到了越来越多的关注。而智能小车系统就是现实生活中的无人驾驶汽车的缩影,智能小车与无人驾驶汽车在核心控制方向有着极为相似的地方,因此,智能小车的研究对于无人驾驶技术的发展无疑起到了较大的推动。
本次设计的最终目的是要使用PID控制技术实现电磁循迹小车在轨迹上高速、平稳、准确地行驶。电磁循迹小车就是要检测赛道中心通有20 kHz、100 mA交流电的通电导线所产生的交变电磁场,并使小车沿着导线所形成的轨迹进行平稳的行驶。本文将使用三个工字电感检测导线产生的交变磁场,从而辨别车在轨迹上的位置。工字电感产生的交变信号通过整流、滤波,并经过运放将交流信号转变为直流信号,以便于单片机读取并解算位置。
在智能车整体系统的搭建中,硬件电路的作用就有如建筑物的地基,在整个系统中占有举足轻重的地位,尤其是到了后期速度快了之后更是尤为明显。
智能小车的硬件可以主要概括为五个部分:单片机系统模块、主控电路模块(蓝牙串口传输模块、液晶及按键模块)、电池供电及电源管理模块、路径检测模块、测速模块以及直流电机驱动模块和舵机控制模块。 硬件电路整体组成见图1所示。
1、单片机最小系统模块
最小系统部分是整个智能小汽车的“大脑”,是智能车系统采集以及处理信号的核心,所以最小系统的可靠性成为了整个系统稳定运行的重中之重。本文将使用飞思卡尔公司的K60作为系统的控制核心。采用飞思卡尔公司的K60单片机作为主控芯片,并使用了山外的最小系统板。使用三路ADC采集,两路PWM,以及LPTMR模块的脉冲计数功能,UART串口功能以及I/O口若干。
2、主控电路模块
主控电路模块以单片机最小系统为核心,延伸出小车各个模块需使用的外设接口。外设接口是通过洞洞板把K60单片机的接口引出来的,主控电路的设计要求主要就是抗干扰能力强以及布局布线的整齐合理度。除了外设接口外,本系统主控板还设计了蓝牙转串口电路,OLED显示屏部分以及键盘、LED等调试所用的人机交互模块。
3、电池供电及电源管理模块
电池供电及管理也是很重要的一部分,合理分配电源资源可保证小车正常运行。电池使用7.2 V、2000 mAh的镍镉电池作为动力保障,使用TPS7350作为稳5 V电压源单独为运算放大器供电;使用lm2940稳5 V给蓝牙、编码器等模块供电;使用ASM1117-3.3芯片直接为单片机系统供电,这样的供电管理为小车的正常工作提供了保障。电源供电模块如图3所示。
4、路径检测模块
人正常走路首先通过眼睛看路,然后通过大脑决策控制双腿正常走路。而我们这里的路径检测模块就是相当于人身体中的“眼睛”。
智能车所在的电磁组的道路中心线铺设有一根漆包线,里面通有100 mA的20 kHz交变电流。因此,在道路中心线周围产生一个交变磁场,通过道路电磁中心线偏差检测与电机差动控制实现方向控制。本车使用三个电感解算出小车的偏差,然后通过PID控制算法得到控制量,最后作用到舵机上实现小车的正常打角。
智能车采用10 mH的工字电感线圈搭配6.8 nF的谐振电容作为整个系统的“眼睛”,采用工字电感是因为这类电感的磁滞现象可以感应出类正弦波,从而方便对信号的处理。
运算放大器采用lm386作为信号放大器,并设计了相关的整流滤波电路,最终得到了可靠的直流电供给单片机的ADC进行信号采集。 信号放大电路如图4所示。
5、直流电机驱动模块
直流电机驱动模块是提供给电机强大驱动力的模块。具有能过强电流而整个模块发热少,散热快的能力。我们小车所用的小车模块是使用mos管搭建的H全桥驱动电路,电路的可靠性高,过流能力强,可以满足要求。
系统的软件部分大体可以分为三大板块:转向控制系统的程序实现、速度控制系统的程序实现,以及人机交互部分的软件实现。软件实现思路如图6所示。
1、智能车转向控制算法的实现
转向控制将采用经典PID控制来完成智能车的转向。
2、智能车速度控制算法的实现
转向加速度二者可以保证小车的正常运行,本系统将使用传统增量式PI控制来实现小车的速度控制,并且做到直道、弯道根据不同的曲率设定不同的速度,以保障智能小车可以沿着赛道中线稳定行驶。
3、智能车人机交互系统的软件设计
人机交互主要有两大模块:第一个是OLED显示屏,OLED显示屏主要显示三个电感采集的电压值和解算出来的偏差是否正确;第二个是基于串口通信的虚拟示波器上位机,主要用于调参时观察曲线的跟随度,从而进行调参。
1、车模转向控制算法
(1)车模转向的基本原理
本车使用三个电感解算出小车的偏差,然后通过PID控制算法得到控制量,最后作用到舵机上实现小车的正常打角。PID 控制以其结构简单、稳定性好、工作可靠、调整方便而成为智能车控制的主要技术之一。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用 PID 控制技术最为方便。
(2)位置解算算法
为了使电感采集到可靠的电压值要进行软件滤波处理,软件滤波主要有均值滤波、中值滤波,以及滑动滤波等多种滤波方式,而均值滤波的软件实现思路简单,并且滤波效果好,所以采用了均值滤波。位置解算算法之前,我们使用的是经典的位置解算算法差比和。
(3)PD控制算法的实现
智能车的方向控制采用位置PID控制。因为智能车寻迹本质上是一个随动系统,积分项在弯道累积的偏差错误地加在直道的跟踪上造成在进入直道时转向不够准确,跑直道时虽然能跟踪电磁线,但是转向调整往往超调,导致车身在直道上左右震荡,这种震荡严重影响了车的整体表现。将积分项系数Ki设为0,发现车在直线高速行驶时仍能保持车身非常稳定,没有震荡,所以没有必要使用Ki参数 。该控制方案调整为PD 控制。Kp和Kd参数由工程整定得出,经过多次试验,得到一组稳定快速的参数。设置合适的调节范围,让智能车更准确地控制转向。
2、车模的速度控制算法
智能车的速度控制也是很重要的一环。为了得到车模可靠的运行速度,使用500线的欧姆龙编码器对小车的速度进行获取。车模的速度控制最后使用了传统的PI控制器,并选取50 ms作为控制周期。经验证,PI控制器可以使小车按自己设定的速度规划进行稳定的行驶,速度规划大概就是直道加速,弯道减速。速度使用增量式PI控制。传统的PID控制器主要有增量式和位置式两种算法。位置式看名字就知道它适用于舵机等位置式器件。而电机的速度控制很明显适用增量式的PI控制,小车的速度使用增量式PID后不会产生很大的震荡,所以D这个阻尼系数的存在无关紧要。PI控制器在我们的使用过程中还发现了一个问题,就是I增大使速度控制有滞后,并且积分饱和也给我们带来了很大的困扰,如果取消I的话,速度控制又会产生静态误差。针对这个问题,我们将I参数设定到1以下,控制效果不错。针对于弯道减速问题,我们将速度设定值与偏差整合成了一个二次函数,这个二次函数a值为负数开口向下,刚好可以满足弯道减速,直道加速的要求。
经过一段时间的参数调整以及不断地现场调试,智能车能够准确地识别电磁信号,并且稳定的在赛道上行走。运行情况如图7所示。
本文详细阐述了小车的转向控制与速度控制的软件实现。在转向控制中还说明了ADC采集时各种滤波方案的优缺点。在速度控制中,我们还说明了增量式PID与位置式PID的适用情况,并且说明了增量式PI控制器的软件实现。在此还特别介绍了停车的反接制动法用软件的实现。