image 1

项目介绍:本项目主要实现了计算机控制小车沿着指定的黑线从出发点运动到终点。计算机先通过摄像头获取整个地图,分析出路径;然后动态跟踪小车位置,并通过串口有线的方式对小车下达相应的指令,从而使得小车能够沿着黑色线路从起点运动到终点。 小车是由STC11系列芯片控制的,只能实现前轮两个马达的正转与反转。在整个工程中,小车方向的改变是通过控制两个马达分别处于正转和反转来实现。

计算机程序:计算机程序可以采集实时图像,将获取的黑线构造并将其抽象化为计算机可以处理的形式,并通过路线结构计算出最优路径;同时可以通过图像处理实时地获取小车的位置,基本可以控制小车在最优路径上行进

单片机程序:小车可以流畅接收PC端的指令并通过单片机和控制芯片完成前进、后退、转弯等操作。黑色线路总共2个弯,复杂度一般。

自我评价:在整个项目中,我们组在组长的带领下基本完成了任务。虽然黑色线路复杂度一般,最后也没有实现无线蓝牙的形式,但是我们为这个项目付出了努力,也收获了很多东西。

« Previous | Next »

image 1

在没有放置小车时,由USB接口摄像头捕捉黑线的路径情况,通过USB线缆传送至计算机控制程序。计算机程序经过对轨道的透视处理、二值化、细化、hough变换得到符合要求的路线。结构体如左所示

image 5

将小车放置到地图上,结构右图所示,计算机程序图像处理捕捉小车的位置,然后经过计算,做出下一步的行动决策,并生成控制信号经通讯模块发送至小车。小车上的控制电路对控制信号作出相应反应,驱动电机。如此反复直至计算机控制小车走到黑线终点

« Previous | Next »

硬件概述

pcb电路

上图所示为电路原理图,我们小组的小车微处理器为STC系列,基本功能和构造与AT89S52基本一样。L298N为电机控制芯片

主要元件

主要元件

主要元件包括:AT89S52微控制器以及L298N电机控制芯片。上图为AT89S52引脚图

计算机通信的实现

小车通过一根USB转RS232线与计算机连接,通过驱动程序可以使USB端口作为一个虚拟串口,然后将USB的TXD与小车单片机的RXD相连,GND与小车的GND相连即可实现与小车的有线通信。单片机的波特率与计算机程序中的波特率均为9600Baud,这是进行通信的前提

« Previous | Next »

image 8

1.单片机程序:在计算机程序运行开始之后,最初给单片机发送前进指令,接着根据捕捉到的小车位置发出相应指令,小车做出相应动作直到路线终点。
2.正面变换:在跑道图像上选取四个点,取点顺序为:左上,右上,左下,右下,进行perspective变换,得到正面图像
3.二值化:二值化通过阀值来控制,由于不同环境下,不同阀值的效果不一样,所以设置一个滑动条,以用来在不同场合确定最合适的二值化阀值。

image 9

4.跑道细化:细化部分采用了指导书提供的代码,该功能封装在mapThin()函数中。Hough变换后运行情况如右图。
5.跑道分析:由于本组小车较大,导致实际运行时,经常出现小车甩到视野之外。对此有两种方法,一是制作一个大的跑道,另一个是使视野包含地图外的一部分场景。最终我们采用了第二种方法。
6.实时控制:实时控制包括小车跟踪以及指令分析。我们自己实现了一个跟踪算法,该算法描述如下:获取车头或者车尾的histogram图,用cvInRangeS()二值化,对二值化后的图像找到颜色点团的中心(该点周围颜色点数量最多),返回该中心点作为车头或车尾的中心点。

« Previous | Next »

小组成员及分工:

张琪:图像处理,网页编程

高翔宇:小车行进算法编程,网页编程

覃尧:硬件接口,报告撰写,单片机编程

系统测试情况:

我们小组实现了项目的基本部分,即能够让小车通过与计算机有线连接的方式接受计算机的指令,同时计算机能实时获取小车位置,并让小车较好地从起点走到终点。

系统不足:

整个系统由于在设计过程中主观与客观因素的影响,存在很多不足。例如,由于我们组小车的竖直高度很高,并且摄像头的位置可能放置较低,使得小车在行进的过程中可能会出现偏离摄像头所能及的范围,从而导致整个过程的失败,这是我们组在整个调试的过程中遇到的一个很大的问题。再如,由于我们组选择识别小车的标志是一个绿色和蓝色的塑料盖子,所以使得整个系统受外部光线较大的影响。最后,由于时间的原因,我们小组最后没有实现无线蓝牙方式,这也算是一个较大的遗憾。

« Previous | Next »