天津?qū)W院-雷霆二隊(duì)技術(shù)報(bào)告_第1頁
天津?qū)W院-雷霆二隊(duì)技術(shù)報(bào)告_第2頁
天津?qū)W院-雷霆二隊(duì)技術(shù)報(bào)告_第3頁
天津?qū)W院-雷霆二隊(duì)技術(shù)報(bào)告_第4頁
天津?qū)W院-雷霆二隊(duì)技術(shù)報(bào)告_第5頁
已閱讀5頁,還剩76頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

精選優(yōu)質(zhì)文檔-----傾情為你奉上精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質(zhì)文檔-----傾情為你奉上專心---專注---專業(yè)第四屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請(qǐng)賽技術(shù)報(bào)告學(xué)校:北京科技大學(xué)天津?qū)W院隊(duì)伍名稱:雷霆二隊(duì)參賽隊(duì)員:劉小龍劉天旭陳熙帶隊(duì)教師:張會(huì)賓關(guān)于技術(shù)報(bào)告和研究論文使用授權(quán)的說明本人完全了解第三屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽關(guān)保留、使用技術(shù)報(bào)告和研究論文的規(guī)定,即:參賽作品著作權(quán)歸參賽者本人,比賽組委會(huì)和飛思卡爾半導(dǎo)體公司可以在相關(guān)主頁上收錄并公開參賽作品的設(shè)計(jì)方案、技術(shù)報(bào)告以及參賽模型車的視頻、圖像資料,并將相關(guān)內(nèi)容編纂收錄在組委會(huì)出版論文集中。參賽隊(duì)員簽名:帶隊(duì)教師簽名:日期:

摘要本智能車系統(tǒng)設(shè)計(jì)以MC9S12XS128微控制器為核心,通過一個(gè)CMOS攝像頭檢測模型車的運(yùn)動(dòng)位置和運(yùn)動(dòng)方向,光電編碼器檢測模型車的速度,PID控制算法調(diào)節(jié)驅(qū)動(dòng)電機(jī)的轉(zhuǎn)速和舵機(jī)的方向,完成對(duì)模型車運(yùn)動(dòng)速度和運(yùn)動(dòng)方向的閉環(huán)控制。實(shí)驗(yàn)結(jié)果表明,系統(tǒng)設(shè)計(jì)方案可行。關(guān)鍵詞:MC9S12XS128,CMOS攝像頭,PID

ABSTRACTInthispaperwewilldemonstrateasmartcarsystembasedonthemicro-controllerunitMC9S12XS128.Themicro-controlleruseaCMOSimagesensortoobtainlaneimageinformation,thenadjuststhemodelcar`smovingpositionanddirection.Aninferredsensormeasurethecar`smovingspeed.WeusePIDcontrolmethodtoadjust,therotatespeedofdrivingelectromotoranddirectionofsteeringelectromotor.So,wecompletetheclosed-loopcontroltothespeedanddirection.Theresultofexperimentindicatesthatthedesignschemeofsystemisdoable.KEYWORDS:MC9S12XS128,CMOSimagesensor,PID目錄引言全國大學(xué)生智能汽車比賽是經(jīng)全國高等教育司研究,委托高等學(xué)校自動(dòng)化專業(yè)教學(xué)指導(dǎo)分委會(huì)主辦的,旨在培養(yǎng)創(chuàng)新精神、協(xié)作精神,提高工程實(shí)踐能力的科技活動(dòng)。比賽要求在組委會(huì)提供統(tǒng)一智能車競賽車模、單片機(jī)HCS12X開發(fā)板、開發(fā)軟件CodeWarrior和在線調(diào)試工具的基礎(chǔ)上制作一個(gè)能夠自主識(shí)別路線的智能車,它將在專門設(shè)計(jì)的跑道上自動(dòng)識(shí)別道路行駛。中心目標(biāo)是不違反大賽規(guī)則的情況下以最短時(shí)間完成單圈賽道。這份技術(shù)報(bào)告中,我們小組通過對(duì)整體方案、電路、算法、調(diào)試、車輛參數(shù)的介紹,詳盡地闡述了我們的思想和創(chuàng)意,具體表現(xiàn)在電路的創(chuàng)新設(shè)計(jì),以及算法方面的獨(dú)特想法,而對(duì)單片機(jī)具體參數(shù)的調(diào)試也讓我們付出了艱辛的勞動(dòng)。這份報(bào)告凝聚著我們的心血和智慧,是我們共同努力后的成果。

系統(tǒng)設(shè)計(jì)制作的思路以及實(shí)現(xiàn)的技術(shù)方案系統(tǒng)分析智能車競賽要求設(shè)計(jì)一輛以組委會(huì)提供車模為主體的可以自主尋線的模型車,最后成績按單圈最快時(shí)間。我們分析了第三屆比賽的各個(gè)隊(duì)伍的優(yōu)缺點(diǎn),并展望了智能車發(fā)展方向,比較了光電傳感器和CMOS圖像傳感器的優(yōu)缺點(diǎn)。紅外傳感器相對(duì)簡單,程序處理也不是很復(fù)雜,但是前瞻距離很??;CMOS圖像傳感器前瞻距離大,采樣信息量大,便于分析前方路徑信息,但是其程序處理相對(duì)比較復(fù)雜,時(shí)序控制要求很嚴(yán)格,對(duì)單片機(jī)速度要求較高。在這種競速的比賽中,因?yàn)橹悄苘囅到y(tǒng)在動(dòng)作決策方面會(huì)有一定的延時(shí),因此要想讓車跑的更快,車的前瞻性是個(gè)很重要的因素。而且,對(duì)前方路徑分析的越清楚,那么動(dòng)作決策的靈活性就越大?;谝陨系目紤]和以及以后的技術(shù)發(fā)展方向,我們決定采取以CMOS圖像傳感器為基礎(chǔ)的尋線系統(tǒng)。1.2系統(tǒng)設(shè)計(jì)結(jié)構(gòu)圖按照預(yù)先的設(shè)計(jì),我們?cè)O(shè)計(jì)了整個(gè)系統(tǒng)的結(jié)構(gòu)圖。系統(tǒng)力求簡單高效,在滿足比賽要求的情況下,使硬件結(jié)構(gòu)最簡單,減少因硬件而出現(xiàn)問題。圖1.1智能車系統(tǒng)結(jié)構(gòu)圖第二章機(jī)械系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)為了使車能夠更穩(wěn)定的高速運(yùn)行,在比賽備戰(zhàn)之初,我們就對(duì)這個(gè)車進(jìn)行了系統(tǒng)的分析。盡量在規(guī)則允許范圍內(nèi)改造車模,提高車模整體精度是很必要的。另外,我們?cè)趯?shí)際調(diào)試中發(fā)現(xiàn),前輪的束角和主銷傾角對(duì)車的高速運(yùn)行下的穩(wěn)定性影響很大。高速運(yùn)行下舵機(jī)的轉(zhuǎn)動(dòng)速度對(duì)車轉(zhuǎn)向的靈活程度也起到了根本性的作用。所以,在整車的機(jī)械結(jié)構(gòu)方面我們進(jìn)行了三方面改進(jìn):轉(zhuǎn)向機(jī)構(gòu)改進(jìn)、前輪束角調(diào)整、底盤高度調(diào)整。2.1車體機(jī)械建模此次比賽選用的賽車車模采用1/10的仿真車模。賽車機(jī)械結(jié)構(gòu)只使用競賽提供車模的底盤部分及轉(zhuǎn)向和驅(qū)動(dòng)部分。控制采用前輪轉(zhuǎn)向,后輪驅(qū)動(dòng)方案。如圖2.1所示。我們?cè)趯?shí)際調(diào)整時(shí)的改進(jìn)辦法:1)、加長舵機(jī)柄,從而增大車行進(jìn)中的車輪轉(zhuǎn)向速度。這樣雖然在舵機(jī)轉(zhuǎn)速不變的情況下加快了車輪的轉(zhuǎn)角速度,但是給舵機(jī)轉(zhuǎn)向增大了負(fù)荷。在實(shí)際調(diào)試中,出現(xiàn)過舵機(jī)里面齒輪被損壞的情況。2)、由于前輪軸和車輪之間的間隙較大,對(duì)車高速轉(zhuǎn)向時(shí)的中心影響較大,會(huì)引起高速轉(zhuǎn)向下車的轉(zhuǎn)向不足。而且這里是規(guī)則中嚴(yán)禁改動(dòng)的部分,所以我們只能調(diào)整前輪內(nèi)傾角來彌補(bǔ)車輪在高速轉(zhuǎn)彎中遇到的轉(zhuǎn)向不足的問題。在實(shí)際調(diào)試中,我們發(fā)現(xiàn)適當(dāng)增大內(nèi)傾角可以增大轉(zhuǎn)彎時(shí)車輪和地面的接觸面積,從而增大車了地面的摩擦程度,使車轉(zhuǎn)向更靈活,減小因摩擦不夠而引起的轉(zhuǎn)向不足的情況。圖2.1車體機(jī)械圖2.2車模轉(zhuǎn)向舵機(jī)機(jī)械結(jié)構(gòu)的設(shè)計(jì)轉(zhuǎn)向系統(tǒng)在車輛運(yùn)行過程中有著非常重要的作用,合適的前橋調(diào)整參數(shù)可以保證在車輛直線行駛過程中不會(huì)跑偏,即保證車輛行駛的方向穩(wěn)定性;而在車輛轉(zhuǎn)向后,合適的前橋可以使得車輛自行回到直線行駛狀態(tài),即具有好的回正性。基于這個(gè)原因,前橋參數(shù)調(diào)整及轉(zhuǎn)向系統(tǒng)優(yōu)化設(shè)計(jì)必然會(huì)成為智能車設(shè)計(jì)中機(jī)械結(jié)構(gòu)部分的重點(diǎn),在實(shí)際操作中,我們通過理論預(yù)測進(jìn)行方案的可行性分析,然后做出實(shí)際結(jié)構(gòu)以驗(yàn)證理論數(shù)據(jù)。另外,在模型車制作過程中,除了遇到“如何得到良好的方向穩(wěn)定性”的問題外,還要考慮如何盡快實(shí)現(xiàn)轉(zhuǎn)向。而由于功率是速度與力矩乘積的函數(shù),追求速度,必然會(huì)使力矩減小,因此設(shè)計(jì)時(shí)就要考慮到舵機(jī)的動(dòng)力與來自地面的摩擦阻力間的關(guān)系,避免因舵機(jī)力量太小使得車輛無法轉(zhuǎn)向的情況發(fā)生。經(jīng)過最后的參數(shù)比較,為了解決以上問題,我們希望通過設(shè)計(jì)一些可調(diào)整的機(jī)構(gòu),加上實(shí)際測算,最后得出一套可以穩(wěn)定、高效工作的參數(shù)及機(jī)構(gòu)。圖2.2改進(jìn)后的舵機(jī)轉(zhuǎn)向機(jī)構(gòu)及安裝圖在最終設(shè)計(jì)的這套機(jī)構(gòu)中,我們綜合考慮了速度與扭矩間的關(guān)系,盡量減小舵機(jī)的負(fù)荷,并根據(jù)模型車底盤的具體結(jié)構(gòu),簡化了安裝方式,實(shí)現(xiàn)了預(yù)期目標(biāo),不過該機(jī)構(gòu)仍存在自身重量太大的問題,我們將在以后的調(diào)試過程中逐漸改進(jìn)。2.3底盤高度的調(diào)整底盤適當(dāng)降低,在可以過坡道的情況下,盡量降低底盤,從整體上降低車的重心,使車在轉(zhuǎn)彎時(shí)可以更快速。2.4后輪差速的調(diào)整差速機(jī)構(gòu)的作用是在車模轉(zhuǎn)彎的時(shí)候,降低后輪與地面之間的滑動(dòng);并且還可以保證在輪胎抱死的情況下不會(huì)損害到電機(jī)。好的差速機(jī)構(gòu),在電機(jī)不轉(zhuǎn)的情況下,右輪向前轉(zhuǎn)過的角度與左輪向后轉(zhuǎn)過的角度之間誤差很小,不會(huì)有遲滯或者過轉(zhuǎn)動(dòng)情況發(fā)生。

第三章硬件電路系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)3.1 硬件電路設(shè)計(jì)方案從最初進(jìn)行硬件電路設(shè)計(jì)時(shí)我們就既定了系統(tǒng)的設(shè)計(jì)目標(biāo):可靠、高效、簡潔,在整個(gè)系統(tǒng)設(shè)計(jì)過程中嚴(yán)格按照規(guī)范進(jìn)行??煽啃允窍到y(tǒng)設(shè)計(jì)的第一要求,我們對(duì)電路設(shè)計(jì)的所有環(huán)節(jié)都進(jìn)行了電磁兼容性設(shè)計(jì),做好各部分的接地、屏蔽、濾波等工作,將高速數(shù)字電路與模擬電路分開,使本系統(tǒng)工作的可靠性達(dá)到了設(shè)計(jì)要求。高效是指本系統(tǒng)的性能要足夠強(qiáng)勁。我們主要是從以下兩個(gè)方面實(shí)現(xiàn)的:1、采用滯回比較器電路進(jìn)行圖像的采集,大大提高了圖像采集的效率;2、使用了由分立元件制作的直流電動(dòng)機(jī)可逆雙極型橋式驅(qū)動(dòng)器,該驅(qū)動(dòng)器的額定工作電流可以輕易達(dá)到100A以上,大大提高了電動(dòng)機(jī)的工作轉(zhuǎn)矩和轉(zhuǎn)速。簡潔是指在滿足了可靠、高效的要求后,為了盡量減輕整車重量,降低車體重心位置,應(yīng)使電路設(shè)計(jì)盡量簡潔,盡量減少元器件使用數(shù)量,縮小電路板面積,使電路部分重量輕,易于安裝。我們?cè)趯?duì)電路進(jìn)行詳細(xì)、徹底的分析后,對(duì)電路進(jìn)行了大量簡化,并合理設(shè)計(jì)元件排列和電路走線,使本系統(tǒng)硬件電路部分的重量、面積都達(dá)到了設(shè)計(jì)要求。3.2硬件電路的實(shí)現(xiàn)整個(gè)智能車控制系統(tǒng)是由兩部分組成的:S12X為核心的最小系統(tǒng)板、主板。最小系統(tǒng)板可以插在主板上組成信號(hào)采集、處理和電機(jī)控制單元。主板上包括控制單元和電機(jī)驅(qū)動(dòng)部分。3.2.1以S12X為核心的單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)板使用MC9S12XS128單片機(jī),112引腳封裝,為減少電路板空間,板上僅將本系統(tǒng)所用到的引腳引出,包括兩路PWM接口,一路計(jì)數(shù)器接口,一路外部中斷接口,17路普通IO接口。其他部分還包括電源濾波電路、時(shí)鐘電路、復(fù)位電路、串行通訊接口、BDM接口。為提高系統(tǒng)工作穩(wěn)定性,我們使用有源晶體振蕩器為單片機(jī)提供時(shí)鐘。為簡化電路,我們?nèi)∠藦?fù)位按鍵和串行通訊接口電路中的TTL電平與RS-232電平轉(zhuǎn)換電路。單片機(jī)最小系統(tǒng)板電路原理圖如圖3.1。圖3.1單片機(jī)最小系統(tǒng)板電路原理圖單片機(jī)引腳規(guī)劃如下:PB0:奇偶場信號(hào)輸入PB2-PB3:模式選擇用撥碼開關(guān)。PA6:跳線IRQ:行同步脈沖輸入信號(hào)。PT0:光電編碼器脈沖輸入信號(hào)。PWM7:舵機(jī)角度控制信號(hào)輸出。PWM5:電機(jī)速度控制信號(hào)輸出。3.2.2主板主板上裝有組成本系統(tǒng)的主要電路,它包括如下部件:電源穩(wěn)壓電路、視頻同步分離電路、比較器器轉(zhuǎn)換電路、攝像頭接口、舵機(jī)接口、電機(jī)驅(qū)動(dòng)器接口、編碼器接口、鍵盤接口、監(jiān)控模塊接口、電源接口、單片機(jī)最小系統(tǒng)板插座、跳線、指示燈、按鍵、開關(guān)等。1)電源穩(wěn)壓電路為了將電壓紋波降低以減小對(duì)系統(tǒng)電路的影響,我們決定使用DC-DC電源模塊,選型后我們決定使用型號(hào)為WLB0505CS-2W的電源模塊,其紋波電壓僅有5mV.電源穩(wěn)壓電路原理圖如圖3.2.圖3.2電源穩(wěn)壓電路2)視頻同步分離電路我們的智能模型車自動(dòng)控制系統(tǒng)中使用黑白全電視信號(hào)格式CMOS攝像頭采集賽道信息。攝像頭視頻信號(hào)中除了包含圖像信號(hào)之外,還包括了行同步信號(hào)、行消隱信號(hào)、場同步信號(hào)、場消隱信號(hào)以及槽脈沖信號(hào)、前均衡脈沖、后均衡脈沖等。因此,若要對(duì)視頻信號(hào)進(jìn)行采集,就必須通過視頻同步分離電路準(zhǔn)確地把握各種信號(hào)間的邏輯關(guān)系。我們使用了LM1881芯片對(duì)黑白全電視信號(hào)進(jìn)行視頻同步分離,得到行同步、場同步信號(hào),具體原理不再贅述。視頻同步分離電路原理圖3.3所示。圖3.3視頻同步分離電路3)外部比較器電路外部比較器電路原理圖如圖3.4所示。圖3.4外部比較器轉(zhuǎn)換電路除以上三部分外,主板上還具有攝像頭、舵機(jī)、電機(jī)驅(qū)動(dòng)器、編碼器、鍵盤、監(jiān)控模塊、電源、單片機(jī)最小系統(tǒng)板等設(shè)備的接口,并準(zhǔn)備了若干指示燈、按鍵、跳線、開關(guān)等用于系統(tǒng)調(diào)試。主板完整電路原理圖如圖3.5所示。原理圖PCB圖圖3.5主板完整電路原理圖3.2.3電機(jī)驅(qū)動(dòng)電路電機(jī)驅(qū)動(dòng)板為一個(gè)由分立元件制作的直流電動(dòng)機(jī)可逆雙極型橋式驅(qū)動(dòng)器,其功率元件由四支N溝道功率MOSFET管組成,額定工作電流可以輕易達(dá)到10A以上,大大提高了電動(dòng)機(jī)的工作轉(zhuǎn)矩和轉(zhuǎn)速。該驅(qū)動(dòng)器主要由以下部分組成:PWM信號(hào)輸入接口、邏輯換向電路、死區(qū)控制電路、電源電路、上橋壁功率MOSFET管柵極驅(qū)動(dòng)電壓泵升電路、功率MOSFET管柵極驅(qū)動(dòng)電路、橋式功率驅(qū)動(dòng)電路、緩沖保護(hù)電路等。電機(jī)驅(qū)動(dòng)板電路原理圖如圖3.6所示。圖3.6電機(jī)驅(qū)動(dòng)板電路3.2.4攝像頭本智能車尋線采用CMOS圖像傳感器方式,普通單板攝像頭。普通CMOS圖像傳感器通過行掃描方式,將圖像信息轉(zhuǎn)換為一維的視頻模擬信號(hào)輸出。CMOS輸出的信號(hào)變化很快,比如PAL制式的視頻信號(hào),每秒鐘輸出50幀圖像信息(分為奇、偶場),每幀圖像有312.5行,每行圖像信號(hào)時(shí)間為64微秒,其中有效的圖像信號(hào)約為56微秒左右。具體參數(shù)如下:攝像頭參數(shù):320線;照度:0.5LUX;輸出制式:PAL制式標(biāo)準(zhǔn)視頻信號(hào);鏡頭及視角:3.6mm92°;供電電壓/消耗功率:9V100mA;3.2.5速度傳感器智能車在實(shí)際速度控制中對(duì)反應(yīng)車速的控制信號(hào)波形要求不是太高,因此我們?cè)跐M足比賽要求的基礎(chǔ)上盡量簡化電路,使用自制的光電編碼器來測速。我們使用線切割在直徑為30mm的圓盤周圍加工出100個(gè)細(xì)縫,使用紅外光電對(duì)射管作為采集碼盤脈沖可鑒向的傳感器。圖3.7光電編碼器電路

第四章軟件系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)高效穩(wěn)定的軟件程序是智能車平穩(wěn)快速尋線的基礎(chǔ)。本智能車采用CMOS攝像頭作為尋線傳感器,圖像采集處理就成了整個(gè)軟件的核心內(nèi)容。在智能車的轉(zhuǎn)向和速度控制方面,我們使用了魯棒性很好的經(jīng)典PID控制算法,配合使用理論計(jì)算和實(shí)際參數(shù)補(bǔ)償?shù)霓k法,使在尋線中智能車達(dá)到了穩(wěn)定快速的效果。4.1舵機(jī)轉(zhuǎn)向和速度調(diào)節(jié)的PID控制算法4.1.1經(jīng)典PID控制算法PID控制是工程實(shí)際中應(yīng)用最為廣泛的調(diào)節(jié)器控制規(guī)律。問世至今70多年來,它以其結(jié)構(gòu)簡單、穩(wěn)定性好、工作可靠、調(diào)整方便而成為工業(yè)控制的主要技術(shù)之一。單位反饋的PID控制原理框圖如圖4.1:圖4.1單位反饋的PID控制原理圖單位反饋e代表理想輸入與實(shí)際輸出的誤差,這個(gè)誤差信號(hào)被送到控制器,控制器算出誤差信號(hào)的積分值和微分值,并將它們與原誤差信號(hào)進(jìn)行線性組合,得到輸出量u。其中,、、分別稱為比例系數(shù)、積分系數(shù)、微分系數(shù)。u接著被送到了執(zhí)行機(jī)構(gòu),這樣就獲得了新的輸出信號(hào),這個(gè)新的輸出信號(hào)被再次送到感應(yīng)器以發(fā)現(xiàn)新的誤差信號(hào),這個(gè)過程就這樣周而復(fù)始地進(jìn)行。PID各個(gè)參數(shù)作用基本介紹:增大微分項(xiàng)系數(shù)可以加快動(dòng)態(tài)系統(tǒng)響應(yīng),但容易引起震蕩。一般增大比例系數(shù)能夠減小上升時(shí)間,但不能消除穩(wěn)態(tài)誤差。增大積分系數(shù)能夠消除穩(wěn)態(tài)誤差,但會(huì)使瞬時(shí)響應(yīng)變差。增大微分系數(shù)能夠增強(qiáng)系統(tǒng)的穩(wěn)定特性,減小超調(diào),并且改善瞬時(shí)響應(yīng)。對(duì)連續(xù)系統(tǒng)中的積分項(xiàng)和微分項(xiàng)在計(jì)算機(jī)上的實(shí)現(xiàn),是將上式轉(zhuǎn)換成差分方程,由此實(shí)現(xiàn)數(shù)字PID調(diào)節(jié)器。位置式PID控制算法用矩形數(shù)值積分代替上式中的積分項(xiàng),對(duì)導(dǎo)數(shù)項(xiàng)用后向差分逼近,得到數(shù)字PID控制器的基本算式(位置算式):其中T是采樣時(shí)間,、、為三個(gè)待調(diào)參數(shù),我們?cè)趯?shí)際代碼實(shí)現(xiàn)算法時(shí),處理成以下形式:PreU=Kp*error+Ki*Integral+Kd*derror增量式PID控制算法對(duì)位置式加以變換,可以得到PID算法的另一種實(shí)現(xiàn)形式(增量式):我們?cè)趯?shí)際代碼實(shí)現(xiàn)時(shí),處理成PreU+=(Kp*d_error+Ki*error+Kd*dd_error)的形式。這種算法用來控制步進(jìn)電機(jī)特別方便,對(duì)直流電機(jī)也可以采用,其實(shí)如果對(duì)控制有更高的要求或者干擾因素較多,我們可以對(duì)PID算法做各種改進(jìn),比如用梯形法做數(shù)值積分以提高精度,將差分改成一階數(shù)字濾波等等,在實(shí)際調(diào)車的過程中,我們確實(shí)遇到過由于自制碼盤采樣得到的脈沖上升下降沿不夠陡,使得速度采樣出現(xiàn)不穩(wěn)定和失真,但由于這些附加處理比較耗費(fèi)代碼的運(yùn)行時(shí)間,出于代碼效率和實(shí)際效果的比較,我們沒有采用這些改進(jìn)的方案,另外可以考慮加反向器來整波形得到較為理想的方波。運(yùn)用PID控制的關(guān)鍵是調(diào)整三個(gè)比例系數(shù),即參數(shù)整定。PID整定的方法有兩大類:一是理論計(jì)算整定法。它主要是依據(jù)系統(tǒng)的數(shù)學(xué)模型,經(jīng)過理論計(jì)算確定控制器參數(shù)。由于智能車整個(gè)系統(tǒng)是機(jī)電高耦合的分布參數(shù)系統(tǒng),并且要考慮賽道具體環(huán)境,要建立精確的智能車運(yùn)動(dòng)控制數(shù)學(xué)模型有一定難度,而且我們對(duì)車身機(jī)械結(jié)構(gòu)經(jīng)常進(jìn)行不斷修正,模型參數(shù)變化較頻繁,可操作性不強(qiáng);二是工程整定方法,它主要依賴工程經(jīng)驗(yàn),直接在控制系統(tǒng)的試驗(yàn)中進(jìn)行,且方法簡單,我們采用了這種方法,同時(shí),我們先后實(shí)驗(yàn)了幾種動(dòng)態(tài)改變PID參數(shù)的控制方法。4.1.2經(jīng)典PID算法在本智能車上的應(yīng)用(1)速度的控制我們對(duì)速度的控制采用了增量式PID算法,我們?cè)谒俣瓤刂浦胁扇〉幕静呗允菑澋澜邓伲钡捞崴?,?jīng)過反復(fù)實(shí)驗(yàn),將圖象經(jīng)過算法處理后得到的黑線位置和對(duì)應(yīng)的速度PID參照速度處理成二次曲線的關(guān)系。在實(shí)際測試中,發(fā)現(xiàn)小車直道和彎道相互過度時(shí)加減速比較靈敏,與舵機(jī)轉(zhuǎn)向控制配合較好。圖4.2黑線位置和給定速度的二次函數(shù)曲線具體在程序中的代碼如下:sPID.vi_Ref=g_HighestSpeed-(59-g_Control)*(59-g_Control)*(g_HighestSpeed-g_LowestSpeed)/3481;(g_HighestSpeed為最高速,g_LowestSpeed為最低速)但是,存在的局限一方面是車在彎道進(jìn)直道后的加速和直道入彎道的速度控制并達(dá)不到最好的控制效果,彎道入直道減速不夠快速,直道入彎道加速得時(shí)機(jī)也不夠及時(shí)。我們做了進(jìn)一步的改進(jìn),根據(jù)入彎時(shí)黑線位置的特點(diǎn)動(dòng)態(tài)改變二次曲線中最高點(diǎn)(直道的最高速度)和最低點(diǎn)(彎道的最低速度)的大小,使得控制效果更合理。另一方面是沒有考慮到實(shí)際比賽中長直道急速?zèng)_刺的情況,賽前在程序中人為設(shè)定直線速度不夠靈活合理,所以在程序中根據(jù)賽道狀態(tài)動(dòng)態(tài)提高直線速度g_HighestSpeed,使得我們可以在長直道的賽場充分發(fā)揮車的潛能。(2)舵機(jī)的控制我們對(duì)舵機(jī)的控制采用了位置式PID算法,根據(jù)往屆的資料和自己的測試,將圖象經(jīng)過算法處理后得到的黑線位置和對(duì)應(yīng)的舵機(jī)PID參照角度處理成一次線性關(guān)系。開始在較低速(2m/s以下)試驗(yàn)時(shí),在偏離黑線很少的某個(gè)范圍,將Kp直接置零,在偏離黑線較少的某個(gè)范圍,將Kp值減小為原來的一半,在偏離較大的其他情況,則保持Kp原來的大小。取得的實(shí)際效果在彎道較多、直道較短的賽道上,車子轉(zhuǎn)彎流暢,直道也能基本保持直線加速,車身左右抖動(dòng)較小。但在提高車速至高速(2.5m/s以上)時(shí),發(fā)現(xiàn)車身在跑直道特別是是長直道時(shí),車身左右震蕩比較嚴(yán)重,究其原因,硬件上,我們認(rèn)為首先是輪軸本身的松動(dòng)并且轉(zhuǎn)向機(jī)構(gòu)左右轉(zhuǎn)向性能可能存在不對(duì)稱性,設(shè)計(jì)有待改進(jìn),軟件上,則是自身編寫的PID舵機(jī)控制還不夠精細(xì),動(dòng)態(tài)適應(yīng)能力不夠,在從彎道進(jìn)直道的過程中,由于小車循黑線本質(zhì)上是一個(gè)隨動(dòng)系統(tǒng),積分項(xiàng)在彎道累積的偏差錯(cuò)誤地加在直道的跟蹤上,造成在進(jìn)入直道時(shí)轉(zhuǎn)向不夠準(zhǔn)確,跑直道時(shí)雖然能跟蹤黑線,但是轉(zhuǎn)向調(diào)整往往超調(diào),導(dǎo)致車身在直道上左右震蕩,這種震蕩嚴(yán)重影響了車的整體表現(xiàn),同時(shí),我們對(duì)S彎的控制也過于簡單,沒有特別的處理,導(dǎo)致車在跑S彎的時(shí)候,跑得太規(guī)矩,幾乎完全沿黑線走,沒有明顯的直沖S彎的效果,原因是在前瞻有限的情況下,在采集到的圖象中S彎入彎和普通彎道是一樣的,導(dǎo)致小車開始轉(zhuǎn)向,由于中間一直檢測到彎道,小車會(huì)沿S彎道左右震蕩,同時(shí)相應(yīng)會(huì)減速,經(jīng)過反復(fù)調(diào)試PID參數(shù),我們發(fā)現(xiàn)光調(diào)整PID參數(shù)很難使車在跑S彎和長直道時(shí)都選擇跑最佳路徑,并且不影響車拐普通彎。這就要求我們要智能地識(shí)別出當(dāng)前賽道是哪種類型,我們沒有選擇賽道記憶等方法來判斷當(dāng)前賽道是哪種類型,而是采取在不降低遠(yuǎn)處黑線分辨率的情況下,盡量讓攝象頭看得更遠(yuǎn)的方法。最后,在CPU超頻的條件下,每行圖象采集到了120個(gè)點(diǎn),成功地增大了CMOS攝象頭采集圖象的分辨率,在透視問題影響遠(yuǎn)處黑線分辨率的制約下,使采集到的最遠(yuǎn)處每行黑線寬度達(dá)到了2~3個(gè)點(diǎn),并且視場長度(視場最遠(yuǎn)處和最近處的距離)達(dá)到1.4m,最遠(yuǎn)前瞻達(dá)到1.6m1、將積分項(xiàng)系數(shù)置零,我們發(fā)現(xiàn)相比穩(wěn)定性和精確性,舵機(jī)在這種動(dòng)態(tài)隨動(dòng)系統(tǒng)對(duì)動(dòng)態(tài)響應(yīng)性能要求更高。更重要的是,在Ki置零的情況下,我們通過合理調(diào)節(jié)Kp參數(shù),發(fā)現(xiàn)車能在直線高速行駛時(shí)仍能保持車身非常穩(wěn)定,沒有震蕩,基本沒有必要使用Ki參數(shù);2、微分項(xiàng)系數(shù)Kd則使用定值,原因是舵機(jī)在一般賽道中都需要較好的動(dòng)態(tài)響應(yīng)能力;圖4.3黑線位置和動(dòng)態(tài)Kp值的二次函數(shù)曲線3.對(duì)Kp,我們使用了二次函數(shù)的曲線,Kp隨黑線的偏離位置二次函數(shù)關(guān)系增大,具體在程序中的代碼如下:loca_Kp=((loca_error*loca_error)*2)/3+900。local_error是黑線位置與中心值的偏差。我們選擇最后測試了一些PID參數(shù),得到了較為理想的轉(zhuǎn)向控制效果。4.2有一定抗干擾和抗反光能力的黑線提取算法(1)原始圖像特點(diǎn):原始圖像是一個(gè)將模擬圖像經(jīng)模擬電路轉(zhuǎn)換得到的二位數(shù)據(jù)矩陣,矩陣的每一個(gè)元素對(duì)應(yīng)一個(gè)像素點(diǎn)的閾值,圖像的第一行對(duì)應(yīng)最遠(yuǎn)處,大約150cm,圖像的最低部一行對(duì)應(yīng)最近處,大約20cm。遠(yuǎn)處的圖像小,近處的圖像大,黑線為梯形狀。圖4.4直道圖4.5彎道圖4.6十字交叉圖4.7起點(diǎn)(2)基本思想:直接利用原始圖像,提取跳變點(diǎn)。黑線寬度有一個(gè)范圍,在確定的黑線寬度范圍內(nèi)才認(rèn)為黑線有效,這樣可以濾除不在寬度范圍內(nèi)的黑點(diǎn)干擾。利用黑線的連續(xù)性來確定求出的黑線中心是否有效。圖像是遠(yuǎn)處小近處大,所以黑線寬度范圍和前后行黑線中心的位置差別都要?jiǎng)討B(tài)確定。求黑線中心時(shí),因?yàn)榻幍暮诰€穩(wěn)定,遠(yuǎn)處黑線不穩(wěn)定,所以采用由近及遠(yuǎn)的辦法。圖像數(shù)據(jù)量大(120×30),全部掃描一遍會(huì)浪費(fèi)很多時(shí)間,利用前面已經(jīng)求出的黑線中心位置判斷出黑線的趨勢,從而推斷出下一行的黑線大概位置,確定出掃描范圍,避免了整行逐點(diǎn)掃描,節(jié)約了時(shí)間。

(3)算法程序流程圖:開始開始搜索最底部的兩個(gè)有效行找到否記錄上升沿和下降沿在搜索范圍內(nèi)搜索滿足寬度的黑線該場丟失黑線搜索完否求所有行黑線中心的加權(quán)平均否是是否圖4.8算法流程圖

第五章系統(tǒng)聯(lián)調(diào)5.1開發(fā)工具程序的開發(fā)是在組委會(huì)提供的CodeWarriorIDE下進(jìn)行的,包括源程序的編寫、編譯和鏈接,并最終生成可執(zhí)行文件。CodeWarriorforS12X是面向以HC1和S12X為CPU的單片機(jī)嵌入式應(yīng)用開發(fā)軟件包。包括集成開發(fā)環(huán)境IDE、處理器專家?guī)?、全芯片仿真、可視化參?shù)顯示工具、項(xiàng)目工程管理器、C交叉編譯器、匯編器、鏈接器以及調(diào)試器。使用BDM來下載程序,把編譯好的程序下載到單片機(jī)里運(yùn)行。5.2調(diào)試過程本車采用CMOS攝像頭來對(duì)賽道信息進(jìn)行獲取,通過對(duì)所采得賽道圖像的分析,來編寫黑線識(shí)別及控制算法。雖然直接將攝像頭通過視頻接口接至電視可觀察所采圖像,但這樣對(duì)分析圖像不夠方便,且無法實(shí)時(shí)精確地反饋出一些特定信息。我們?cè)赩C++環(huán)境下開發(fā)了一套基于PC機(jī)平臺(tái)的圖像顯示與處理程序,可完成對(duì)賽道的顯示及相關(guān)參數(shù)的實(shí)時(shí)反饋。該程序的運(yùn)行界面如下:圖5.1圖像采集處理軟件界面該程序是在MicrosoftVisualC++6.0軟件編程環(huán)境下實(shí)現(xiàn)的一個(gè)基于對(duì)話框的WINDOWS的應(yīng)用程序。該軟件采用WINDOWS操作系統(tǒng)常規(guī)的用戶窗口和操作界面,完成存儲(chǔ)數(shù)據(jù),保存讀取數(shù)據(jù),圖像顯示和提取黑線的算法實(shí)現(xiàn)。該程序設(shè)計(jì)的主要軟件模塊功能如下:串口通信部分,采用Mscomm控件實(shí)現(xiàn)通信功能,接收單片機(jī)所傳送的數(shù)據(jù);采用逐點(diǎn)畫圖的方法,對(duì)實(shí)時(shí)采集的圖像進(jìn)行顯示;應(yīng)用VC++程序編寫黑線識(shí)別算法,將采集到圖像中的黑線的空間位置進(jìn)行標(biāo)定并實(shí)時(shí)顯示。5.2.1串口通信PC機(jī)平臺(tái)與單片機(jī)的通信是通過RS-232串口通信來實(shí)現(xiàn)的。在VC++中,采用Mscomm控件實(shí)現(xiàn)通信功能。MSComm(MicrosoftSerialCommunication)是Microsoft公司提供的簡化Windows串口通信編程的ActiveX控件,它為應(yīng)用程序提供了通過串口接受發(fā)送數(shù)據(jù)的簡便方法,MSComm串行通信控件提供了一系列標(biāo)準(zhǔn)通信命令的接口,它允許建立串口連接,可以連接到其他通信設(shè)備、還可以發(fā)送命令、進(jìn)行數(shù)據(jù)交換以及監(jiān)視和響應(yīng)在通信過程中可能發(fā)生的各種錯(cuò)誤和事件,從而可以用它創(chuàng)建全雙工的、事件驅(qū)動(dòng)的、高效實(shí)用的通信程序。MSComm控件提供的兩種處理通信的方法:事件驅(qū)動(dòng)通信,是一種功能很強(qiáng)的處理串行口活動(dòng)的方法。在大多數(shù)情況下,程序需要獲取事件類型以及事件發(fā)生的時(shí)間,這時(shí)使用MSComm控件的Oncomm事件捕獲和處理這些事件。OnComm也可以捕獲和處理通信中的錯(cuò)誤。也可以在每個(gè)重要的程序功能之后檢查CommEvent屬性值來檢測時(shí)間和通信錯(cuò)誤,這是查詢檢測方法。MSComm控件的屬性:MSComm控件有30個(gè)屬性和事件,以下將介紹一些相對(duì)比較重要的屬性和事件:CommPort屬性:用于設(shè)置串口號(hào)。類型short,值為1~16,默認(rèn)值1;Setting屬性:用于設(shè)置數(shù)據(jù)傳輸速率、奇偶校驗(yàn)、數(shù)據(jù)比特、停止比特參數(shù)。類型Cstring,格式“BBBB、P、D、S”,BBBB為數(shù)據(jù)傳輸速率,P為奇偶校驗(yàn),D為數(shù)據(jù)位數(shù),S為停止位;RThreshold屬性:用于設(shè)置要接收的字符位。類型short,當(dāng)接收到字符后,接受緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)達(dá)到或超過該閾值便會(huì)產(chǎn)生OnComm事件,若該閾值為0則不會(huì)產(chǎn)生OnComm事件;InputMode屬性:用于設(shè)置傳輸數(shù)據(jù)的類型。類型long,0—文本,1—二進(jìn)制;InputLen屬性:用于設(shè)置從接收緩沖區(qū)讀取的字符數(shù)。類型short,若設(shè)置InputLen為0,則將讀取接收緩沖區(qū)中全部的字符數(shù);InBuffersize屬性:用于設(shè)置輸入緩沖的大小。默認(rèn)值為1024字節(jié);Input屬性:用于從接受緩沖區(qū)中讀取數(shù)據(jù)。類型為VAEIANT;PortOpen屬性:打開端口。類型BOOL,TRUE打開,F(xiàn)ALSE關(guān)閉;OutBuffersize屬性:用于設(shè)置發(fā)送緩沖的大小。默認(rèn)值為512字節(jié);OutPut屬性:用于向發(fā)送緩沖區(qū)寫數(shù)據(jù)。類型VARIANT;CommEvent屬性:串口事件,類型short。使用MSComm控件接收數(shù)據(jù)的流程圖如5.2所示。將數(shù)據(jù)接收到接收緩沖區(qū)將數(shù)據(jù)接收到接收緩沖區(qū)接收緩沖區(qū)是否達(dá)到Rthreshold所設(shè)值否是觸發(fā)OnComm事件執(zhí)行OnComm事件中的操作(如將數(shù)據(jù)存成.txt文件,實(shí)時(shí)尋找黑線位置等)任務(wù)完成,清除接收緩沖區(qū)所有數(shù)據(jù)開始有數(shù)據(jù)到來?是否結(jié)束圖5.2MSComm控件接受數(shù)據(jù)流程圖接下來我們只需設(shè)置MSComm控件相關(guān)屬性即可實(shí)現(xiàn)串口通信,本系統(tǒng)串口通信的初始化代碼如下:m_Port.SetCommPort(2);//設(shè)置串口編號(hào),根據(jù)各個(gè)機(jī)器而不同m_Port.SetInBuf66rSize(409E);//設(shè)置接受區(qū)緩存大小m_Port.SetOutBuf66rSize(1024);//設(shè)置發(fā)送區(qū)緩存大小if(!m_Port.GetPortOpen())m_Port.SetPortOpen(TRUE);//打開串口m_Port.SetInputMode(1);//用二進(jìn)制接受數(shù)據(jù)m_Port.SetSettings(",n,8,1");//設(shè)置波特率,奇偶校驗(yàn),數(shù)據(jù)位,停止位m_Port.SetRThreshold(1);//接受區(qū)有數(shù)據(jù)時(shí)觸發(fā)一次oncomm時(shí)間m_Port.SetInputLen(0);//接受緩沖區(qū)所有數(shù)據(jù)以上代碼先將串口設(shè)為2號(hào),設(shè)置接收和發(fā)送緩沖區(qū)的大小為4096字節(jié),然后判斷端口是否已經(jīng)打開,如果沒打開則打開串口。在接收數(shù)據(jù)方面,設(shè)置串口通信波特率為B/s,奇偶校驗(yàn)無,數(shù)據(jù)位為8,停止位為1,以二進(jìn)制方式接收數(shù)據(jù),觸發(fā)方式是當(dāng)接受緩沖區(qū)有數(shù)據(jù)時(shí)即觸發(fā)OnComm事件,在OnComm()函數(shù)中完成數(shù)據(jù)接收存儲(chǔ),實(shí)時(shí)黑線判定等工作。5.2.2圖像顯示通過串口實(shí)現(xiàn)單片機(jī)與PC機(jī)通信后,數(shù)據(jù)傳送到PC機(jī)平臺(tái),監(jiān)控程序會(huì)以二進(jìn)制方式將其保存成.txt格式文件。在進(jìn)行圖像顯示時(shí)讀取該文件,并以位圖的方式顯示出來,這樣可實(shí)時(shí)監(jiān)控賽道信息,方便調(diào)試和后期的處理工作。本平臺(tái)使用GDI繪圖進(jìn)行圖像顯示,MFC的CBbitmap類代表GDI位圖。CBitmap是原始類,單獨(dú)的CBitmap幾乎不做任何工作。但是,與MFC的CDC類結(jié)合的CBitmap就使得在內(nèi)存中虛擬設(shè)備顯示表面上繪制輸出,加載位圖資源,以及在屏幕上顯示簡單位圖的操作非常易于實(shí)現(xiàn)。本平臺(tái)圖像的顯示通過創(chuàng)建一個(gè)特殊類型的設(shè)備描述表,稱為“內(nèi)存設(shè)備描述表”,用CBitmap::CreateCompatibleBitmap創(chuàng)建位圖,使用CPen類在定義的虛擬內(nèi)存設(shè)備中畫圖,然后用CDC::StretchBlt將像素從內(nèi)存設(shè)備描述表“位圖傳送”到屏幕設(shè)備描述表上來實(shí)現(xiàn),該圖像顯示區(qū)域如圖5.3所示。圖5.3上位機(jī)圖像顯示界面顯示區(qū)域可顯示兩種圖像:灰度圖和黑白圖?;叶葓D顯示攝像頭所采圖像;黑白圖像顯示的是進(jìn)行二值慮波后得到的黑白圖。5.2.3圖像處理功能本監(jiān)控平臺(tái)所使用的圖像處理技術(shù)主要有以下幾點(diǎn):1、灰度化CMOS攝像頭所采集的是模擬圖像,單片機(jī)不能處理,而需將其轉(zhuǎn)換成數(shù)字的灰度圖。所謂灰度圖(Grayscale)是只含亮度信息,不含色彩信息的圖像,就像平時(shí)看到的亮度由暗到明的黑白照片,這種變化是連續(xù)的。因此,要表示灰度圖,就需要把亮度值進(jìn)行量化。通常劃分成0到255共256個(gè)級(jí)別,0最暗(全黑),255最亮(全白)。本系統(tǒng)所使用的攝像頭采集到的就是黑白圖像,需經(jīng)過比較器處理后用灰度值進(jìn)行表示。2、圖像的二值化根據(jù)圖像處理的目標(biāo)和要求,多灰度級(jí)的輸入圖像經(jīng)過處理以后,就變成只有兩個(gè)灰度級(jí)的圖像,這種處理稱為圖像的二值化處理。經(jīng)過二值化處理后的圖像稱為二值圖像。在經(jīng)過分析和試驗(yàn)后,作者決定把圖形二值化以后再進(jìn)行處理,這樣既可以節(jié)約系統(tǒng)資源,提高效率,又便于直接把PC機(jī)的程序移植到單片機(jī)上進(jìn)行使用。本系統(tǒng)在進(jìn)行二值化處理時(shí)使用的是閾值比較法:通過試驗(yàn),找出一個(gè)合適的閾值,當(dāng)所采圖像灰度值大于該閾值時(shí)判斷為1,即白,當(dāng)小于該閾值時(shí)判斷為0,即黑,這樣二值化后可得到用0、1表示的二值圖像信息。3、智能識(shí)別僅僅得到二值化的黑白圖像并不能滿足要求,還要進(jìn)行更高級(jí)更智能的圖像處理——對(duì)所采圖像中的黑線位置進(jìn)行標(biāo)定,這也相當(dāng)于對(duì)賽道白色底面和黑色賽道的分界的識(shí)別。本系統(tǒng)雖然僅用到了三種比較簡單的圖像處理技術(shù),但是由于單片機(jī)的資源限制,所以在實(shí)現(xiàn)上述處理功能時(shí),還是需要對(duì)程序結(jié)構(gòu)做很多研究,找到最高效最簡潔的代碼實(shí)現(xiàn)。下面就本系統(tǒng)中比較重要和核心的黑線提取算法做詳細(xì)說明。在圖像被二值化后,就要對(duì)其進(jìn)行處理,來標(biāo)定黑線的空間位置。4、黑線識(shí)別在經(jīng)過實(shí)際觀察測量后,我們發(fā)現(xiàn)所采集的圖像基本不存在噪聲干擾的問題,也就意味著在二值化后的圖像信息中,出現(xiàn)1的地方是連續(xù)且唯一的,這就為編寫提取黑線中心算法提供了很好的思路。在調(diào)試中,作者發(fā)現(xiàn)可能出現(xiàn)的黑線情況會(huì)有如圖5.5所示的幾種情況:黑線位于正中間黑線位于正中間黑線位于最邊,但仍可見有彎道出現(xiàn)十字交叉線沒有黑線黑線不是從最低行開始圖5.4所采圖像黑線可能位置示意圖在經(jīng)過思考以及和隊(duì)友的討論后,本文采用了一種由一幀圖像提取一個(gè)預(yù)測點(diǎn)的方法來標(biāo)定黑線,具體說來就是對(duì)該20×100的圖像,每一行得出一個(gè)黑線的中點(diǎn)值,然后將各行中點(diǎn)值相加再除以20,得出一個(gè)幀圖像的黑點(diǎn)坐標(biāo)。這樣做雖然會(huì)在對(duì)黑線提取的精度上有所犧牲,但是經(jīng)過除以20后,相當(dāng)于進(jìn)行了一個(gè)較大的濾波,會(huì)使所提取的黑線的誤差降到很小,保證了正確性。在計(jì)算每行黑線的中心值時(shí),本文選擇了一種左右端雙方向查找最后取中值的算法,這也是為保證所提取黑線的正確性。5.2.4平臺(tái)實(shí)際效果測試下面以采樣得到的一幀圖像為例,來說明作者所設(shè)計(jì)的圖像處理系統(tǒng)的實(shí)際效果。所采圖像灰度圖如圖5.5所示:圖5.5圖像灰度圖進(jìn)過處理后得到的二值圖像如圖5.6所示:圖5.6二值圖像經(jīng)過PC機(jī)的尋黑線算法后,所得實(shí)際圖像中的信息點(diǎn)在PC機(jī)程序界面上顯示,如圖5.7所示.圖5.7本系統(tǒng)算法所得信息由圖5.9可知,圖像經(jīng)過計(jì)算得到的信息點(diǎn)是(48,13),即橫向第48個(gè)點(diǎn),縱向第13個(gè)點(diǎn)。對(duì)比圖5.4,可以看出所得信息點(diǎn)的值是符合黑線的空間特性的,根據(jù)此點(diǎn)可以設(shè)置相應(yīng)電機(jī)舵機(jī)的動(dòng)作來控制車體沿黑線運(yùn)動(dòng)。通過上述實(shí)例說明,表明本系統(tǒng)所設(shè)計(jì)的圖像采集系統(tǒng)可正確采集出符合要求的圖像,PC機(jī)上的程序可以正確對(duì)實(shí)時(shí)圖像進(jìn)行顯示。本系統(tǒng)所采用的算法可以達(dá)到對(duì)黑線進(jìn)行判別的目的,得到的信息點(diǎn)有效,可用于對(duì)車體運(yùn)動(dòng)狀態(tài)的控制。第六章模型車的主要技術(shù)參數(shù)賽車基本參數(shù)長28.5cm寬16.3cm高26.1cm車重0.925kg功耗空載8.2W帶載大于15W電容總?cè)萘?22.00702uF傳感器紅外對(duì)射管1個(gè)CMOS攝像頭1個(gè)除了車模原有的驅(qū)動(dòng)電機(jī)、舵機(jī)之外伺服電機(jī)個(gè)數(shù)0賽道信息檢測視野范圍(近/遠(yuǎn))25/160cm精度(近/遠(yuǎn))2/12.5mm頻率50Hz

第七章總結(jié)本文從智能車的硬件結(jié)構(gòu)、電路設(shè)計(jì)、軟件實(shí)現(xiàn)方面進(jìn)行了介紹。從第三屆全國大學(xué)生“飛思卡爾”杯智能汽車競賽落下帷幕就開始著手此次比賽,在指導(dǎo)老師的幫助下大家經(jīng)過不懈的努力,對(duì)智能車進(jìn)行深入地研究,對(duì)飛思卡爾16控制器MC9S12XS128有了深入地了解。最終決定了主要的設(shè)計(jì)方案,一些細(xì)節(jié)則是通過各項(xiàng)試驗(yàn)才決定的。同時(shí)對(duì)于CodeworriorIDE開發(fā)環(huán)境有了相當(dāng)充分的了解,并熟練掌握BDM的調(diào)試方法。通過對(duì)整個(gè)設(shè)計(jì)建模,充分發(fā)揮動(dòng)手能力把想法變?yōu)楝F(xiàn)實(shí),并配以合理的理論解釋,將智能車的硬件設(shè)計(jì)、軟件輔助設(shè)計(jì)清晰表達(dá)出來。舵機(jī)轉(zhuǎn)向系統(tǒng):賽車在轉(zhuǎn)彎處主要靠舵機(jī)轉(zhuǎn)動(dòng)提供轉(zhuǎn)角,雖然舵機(jī)的性能是固定的,但是不同的舵機(jī)安裝方式會(huì)使其性能有所不同。最終采用立式舵機(jī)固定方式,使兩端距兩輪的距離相等,便于改變轉(zhuǎn)角。可是舵機(jī)轉(zhuǎn)動(dòng)的靈活性還是與理論中存在著很大差距的,所以準(zhǔn)確地為舵機(jī)定位,合理的機(jī)械結(jié)構(gòu)也會(huì)使舵機(jī)得到充分發(fā)揮。重量分配方案:賽車在運(yùn)動(dòng)中重心會(huì)影響其穩(wěn)定性,所以準(zhǔn)確確定賽車重心可以在高速狀態(tài)下減少賽車的晃動(dòng)。通過各種試驗(yàn),調(diào)整電池、主板的位置及高度,找到比較適合車身質(zhì)量的重心位置,重心偏低可以提高賽車的穩(wěn)定性,所以在電路板設(shè)計(jì)時(shí)要同時(shí)考慮其形狀要求??傊?,通過比賽的方式讓我們學(xué)到了許多,對(duì)于汽車的機(jī)械結(jié)構(gòu)、光電傳感器、軟件設(shè)計(jì)有了深入的了解,并擁有了一整套較為完善的軟件系統(tǒng)。但是由于知識(shí)有限,同學(xué)們對(duì)于各項(xiàng)內(nèi)容的理解還不夠,在算法上還有很大的提高空間。當(dāng)然現(xiàn)在的設(shè)計(jì)方案還存在一些問題,我們暫時(shí)還不能夠解決,希望在比賽中可以學(xué)到更多,在以后的比賽中得以提高。最后感謝飛思卡爾公司為我們提供這樣一個(gè)平臺(tái),讓大家在智能車比拼中感受到速度的快感和知識(shí)的樂趣。參考文獻(xiàn)王英濤,印永華,蔣宜國等.我國實(shí)時(shí)動(dòng)態(tài)監(jiān)測系統(tǒng)的發(fā)展現(xiàn)狀及實(shí)施策略研究.電網(wǎng)技術(shù),2005,29(11):44~48.趙翔,李著信,蕭德云等.故障診斷技術(shù)的研究現(xiàn)狀與發(fā)展趨勢.機(jī)床與液壓,2002,No4:3~7.潘俊榮,王明凱,郭諄欽等.計(jì)算機(jī)輔助監(jiān)測診斷系統(tǒng)的發(fā)展和趨勢.機(jī)械,2002,29(增刊):4~6.王琳,商周,王學(xué)偉.?dāng)?shù)據(jù)采集系統(tǒng)的發(fā)展與應(yīng)用.電測與儀表,2004,41(464):4~8.李娟,呂振.基于單片機(jī)SST89E564的數(shù)據(jù)采集系統(tǒng).工業(yè)控制計(jì)算機(jī),2006,19(12):79~80.蘇厚軍,楊家軍,王潤卿.基于小波分析的信號(hào)檢測研究與應(yīng)用.武漢理工大學(xué)學(xué)報(bào),2005,27(1):15~17.EdmondsP,HirstG.Near-synonymyandLexicalChoice.ComputationalLinguistics.2002,28(2):105~144.卓晴,黃開勝,邵貝貝.學(xué)做智能車.北京:北京航空航天大學(xué)出版社,2007.邵貝貝,龔光華.單片機(jī)認(rèn)識(shí)與實(shí)踐.北京:北京航空航天大學(xué)出版社,2006.洪家平.Windows環(huán)境下PC機(jī)與單片機(jī)的通信.微計(jì)算機(jī)信息,2005,21(3):137~143.于慶廣,劉葵,王沖等.光電編碼器選型及同步電機(jī)轉(zhuǎn)速和轉(zhuǎn)子位置測量.電氣傳動(dòng),2006,36(4):17~20.江淑紅,李濤,劉祖望.基于單片機(jī)的低成本高性能異步串口擴(kuò)展技術(shù).計(jì)算機(jī)工程,2005,31(6):195~196.Lightner,B.TinyAVRserialportprogrammer.CircuitCellarInc.2006,192:20-2,24~8,30.胡立坤,王慶超.基于UART的可靠通信與性能分析.計(jì)算機(jī)工程,2006,32(10):15~19.邵貝貝.嵌入式實(shí)時(shí)操作系統(tǒng)[LC/OS-Ⅱ(第2版)[M].北京.清華大學(xué)出版社.2004邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開發(fā)方法[M].北京.清華大學(xué)出版社.2004王曉明.電動(dòng)機(jī)的單片機(jī)控制[M].北京.北京航空航天大學(xué)出版社.2002臧杰,閻巖.汽車構(gòu)造[M].北京.機(jī)械工業(yè)出版社.2005安鵬,馬偉.S12單片機(jī)模塊應(yīng)用及程序調(diào)試[J].電子產(chǎn)品世界.2006.第211期.162-163童詩白,華成英.模擬電子技術(shù)基礎(chǔ)[M].北京.高等教育出版社.2000沈長生.常用電子元器件使用一讀通[M].北京.人民郵電出版社.2004宗光華.機(jī)器人的創(chuàng)意設(shè)計(jì)與實(shí)踐[M].北京.北京航空航天大學(xué)出版社.2004張偉等.ProtelDXP高級(jí)應(yīng)用[M].北京.人民郵電出版社.2002張文春.汽車?yán)碚揫M].北京.機(jī)械工業(yè)出版社.2005附件A元件列表附件A-1主板元件列表CommentDesignatorLibRef107C1ELECTRO104C2CAP106C3ELECTRO104C4CAP104C5CAP104C6CAP104C7CAP510PC8CAP104C9CAP104C10CAP107C11ELECTRO470uFCD1ELECTRO100uFCD2ELECTRO104CD3Cap104CD4CapCapCD5Cap100uFCD6ELECTRO104CD7CAP10uFCD8ELECTRO104CD9CAP10uFCD10ELECTRO10uFCD11ELECTRO10uFCD12ELECTRO270uFCD13ELECTRO1104CD14CAPLEDD1LEDDSchottkyD2DSchottkyLEDD3LEDLEDD4LEDLEDD5LEDLEDD6LEDLEDD7LED1N5819DD1DIODE21N5819DD2DIODE21N5819DD3DIODE21N5819DD4DIODE21N5819DD5DIODE21N5819DD6DIODE11N5819DD7DIODE1FuseF1Fuse1FuseFD1Fuse1ENCODEJ1CON4VIDEO_INJ2CON3HD7279J3CON6CON8J5CON8POWERJD1CON2MOTORJD2CON2SERVOJD3CON3HEADER8X2X2JP1HEADER8X2X2磁珠L1磁珠磁珠L2磁珠INDUCTOR110uHLD1INDUCTOR1IRF7832QD1IRF7832IRF7832QD2IRF7832IRF7832QD3IRF7832IRF7832QD4IRF78321KR1RES33R2RES1KR3RES10KR4RES800R5RES2.4KR6RES1KR7RES1KR8RESRESR9RESRESR10RES620R11RES680KR12RES510R13RES510R14RES510R15RES510R16RES4K7RD1RES4K7RD2RES4R7RD3RES4R7RD4RES4R7RD5RES4R7RD6RES220RD7RES220RD8RES220RD9RES220RD10RES4K7RD11RES4K7RD12RES4K7RD13RES10KRD14RESSW-SPSTS1SW-SPSTBUTTON0S2SW-RSTBUTTON1S3SW-RSTPOWER-SWSD1拔動(dòng)開關(guān)POWER-SWSD2拔動(dòng)開關(guān)SW-SPSTSD3SW-SPSTWRB0505S-2WU1WRB0505S-2W74HC14U274LS1474HC74U374LS74LM1881U4LM1881ADR421U5ADR421AD8032U6AD8032MAX734UD1max734IR2104UD2IR2104IR2104UD3IR210474V1G14SUD474V1G14STLP281-4UD5TLP281-4

附件A-2最小系統(tǒng)元件列表CommentDesignatorLibRef104C1CAP104C2CAP104C3CAP10uFC4ELECTRO104C5Cap104C6Cap104C7Cap104C8Cap510pC9CAP5nC10CAP104C11CAPLEDD1LEDSCI0J1CON3BDMINJP1HEADER3X2HEADER8X2JP2HEADER8X2HEADER8X2JP3HEADER8X2510R1RES10KR2RES24K7R4RES210KR5RES210KR6RES2MC9S12DG128BCPVU1MC9S12DG128BCPV16MHzY1CRYSTALOSCILLATOR附件B源程序Main.c/*************************************************************************Copyright(c)**----------------------------------------------------------------------** ModuleName:main.c** ModuleDate:08** ModuleAuth:**Description:mainfunctionofproject** **----------------------------------------------------------------------**RevisionHistory:**Date:8/12/2008**Notes:registersblockto0x0000**Ramtoendat0x3FFF,total8KB**EEPROMblocktoendat0x0fff,total4KB***********************************************************************//**********************************************************************--------------------Thissmartcarindividualparameters----------------1.Thereareabout19.3pulsesper20msfromencoderwhenthesmartcarisatthespeedof1m/s2.ThefrequencyofPIDadjustmentis50Hz...........***********************************************************************//*---------------INCLUDES------------------------------------*/#include"Schedule/Schedule.h"/*---------------MACROS----------------------------------------*//*---------------DEFINITION--------------------------------*//*---------------DECLARATION------------------------------*//*---------------FUNCTIONS----------------------------------*//*********************************************************************FunctionName:mainDescription:initializeandstartSysmtemInputs:NoneOutputs:NoneNOTES:*********************************************************************/voidmain(void){SystemInit();SystemStart();}/*MAIN_CEND*/模塊化程序列表Port.h/Port.c//單片機(jī)IO口初始化PLL.h/PLL.c//鎖相環(huán)時(shí)鐘初始化SCI.h/SCI.c//串口初始化IRQ.h/IRQ.c//外部中斷初始化PWM.h/PWM.c//PWM模塊初始化ECT.h/ECT.c//ECT模塊初始化PID.h/PID.c//PID函數(shù)定義Board.h//電路板版本號(hào)、板級(jí)信息定義Config.h//相關(guān)工程參數(shù)定義S12Def.h//常用宏定義S12Types.h//與平臺(tái)無關(guān)的變量定義以上為模塊話程序代碼,并無特別之處,在此略。Schedule.h/*************************************************************************Copyright(c)**----------------------------------------------------------------------** ModuleName:main.c** ModuleDate:08** ModuleAuth:**Description:mainfunctionofproject**----------------------------------------------------------------------**RevisionHistory:**Date: month/day/year**Notes:*********************************************/#ifndefSCHEDULE_H#defineSCHEDULE_H/*---------------INCLUDES------------------------------------*/#include"../Heads/Global.h"http://#include"../Drivers/Port.h"#include"../Drivers/PLL.h"#include"../Drivers/SCI.h"#include"../Drivers/ECT.h"#include"../Drivers/PH7_Inter.h"#include"../Drivers/PJ7_Inter.h"#include"../Drivers/IRQ.h"#include"../Drivers/PWM.h"#include"../Drivers/Timer.h" //#include"../Drivers/HD7279.h" /*---------------MACROS----------------------------------------*/#definePresent_OddEven_statePORTB_BIT0//當(dāng)前場奇偶狀態(tài)#defineDIR_SPORTB_BIT1//電機(jī)鑒向#defineSending_SPORTA_BIT6//上位機(jī)是否發(fā)圖像跳線選擇位#defineDIR_B(PTP=PTP&0XDF)//控制電機(jī)反轉(zhuǎn)#defineDIR_F(PTP=PTP|0X20)//控制電機(jī)正轉(zhuǎn)#defineVIDEO_START_LINE50//;每場采的起始行#defineMAX_VIDEO_LINE250//250每場采的行數(shù)#defineMAX_VIDEO_POINT210//0XD2#defineMAX_VIDEO_USEDLINE50//每場實(shí)際用到的行數(shù)#defineMAX_INTER_POINT5//每行最多允許跳變點(diǎn)#defineSet_Mid_Point108//攝像頭圖像中心位置(Set_Max_Point+Set_Min_Point)/2108#defineSet_Max_Point212//0XD4攝像頭圖像最左端點(diǎn)位置212#defineSet_Min_Point4//0X04攝像頭圖像最右端點(diǎn)位置4#defineOdd1//奇場#defineEven0//偶場#defineLIMIT70//當(dāng)前場的最后兩行中心與上一場中心的差值#defineStraight0#defineLeft1#defineRight-1#defineMAX_BLACK_NUM4 //一行黑塊最多數(shù)目//------------------------------------------------////externINT8Uv_valid_district=0;externINT8ULast_OddEven_state=Odd;externINT32SSet_Highest_Speed=160;//230externINT32SSet_Lowest_Speed=90;//150externINT8URunning_Enable=0;//externINT8UFlag_up=0;//上升沿中斷產(chǎn)生標(biāo)志externINT8UFlag_down=0;//下降沿中斷產(chǎn)生標(biāo)志externINT16Uv_line=0;//externINT8Uv_WhiteBlock;externINT8Uv_LeftWhiteBlockLine;externINT8Uv_RightWhiteBlockLine;externINT8Uv_Last_LeftWhiteBlockLine;externINT8Uv_Last_RightWhiteBlockLine;externINT8Uv_ValidStartline;externINT8Uv_LastValidStartline;externINT8Uv_LL_ValidStartline;externINT32Uv_StopPulse;externINT8UFlag_Stop;externINT8SFlag_Left_Black;externINT8SFlag_Right_Black;externINT8Uv_pre_speed;externINT8UFlag_Startline;externINT8Uv_point_up[MAX_VIDEO_LINE][MAX_INTER_POINT];//externINT8Uv_point_down[MAX_VIDEO_LINE][MAX_INTER_POINT];//externINT8Uv_point_used_up[MAX_VIDEO_USEDLINE][MAX_INTER_POINT];//externINT8Uv_point_used_down[MAX_VIDEO_USEDLINE][MAX_INTER_POINT];////============提取黑線中心位置======================================externINT8Sn;//行循環(huán)變量externINT8Um;//列循環(huán)變量externINT8UBackLineValidFlag;//找回黑線有效標(biāo)志位externINT8Ul_BlackStartDot;//黑線起始點(diǎn) externINT32Sk;//前一有效行externINT8Uk2;//前前有效行externINT8UNextFlag;//整場有效標(biāo)志位,如果找到底部兩行則標(biāo)志位置1externINT16Sg_SearchStart;//一行搜索起始點(diǎn)externINT16Sg_SearchEnd; //一行搜索結(jié)束點(diǎn)externINT16Sg_SearchBottomLineEnd; //一場搜索第一個(gè)有效行結(jié)束行externINT8Ug_SearchDirection;//搜索方向//externINT16Sg_BlackMiddle[2];//g_BlackMiddlel[1]代表當(dāng)前場位置g_BlackMiddlel[0]代表上一場位置externINT16Sg_BottomMiddle;//底部十行的中心值,用來確定下一場底部有效行的位置externINT16Sg_BlackPoint[2][MAX_BLACK_NUM];//用來記錄一行的黑點(diǎn)中心值及對(duì)應(yīng)的黑線寬度,假設(shè)一行黑塊數(shù)目不多于4個(gè)externINT8Ucnt;//一行黑塊的數(shù)目externINT8Sg_BottomValidLine;//最下面第一個(gè)有效行externINT8Sg_width[MAX_VIDEO_USEDLINE];//用來存各行的黑線寬度,無效行為0externINT16Sg_BlackPositionCenter[MAX_VIDEO_USEDLINE];//本場中每行黑點(diǎn)位置數(shù)組externINT16Sg_SolutedBlackPositionCenter[MAX_VIDEO_USEDLINE];externINT32Sg_center;//加權(quán)求中心時(shí)將每行中心值賦給center,16位的,g_BlackPositionCenter就可以用8位的了,提高了效率。externINT8Ug_ValidLine;externINT8Ug_FormerValidLine;//前一場有效行數(shù)externINT16Ug_BlackLineTotal;externINT16Sg_error;//前后兩行黑線中心的動(dòng)態(tài)差值externINT8SValidLineError;externINT8Sg_WidthError; //前后兩行黑線寬度的動(dòng)態(tài)差值externINT8Sg_MinWidth;//黑線寬度下限externINT16Sg_MaxWidth;//黑線寬度上限externINT32Sg_DirectionControl;externINT32Sg_DirectionControlLine;externINT16Ug_coeff[MAX_VIDEO_USEDLINE];externINT8Ug_DirectFlag;//直道標(biāo)志位externINT8Ug_CurveFlag;//彎道標(biāo)志位/////////////////////////////////////////////////////////////////////////externINT16Sv_slope_2[50];//externINT8Uv_slope;externINT32Sv_slope_2p;externINT32Sv_slope_2p_temp;externINT8Uv_slope_average;//externINT8Uv_slope_2_straight;//externINT8Uv_slope_2_bend;//externINT8Sv_slope_last;//externINT8Sv_slope_now;//externINT32Sv_slope_sum;//externINT32Sv_slope_sum_temp;externINT8Sv_Max_Slope_line;externINT8Sv_Min_Slope_line;externINT8Uv_slope_valid_line;//externINT8Sbend_flag;externINT8Ulast_bend_flag;externINT8US_bend_flag;externINT8Ubig_bend;externINT8Uflag_Straight=0;externINT8Umax_left=Set_Mid_Point;externINT8Umax_right=Set_Mid_Point;externINT8Uturn_right_flag=0;externINT8Uturn_left_flag=0;externINT8Utoppest_n=MAX_VIDEO_USEDLINE-1;externINT8USpeed_temp=0;externINT8SS_flag=0;externINT8SS_left=0;externINT8SS_right=0;externINT8SS_straight=0;externINT8UNo_line_flag=0;externINT8UStraight_flag=0;externINT16Ug_TopMiddleTotal=0;externINT8Ug_TopValidLine=0;externINT16Sg_TopMiddle=0;externINT32Uv_ref_temp;/*ParameterSelect*///#defineMAX_STRATEGY4#defineSPEED_KPVALUE1400//5000//8000 #defineSPEED_KIVALUE700//2000//3000#defineSPEED_KDVALUE0//0#defineVV_MAX #defineVV_MIN-()#defineVV_DEADLINE0x02 #defineLOCA_KPVALUE2000//100//2000#defineLOCA_KIVALUE0 #defineLOCA_KDVALUE2000//400似乎微分大了之后舵機(jī)效果好些啊#defineLOCA_MAX //最大調(diào)節(jié)量輸出為正負(fù)110。#defineLOCA_MIN-#defineLOCA_DEADLINE0x01 //位置PID,設(shè)置死區(qū)范圍//PIDstructure,includespeedinformation externstructPID { //servoanglePIDparameter signedlongloca_Ref; signedlongloca_FeedBack; signedlongloca_PreError; signedlongloca_PreIntegral; signedintloca_Kp; signedintloca_Ki; signedintloca_Kd; signedlongloca_PreU; //電機(jī)控制輸出值 //drivermotorPIDparameter INT32Svi_Ref; signedintvi_FeedBack; signedintvi_PreError; //vi_Ref-vi_FeedBack signedintvi_PreDerror; //d_error-PreDerror; signedlongv_Kp; signedintv_Ki; signedintv_Kd; signedlongvl_PreU; };structPID sPID;/*---------------DECLARATION------------------------------*//*PIDfuctions*/signedlongintloca_PIDCalc(structPID*pp);signedintV_PIDCalc(structPID*pp);voidServoPIDInit(void);voidSpeedPIDInit(void);//voidSending(void);voidSystemInit(void);voidSystemStart(void);voidRunning(void);voidShortDelay(void);voidLongDelay(void);#endif/*SCHEDULE_H*/Schedule.c/*************************************************************************Copyright(c)**----------------------------------------------------------------------** ModuleName:Schedule.c** ModuleDate:** ModuleAuth:**Description:scheduleofsystem**----------------------------------------------------------------------**RevisionHistory:**Date: month/day/year**Notes:**下***********************************************************************//*---------------INCL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論