您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > 工程实践与科技创新2B设计报告-M07【上海交大·科创2B】
工程实践与科技创新2B设计报告小车走黑线M07小组2011/7/3第1页目录1.项目概述................................................................................................................................22项目要求及材料准备............................................................................................................22.1项目要求.........................................................................................................................22.2所需材料.........................................................................................................................23.项目整体说明........................................................................................................................33.1结构说明.........................................................................................................................33.2软件设计.........................................................................................................................43.2.1开发环境..................................................................................................................43.2.2图像采集与处理......................................................................................................43.2.3路径分析.................................................................................................................63.2.5小车识别..................................................................................................................73.2.4小车控制..................................................................................................................83.3硬件部分.........................................................................................................................83.3.1硬件部分概述..........................................................................................................83.3.2串口通讯波特率设置..............................................................................................83.3.3串口收发指令..........................................................................................................93.3.4电机控制................................................................................................................104.小组完成情况......................................................................................................................114.1测试情况.......................................................................................................................114.2系统不足.......................................................................................................................124.3小组成员个人感受.......................................................................................................135.致谢......................................................................................................................................166.参考资料..............................................................................................................................167.附件......................................................................................................................................16第2页1.项目概述小车走黑线:利用计算机控制小车沿黑线向前走,以最快速度到达终点。2项目要求及材料准备2.1项目要求对现有小车(如图1)进行改装,加装标志物装饰等;用任意软件设计算法,通过摄像头采集图像,识别跑道、小车位置以及小车运行情况,控制小车沿黑线向前走。图1小车照片2.2所需材料玩具小车一部,采用直流电机(实验室提供)小车驱动电路板+蓝牙模块(实验室提供,见图2,图3)USB摄像头(自备)跑道(采用08级M01小组的跑道,并对其进行了改制)第3页3.项目整体说明3.1结构说明•摄像头采集跑道图像,并识别出跑道,判断路线•摄像头对小车目标进行实时采集,判别小车位置•计算机根据摄像头采集到的数据判断小车当前的前进方向,并对小车下达下一步动作指令•单片机接收到来自计算机的指令,从而控制小车继续前进并驶完全程图2驱动电路板正面图3驱动电路板背面图2自制跑道第4页3.2软件设计3.2.1开发环境编程语言:C++编译环境:VS2008所加载类库:OpenCV图像处理库,SerialPort串口读写类3.2.2图像采集与处理程序开始时先通过摄像头捕捉跑道图像,按下空格给跑道拍照。摄像头尽量至于高处,将跑道拍全,否则透视变换会使视差增大。要注意光线不能过暗或过亮,便于二值化将跑道准确识别出来。一旦拍下跑道照片,摄像头就不再移动。用鼠标选取跑道的四个角,按下空格进行透视变换。将跑道周围的干扰滤去,将跑道变换到正的坐标系中,并保存变换矩阵,以备在图像实时采集时用。用到OpenCV的库函数cvGetPerspectiveTransform和cvWarpPerspective函数。在后面实时采集小车和跑道图像时,都将先利用这个固定的变换矩阵对图像进行变换,统一坐标系。图5摄像头采集跑道画面第5页对透视变换后的图像进行二值化和细化,将跑道变为白色,其他变为黑色,细化是为了使路径点找取得更加准确。其中用到了cvSplit和cvThreshold函数,细化共进行6次,达到较为理想的效果。图6图像处理(透视变换)图7图像处理(二值化)第6页3.2.3路径分析在细化后的跑道上找到路径点,将跑道分解为一个个点,小车将沿着这些点走完跑道。用到找角点函数cvGoodFeaturesToTrack,其中qualityLevel参数设置为0.05,doubleminDistance为40,这样可以使找到的角点不至太密或太疏,总数控制在40个左右。将这些点保存在一个数组里。通过点到点之间的距离判断小车要到的下一个点,离当前点最近的点就是下一个目标点。每次遍历所有未访问过的点来找到与当前点距离最短的点,返回这个点的坐标。图8图像处理(细化)第7页3.2.5小车识别在小车遍历路径上的所有点之前,不断地从摄像头获取图像。图9路径分析图10小车识别第8页先利用cvCvtColor将获得的图像从rgb空间转换到hsv空间,利用cvSplit将图像分别分解到RGB和HSV空间上。再利用cvAnd和cvErode(对图像进行腐蚀处理一次)对图像进行处理,得到红色图像(车头)。在经过处理的图像上,借助CvMoment提取红色矩,再利用cvGetSpatialMoment计算出车头的质心(红色)。利用cvCircle将计算的质心在图像的圈出了,可以在测试的时候检测是否找到了正确的质心。对于车尾(蓝色部分),做类似的处理。在摄像头刚刚开始获取图像时,可能会因为光线等原因不能找到小车,出现质心越界。在这种情况下,不对小车发出控制指令,直到正确的找到小车后,按照小车和跑道的相对位置控制小车。3.2.4小车控制由小车识别找到小车的车头、车尾的质心后,通过比较小车车身的方向矢量和小车质心到下一个目标点的方向矢量来判别小车该左拐、右拐还是直行;通过比较小车质心到下一个目标点的距离来判断小车该前进还是停止。当然不可能使小车走的路线和找到的路径完全吻合,需要设定一定的可容许误差,否则小车可能永远也走不到某个点。比如当小车车身的方向与路径的方向角度小于某个角度允许误差时,就可认为是直行。当小车与下一个点的距离小于某个距离允许误差时,就可认为是到达该点并停止。当小车经过所有找到的路径点后,自动停止,程序退出。小车控制部分需要通过串口向小车发送字节命令。每次发送一个字节内容,并定义5个字节控制命令:#definesignal_left3//左转单片机指令#definesignal_right2//右转单片机指令#definesignal_go1//前进单片机指令#definesignal_back4//后退单片机指令#definesignal_stop0//停止单片机指令3.3硬件部分3.
本文标题:工程实践与科技创新2B设计报告-M07【上海交大·科创2B】
链接地址:https://www.777doc.com/doc-4883762 .html