""通过CompactRIO,可以方便高效地对智能车使用的传感器、驱动电路等硬件设备进行测试,也可以通过LabVIEW开发控制算法下载到CompactRIO中进行实车调试。""- 红志 李, 清华大学
挑战:
所谓智能车是指在行驶过程中,车辆能够自主识别路径并自主控制转向和车速,从而完成自动驾驶。在智能车自动驾驶控制算法的开发调试过程中,其挑战在于选择一个可以实现快速原型开发的软硬件平台。 在硬件方面,在智能车的控制中,由于要检测实时赛道信息、当前车速、电池电压并要实时控制智能车车速、方向等控制参量,因此需要有丰富的I/O通道,并且要求处理器能够实现高速的实时控制算法。另外由于本智能车竞赛中使用统一竞赛车模的体积受限(30cm×20cm×15cm),需要这个控制原型开发平台能够承载在智能车模之内。在软件方面,要求开发软件与硬件平台能够无缝的连接,内含强大的数字信号处理以及控制的算法,操作界面友好,以便快速的开发调试。
解决方案:
整个快速原型开发平台采用NI公司CompactRIO加LabVIEW实现。CompactRIO为带有FPGA功能的高实时性嵌入式系统,并可同时配置多块功能丰富的I/O模块。控制算法在LabVIEW中实现,并可下载在CompactRIO运行。
作者:
红志 李 - 清华大学
智能车比赛
受教育部高等教育司委托,高等学校自动化专业教学指导委员会负责主办全国大学生智能车竞赛。该项比赛已列入教育部主办的全国五大竞赛之一,于2006年举办了第一届比赛。
参赛选手使用大赛组委会统一提供的竞赛车模,采用飞思卡尔16位微控制器MC9S12DG128 作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法、电机驱动、转向舵机控制等。比赛中智能车需要自主识别白色地板上的黑色路径并自主控制转向和驱动,从而完成沿线自动驾驶。参赛队伍之名次由赛车现场成功完成赛道比赛时间为主。
参赛选手使用大赛组委会统一提供的竞赛车模,采用飞思卡尔16位微控制器MC9S12DG128 作为核心控制单元,自主构思控制方案及系统设计,包括传感器信号采集处理、控制算法、电机驱动、转向舵机控制等。比赛中智能车需要自主识别白色地板上的黑色路径并自主控制转向和驱动,从而完成沿线自动驾驶。参赛队伍之名次由赛车现场成功完成赛道比赛时间为主。
快速原形
比赛中要求采用Freescale的S12系列单片机,在用单片机开发嵌入式系统时,存在效率低,成本高以及开发周期长等缺点,为此我们决定采用快速原型的开发方法,以一辆样车为载体,将智能车原有的控制核心替换为NI公司的CompactRIO,并通过各种I/O模块进行路径探测传感器、车速传感器的信号采集以及驱动电机、转向舵机的运动控制。用LabVIEW编写车辆运行控制算法,将控制算法下载到CompactRIO中进行原型试验,取得最优结果后再移植到S12芯片中。
智能车的工作模式如图所示:红外光电传感器探测赛道信息,转速传感器检测当前车速,电池电压监测电路监测电池电压,并将这些信息输入控制器进行处理。通过控制算法来对车辆当前状态进行判断,并输出控制信号实现对舵机转向和电机加减速的控制,从而完成车辆的沿线自动驾驶。
图1智能车的工作模式图:
(图解)传感器检测量为赛道信息、当前车速和电池电压,控制器对这些信息输入进行处理,输出控制信号控制转向和驱动,从而实现车辆的沿线自动驾驶。
用CompactRIO作为控制器搭建的嵌入式系统来实现智能车的快速原形。CompactRIO的4个I/O模块用于采集智能车传感器信号以及控制驱动电机、转向舵机等执行器。此外,还配有控制开关单元来进行人机交互,数码管实时显示赛车信息,并可在试验结束后将所需要的数据通过网线传到上位机中,从而可以对控制算法进行分析,优化控制策略。
平台硬件构成
本平台的硬件部分主要由5部分组成,分别为:模型车底盘、红外光电路经探测传感器、光电码盘电机转速传感器、电机驱动及供电母板、CompactRIO嵌入式控制器。
其中,所采用的智能车底盘是奥奇1/10全数字比例电动遥控后驱模型赛车的底盘,红外光电路经探测传感器采用了15对红外发光接收管,采用红外光电管是为了减小可见光的影响,提高系统鲁棒性。
为精确控制智能车的运动,需要检测车辆的运动速度。转速传感器用来检测车速。受车模机械结构的限制,须采用体积小、重量轻的速度传感器,本车采用的是对射型光电传感器方案。在电机输出轴上加一齿盘,电机输出轴的转动带动齿盘的转动。将对射光偶发光和接受管放在码盘两侧,码盘转动时,由于码盘上的齿经过发光管发出的光线时,会阻碍光线传播。所以接收管两端的电阻会有很大的变化,这样,在电路中,采样电阻两端的电压就会有很大的变化。用处理器采集电压脉冲单位时间内的个数,就会获得电机转速,从而获得车速。
CompactRIO嵌入式控制器
实时嵌入式控制器采用CompactRIO-9004,而4个I/O模块槽采用NI-9205、NI-9263、NI-9421以及NI-9472,分别控制模拟量输入输出以及数字量输入输出,其具体功能如下:
CompactRIO-9004:控制器,主要通过TCP/IP协议与上位机进行通讯,从而将控制程序进行编译或下载,在实时系统中运行。此外,还可以通过网线或串口线将试验过程中一些数据上传到上位机中,进行分析和处理。
NI-9205:32路模拟量输入,其中15路作为光电传感器的信号输入,1路作为车速传感器输入。
NI-9263:4路模拟量输出,1路作为驱动电机PWM控制信号,1路作为舵机PWM控制信号。
NI-9421:8路数字量输入,作为各个控制开关量的检测。
NI-9472:8路数字量输出,作为数码管显示控制信号。
图2 cRIO潜入式系统组成图:
(图解)由cRIO所搭建的嵌入式系统的组成,包括模拟量的输入输出和数字量的输入输出。
车辆运行控制算法
用图形化编程软件LabVIEW编写了车辆运行控制算法。控制算法为基于状态的反馈控制,流程如下图所示:
图3 智能车控制算法简图:
(图解)初始化之后是一个基于状态的反馈控制,控制算法通过对传感器信号进行处理,控制执行器动作,不断减小实际状态和名义状态之间的误差。
首先是相关参数的初始化,然后通过输入端口采集道路信息和车速信息,根据控制策略得出车辆运动的名义状态和实际状态,比较名义状态和实际状态的差,通过PID调节减小这个差值,然后通过输出端口给出控制信号对驱动电机和转向舵机进行控制,从而实现车辆行驶过程中的闭环控制。
为充分发挥控制器性能,控制算法中部分程序运行在FPGA上,部分程序运行在CompactRIO上。比如对传感器信号的读取、电机和舵机的输出控制都是在FPGA上完成的。而PID调节、控制策略得到的名义状态就是在CompactRIO上运行的。
实验数据保存与分析
由于CompactRIO有较大的存储空间,可以对车辆运行过程中所有参量进行完全的保存,在车辆停止后,可以用网线将所存储的数据上传到上位机,便于进行分析。通过同步分析整车状态参数和控制信号,可以对控制算法进行分析,从而有针对性地改进控制算法,在最短的时间内实现控制算法的优化。最后再将优化之后的控制算法移植到单片机中,实现实车的开发。
图4 数据分析界面
(图解)实验结束后,将实验数据上传到上位机,用调试软件的数据分析模块可以精细观察任何时刻的目标参量和实际状态参量,这样就为优化控制算法提供了便利。如上图中,上两幅波形图中的红色曲线为目标参量,黄色曲线为实际参量。并且可以通过设定时间轴的坐标起始点和终止点来详细观察很短的时间段内的参量变化情况。
结论
我们采用了NI公司 CompactRIO作为控制核心搭建了嵌入式控制系统,实现了智能车的快速原形。用LabVIEW编写了控制算法,对智能车自动控制算法进行了设计和优化,极大提高智能车的开发效率。在2006年的全国大学生智能汽车邀请赛中,我们团队在112支参赛队中获得全国第一名的好成绩,2007年的此比赛中,我们在全国300多支参赛队中获得第六名的好成绩。这些成绩的取得,和我们采用了快速原形开发平台是密不可分的。
作者信息:
红志 李
清华大学