关于智能小车软件设计的探讨
2016-08-29湖北工程学院杨鹏胜
湖北工程学院 杨鹏胜
关于智能小车软件设计的探讨
湖北工程学院杨鹏胜
由于汽车工业的飞速发展,关于汽车的研究越来越多,各种在模拟环境(蛇形弯道)下的小车种类层出不穷。根据智能小车不需要人为持续管理,能够显示时间速度、里程;能自动寻迹,寻光,避障;在行驶时还可以控制速度、定位停止、传输图像等功能。在科学勘察、交通出行等领域有着广泛的应用前景。下面主要探讨关于小车软件方面的的设计。
1.控制算法
小车的控制包括电机和舵机的控制,具体的控制算法有PID控制,bang-bang算法控制和模糊控制。
1.1PID控制
PID 控制是工业过程控制中历史最悠久,生命力最强的控制方式。这主要是因为这种控制方式具有直观、实现简单和鲁棒性能好等一系列的优点。PID控制主要有三部分组成,比例、积分、微分。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。偏差一旦产生,调节器立即产生控制作用使被控量朝着减小偏差的方向变 化,控制作用的强弱取决于KP。当仅有比例控制时系统输出存在稳态误差为了消除稳态误差,引入积分控制。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。为了预测预测误差变化的趋势,引入微分的控制器,这样就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。PID控制狂徒如图1所示,
图1
对应的误差传递函数为:
式中,Kp 为比例增益;Ti 为积分时间常数;Td 为微分时间常数;U(s)为控制量; E(s) 为被控量与设定值 R(s)的偏差。时域表达式为:
在单片机中,我们仅能对数字信号处理,即数字 PID 控制。将上式离散化,得:
A.位置式PID算法直接利用上述离散化公式计算,框图如右图所示。由于积分项(Pi)是将所有采集值偏差相加,在一段时间后会很浪费单片机资源。对其稍加改进,得到 增量型 PID 算法。
B.增量式 PID 算法为:
式三减式四得:
由此,第k个采样时刻实际控制量为u(k)=u(k-1)+△u(k),为方便书写,写为:
其中,q0=(1+T/Ti+Td/T), q1=-Kp(1+2Td/T),q2=KpTd/T
由上可知,利用三个历史数据,递推使用,即可完成PID控制量。框图如图2所示。
1.2模糊控制
一般控制系统包含了五个主要部分,即:定义变量、模糊化、知识库、逻辑判断及反模糊化,底下将就每一部分做简单的说明:
(1)定义变量:也就是决定程序被观察的状况及考虑控制的动作,例如在一般控制问题上,输入变量有输出误差 E 与输出误差之变化率 CE,而控制变量则为下一个状态之输入U。其中E、CE、U统称为模糊变量。
(2)模糊化(fuzzify):将输入值以适当的比例转换到论域的数值,利用口语化变量来描述测量物理量的过程,依适合的语言值(linguisitc value)求该值相对之隶属度,此口语化变量我们称之为模糊子集合(fuzzy subsets)。
(3)知识库:包括数据库(data base)与规则库(rule base)两部分,其中数据库是提供处理模糊数据之相关定义;而规则库则藉由一群语言控制规则描述控制目标和策略。
(4)逻辑判断:模仿人类下判断时的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制讯号。此部分是模糊控制器的精髓所在。
(5)解模糊化(defuzzify):将推论所得到的模糊值转换为明确的控制讯号,做为系统的输入值。模糊算法可以解决一些非线性问题,将赛道分为直线、入大小弯、出大小弯、蛇形弯道,对应的直线加速、入大弯减速转方向、入小弯制动转方向、出弯加速、蛇形弯道直接通过(若可以达到这种前瞻性)。要达到这种控制要通过实际 检测,分析大量赛道磁场信息,找出它们的特征。
2.软件的设计及实现
软件运行需要配置单片机各个模块寄存器数值,使单片机各个模块正常工作。初始化中包括:单片机时钟配置、I/O口配置、PWM模块配置、A/D模块配置、RTI实时中断配置、脉冲捕捉模块配置。当初始化完毕后,进入跑车程序:对传感器输入信号进行采样,当完成一次采样后将采样值映射成车相对于跑道的位置,根据当前与过去位置决定舵机转角和电机速度,通过改变PWM模块内部寄存器数值可以得到不同占空比的方波信号,实现对舵机和电机的调节。软件整体流程如图3所示。
图2
图3
小车调试上述算法参数的获取必须通过实际的测量,跑道信息的获取用蓝牙蓝传送数据。利用蓝牙串口模块,将所需数据发回PC机,通过 MATLAB仿真分析偏差变化,对数据进行处理得到赛道信息,从而调整参数使之达到最佳值。
3.结语
综上所述,小车软件设计需要考虑实际操作中方方面面的问题,而控制方法更是重中之重,虽然模糊控制可以较好解决一些非线性问题,但控制复杂,实际调试中较PID控制无明显优势,所以我们采用PID控制。舵机为位置式PD,虽然存在稳态误差,但可以快速响应;电机控制为增量式 PID,由于给定速度频繁变化,采用微分先行 PID,使电机能够快速响应。
[1]夏克俭.数据结构及算法[M].北京:国防工业出版社,2001.
[2]仲志丹,张洛平,张青霞.PID调节器参数自寻优控制在运动伺服中的应用[J].2000.