自主循迹智能车的研究与设计

2019-10-21 06:32楚士杰朱厚圣吴洁琼
科学大众 2019年11期
关键词:避障循迹自动控制

楚士杰 朱厚圣 吴洁琼

摘   要:随着无人驾驶技术的持续发展,各高校和科学研究院也在积极鼓励学生投入到自主循迹智能车的研究当中。文章所研究的智能车以K60单片机为核心控制系统,利用电磁传感器辅助完成循迹和转向,再配合其余多种传感器的信号采集,可以进行避障和三轮与二轮之间的状态转换。依靠PID算法完成智能车的自动控制,使智能车的系统能灵活变换,适应各种跑道。综合以上所设计的智能车,不仅能够稳定行驶,同时具备避障和变形等功能。

關键词:K60单片机;循迹;避障;自动控制

近几年,人工智能是科技革新的主要方向,多种人工智能产品已经走进了人们的生活。随着人工智能的应用,未来几年内无人驾驶汽车有望成为人们出行的主要方式。智能车是无人驾驶汽车的雏形,其设计内容涵盖了模式识别、传感技术和汽车电子等多方面学科的知识,对无人驾驶汽车的研究有重要意义,对科学技术的革新具有良好的推动作用。

1    智能车的基本结构

1.1  主要部件介绍

智能车以“恩智浦”智能汽车竞赛官方提供的F车模为研究平台,主要部件有主板和传感器。核心板使用的是K60单片机芯片。主控制板是人工操作的平台,包含电机开关、稳压模块、电机驱动模块、传感器模块等,其中电机驱动模块由轮胎和电机组成。传感器包括电磁传感器、红外传感器、灰度传感器和速度传感器。电磁传感器可识别跑道的延伸方向,其作用相当于人类的“眼睛”,是智能车直行或转向的唯一判断依据。红外传感器可测量与前方障碍的距离,用来在一定范围内识别跑道前方路障。灰度传感器用于识别跑道上的断路层,判断道路元素是否发生变化。速度传感器可实时获得智能车的行驶速度,从而进行速度反馈调节,实现闭环控制,使其不断趋向预期速度。

1.2  智能车的搭建

智能车各部分摆放位置对其各种功能的实现有很大影响,既要考虑三轮行驶状态,还要考虑二轮行驶状态。电磁传感器需靠前放置,可提前识别跑道并且及时处理。电池和主控板的放置要能够使智能车重心低且集中,所以在安装后轮胎的中心位置。车身不宜过重,方便实现灵活转向和稳定直立。轮胎需要经常打磨,增大与跑道间的摩擦力,能够有效避免转向过程中发生侧滑。良好的智能车搭建结构是其能在跑道上顺畅行驶的保障。

2    硬件设计方案

智能车硬件系统包括多个模块,每个模块工作需要相互协调且互不干扰。

2.1  最小系统板

最小系统板使用MK60DN512Z(本文统称K60),系统频率100 MHz,可实现稳定超频,由3.3 V电压供电。具有IEEE 1588以太网、高速USB2.00IG硬件解码能力和干预发现能力。高容量的K60单片机带有一个可选择的单精度浮点处理单元、一个NAND闪存控制单元以及一个DRAM控制器。该单片机共有144个引脚,具有普通I/O口、A/D转换模块、脉冲宽度调制(Pulse Width Modulation,PWM)模块、中断模块、串口通信模块,可以完成复杂功能,实现对信号的分析、判断、决策和处理。

2.2  电机驱动

电机驱动是控制智能车行驶的基础模块。智能车需要两个电机,每个电机接两个驱动芯片,共采用4个集成电机驱动芯片(BTN7971B),此芯片稳定性好,抗干扰能力强,符合智能车电机驱动的要求。驱动芯片正常工作电压为5 V,使能端为高电平正常工作,每个电机需要两个BTN7971B芯片组成大电流H桥式驱动电路,电流的流向可以驱动电机朝某一方向转动。两个输出口与电机连接,两端的电压差控制了轮胎转动。

2.3  稳压模块

智能车的核心板和电机驱动分别需要3.3 V和5 V供电,而智能车采用7.2 V可充电电池。为满足核心板和电机驱动的要求,需要使用两个稳压电路。7.2 V电压通过LM2940芯片和LM2937芯片即可以转化为所需要的5 V和3.3 V电压。

2.4  电磁传感模块(六路运放)

智能车的循迹依靠电磁传感器采集电磁信号,前瞻伸长20 cm左右,两侧横向放置两个电磁传感器,中间八字形放置两个电磁传感器(电感一定要对称放置)。电磁传感器由多重线圈组成,可感应跑道中央放置的电磁线产生的变化磁场,通过A/D转换产生可视化数值,可在跑道的不同位置检测到不同的电感值。当两侧电感数值相同时,智能车沿直线行驶;遇到弯道时,两侧电感会出现差值,智能车会向电感值较大的一侧偏转,以达到两侧电感值相同。内八字电感可用来识别复杂的道路元素,比如环形跑道等。

2.5  主控板

主控板是一块印刷电路板(Printed Circuit Board,PCB),包括核心板、5 V稳压、3.3 V稳压、电机驱动、开关模块、按键控制模块和有机发光半导体(Organic Light-Emitting Diode,OLED)显示屏。是所有硬件模块的载体,且各种传感器识别检测到的信号都依靠主控板传递到核心板。其中,OLED显示屏可直观显示所需要检测的数据,是实现人机交互的重要载体。

制作智能车的初期任务是绘制PCB。本研究设计PCB板长10 cm,宽7.5 cm。正面放置稳压模块、最小系统板、开关、按键和OLED显示屏,反面放置电机驱动。正反面结合的设计节省了PCB的面积,布局合理,层次清晰。

3    软件设计方案

3.1  PID算法简介

本次研究的智能车的循迹和速度控制等都需要在动态中连续地检测调节,所以软件设以PID算法为核心。PID算法按偏差的比例(P)、积分(I)和微分(D)进行动态控制的自动控制器,是连续系统动态品质校正的一种有效方案。

PID算法基于反馈系统,将反馈值与预设值进行比较,根据偏差值的大小对输入进行调节,达到反馈值与预设值无限接近的目的。PID算法因其控制原理成熟、参数易于调节、使用简单,在自动化方面得到了广泛应用。

3.2  直立方案

智能车的直立状态类似钟摆的垂直位置,稳定直立位置称为“机械零点”。当智能车脱离机械零点时会因受到重力的影响前倾或者后仰,因此必须获得智能车在机械零处的倾角,通过轮胎的正反转使其保持在平衡位置。智能车的直立实质上是动态直立。通过陀螺仪检测角速度。

車模角速度;

car_speed=(float)( (GYRO_X-Gyro_X_Offset)*xishu);

车模倾角:

car_angle=car_g+car_error*xishu1;

直立控制代码实现为:

PID_ANGLE.OUT= (E-car_g)*P+(GYRO_X-Gyro_X_Offset)*D;

E是机械零点位置处倾角值,P为倾角参数,D为角速度参数。先将D设为零,调P至车模可自行直立,但是车身会微微抖动,再调节D消去车身抖动,P和D反复增减调节可找到一组最合适的参数。车模直立控制和速度控制是相互约束的,在调节直立时不宜太硬或太软,否则会导致速度不可控等问题。

3.3  循迹

智能车循迹是智能车自动沿电磁线方向行驶,该部分主要说明智能车的方向控制。对电感多次采集的数值用滑动平均滤波处理后可得到稳定的数值,根据两端电感值可以判断智能车在跑道的位置。两侧电感的差值越大,左右轮胎的差速也就越大。转向代码如下:

DError = (float)(ad[3] - ad[0])/(ad[0]+ad[3]);

DControlOut=(int)(DError*KP+DError_dot*KD);

利用PID算法处理,即使是连续弯道也能保持转向的稳定性。DError是两侧电感的差比和,DControlOut是转向控制变量,将DControlOut关联到PWM输出值上,即可改变加到电机驱动上的电压占空比,改变两侧轮胎的转速,使车模朝电感值大的方向偏转。当车模寻找到两侧电感相同的位置时,停止偏转,微调后继续按电磁线行驶。使用P,D调节,KP值影响转向的早或晚,KD用于微调,且KD不得大于KP值,研究时需要多次实验找到转向效果最好的一组参数。

3.4  速度控制

速度控制分3个步骤:检测当前速度,比较当前车速与预设速度,加速或减速。该阶段研究用编码器测速,编码器与车轮同步转动,根据脉冲数和轮胎周长可测得车模当前速度。采用增量式PID算法。车模速度受直立和转向两大系统影响较大,这些因素影响速度上限,因此需在其他因素合适情况下调节并找到最大速度。

三轮状态速度控制代码:

LeftPWM =(int32) (Car_SpeedControlOut-DirectionControlOut);

RighPWM =(int32) (Car_SpeedControlOut+DirectionControlOut);

直立状态速度控制代码:

LeftPWM=(int32)(-Car_SpeedControlOut+PID_ANGLE.OUT-DirectionControlOut);

RighPWM=(int32)(-Car_SpeedControlOut+PID_ANGLE.OUT+DirectionControlOut);

PWM可转化为最终输出,上述代码即可分别完成智能车在三轮和直立状态下的自主循迹行驶。

3.5  变形

变形是指智能车在断路区域内完成二轮和三轮之间状态的转变,借助灰度传感器识别跑道上的断路层。当智能车进入断路区域时,灰度传感器将信号发送到单片机上,随即发出状态切换指令。直立中提到过预设角度的问题,如果预设角度和机械零点角度相同,则车模稳定在直立状态,如果预设角度设定在水平位置,车模也会保持水平。

通过改变车模预设角度来改变车模行驶状态的方法称为“压倾角”。在最初研究时并未采用“压倾角”的方式,发现车速稍微提高,车模便会“抬头”,导致实验失败。后来得知,在三轮状态下压低车模倾角,车头微翘就会迅速被压至水平状态,满足了速度需求。加入“变形”功能之后,其他阶段参数也应该适当调整,以达到最佳的耦合效果。

3.6  避障

红外传感器用来检测路障,本研究使用的红外传感器能在1 m内检测与前方物体的距离。具体需要检测路障的范围需要根据车速进行必要的调整。

智能车避障分为以下步骤:检测路障、向左或向右打偏角、车身回正、向跑道方向打偏角和最后正常循迹行驶。同样使用陀螺仪检测水平左右加速度,积分后得到车模相对此前角度的偏转角度。代码实现如下所示:

jiaodu=0;//将当前角度设为0

while(jiaodu>(-45))//当车身角度为45度时跳出循环

{

Update9AX();

Get_angle();

DirectionControl();

Speed_Control();

SpeedControlOut();

PWMOUT();

}

在智能车行驶过程中,红外传感器会一直检测前方是否存在路障。检测到之后,首先将此时正前方角度设为0度,然后进入循环。方向环里的DError必须手动赋值。参数jiaodu是车模避障所达到角度值(jiaodu可正可负,决定车模避障方向),达到这个预设的角度后随即进入避障的下一阶段—将车身回正。经多次实验了解到:当车模速度快时,DError也要随之增大,否则可能撞击路障。在避障环中,车速、DError和jiaodu 3个参数需要密切关联,且每种不同速度都需要微调另外两个参数才能保证智能车成功避障。

4    结语

该研究从智能车的机械结构、硬件和软件3个基础层面展开,在自主循迹的基础上增添了变形和避障这样有建设性的新功能,使智能车变得灵活,具有十分广泛的应用开发前景。

[参考文献]

[1]陈威,陈静.基于多传感器的智能小车避障控制系统设计[J].工业控制计算机,2018(7):41-42.

[2]杨亚龙,刘金栋,孙玉环,等.基于STC12C5410AD单片机的两轮自平衡小车的系统设计[J].电子设计工程,2013(20):162-164.

[3]袁瑞豪,王一豪,孙振涵.基于K66单片机的恩智浦智能小车制作[J].无线互联科技,2019(11):122-124.

猜你喜欢
避障循迹自动控制
基于MSP430单片机的智能导盲小车设计
基于LabVIEW的自主巡航与遥控双功能智能小车研发
基于HC—SR04超声波传感器的智能避障小车设计
基于STM32芯片的移动机器人的避障研究
实现自动控制电阻类型分析之气敏电阻
基于PLC的自动售货机控制系统的设计
智能感应晾衣架的设计原理与可行性分析
油气集输系统信息化发展形势展望
基于“STC80C51单片机”的智能小车系统的设计
基于K60的智能循迹小车系统实现