第四届全国大学生智能汽车邀请赛技术报告
的分辨率等不确定因素,以及入弯距离的限制,计算出的弯道半径并不准确。另一办法是根据黑线位置变化的时间,选择不同的angle_data。因为速度越快转弯半径越小,黑线由中间传感器变化到相邻传感器所需时间就越短,由此选择的转向Map转角也越大,提前给出大转向。
5.6.2 弯道刹车
想要增加赛车的直道速度,并且保证模型车进弯道的稳定性以及可靠性,必须在模型车进弯时把车速降低到可以顺利转弯的速度,因此要采用弯道刹车。根据弯道半径越小,车速越快,传感器信号变化就越快,我们就根据传感器信号变化的快慢来确定刹车的力度。程序流程图如图5.5.2所示。
5.5.3 直道限速
虽然在弯道处,短暂的减速可以降低智能车的速度,但是其也是有局限性的。当智能车的速度过大时,即使有短暂的刹车,但由于惯性的作用智能车还是会以很高的速度冲出跑道,尤其是从较长的直道进入弯道时。对此,在智能车直线行驶的过程中也对智能车进行了适当的限速。
5.5.4 软件滤波
由于传感器容易受到太阳光,日光灯等外界因素的影响,因此必须对其增加抗干扰措施,滤波可以采用软件或硬件两种办法,通过测试,我们发现硬件滤波的效果不好,而且还要单独做一个电路板,这样增加了车身的重量,减小了智能车的灵活性。所以,我们最终采用软件滤波。
软件滤波的思路为:连续采集10次数据,采集的周期为50us,那么采集10次数据所用的时间为500us,这样舵机也是响应不过来,因此不会影响小车的正常行驶,接着我们对这10个数进行从小到大的排序,然后去掉三个最小值和三个最大值,在把剩下的四个值求平均值,最后把值传给赛车当前位置参数car_positn,这样就达到了软件滤波的作用。
25
第四届全国大学生智能汽车邀请赛技术报告
5.6 PID控制
图5.2 PID控制器工作原理
PID控制策略其结构简单,稳定性好,可靠性高,并且易于实现。其缺点在于控制器的参数整定相当繁琐,需要很强的工程经验。相对于其他的控制方式,在成熟性和可操作性上都有着很大的优势。所以最后我们选择了PID的控制方式。
在小车跑动中,因为不需要考虑小车之前走过的路线,所以,我们舍弃了I控制,将小车舵机的PID控制简化成PD控制。
本方案中舵机转角控制采用位置式的PD控制,速度闭环控制采用了增量式PID控制。在本方案中,使用试凑法来确定控制器的比例、积分和微分参数。
比例调节(P)作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。 积分调节(I)作用:是使系统消除稳态误差,提高无差度。因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。积分作用的强弱取决与积分时间常数Ti,Ti越小,积分作用就越强。反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节(D)作用:微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。因此,可以改善系统的动态性能。在微分时间选择合适情况下,可以减少超调,减少调节时间。微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。此外,微分反应的是变化率,而
26
第四届全国大学生智能汽车邀请赛技术报告
当输入没有变化时,微分作用输出为零。微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
第六章 开发制作与调试
6.1 开发工具
S12系列微控制器具有一个由片内仿真、触发和跟踪硬件构成的单线背景调试模式(BDM),因此它可以通过使用两种开发工具:简单串行电缆或低成本的BDM,来完成调试功能。在本次比赛中,我们所采用的赛车软件开发工具为清华大学开发的专门面向于Motorola S12系列微控制器的BDM调试工具以及由Metrowerk公司开发的CodeWarrior编译器。
赛车的硬件开发工具主要为Protel 99SE,通过该软件来完成电路原理图的绘制以及PCB板制作。
6.1.1 软件开发平台
此次智能车大赛的软件开发平台为Code Warrior开发软件。其使用界面如图6.1.1所示。
图6.1.1 CodeWarrior使用界面
27
第四届全国大学生智能汽车邀请赛技术报告
Code Warrior是面向以HC12和S12为CPU的单片机嵌入式应用开发的软件包,包括集成开发环境IDE、处理器专家库、全芯片仿真、可视化参数显示工具、项目工程管理器、C交叉编译器、汇编器、链接器以及调试器等。在CodeWarrior软件中可以使用汇编语言或C语言,以及两种语言的混合编程。
用户可在新建工程时将芯片的类库添加到集成环境开发环境中,工程文件一旦生成就是一个最小系统,用户无需再进行繁琐的初始化操作,就能直接在工程中添加所需的程序代码。
如图6.1.2所示,利用BDM和CodeWarrior自带的hiwave.exe用户可以进行一系列的调试工作,如监视寄存器状态、修改PC指针、设置断点等,这样能快速地帮助我们找到软件和硬件的问题。
图6.1.2 hiwave 程序调试环境
6.2 系统调试
系统的调试和实验是工程设计中一个很重要的环节。在完成系统硬件和软 件设计后,要进行系统的调试,以检查系统设计的完整性和有效性。调试主要包括硬件调试和软件调试两部分。
28
第四届全国大学生智能汽车邀请赛技术报告
6.2.1 硬件调试
首先是对设计的电源电路、电机驱动电路和速度检测电路等硬件电路板进 行调试。再对传感器进行调试。传感器的调试分为机械调试和电路调试。机械调试的主要任务是保证传感器组位于小车的最前端,并与地面保持合适的距离。电路调试的目的是使各个传感器的电压输出值均保持在一定值附近,其操作过程 是将传感器电路放于白纸上一定高度处,调节电位器使传感器的电压输出降为 一定值左右。单步执行程序,观察各个寄存器、变量、数组的变化是否正确。 此处不使用黑纸的原因是由于黑线的吸收能力强,对传感电路的反馈信号影响 大,而白纸的吸收能力弱,电位器阻值对反馈信号的影响明显。
接着调试舵机,可以先不使用直流电机,将小车放于白纸上,用 25mm 宽的 黑线在传感器下移动,看舵机的转向与设置是否一致,然后在跑道上,用手推小车,让车经过符合比赛规则中要求的不同曲率半径的轨迹。对于不同的传感 器会检测到不同的信号。记下针对不同传感器对不同方向检测到信号的情况, 让其中较为理想的舵机转角,作为一组经验值,待软件设计时使用。
接着对直流电机进行调试。舵机和传感电路调试完成后,将直流电机接入 电路,先不将小车放到跑道上,在白纸上稍微将后轮悬空,用黑线在下面移动,
用示波器观测电机两端的 PWM 信号是否按要求改变,确定无误后可以拿到跑道 上进行试车。让小车在一段直道行驶后,进入一曲率半径为最大值的曲线。反复试验,就可得出小车不驶出轨道的最大占空比。
最后对整体进行调试。各部分子电路调试结束后,对小车整体进行调试。 先令小车以某一较低的速度行驶,通过弯道时保证有合适的舵机转角。在舵机 转角调试过程中得到的经验值的基础上进行修改。利用软件对参数进行修改, 提高小车直流电机的转速和修改舵机转角。如此反复进行,直到得到较为合适 的经验值。先让小车行驶稳定,在此基础上逐步提高小车速度。
6.2.2 软件调试
在软件设计中,要用到 ECT 模块、ATD 模块、PWM 模块、电源模块等。在编 写主程序前,要先对各个模块分别进行调试,并编写各部分的子程序。
29