蓝海键
摘要:智能化是今后世界发展的方向。智能设备能够在非人为干扰下自动完成预先设定的任。智能循迹小车就是其中一个体现。在特定工作环境下,这种小车可以协助工作人员高效安全地完成目的任务。智能循迹系统在长时间、容易疲劳的环境下得到很好的应用。在特定的工作环境下,设定特定标志物,智能循迹系统通过识别相应标志物和预先设定的流程自主完成目标工作。主要工作原理如下:(1)硬件控制核心是飞思卡尔kenitis K60DN512Z单片机,由0V7620作为传感器获取图像数据,电机驱动用BTS7970芯片,采用PWM方波控制S3010舵机转向。(2)软件由freescale codewarrior v10.6开发环境用C++语言编写程序和编译。3.软件通过边沿提取模块和PID控制原理控制智能小车运动轨迹。
关键词:图像处理;智能小车;循迹;PID算法
0 引言
智能循迹汽车是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统。近年来,智能车辆已经成为世界车辆工程领域研究的热点和汽车工业增长的新动力,很多发达国家都将其纳入到各自重点发展的智能交通系统当中。
智能循迹小车系统是通过freescale kenitisK60DN512Z单片机作为控制核心。结合稳压电路、电机驱动电路、OV7620驱动电路和S3010舵机驱动电路等硬件组成智能小车,通过freescale codewarrior v10.6开发环境开发和编译软件系统实现智能小车对行驶路线的智能循迹。设计中电机驱动使用BTS7970芯片,使用PWM方波控制输出电压值,进而控制电机转速。使用OV7620对路况灰度信息获取,控制算法进行滤波并且提取二维画面的边沿,控制S3010舵机转向使小车在合理路径上通过预定速度稳定行驶。路面状况是蓝背景上铺设白色道路和黑色边界,设有直道、连续s形弯道、1/4圆弧弯道、3/4圆弧弯道、3π/4弧形道路、直角弯以及十字弯道。
1 本领域开发概况
基于freescale kenitis K60DN512Z单片机作为控制核心的智能循迹小车主要由全国大学生智能汽车竞赛相关参与人员进行开发。由于单片机在运行速度以及硬件资源上不如PC机快和丰富,因此在图像识别程序模块设计上与PC版本有较大差异。文章所涉及的软件系统主要考虑到了节约时间、低占用资源率以及高稳定性。在硬件系统的制作上,根据调试经验采用低重心、抗静电干扰的原则。
2 硬件系统设计
系统主板以及电机驱动电路采用Altium Designer设计。这套软件具有原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等功能。全部设计过程由笔者自主完成。首先创建空工程,添加原理图文件绘制电路的电气连接,并且提供相应元件预绘制的封装。然后添加PCB文件,并且把原理图文件导进PCB文件,在PCB文件上进行设计电路外形、布线走向、元件布局以及绘制自主标志等。在布局上,本着均匀分布、左右尽量对称的原则。在首期开发的电路版本上,还提供了调试接口,例如拨码开关等。
电路板块、电池以及S3010舵机的安装和调试是在电路板设计完成后进行的相当重要的一次整车设计过程。笔者设计的电路板居于车模前端,电池安装在后端,目的为了提高整车抓地力,防止高速运行时打滑。电路板开孔,摄像头支架可以穿过,节约了空间。S3010舵机主要是双杆长度相近调试,在给定的合适PWM信号下,使之打到中间,利用游标卡尺精确测量杆长并且调试使两者尽量接近。
3 软件系统设计
软件系统利用C++语言进行开发。在本领域大多数开发者均使用C语言,笔者采用C++语言的原因是减少全局函数、变量的利用。同时C++语言面向对象的编程思想有利于对开发过程中众多参数进行管理,提高开发效率。通过实践,在开发上本系统运行相当稳定。
硬件初始化模块实现。本部分主要涉及K60芯片的系统时钟初始化、FTM模块初始化、通信模块初始化、DMA初始化、中断初始化以及相应10口初始化等。本系统运行于96MHZ的总线时钟下通过FTM可以输出PWM信号控制外部舵机转角以及电机驱动输出量。通信模块在本系统中主要用于调试和摄像头参数设置。DMA是直接存储器访问技术的英文缩写;DMA传输将数据从一个地址空间复制到另外一个地址空间,当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。根据硬件手册和PID算法需要,系统采用了外部中断和PIT定时中断。
数据处理模块实现。OV7620传感器获取回来的数据是显示对应点的灰度,它是一个八位二进制数。系统初始化完成后首先采集一场数据求取数学期望。该数学期望作为图像二值化处理的阈值。对图像二值化处理后,搜索最下行白色连续点个数,将小于5的白色点改为黑色点,实际选择上应该根据当地环境亮度。并且取出最长白线位置,将此线左右边界作为参考值在倒数第二行同一位置左右特定范围内搜索黑白跳变点,同样道理继续搜索下一行,直到两个边界均丢失。由获取到的边界计算中心值,与列数中值比较计算数学期望。然后使用PID算法控制舵机转角。前期调试建议只加P值,调试只有稳态误差后相应加I或D。低速状况下(<=1m/s),笔者系统只有P,运行相当稳定。高速调试时,加P参数能够使弯道过得稳定,但是直道略有抖动,笔者尝试添加D参数,效果得到很好的改善。
4 结语
智能循迹小车设计实现涉及到的学科比较多,它集中运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体。硬件的合理调试和稳定根本上决定智能汽车软件运行效果,提高硬件可靠性有利于后期软件开发和维护。软件开发上,应当提前制定接口标准、命名标准、资源利用率和程序运行效率要求,从而有利于后期调试和维护。对智能循迹小车的研究加深,有利于技术上跟上世界智能化的潮流,落实我国科教兴国的战略思想。