关键词不能为空

当前您在: 主页 > 英语 >

计算机控制小车走迷宫

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-03-02 20:16
tags:

-

2021年3月2日发(作者:庵)


计算机控制小车走迷宫





项目介绍




本项目采用


ATMEL


公司的


AT89S52


芯片为核心设计,实


现小车在计 算机控制下走出迷


宫的功能。实验设备包括实验


用小车一台和惠 普笔记本电脑


一台,外带摄像头,利用摄像


头采集迷宫和小车图 像,在计


算机端计算出路线,实时判断


小车位置并通过串口发送 指令


控制小车动作,使之在最短的


时间内离开迷宫





历史进度



3.8.2009



分组确定,


KC3-M2 5


成立



4.8.2009



上交


1-9


周进度报告



4.8.2009



上交中期检查


PPT


,并领取小车




中期已完成项目:




A.


迷宫制作





B.


图像处理



C.


路径生成




领取小车,开始进实验室进行调试。



5.22.2009



我组本学期科创


3


完成检测。详见



视频


(


点击播放


)


6.15.2009



上交


8-14

< p>
周进度报告





完成情况


&


自我评价



小组成员与分工




组长:陈云路













































































组员:李德元




















班级:


F0703013





学号:


50703094





专业:计算机科学与技术






主要工作:





OpenCV


迷宫图像及小车位置采 取


;





迷宫路径算法生成


;





单片机编程


;





计算机控制小车按指定路线行走


;





ppt


内容编写


;





网页内容编写


;





小车综合调试


;





小车模型制作







班级:


F0703013






学号:


50703094






专业:自动化







主要工作:






OpenCV


迷宫图像及小车位置采取



计算机控制小车按指定路线行走












































单片机编程



网页内容编写



小车综合调试



小车模型制作





组员:张欣刚































































































班级:


F0703013


学号:


50703094


专业:计算机科学与技术



主要工作:



OpenCV


迷宫图像及小车位置采取



ppt


美化制作



网站框架美化制作



网页内容编写



小车综合调试



小车模型制作



硬件介绍




硬件材料








89S52


单片机控制的小车、


RS2 32


有线收发模块、


USB



RS232


串口线、


计算机、摄像头

< p>



硬件介绍





(a)


小车




小车分为三个部分,主板部份、车体部份和控制芯片部份。




主板部分负责接受


8V


直流电源,


并向小车的电机提供电压,


向电路板上的


芯片提供工作电压。




车体部份主要为上层芯片和整体提供支撑,


它的电机为小车提供 动力前进。




控制芯 片部份负责识别并处理收到的信号,并输出控制信号,控制小车电


机的运转




(b)


信号收发模块





信号收发模块分为收 发两部分,即发送部分与串口连接,接受串行通讯标


准的


TTL


高低电平,将其调制后发送出去。




接受部份将发出的信号转化成标准串行通讯信号发送给小车。小车收到信


号后返回一个值发送到


PC


端。




(c)USB



RS232


线





此串口线将增加电脑一个


COM


口,


根据电脑的不同,


初始被 赋予的


COM


口地址也不同,可以在设备管理器中对端口地址进 行修改。




对于电脑 与小车进行串行通信来说该线是透明的。其


USB


端接电脑,< /p>


TxD


接无线发送模块的数据端,


Vcc


与发送模块


Vcc


相连,


GND


与发送模块


GND


连 接。




(d)


电脑及摄像头




使用电脑为


DELL


STUDIO XPS 16


,电脑自带摄像头。




(e)


控制芯片





本次实验主要用到两 块控制芯片,一块是


CMOS8


位微控制器

,其主要功


能是:




1


)兼容


MCS-51


指令系统




2


8k


可反复擦写


(>1000< /p>


次)


ISP FLASH ROM



3



1000


次擦写周期




4




32


个双向


I/O





5



4.5-5.5V


工作电压




6




3



16


位可编程 定时


/


计数器



7


)时钟频率


0-33MHz



8


)全双工


UART


串行中断口




9




128x8bit


内部


RAM



10




低功耗空闲和省电模式




11




中断唤醒省电模式




12



3


级加密位




13


)看门狗(


WDT


)电路



14


)软件设置空闲和省电功能




15


)灵活的


ISP


字节和分页编程




16


)双数据寄存器指针




AT89S52


是一种 低功耗、


高性能


CMOS8


位微控制器 ,


具有


8K


在系统可


编程


Flash


存储器。



AT89S52


使用


Atmel


公司高密度非易失性存储器技 术制


造,与工业


80C51


产品指令和 引脚完全兼容。片上


Flash


允许程序存储器在系

< p>
统可编程,亦适于常规编程器。在单芯片上,


AT89S52


拥有灵巧的


8



CPU< /p>


和在系统可编程


Flash


< p>
使得


AT89S52


为众多嵌入式控制应用系统提 供高灵活、


超有效的解决方案。


AT89S52


具有以下标准功能:




8k


字节


Flash



256


字节


RAM



32



I/O


口线,看门狗定时器,


2


个数


据指针,三个


16


位定时器

< br>/


计数器,一个


6


向量


2


级中断结构,全双工串行口,


片内晶振及时钟 电路。另外,


AT89S52


可降至


0Hz


静态逻辑操作,支持< /p>


2



软件可选择节电模式。空闲模式下,


CPU


停止工作,允许


RAM


、定时器


/


计数


器、串 口中断继续工作。掉电保护方式下,


RAM


内容被保存,振荡器 被冻结,


单片机一切工作停止,直到下一个中断或硬件复位为止。





PDIP

< br>图如下:





硬件原理图如下:





另一块芯片是


L298N

< p>
,用它来控制两个电机,和它的管脚图。




硬件原理图如下:




硬件调试




开始做科创三的时候,以为任务仅仅是写代码,不会涉及硬件的问题,


但这样想就大大错 了。硬件恰恰又是课程中比较麻烦,需要不断调整的环节。



花 了很久从一堆小车的尸体中翻到一个还算完整的,


拿回去仔仔细细对照了


一遍电路图,发现除了无线部分和


USB


连线以及电源 连线之外其他元件没有缺


失。因为我们是用


USB


线控制的,所以不再考虑无线部分,将残缺的部分都焊


接好后,


载入调试程序,


发现右驱动轮总是有异常情况发生,


常常在给出信号后


不转动,检查电路后发现是电机驱动芯片与电路板接触不良,将其重新 焊好后,


问题得到解决。



在检查电路 板时发现焊接的焊点不好,有些地方很容易短路,尤其是


51


的 焊接


处,而且我们的加长


USB


线等地 也容易出现短路。为此,我们将不好的焊点重


新焊过,


将易短路 的导线用透明胶包裹。


经过以上的修整后,


小车基本上每次都< /p>


可以正常运行了。



还有就是接线问题, 由于我们领到的小车上


USB


线非常的短,所以我们决


定将


USB


线一剪为二,


当中自己拿了两条导线把两头接了起来,


而另外两条


5V


线被我们屏蔽了。


这样变引起了我们多次小车不能接受命令的问题,


因为两头的


USB


线虽然外表看起来是 用透明胶粘了起来,但事实上里面的电线未有连接起


来。所以我们的

USB


线拆了又焊,好几次。所以我们最后也就死死地把两头导

线给焊上了。


还有值得一提的是,


就是小车的电源线很短,


我们用了很多导线拼


拼凑凑了起来才勉强能够将电源传输过去。


在此,


我也很想谢谢,


实验室的两位< /p>


助教给与我们的支持,


又是帮我们找导线,


又是帮我们找电源。


实在是太感谢助


教了,谢谢。

< p>


轮子问题其实我们已经提了不要再提了,


轮子打 滑是个非常严重,


非常实际,


也是非常难处理和克服的不是问题 的问题。


总的来说,


我们不光在前轮粘上了一

< br>圈透明胶减小摩擦力,


还在后轮上贴了双面胶,


加大摩擦 力。


可能还达不到最满


意的效果,但是在我们的试验下,小车还 是能够尽量不打滑地“动起来”。






软件介绍




1.


迷宫图像采取




调用


cvCaptureFromC AM



0


)函数打开摄像头,然后调用


cvSetCaptureProperty


函数修改摄像头相 关参数,如帧数之类。然后进行窗口


初始化,


定义窗口名称和大 小,


并使窗口显示摄像头采集的实时图像。


等待鼠标

< p>
事件,采点


4


个,并做了防抖处理,即:过于相邻 的点忽略。




想让采得的

< p>
4


点变换成预设图的顶点,须由


cvWarpPe rspectiveQMatrix


函数获取变换矩阵,再将变换矩阵代入


cvWarpPerspective


函数的参数,得到

迷宫俯视图。新建窗口,初始化,并在其中显示迷宫俯视图。




接着鼠标事件采两点分别是起点和终点,然后是迷宫二值化操 作。先用


cvSmooth


函数平滑处理图像,


运用


cvCvtColor



cvThreshold


函数即可实现


二值化。


最后将黑白迷宫图显示出来,


并且还生成一张比例缩小后的黑白迷宫图,


便于后面数据处理。




2.


迷宫路径生成






获得二 值化数组,即用


01


表示出整幅迷宫的情况。由于只是比列的缩 小采


取得到的迷宫,


非常不完整,


有时 候还不得不考虑到灯光的因素。


所以我们采取


了一种算法来修迷 宫。



然后通过已经大致修好的迷宫生成路径存到数组


path





最后按照正确的路径(数组


Right


),计 算得出关键点(数组


KeyPoint


),

即需要打弯的点


.



3.


小车图像采取




新开窗口,初始化,并实时采集小车和迷宫图像,通过鼠标事 件圈出小车,


通过直方图计算得小车颜色参数,


来识别小车,< /p>


并运用


cvCamShift


函数实现小


车的实时跟踪,由


cvEllipseBox

< br>作椭圆形来直观的锁定小车目标。




4.


控制小车按指定路线行走



利用状态转移树的思想,每取一次小车的位置,便更新当前的状态,按照状

态的比对向单片机发出指令。程序如下:














if(Car_x == 0 && Car_y == 0){






}




else{




cout <<






aaa =




send(aaa);


if (KeyPoint_i == G)





break;


DestDirction <<


KeyPoint_i<< endl;







switch (State){






case 0:





if( (Dirction == 0 && abs(Car_x - KeyPoint[KeyPoint_i+1][0])


<= 6 && Car_y - KeyPoint[KeyPoint_i+1][1] <= -1 ) || (Dirction == 2 &&


abs(Car_x - KeyPoint[KeyPoint_i+1][0]) <= 6 && Car_y -


KeyPoint[KeyPoint_i+1][1] >= 1 ) || (Dirction == 1 && Car_x -


KeyPoint[KeyPoint_i+1][0] >= 0 && abs(Car_y -


KeyPoint[KeyPoint_i+1][1]) <= 6 ) || (Dirction == 3 && Car_x -


KeyPoint[KeyPoint_i+1][0] <= 0 && abs(Car_y -


KeyPoint[KeyPoint_i+1][1]) <= 6 ) ){
























aaa =




send(aaa);




if(KeyPoint_i==G-1)





exit(0);




if(KeyPoint[Key Point_i+1][0]-KeyPoint[KeyPoint_i+2][0]


== 0 && KeyPoint[KeyPoint_i+1][1]-KeyPo int[KeyPoint_i+2][1] > 0)








DestDirction = 0;








if(KeyPoint[KeyPoint_i+1][0 ]-KeyPoint[KeyPoint_i+2][0]


== 0 && Key Point[KeyPoint_i+1][1]-KeyPoint[KeyPoint_i+2][1] < 0)




















DestDirction = 2;





if(KeyPoint[KeyPoint_i+1][0]-KeyPoint[KeyPoint_i+2 ][0] > 0 &&


KeyPoint[KeyPoint_i+1][1]-K eyPoint[KeyPoint_i+2][1] == 0)












DestDirction = 3;




if(KeyPoint[Key Point_i+1][0]-KeyPoint[KeyPoint_i+2][0]


< 0 && KeyPoint[KeyPoint_i+1][1]-KeyPoi nt[KeyPoint_i+2][1] == 0)
































DestDirction = 1;












if(DestDirction == Dirction){







aaa =




send(aaa);




cout <<




3n












}




else

-


-


-


-


-


-


-


-



本文更新与2021-03-02 20:16,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/692757.html

计算机控制小车走迷宫的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文