基于摄像头和飞思卡尔16的能小车寻迹系统设计
1 引言
智能小车寻迹系统是基于摄像头和飞思卡尔16微处理器mc9s12xs128组成,由摄像头采集图像有用信息送入单片机分析道路参数。
智能小车跑道表面为白色,中心有连续黑线作为引导线,黑线宽25mm,铺设跑道地板颜色与背景不一样;跑道宽度为60cm,窄道区的宽度为45cm;跑道最小曲率半径不小于50 厘米; 跑道可以交叉,交叉角为90度。
系统主要包括视频图像采集、图像处理、黑线中心提取、路径判断。
2 视频图像采集
图像采集是基于mc9s12xs128单片机来实现的。mc9s12xs128是飞思卡尔开发的以cpu12内核为核心的单片机,采用5v电源供电,总线速度最高可达40mhz,8kb ram,128kb flash,具有丰富的i/o模块和工业控制专用的通信模块[1]。
![](../img/eep/emb/emb-44385q21nsiayklp.jpg)
(a) 视频信号;(b) 行同步信号;(c) 场同步信号;(d) 奇偶场同步信号
图1 摄像头信号时序图
摄像头前瞻距离大,有利于提高速度。同时跑道色内外色差只有黑白两色,只需提取探测画面的灰度信息就能识别黑线信息,因而图像采集选用黑白摄像头。摄像头输出的是pal制式的复合全电视信号,每秒输出25帧,每帧分为偶场和奇场。黑白视频图像信号由图像信号、消隐信号及同步信号共同组成。场同步脉冲标志着新的一场到来。场消隐区恰好跨在一场的结尾部分和下场的开始部分,得等到场消隐区过去,下场的视频信号才真正到来。pal制式的摄像头每秒扫描25幅图像,每幅又分奇偶两场,故每秒扫描50场图像[2]。为此要有效地采集摄像头的视频信号,需要把摄像信号进行分离。lm1881视频同步信号分离芯片可从摄像信号中分离出行同步脉冲,场同步脉冲和奇偶场脉冲。下图为视频信号lm1881分离后时序图如图1所示,其摄像头采样电路图如图2所示。
![](../img/eep/emb/emb-443872fjk1ny5k54.jpg)
图2 摄像头采样电路图
设计采用80引脚mc9s12x128单片机。根据其引脚特点,pt口响应速度不如pj口响应速度好,所以选择pj口作为行中断和场中断输入口,本设计选用 pj7和pj6。但是pj口共用一个中断向量,因此在软件设计中用巧妙的方法先开pj6,关闭pj7。当奇偶场上升沿脉冲到来时,产生中断,进入中断服务程序,中断服务程序里延时一段时间,清掉消隐时间,然后开启行中断pj口,当行中断产生时延时一段时间开始采集图像信息,这里所有延时都是为了滤掉采集的非图像信息。本系统采集图像是采集同一场图像(即奇场和偶场)。这样可以减少摄像头因奇偶场硬件上不同而带来偏差。
为获得充足的图像信息,实现对智能车准确控制,图像采集每场为42×47个点 。通过实验证明,42×47的图像能够得到满意图像信息。采集效果如图3所示。图中数值为20-25表示黑线所在位置。
![](../img/eep/emb/emb-44389ddn3wdwkc3k.jpg)
图3 图像采集灰值情况
3 图像处理
了防止场地黑线干扰导致控制出错,需要对整幅图像进行滤波处理。因为黑色指引线是一条平滑连续的曲线,因此对于图像中出现的那些跳跃性较大的点即可视为干扰加以去除。
滤波方法有很多,如中值滤波对单片机开销较大,因此本系统采用对整幅图像进行较为简单的插值处理。这样不仅占用cpu时间少,而且也实现了对实时控制的要求。摄像头提取到的近处黑线信息出错的概率非常小,因此利用近处黑线的中心偏差,对前方的黑线中心偏差进行插值滤波。其滤波流程图如图4所示。插值滤波时,同时要注意小车在过急弯时的情况,因此要对插值后的黑线中心进行限幅处理。
![](../img/eep/emb/emb-443930v1asb3y2lt.jpg)
图4 插值算法流程图
4 引导线提取
由于黑线和白赛道的灰度值不确定,如果以设定的值作为黑线的灰度值,必然适应新环境的能力不强。但是黑色和白色灰度值之差变化不大,因此可以用灰度值之差作为黑线与白道的标准。根据实验,灰度值之差一般在15-30之间。本系统就是以此范围作为灰度值范围。
在查找黑线的点顺序也有一定方法。如果采用常用的从左到右依次查找黑点,这样不仅容易把周围的颜色误认为黑线,同时在一定程度上比较耗时。本系统采用从图像中央开始向侧查找,当找到黑线就停止该行查找,这样不仅可尽量减少查找到周围的颜色的机会,同时也能减少查找耗时。同时注意,在查找黑点时,应该查找到两个或两个以上的黑点才能作为黑线的位置,这样可以避免因随机产生的干扰的影响。
5 路径判断
5.1 弯直道判断
根据图像采集特点,直道时黑点偏离中心线位置较小,弯道时偏离中心线的位置大,用一个数学公式表征这一特点[3]即
式中:xi为采集到的黑点实际坐标
x为图像中心线的坐标位置
n为采样到黑点的总行数
通过多次实际赛道实验,直道时的curve一般在2以下,小弯道在3-10的范围内,10以上则能判定为大弯道,这就以数值判断赛道的情况,从而实现对舵机的
飞思卡尔16 mc9s12xs128 相关文章:
- 基于MC9S12XS128的单片机开发板的设计(08-13)
- MC9S12XS128驱动LEDP10显示屏(11-27)
- 基于飞思卡尔和摄像头的智能小车寻迹系统设计(05-13)
- 基于摄像头和飞思卡尔16的智能小车寻迹系统设计(05-07)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)