基于恩智浦MK60DN512Z 单片机的
小车循线设计与实现
徐挺1,王康2,陶纪明3
(1.上海电子信息职业技术学院,上海201411;2.上海市蔺克科技有限公司,上海200434;
3.上海大学机械自动化学院,上海200072)
要:针对智能模型小车目前多偏重介绍局部算法研究,整体工程化详述较少的情况,本文经校企联合研发,提出一套完整的工程
实现方案,包含硬件选型、电控模块连线图、核心算法详述并附全套历程代码。主选恩智浦MK60为控制芯片,OV7725摄像头为视觉传感器,通过图像处理和道路中点线性拟合,使小车稳定实现道路循线行驶。
风神a60价格关键词:恩智浦;K60单片机;智能小车;循线;图像处理中图分类号:TP273
文献标识码:A
文章编号:1003-7241(2021)004-0039-06
Design and Implementation of Car Line Tracking Based on NXP MK60DN512Z-Chip Microcomputer
XU Ting 1,WANG Kang 2,TAO Ji -ming 3
(1.Shanghai Technical Institute of Electronics &Information,Shanghai 201411China;
2.Shanghai Linke Technology Co.,Ltd.,Shanghai 200434China;
3.Department of Precision Mechanism,Shanghai University,Shanghai 200072China )
Abstract:Pointing to the condition that most of intelligent model car designs are always emphasis on introducing partly algorithm re-search,but less expound totally engineering develop.This paper proposes a complete engineering application plan through the joint research between schools and enterprises.Including hardware selection,electronic control module circuit dia-gram,main algorithm details and full process codes.It takes NXP MK60as the control chip,OV7725camera as the visual sensor,using image processing and road midpoint linear fitting,the car can stably achieve line tracking and driving.
Key words:NXP;K60chip microcomputer;intelligent car;line tracking;image processing
收稿日期:2020-03-05
1引言
在智能汽车的研究领域,相对于道路上行驶的真实汽车,模型小车的应用研究有其专属的特点和用途。由于模型小车底盘结构简单轻便、动力系统低速安全、整车改装易于实现,进而智能车核心控制系统的创新设计和试验较容易在模型小车上首先测试验证,因此智能模型小车在科研开发、教育教学、科普展示领域有着广阔的市场需求。设计一款功能全面、性能稳定,成本低廉、并可拓展二次开发的智能模型小车有现实意义。
目前国内对智能模型小车的设计各有特点,但各类文献[1-3]普遍偏重于某一算法的优化设计或软硬件系统的框架介绍。如文献[1]详述了弯道曲率的提取算法,并根据平行偏移值和航向角偏差确定小车转向角度。但对弯道的图像提取和舵机角度执行方式并未提及;文献[2]详述了小车稳压供电电路的连接方式和软件PID 控制流程框架,未提及图像识别和智能控制的具体实现过程;文献[3]对路径规划的“人工势场路径规划法”进行了详细的数学推导,但小车软硬件的实现方式阐述有限。以上为目前文献的典型,读者均可理解其原理,但难以重复其
39
天津限号2022最新限号10月
实现过程。本文设计的智能模型小车将详细阐述其设计与实现过程,为广大从事科研、设计、教育等工作的读者作参考。
2智能模型车硬件设计方案
智能模型车整体质量控制在5kg 以内,最高运行速度15km/h,确保调试或展示时均不会对人员产生伤害。能实现线路寻迹(任意单线路均可),障碍物测距避障,红绿灯识别功能,并留有后续二次开发空间(交通标志、人行道等识别;WiFi 控制;语音控制等)。该车核心控制芯片的选用,考虑后期可为车规级无人驾驶实车作技术储备,51系列、STM32系列单片机因计算能力和环境稳定性达不到车载级要求,不适合作为车载控制单片机,再考虑到价廉、轻质、小体积,本文选用车载32位单片机,恩智浦MK60DN512Z 系列单片机作为智能模型小车的控制芯片,视觉系统选用COMS OV7725彩摄像头,避障系
统选用HC-SR04超声波测距模块。该车整体硬件设计方案如图1所示。
该车转向使用左右电机差速控制,左前、左后TT 电机为一路,右前、右后TT 电机为另一路,由IRLR7843双路电机驱动模块控制,模块直接连12V 直流电源,输出电压视单片机对其PWM 控制参数的设置而定量变化。各控制单元模块的电路连接图如图2所示。
3智能模型车软件设计方案
NXP-MK60DN512Z 芯片单片机内核频率100MHz,超频可到180MHz,自带512KB 可编程Flash 和128KB SRMA,经过测试发现该类型芯片配置同时完成摄像头驱动、图像采集、TFT 屏幕显示、超声波测距、PWM 电机控制、红绿灯识别、道路寻迹等多种功能。由于多进程同步运行,其内存几乎满载,因此在软件的编译设计时,要合理分配进程和优先级,
否则极易出现运行卡死。程序
图1
智能模型车整体硬件设计方案
图2
智能模型车控制模块电路连接图
40
整体框架如图3。编译软件选IAR8.2版本,主程序代码如下,各驱动子程序参考文献[4]。
4智能模型车道路循线子程序设计方案
在智能模型车的各项功能中,道路巡线的算法设计和程序编译难度最大,因此本文在此详细展开介绍。
如图4,首先为摄像头采集输出图像,OV7725摄像头
图3智能模型车整体程序框架
图4
智能模型车道路循线子程序框架
是一款COMS 彩图像输出的摄像头,初始化程序参考文献[4]。原始图像每帧240行×320列共76800个像素点。场中断触发位为VSY,下降沿触发,内部上拉。每次场中断对应240次行中断,摄像头开始输出新1帧图片。行中断触发位为HREF,上升沿触发,内部下拉,每次行中断对应640次DMA 采集,DMA 时钟位PCLK,上升沿触发,源地址IO 端口内部下拉。每次行中断摄像头输出640字节,为320个像素点数据,因此每个像素点由2字节
41
16位组成,RGB565格式(高5位红R分量值,接着6位绿G分量值,低5位蓝B分量值)。输出的像素数据赋值给数组Image_Data[240][640]中,由于MK60芯片内存容不下这么大的数组,因此实际Image_Data数组为Image_Data[120][640],每帧只采集图像上半部分。
由于Image_Data[120][640]依然很大,超过了MK60芯片的图像处理能力,因此通过降低分辨率的方式运行Get_Use_Image子函数[4]将120*320像素压缩为60*100像素赋值给数组Image_Use[60][200](每个像素16位,由2个8位数组元素组成)。
川藏线318国道路线图
运行子函数RGB_Change(Image_Use)[4];将Image_ Use每个像素点的R、G、B分量分解到Pixle_R[60][100]、Pixle_G[60][100]、Pixle_B[60][100]3数组中。储存R、G、B分量的3个数组可用于红绿灯识别和蓝图案交通标志识别的图像处理,本文暂不予展开。而道路寻迹中最主要是要识别车道线,因此要获取对应图像灰度值。图像单个像素点灰度值和R、G、B分量值的关系如下式(1):Pixle_RGB=r×Pixle_R+g×Pixle_G+b×Pixle_B(1)
其中Pixle_RGB为单个像素点灰度值,Pixle_R、Pi-xle_G、Pixle_B分别为R、G、B分量值,r、g、b为比例系数。本文取r=1,g=0.5,b=1。灰度值储存Pixle_RGB[60][100]数组中。
为提取摄像头采集图像中的道路中心线轨迹,需要先对灰度值图像作噪声滤波和二值化处理,以上算法若调用OpenCV库函数,虽编译简单但需要预装有Linux 的小型服务器支持。为能仅靠廉价的MK60单片机实现,本文选择C语言直接编译。根据调试经验,本文选择先图像二值化,后噪声滤波。
图像二值化关键在灰度阈值分割点T的确定,在Pi-xle_RGB数组中,灰度值最高93,最低0。本文选用大津算法(Otsu)来确定灰度阈值分割点T,以此动态适应环境光亮变化的影响。算法思维如下[5-6]:
1)假设图像灰度值的分割阈值为Threshold,则单帧图像的像素点被分为2类;
C1类:灰度值在[0,Threshold]区间内的所有点;
C2类:灰度值在[Threshold+1,93]区间内的所有点。
2)C1类点占比P1,平均灰度值m1;
C2类点占比P2,平均灰度值m2。
3)计算变量Threshold的值,使得该分割阈值下类间方差σ2最大如式2
σ2=P1×P2(m1-m2)2(2)
大津算法子函数编译代码参考文献[4]。
单帧图像各像素点,如Pixle_RGB灰度值>大津分割阈值,则设值为1(白),如其≤大津分割阈值,则设值为0(黑),如此,像素灰度值数组Pixle_RGB[60][100]变为像素0-1二值化数组Pixle[60][100]。之后对图像进行噪声滤波,任意0像素点(黑点)上、下、左、右4个点中有3个以上白点(包括3个),该像素点置1(改成白点)。同理,任意1像素点(白点)上、下、左、右4个点中有3个以上黑点(包括3个),该像素点置0(改成黑点)。噪声滤波代码子函数编译参考文献[4]。
随后,计算单帧图像每行白像素点集的中心点的横(列)坐标,即每行所有白像素点的横坐标平均值。设图像第n行有m个白像素点,其所在列分别为c1,c2, c3…cm列,则第n行白像素点集的中心点的横坐标center
朗逸2012款报价如算式(3):
(3)
将单帧图像60行的center值均存储在Center[60]数组中,并用每行的中心点取代该行所有白像素点,则道路的理论中心线将被提取,并显示。
然而实际情况,各行中心点并非一定在一条直线上,如图5左所示(图中黑点为每行白像素点集的中心点),所以要判断前往道路的趋向(图上方为前),需要1条直线来拟合这些中心点,参考优化线性回归思想[7],如图5右,使得所有点到该直线的水平横向距离总和最小,如此依靠该直线的斜率便可近似该道路的偏转趋向,从而使智能车决策左、
右转向。
图5实际图像中心点分布及最佳拟合直线模拟由于图像的上方为道路前方,而图像像素点对应数组的列序号是从左往右递增,行序号时从上往下递增,因此单帧图像的坐标系如图6
所示。
图6智能小车单帧图像坐标系
所以,从上往下数第n行中心点的坐标值为(Center
42
[n],n),设直线方程为y=Kx+B,根据线性回归直线拟合公式(4)计算斜率
K:
(4)
式中,x i 为第i 行中心点的横坐标,y i 为第i 行中心点纵坐标,n 是实际中心点个数。因为有几行可能
没有道路标志线,没有白像素点,所以没有中心点,不能被统计在内。最佳拟合直线求K值子程序编译代码编译参考文献[4]。
根据测试经验:
1)如K>3或K<-3,认为道路线是直线,小车直行;2)如1<K≤3,道路线左偏,小车左转向;3)如3≤K<-1,道路线右偏,小车右转向;4)如0<K≤1,道路线大左拐,小车大左转;5)如-1≤K<0,道路线大右拐,小车大右转。如此实时控制小车行驶,代码编译参考文献[4]。
5智能模型车道路循线测试
本文选用6m×4m 智能交通环形沙盘作为智能模型小车测试道路,如图7,道路宽度30cm,道路中心白线宽2cm。智能小车测试时,实时单帧图像(100×60像素)转换处理采样效果如图8。计算得到60行中心点坐标值(精确到个位)如表1。随后运行最佳拟合直线求K 值子程序K_B,求得K=2.627,B=-84.236,根据转向执行子函数Turn_control 小车应往左转向,最佳拟合直线模拟示意图如图9。设定速度10km/h,每辆车售前均经过100圈测试,小车均能循环行驶不出轨,小车行驶中,中心和道
路中心线的偏离分布范围如图10,大致落在阴影部分中,其中最大偏离值为17.5cm(均在转弯处)。截至本文完稿,售后用户只要前期调试完毕,运行时设置正确,均无
脱轨现象反馈投诉。
图7
智能交通环形沙盘道路示意图
RGB565格式图像R+0.5G+B
灰度值图像
大津算法二值化图像噪音滤波后图像
图8
实测道路单帧100×60像素图像处理效果
(下转第53页)
序号0123456789
X 坐标31323233333434353535
Y 坐标0123456789
行序号10111213141516171819
X 坐标36363737383839393940
Y 坐标10111213141516171819
行序号20212223242526272829
长安cs75什么时候上市X 坐标40404141414242434344
Y 坐标20212223242526272829
行序号30313233343536373839
X 坐标44444545454646464547
Y 坐标30313233343536373839
行序号40414243444546474849
X 坐标47484848494951505050
Y 坐标40414243444546474849
行序号50515253545556575859
X 坐标51515252525353535454
Y 坐标50515253545556575859
表1
实测道路单帧图像各行中心点坐标值
cb400化油器
43