计算机控制小车走迷宫

2008.7.6                                                                                         M05组


小组成员     项目介绍       解决方案        课程体会         附录


小组成员                                                                                                            TOP

由左之右:刘宝华(组长),魏巍,唐哲,钱苏敏

刘宝华:F0603025班;负责图像数据处理,串口程序;

魏  巍:F0603025班;负责小车硬件部分,小车调试,制作报告;

唐  哲:F0603025班;负责小车硬件部分,小车调试;

钱苏敏:F0603026班;负责图像数据处理,制作报告;


项目介绍                                                                                                           TOP

 

说明:通过摄像头采集迷宫的数据及小车在迷宫中的位置信息,传输至计算机,计算机内部对图像信息进行处理,提取出有用信息数据,并根据数据生成小车走迷宫的路径,通过串口传至小车,小车接收指令走出迷宫。计算机发指令部分由计算机自己完成。

 

提供的实验器材:89S52单片机控制的小车,RS232有线收发模块、USB转RS232串口线。

另外自备计算机,摄像头。


解决方案                                                                                                      TOP

 

方案设计:

小车硬件电路图:

设计说明:

将整个项目分成4个部分,即图像采集处理部分,最优路径生成,串口通讯,小车电机控制。

1、图像采集处理部分。

图像采集与处理部分利用OpenCV(Open Source Computer Vision Library解决。

CV:图像处理,视觉算法

CXCORE:基本数据结构,运算

Highgui:GUI,图像,视频接口

 

 

 

这次实验主要参考了OpenCV中的Camshift的例子,利用OpenCV内部的函数将与电脑相连的USB摄像头获取的视频流导入程序中,然后依此对每帧图像进行处理。其中将初始化后的第一帧迷宫图像作为背景图,并且不再更新,利用二值化处理后的背景图得到迷宫信息,生成最优路径。之后的各帧图像实时跟踪小车在迷宫中的位置,并由此协助发送控制小车指令。

图像二值化算法(cvThreshold)

迷宫二值化化效果图

利用camshift为模板,它主要实现了动态跟踪图像中的特征区域,这里将小车作为目标特征区域。具体例子可以参考附录内容。

2、最优路径问题。

利用数据结构中的栈,在二值化后的迷宫图中遍历,得到最优路径。

注:这部分内容未完成。

3、串口通讯。

利用VC中的MSCOMMN,所以形式是MFC。

4、小车电机控制

这里主要参考了小车的selftest程序,以及梁健怡同学提供的例子,在这里表示感谢。具体内容可参考附录。

 

简略工作截图:

在系统测试过程中,小车可以良好的接收指令并做出反应。但因为产生最优路径的过程尚存在问题,所以小车接收的指令存在错误,即上位机的图像处理环节存在问题。

 


课程体会                                                                                                                      TOP

 

我们小组做下来,体会很深,主要有以下几个方面:

1、要接触很多之前没有接触过的东西。不管是图像处理部分,还是小车的单片机部分都不清楚的。虽然这个学期正在学微机原理与接口技术,帮助有一部分,但不是很大。所以需要自己根据需要从网上,图书馆里找资料。这对我们来说应该算是一个很新的过程。互联网绝对是个很好的资源,但是正因为它资源的丰富性与多样性,也给我们找到有效的信息带来一定的麻烦,那就是如果检索到对自己有实用的信息。我们从中学到了很多的信息检索的技巧,非常具有实用价值,而且,坦白说,我们现在非常依赖网络,这对于其他科目以及生活中遇到的很多问题的求解带来了方便。

当然,在搜需资料的过程中也暴露了我们一个很大的失误,这就是显得太功利。即执着于找到完全一样的问题,找到完全对应的答案。如果有直接的答案肯定非常便利,但是这阻碍了我们自己的能动性,阻碍了我们自己直接思考问题,而且由此也导致了大量时间的浪费。(网络丰富性,多样性的直接诱因啊,让人觉得所有问题都有答案的,只要动手找找就好了。其实如果自己能够动脑子思考那么收获更多)。

2、调试时间花费的比较多。课程的开始我们进入了一个误区,那就是以为软件做好了,硬件部分很容易的,这样就给软件部分自然的分配了大量的时间。而且,进实验室的时间也很晚。其实进实验室调试的过程能够暴露出很多的问题,这里不光只是有参数设置问题,也有之前没料到的问题,这样处理起来时间就显得很局促。所以一开始就应该有一个全局的意识,合理分配时间。

3、我们到最后终于还是没能全部完成,感觉非常可惜。不过,这其中也教会了我们很多。从我们完成的工作和未完成的工作来看,其实这个实验本身并无所谓难与不难,而是在于自己实际投入的多少,自己在实验的过程中,有多少工作是认真做的,有多少是回避的。从整体状况看来,只要合理分配时间、任务,这个实验的工作量是可以完成的没有问题。所以这里也涉及到如何发挥团队合作的优势,有时候如果这种优势发挥不出来,反而会降低工作效率,影响工作的进行。所以有效的团队合作是非常重要的。


附录                                                                                                                                 TOP

系统使用说明

程序代码及可执行文件

小车控制程序

实验报告电子版

其他参考资料(包括梁健怡同学贡献的资料,camshift例程,89s52中文说明)


最后,衷心感谢张老师、各位助教以及在课程过程中给我们帮助的各位同学~