版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
-z.摘要:智能小車是各類電子競賽的經(jīng)典題目。本工程在現(xiàn)有的玩具小車的根底上加裝各類傳感器及微處理器,實現(xiàn)對路況的識別及小車的控制,并最終實現(xiàn)智能小車電路板的開發(fā)設(shè)計,完成一套完整的自設(shè)計智能小車體系。本論文主要表達1.〕智能玩具小車控制板的電機驅(qū)動模塊的原理圖設(shè)計及調(diào)試。電機驅(qū)動控制模塊是整個控制板的核心內(nèi)容,主要涉及到電機方向控制單元和速度控制單元兩大局部。方向控制單元負責(zé)小車電機的正轉(zhuǎn)、反轉(zhuǎn)和停頓三態(tài)控制,速度控制單元是擴展單元,是為了適應(yīng)不同的場合需求而設(shè)置的。2.〕著重討論智能小車輔助設(shè)備的原理與運用,包括攝像頭設(shè)備〔ET21*111〕,霍爾傳感器〔A3144〕,光電對管〔TCRT5000〕,LCD液晶屏幕〔RT1602C〕等。3.〕本文主要論述智能玩具小車控制板的無線通信模塊的原理圖設(shè)計及調(diào)試。無線通信模塊是智能玩具小車得以實現(xiàn)智能化的重要因素,電腦通過架設(shè)在場地上的攝像頭,處理得到的數(shù)據(jù),同時把控制小車的指令通過無線通信模塊傳送給小車,到達控制小車的目的。4.〕智能玩具小車控制的總后臺,即電腦的圖象處理程序。圖象處理是整個控制的核心內(nèi)容,主要涉及到小車方向控制和速度控制兩大部,它首先判斷小車和目標(biāo)的相對位置,然后通過無限芯片發(fā)送不同的指令來控制小車的行動路線。關(guān)鍵詞:智能玩具小車,電機驅(qū)動模塊,方向控制,速度控制,攝像頭,霍爾傳感器,光電對管,LCD液晶屏幕,無線通信,圖象處理1.系統(tǒng)總述1.1系統(tǒng)組成圖1.1.1智能玩具小車系統(tǒng)組成示意圖單片機路線/轉(zhuǎn)速檢測電動機驅(qū)動路況檢測無線傳輸LCD顯示電腦處理52.系統(tǒng)的主要功能2.1單片機子系統(tǒng)通過無線傳輸設(shè)備接收電腦輸出的命令并執(zhí)行;連接電動機進展簡單轉(zhuǎn)速控制運算;進展小范圍內(nèi)路線自動控制;輸出當(dāng)前狀態(tài)至LCD顯示。本系統(tǒng)采用ATS9852芯片。2.2電動機驅(qū)動子系統(tǒng)采用兩步進電機,接收來自單片機信號,通過電機前后轉(zhuǎn)動組合實現(xiàn)小車前向、后向以及左右運動。2.3路線/轉(zhuǎn)速檢測子系統(tǒng)利用光電對管對小車進展自動路線糾正;利用霍爾傳感器進展小車速度檢測并反應(yīng)到單片機內(nèi)進展小范圍內(nèi)速度調(diào)控。2.4LCD顯示子系統(tǒng)從單片機獲取當(dāng)前小車動態(tài)數(shù)據(jù)以數(shù)字形式在LCD屏幕顯示,方便實時監(jiān)控小車狀態(tài)并檢測調(diào)試。本系統(tǒng)采用RC1602CLCD屏幕顯示。2.5無線傳輸子系統(tǒng)接收來自電腦處理所得的命令并發(fā)送到單片機。本系統(tǒng)采用ET13*330/ET3*340無限發(fā)送接收模塊。2.6電腦處理子系統(tǒng)接收攝像頭路況圖像并進展處理,將處理后命令通過無線模塊發(fā)送至單片機執(zhí)行。2.7路況檢測子系統(tǒng)利用連接到電腦上的攝像頭進展路況攝像,所得圖像經(jīng)電腦處理成為小車控制命令。本系統(tǒng)采用ET21*111攝像頭。63.主系統(tǒng)的硬件設(shè)計3.1主要功能及設(shè)計目標(biāo)將電動機驅(qū)動電路以及單片7機控制電路整合在同一電路中,實現(xiàn)單片機對小車的根本操作,包括前后運動以及左右轉(zhuǎn)向。3.2電路設(shè)計方案圖3.2.1電路設(shè)計方案圖74.電動機驅(qū)動電路的設(shè)計4.1H橋電路簡介下面詳細地介紹一下H橋的工作原理:眾所周知H橋有四個臂分別為B1、B2、B3、B4,分別對應(yīng)圖4.1.1中的Q2、Q3、Q7、Q8。四個臂分為兩組Q2、Q3和Q7、Q8,每一組的兩個臂都是同時導(dǎo)通,同時關(guān)斷的。如果讓Q2、Q3導(dǎo)通Q7、Q8關(guān)斷,電流會流經(jīng)Q3、負載、Q2組成的回路,加在負載Load兩端的電壓左正右負,如圖4.1.2所示,此時電機正轉(zhuǎn);如果讓Q7、Q8導(dǎo)通Q2、Q3關(guān)斷,電流會流經(jīng)Q8、負載、Q7組成的回路,加在負載Load兩端的電壓為左負右正,此時電機反轉(zhuǎn),對應(yīng)圖4.1.3所示。另外如果讓Q2、Q3關(guān)斷Q7、Q8也關(guān)斷,負載Load兩端懸空,此時電機停轉(zhuǎn)。這樣就實現(xiàn)了電機的正轉(zhuǎn)、反轉(zhuǎn)、停頓三態(tài)控制。圖4.1.1圖4.1.2由于Q2、Q3,Q7、Q8的導(dǎo)通和關(guān)斷是通過Q1、Q6控制,而Q1、Q6的導(dǎo)通和關(guān)斷又是通過MOT1〔IOB10〕、MOT2〔IOB11〕控制的,所以電機的狀態(tài)還是通過I/O端口來控制的。表2.1描述了IOB10和IOB11所控制電機運行狀態(tài)與端口數(shù)據(jù)的對應(yīng)關(guān)系注意:由H橋的工作原理可知,H橋的四個臂不能同時導(dǎo)通,一旦四個臂同時導(dǎo)通會出現(xiàn)類似短路的現(xiàn)象,在H橋的每一個臂上都會有很大的電流流過。如圖4.1.3,Q2、Q3、Q7、Q8同時導(dǎo)通時,就會形成Q3、Q7回路和Q2、Q8回路,就會有很大的電流經(jīng)過這4個三極管,嚴重時會燒毀三極管甚至引起電源爆8圖4.1.3以上分析的是兩個H橋電路的其中之一,另外一個H橋的電路構(gòu)造和工作原理是完全一樣,在這里就不再贅述。小車的運動是靠輪子帶動的,而輪子的轉(zhuǎn)動是靠電機帶動的,所以在確定了電機的運行狀態(tài)之后就能夠推斷出小車的運行狀態(tài)。下面是小車運行狀態(tài)與61板端口數(shù)值對照表〔表2.2〕:4.2H橋電路的保護電路設(shè)計為了防止出現(xiàn)上述情況,我們設(shè)計了以下邏輯電路〔圖4.1.4〕,從而防止了出現(xiàn)四個臂同時導(dǎo)通的情況。圖8.2.2RT1602C數(shù)據(jù)傳輸時序圖8.3RT1602C根本操作程序//LCD初始化程序voidLCD_INIT(void){OUTI(0*38);//設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(L),及字型(F)delay(60);OUTI(0*38);//設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(L),及字型(F)delay(50);OUTI(0*38);//設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(L),及字型(F)delay(50);OUTI(0*38);//設(shè)接口數(shù)據(jù)位數(shù)(DL),顯示行數(shù)(L),及字型(F)delay(50);OUTI(0*0F);//設(shè)整體顯示開關(guān)(D),光標(biāo)開關(guān)(C),及光標(biāo)位的字符閃耀(B)delay(50);OUTI(0*01);//清屏指令delay(50);OUTI(0*06);//設(shè)光標(biāo)移動方向并指定整體顯示是否移動delay(50);OUTI(0*80);//設(shè)DDRAM地址,設(shè)置后DDRAM數(shù)據(jù)被發(fā)送和接收delay(50);}//重定義std庫內(nèi)putchar,以printf調(diào)用charputchar(charc){staticunsignedcharflag=0;if(!flag||c==255){OUTI(0*80);flag=0;21if(c==255){returnc;}}if(flag==16){OUTI(0*80+0*40);}OUTD(c);//送一個字符顯示_nop_();flag++;//incrementthelineflagif(flag>=32){flag=0;}//顯示完之后去除return(c);}//時延函數(shù)voiddelay(unsignedchartime){unsignedchari;for(;time>0;time--){for(i=0;i<=100;i++)_nop_();}}//命令執(zhí)行命令voidBWritemand(){pc8255=0*00;//寫命令pc8255=0*04;//讀忙,E為1_nop_();pc8255=0*00;//讀入數(shù)據(jù),執(zhí)行命令}//數(shù)據(jù)寫入命令voidBWriteData(){pc8255=0*01;//寫數(shù)據(jù)pc8255=0*05;//讀入數(shù)據(jù),執(zhí)行命令_nop_();pc8255=0*01;//讀忙,E為1}//命令行輸出voidOUTI(unsignedcharoi){pb8255=oi;BWritemand();_nop_();_nop_();pc8255=0*02;//讀忙}22//數(shù)據(jù)行輸出voidOUTD(unsignedcharod){pb8255=od;BWriteData();_nop_();_nop_();pc8255=0*02;//讀忙}239.ET13*330無線通信芯片的原理與使用2.1.1功能描述TheET13*330isaCMOSintegratedcircuitintendforuseasalow-costAM/ASKreceiver.Thedeviceisprovidedin24-pinSSOPpackageandisdesignedtoprovideaphasedlockedfrequencysourceforuseinlocaloscillatorortransmitterapplications.ThechipintegratedVCO,phasedetector,percale,LNA,MI*ER,IFamplifier,peakdetectordatadecisionandreferenceoscillatorrequireonlytheadditionofane*ternalcrystaltoprovideapletephase-lockedloop.TheET13*330isaoflow-powerRFreceiverIC’sthatwasdevelopedforwirelessdatamunicationdevicesoperatingintheEuropean433MHZISMbandsorU.S.315MHZISMband.TheET13*330realizeahighlyintegrated,single-conversionASK/OOKreceiverwiththeadditionofareferencecrystal,andafewpassiveponents.TheLNAinputofthechipiseasilymatchedtoafront-endfilterorantennabymeansofaDCblockingcapacitorandreactiveponents.ThelocaloscillatorgeneratedbyaninternalVCO.PLLandphasedetector,loopfilterandVCOresonatorponentsande*ternalreferencecrystal.ThereceiverIFsectionisoptimizedwithe*ternal10.7MHZceramic10.7MHZ,where,aftere*ternalband-passfiltering,mostoftheamplificationisdone,TheIFoutputsisdrivenbyasource-follower,basedtocreateadrivingimpedanceof3300tointerfacewithanoff-chip330010.7MHZceramicIFfilter.2.1.2芯片框圖242.2無線通信模塊局部調(diào)試程序源代碼#include<REG*51.H>sbitm1=P1^0;sbitm2=P1^1;sbitm3=P1^2;sbitm4=P1^3;unsignedcharrecv='c';unsignedintbuf1;unsignedintbuf2;voidplay(){m1=1;m2=1;for(buf1=0;buf1<255;buf1++){for(buf2=0;buf2<255;buf2++){}}m1=0;m2=0;for(buf1=0;buf1<255;buf1++){for(buf2=0;buf2<255;buf2++){}}}voidmain(){SM0=0;SM1=1;REN=1;25PCON=PCON&0*7f;TMOD=0*20;TH1=0*A0;TL1=0*A0;TR1=1;m1=0;m2=0;m3=0;m4=0;play();play();play();while(1){SBUF='K';RI=0;while(RI==0);recv=SBUF;if(recv=='a'){m1=0;m2=0;m3=0;m4=0;}if(recv=='b'){m1=1;m2=1;m3=1;m4=1;}if(recv=='c'){m1=0;m2=1;m3=0;26m4=1;}if(recv=='d'){m1=1;m2=0;m3=1;m4=0;}/*TI=0;SBUF=recv;while(TI==0);*/}}2710.圖像處理技術(shù)的原理和應(yīng)用10.1圖象處理簡介下面詳細地介紹一下列圖象處理程序的設(shè)計原理:首先,我們要通過攝像頭獲取圖象,然后才能處理圖象,Matlab中能夠非常容易的實現(xiàn)圖象的獲取:vidobj=videoinput('winvideo',1,'RGB24_320*240');preview(vidobj);pause(1);%maketheimagemoreclearbackground=getsnapshot(vidobj);建立一個視頻流對象后vidobj,應(yīng)用getsnapshot〔〕函數(shù)就能獲取當(dāng)前視頻的畫面,并以圖象的形式存儲到了background中,以便對圖象進展處理。其次,我們要識別小車,就要檢測其邊緣并提取輪廓,因此下面用一些例子簡要分析一下列圖象的邊緣檢測與輪廓提取原理以及方法。1.邊沿檢測:這種程序就是一種邊沿檢測器,它在數(shù)學(xué)上的涵義是一種基于梯度的濾波器,又稱邊沿算子,你沒有必要知道梯度確實切涵義,只要有這個概念就可以了。梯度是有方向的,和邊沿的方向總是正交〔垂直〕的,例如,對于圖象,邊是水平方向的,我們可以用梯度是垂直方向的模板檢測它的邊沿,這里矩陣作為模板其實是實現(xiàn)了一個離散函數(shù)的梯度計算,在Matlab中可以方便的實現(xiàn)矩陣的運算,這也是我們選擇matlab作為開發(fā)軟件的原因之一。Sobel算子在邊沿檢測中,常用的一種模板是sobel算子。有兩個,一個是檢測水平邊沿的.一個是檢測豎直平邊沿的。與和相比,sobel算子對于像素的位置的影響做了加權(quán),因此效果更好。Sobel算子另一種形式是IsotropicSobel算子,也有兩個,一個是檢測水平邊沿的,一個是檢測豎直平邊沿的。IsotropicSobel算子又稱各向同性的Sobel算子。和普通Sobel算子相比,它的位置加權(quán)系數(shù)更為準(zhǔn)確,在檢測不同方向的邊沿時梯度的幅度一致。28圖10.1.原圖圖10.2普通Sobel算子處理后的結(jié)果圖圖10.3各向同性Sobel算子處理后的結(jié)果圖上面的幾幅圖中,圖1為原圖,圖2為普通Sobel算子處理后的結(jié)果圖,圖3為各向同性Sobel算子處理后的結(jié)果圖,可以看出Sobel算子確實把圖象中的邊沿提取了出來。高斯拉普拉斯算子由于噪聲點〔灰度與周圍點相差很大的點〕對邊沿檢測有一定的影響,所以效果更好的邊沿檢測器是高斯拉普拉斯(LOG)算子。先平滑掉噪聲,再進展邊沿檢測,所以效果會更好。29常用的LOG算子是5*5的模板,如下所示。到中心點的距離與位置加權(quán)系數(shù)的關(guān)系用曲線表示為:圖10.4LOG到中心點的距離與位置加權(quán)系數(shù)的關(guān)系曲線是不是很象一頂墨西哥草帽?所以,LOG又叫墨西哥草帽濾波器。下列圖為圖5用LOG濾波器處理后的結(jié)果。圖10.5用LOG濾波器處理后的結(jié)果圖2.輪廓提取輪廓提取如下列圖所示:30圖10.6原圖圖10.7輪廓提取輪廓提取的算法非常簡單,就是掏空內(nèi)部點:如果原圖中有一點為黑,且它的8個相鄰點都是黑色時〔此時該點是內(nèi)部點〕,則將該點刪除。要注意的是,我們處理的雖然是二值圖,但實際上是256級灰度圖,不過只用到了0和255兩種顏色。3.輪廓跟蹤輪廓跟蹤,顧名思義就是通過順序找出邊緣點來跟蹤出邊界。圖10.6經(jīng)輪廓跟蹤后得到的結(jié)果如圖10.8所示圖10.8輪廓跟蹤后的結(jié)果一個簡單二值圖象閉合邊界的輪廓跟蹤算法很簡單:首先按從上到下,從左到右的順序搜索,找到的第一個黑點一定是最左上方的邊界點,記為A。它的右,右下,下,左下四個鄰點中至少31有一個是邊界點,記為B。從開場B找起,按右,右上,上,左上,左,左下,下,右下的順序找相鄰點中的邊界點C。如果C就是A點,則說明已經(jīng)轉(zhuǎn)了一圈,程序完畢。否則從C點繼續(xù)找,直到找到A為止。判斷是不是邊界點很容易:如果它的上下左右四個鄰居都是黑點則不是邊界點,否則是邊界點。上述三個圖象處理步驟描述了圖象處理的根本過程,我們在調(diào)試中用的是小車撞擊乒乓÷球,因此我們只需要識別小車與乒乓球,同時為了簡化程序,我們還在小車上裝設(shè)了標(biāo)志,用來識別小車。并且在圖象處理程序中我們首先進展了濾波,消除干擾因素,然后正確判斷小車與乒乓球的相對位置。我們一共用到如下的幾個函數(shù):FindLastRed:用來找到小車上的標(biāo)記的坐標(biāo)的函數(shù)Isroundred:用來進一步確認真正的標(biāo)記的函數(shù)〔考慮到干擾因素〕FindLastYellow:用來找到乒乓球的坐標(biāo)的函數(shù)Isround:用來進一步確認真正的乒乓球坐標(biāo)的函數(shù)〔考慮到干擾因素〕Position:用來根據(jù)小車標(biāo)記和乒乓球的坐標(biāo)給出相應(yīng)的位置信息的函數(shù)。Travel:相當(dāng)于主函數(shù),用來實時的從視頻流獲取圖象并調(diào)用子函數(shù)處理圖象,返回控制信息的函數(shù)。10.2圖像處理算法軟件實現(xiàn)最終程序如下:function[o*,oy,r]=FindFirstRed(*,*1,*2,y1,y2)a*1=0;a*2=0;ay=0;fori=*1:*2;forj=y1:y2;a=*(i,j,1);b=*(i,j,2);c=*(i,j,3);if(a>150&&b<150&&c<90);a*1=i;ay=j;a*2=FindLastRed(*,a*1+1,*2,ay);a*=(a*1+a*2)/2;oy=ay;o*=round(a*);r=round(abs(a*2-a*1)/2);if(Isroundred(*,o*,oy,r)==1);return;end;end;end;32end;o*=0;oy=0;r=0;functiono*=FindLastRed(*,*1,*2,y)fori=*1:*2;a=*(i,y,1);b=*(i,y,2);c=*(i,y,3);if(a<=150||b>=150||c>=90);o*=i;return;end;end;o*=0;function[o*,oy,r]=FindFirstYellow(*,*1,*2,y1,y2)a*1=0;a*2=0;ay=0;fori=*1:*2;forj=y1:y2;a=*(i,j,1);b=*(i,j,2);c=*(i,j,3);if(a>150&&b>100&&c<90);a*1=i;ay=j;a*2=FindLastYellow(*,a*1+1,*2,ay);a*=(a*1+a*2)/2;oy=ay;o*=round(a*);r=round(abs(a*2-a*1)/2);if(Isround(*,o*,oy,r)==1);return;end;end;end;end;33o*=0;oy=0;r=0;functiono*=FindLastYellow(*,*1,*2,y)fori=*1:*2;a=*(i,y,1);b=*(i,y,2);c=*(i,y,3);if(a<=150||b<=100||c>=90);o*=i;return;end;end;o*=0;functiony=Isroundred(*1,o*,oy,r)y=0;a=round(r/2);if(o*+a>240||oy+a>320||o*-a<1||oy-a<1);return;end;if(*1(o*,oy+a,1)>150&&*1(o*,oy+a,2)<150&&*1(o*,oy+a,3)<90);if(*1(o*,oy-a,1)>150&&*1(o*,oy-a,2)<150&&*1(o*,oy-a,3)<90);if(*1(o*+a,oy+a,1)>150&&*1(o*+a,oy+a,2)<150&&*1(o*+a,oy+a,3)<90);if(*1(o*-a,oy+a,1)>150&&*1(o*-a,oy+a,2)<150&&*1(o*-a,oy+a,3)<90);if(*1(o*-a,oy-a,1)>150&&*1(o*-a,oy-a,2)<150&&*1(o*-a,oy-a,3)<90);if(*1(o*+a,oy-a,1)>150&&*1(o*+a,oy-a,2)<150&&*1(o*+a,oy-a,3)<90);y=1;end;end;end;end;end;end;functiony=Isround(*1,o*,oy,r)y=0;34a=round(r/2);if(*1(o*,oy+r-5,1)>150&&*1(o*,oy+r-5,2)>100&&*1(o*,oy+r-5,3)<90);if(*1(o*,oy-r+5,1)>150&&*1(o*,oy-r+5,2)>100&&*1(o*,oy-r+5,3)<90);y=1;end;end;function[s,r]=Position(d*,dy)s=0;r=(d*^2+dy^2)^0.5;if(d*==0&&dy==0);return;end;if(dy==0&&d*>0);s=0;return;end;if(dy==0&&d*<0);s=180;return;end;if(d*==0&&dy>0);s=90;return;end;if(d*==0&&dy<0);s=270;return;end;q=d*/dy;temp=acot(q)*180/pi;if(d*<0&&dy<0);s=temp+180;return;end;if(d*>0&&dy>0);35s=temp;return;end;if(d*<0&&dy>0);s=temp+180;return;end;if(d*>0&&dy<0);s=temp+360;return;end;%disp(mq);%a=3;%b=4;%c=(a^2+b^2)^0.5functiontravel(action)%TRAVELTravelingsalesmanproblemdemonstration.%Thisdemoanimatesthesolutionofthe%so-called"TravelingSalesman"problem.%Theproblemistoformaclosedcircuitofa%numberofcitieswhiletravelingtheshortest%totaldistancealongtheway.%%Thealgorithmthisdemousesisverysimple,%andsotheemphasishereismoreonthe%animationthanonrapid,efficientsolution.%%Usethe"Cities"popupmenutodeterminethe%numberofcitiestobevisited.The"Start"%and"Stop"buttonscontroltheanimation.Cities%arechosenpletelyatrandom.%NedGulley,6-21-93%Copyright1984-2003TheMathWorks,Inc.%$Revision:5.21.4.2$$Date:2004/04/1023:25:50$36%Informationregardingtheplaystatuswillbeheldin%thea*isuserdataaccordingtothefollowingtable:play=1;stop=-1;ifnargin<1,action='initialize';end;switchactioncase'initialize',oldFigNumber=watchon;figNumber=figure(...'Name','Travel:TheTravelingSalesmanProblem',...'NumberTitle','off',...'Visible','off',...'DoubleBuffer','on',...'Color',[0.90.90.9],...'BackingStore','off');a*es(...'Units','normalized',...'Position',[0.050.050.750.90],...'Visible','off',...'Ne*tPlot','add');te*t(0,0,'Pressthe"Start"buttontoseetheedgedetectionandbeginimageprocessing',...'HorizontalAlignment','center');a*is([-11-11]);%===================================%InformationforallbuttonslabelColor=[0.80.80.8];yInitPos=0.90;*Pos=0.85;btnWid=0.10;btnHt=0.10;%Spacingbetweenthebuttonandthene*tmand'slabelspacing=0.05;%====================================37%TheCONSOLEframefrmBorder=0.02;yPos=0.05-frmBorder;frmPos=[*Pos-frmBorderyPosbtnWid+2*frmBorder0.9+2*frmBorder];h=uicontrol(...'Style','frame',...'Units','normalized',...'Position',frmPos,...'BackgroundColor',[0.500.500.50]);%====================================%TheSTARTbuttonbtnNumber=1;yPos=0.90-(btnNumber-1)*(btnHt+spacing);labelStr='Start';cmdStr='start';callbackStr='travel(''start'');';%GenericbuttoninformationbtnPos=[*PosyPos-spacingbtnWidbtnHt];startHndl=uicontrol(...'Style','pushbutton',...'Units','normalized',...'Position',btnPos,...'String',labelStr,...'Interruptible','on',...'Callback',callbackStr);%====================================%TheCITIESpopupbuttonbtnNumber=2;yPos=0.90-(btnNumber-1)*(btnHt+spacing);te*tStr='Points';popupStr=reshape('1520253035404550',4,8)';%GenericbuttoninformationbtnPos1=[*PosyPos-spacing+btnHt/2btnWidbtnHt/2];btnPos2=[*PosyPos-spacingbtnWidbtnHt/2];popupHndl=uicontrol(...'Style','te*t',...'Units','normalized',...'Position',btnPos1,...'String',te*tStr);38btnPos=[*PosyPos-spacingbtnWidbtnHt/2];popupHndl=uicontrol(...'Style','popup',...'Value',4,...t'Units','normalized',...'Position',btnPos2,...'String',popupStr);%====================================%TheSTOPbuttonbtnNumber=3;yPos=0.90-(btnNumber-1)*(btnHt+spacing);labelStr='Stop';%Settinguserdatato-1(=stop)willstopthedemo.callbackStr='set(gca,''Userdata'',-1)';%GenericbuttoninformationbtnPos=[*PosyPos-spacingbtnWidbtnHt];stopHndl=uicontrol(...'Style','pushbutton',...'Units','normalized',...'Position',btnPos,...'Enable','off',...'String',labelStr,...'Callback',callbackStr);%====================================%TheINFObuttonlabelStr='Detection';callbackStr='travel(''info'')';infoHndl=uicontrol(...'Style','push',...'Units','normalized',...'Position',[*Pos0.20btnWid0.10],...'String',labelStr,...'Callback',callbackStr);%====================================%TheCLOSEbuttonlabelStr='Close';callbackStr='close(gcf)';closeHndl=uicontrol(...'Style','push',...39'Units','normalized',...'Position',[*Pos0.05btnWid0.10],...'String',labelStr,...'Callback',callbackStr);%UncoverthefigurehndlList=[startHndlpopupHndlstopHndlinfoHndlcloseHndl];set(figNumber,...'Visible','on',...'UserData',hndlList);watchoff(oldFigNumber);figure(figNumber);case'start',%////////////////////////////////////////////////////////////vidobj=videoinput('winvideo',1,'RGB24_320*240');preview(vidobj);%////////////////////////////////////////////////////////////WNumber=watchon;a*Hndl=gca;figNumber=gcf;hndlList=get(figNumber,'Userdata');startHndl=hndlList(1);popupHndl=hndlList(2);stopHndl=hndlList(3);infoHndl=hndlList(4);closeHndl=hndlList(5);set([startHndlcloseHndlinfoHndl],'Enable','off');set(stopHndl,'Enable','on');set(a*Hndl,'Userdata',play);set(popupHndl,'Enable','off');%======StartofDemo%Travelproblem%ThisisthemainprogramfortheTravelingSalesmanProblem.%Thisfunctionmakesuseofthefollowingotherfunctions:%inside40%LaydownapictureoftheUnitedStatesforgraphicappeal.load('usborder.mat','*','y','**','yy');%Thefileusborder.matcontainsamapoftheUSinthevariables%*andy,andageometricallysimplifiedversionofthesamemap%inthevariables**andyy.cla;plot(*,y,'Color','blue');a*isoff;a*is([-0.11.5-0.21.2]);set(a*Hndl,'Drawmode','Fast');holdon;drawnow;nptsStr=get(popupHndl,'String');nptsVal=get(popupHndl,'Value');npts=str2double(nptsStr(nptsVal,:));set(popupHndl,'Enable','off');%...elsegeneratetherandomcitiestovisit*=[];Y=[];%FormtheUSborderinimaginarycoordsfortheINSIDEroutinew=**+i*yy;n=0;whilen<npts,a=rand*1.4+i*rand;ifinside(a,w),*=[*;real(a)];Y=[Y;imag(a)];n=n+1;end;end;*y=[*Y];%Calculatethedistancematri*forallofthecitiesdistmatri*=zeros(npts);forcount1=1:npts,forcount2=1:count1,*1=*y(count1,1);y1=*y(count1,2);*2=*y(count2,1);y2=*y(count2,2);41distmatri*(count1,count2)=sqrt((*1-*2)^2+(y1-y2)^2);distmatri*(count2,count1)=distmatri*(count1,count2);end;end;%Generateaninitialrandompathbetweenthosecitiesp=randperm(npts);new*y=*y(p,:);new*y=[new*y;new*y(1,:)];*data=new*y(:,1);ydata=new*y(:,2);watchoff(WNumber);plot(*data,ydata,'r.','Markersize',24);plothandle=plot(*data,ydata,'yellow','LineWidth',2);a*isoff;drawnow;len=LocalPathLength(p,distmatri*);lenhist=len;whileget(a*Hndl,'Userdata')==play,drawnow;drawFlag=0;pause(1);%maketheimagemoreclearbackground=getsnapshot(vidobj);[o*,oy,r]=FindFirstYellow(background,1,240,1,320);disp(o*);disp(oy);disp(r);%background=double(background)/255;%figure(3);%image(background);%disp(background(1,1,3));%Tryapointforpointswap%========================swpt1=floor(npts*rand)+1;swpt2=floor(npts*rand)+1;swptlo=min(swpt1,swpt2);swpthi=ma*(swpt1,swpt2);42order=1:npts;order(swptlo:swpthi)=order(swpthi:-1:swptlo);pnew=p(order);lennew=LocalPathLength(pnew,distmatri*);iflennew<len,p=pnew;len=lennew;drawFlag=1;end;%========================%Tryasinglepointinsertion%========================swpt1=floor(npts*rand)+1;swpt2=floor((npts-1)*rand)+1;order=1:npts;order(swpt1)=[];order=[order(1:swpt2)swpt1order((swpt2+1):(npts-1))];pnew=p(order);lennew=LocalPathLength(pnew,distmatri*);iflennew<len,p=pnew;len=lennew;drawFlag=1;endifdrawFlag,new*y=*y(p,:);new*y=[new*y;new*y(1,:)];*data=new*y(:,1);ydata=new*y(:,2);set(plothandle,'*Data',*data,'YData',ydata);drawnow;end;%========================end;%======EndofDemoset([startHndlcloseHndlinfoHndl],'Enable','on');43set(stopHndl,'Enable','off');set(popupHndl,'Enable','on');delete(vidobj);clearvidobj;case'info',%helpwin(mfilename)vidobj=videoinput('winvideo',1,'RGB24_320*240');preview(vidobj);pause(1);%maketheimagemoreclearbackground=getsnapshot(vidobj);delete(vidobj);clearvidobj;*1=background;figure(2);image(*1);[o*,oy,r]=FindFirstYellow(*1,1,240,1,320);disp(o*);disp(oy);disp(r);end;%ifstrcmp(action,...functiontotal=LocalPathLength(p,distmatri*)%Calculatecurrentpathlengthfortravelingsalesmanproblem.%Thisfunctioncalculatesthetotallengthofthecurrentpath%pinthetravelingsalesmanproblem.npts=size(p,2);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高跟鞋銷售心得總結(jié)
- 電子電器銷售工作總結(jié)
- 2024全新酒店集團資產(chǎn)托管合作協(xié)議范本3篇
- 火箭升空課程設(shè)計
- 江蘇省高三語文試卷分類匯編文學(xué)類文本閱讀專題
- 幼兒美術(shù)小課程設(shè)計
- 新課標(biāo)2022科學(xué)解讀心得范文(7篇)
- 2024年一件代發(fā)運動器材代理合同3篇
- 接受單位捐款感謝信(8篇)
- 師范生個人求職信范文
- 全力以赴備戰(zhàn)期末-2024-2025學(xué)年上學(xué)期備戰(zhàn)期末考試主題班會課件
- 《慶澳門回歸盼祖國統(tǒng)一》主題班會教案
- 物流公司自然災(zāi)害、突發(fā)性事件應(yīng)急預(yù)案(2篇)
- 《視頻拍攝與制作:短視頻?商品視頻?直播視頻(第2版)》-課程標(biāo)準(zhǔn)
- 公司戰(zhàn)略與風(fēng)險管理戰(zhàn)略實施
- 2024年-2025年《農(nóng)作物生產(chǎn)技術(shù)》綜合知識考試題庫及答案
- 廣東省廣州市白云區(qū)2022-2023學(xué)年八年級上學(xué)期物理期末試卷(含答案)
- 醫(yī)學(xué)細胞生物學(xué)(溫州醫(yī)科大學(xué))知到智慧樹章節(jié)答案
- XX小區(qū)春節(jié)燈光布置方案
- 《廣西壯族自治區(qū)房屋建筑和市政工程施工招標(biāo)文件范本(2023年版)》
- 誠信講堂課件教學(xué)課件
評論
0/150
提交評論