哈爾濱工程大學(xué)極品飛車1號技術(shù)報告_第1頁
哈爾濱工程大學(xué)極品飛車1號技術(shù)報告_第2頁
哈爾濱工程大學(xué)極品飛車1號技術(shù)報告_第3頁
哈爾濱工程大學(xué)極品飛車1號技術(shù)報告_第4頁
哈爾濱工程大學(xué)極品飛車1號技術(shù)報告_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE PAGE 50第三屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽技 術(shù) 報 告附錄B:攝像頭黑線識別算法和濾波方法學(xué) 校: 哈爾濱工程大學(xué)隊伍名稱: 極品飛車1號參賽隊員: 孟恭 王璐 齊昭帶隊教師: 管鳳旭 張愛筠關(guān)于技術(shù)報告和研究論文使用授權(quán)的說明本人完全了解第一屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽關(guān)保留、使用技術(shù)報告和研究論文的規(guī)定,即:參賽作品著作權(quán)歸參賽者本人,比賽組委會和飛思卡爾半導(dǎo)體公司可以在相關(guān)主頁上收錄并公開參賽作品的設(shè)計方案、技術(shù)報告以及參賽模型車的視頻、圖像資料,并將相關(guān)內(nèi)容編纂收錄在組委會出版論文集中。參賽隊員簽名: 帶隊教師簽名: 日 期: 目錄摘 要4第一章

2、 引言51.1 概述51.2 整車設(shè)計思路5 1.2.1 控制系統(tǒng)設(shè)計5 1.2.2 電源系統(tǒng)設(shè)計6第二章 系統(tǒng)硬件設(shè)計72.1 傳感器選型及安裝方案設(shè)計7 2.1.1 巡線傳感器的選擇7 2.1.2 測速傳感器的選擇82.2 模型車機械設(shè)計與實現(xiàn)9 2.2.1 前輪傾角調(diào)整9 2.2.2 底盤高度調(diào)整19 2.2.3 車身重心調(diào)整10 2.2.4 舵機安裝102.3 系統(tǒng)電路設(shè)計與實現(xiàn)10 2.3.1 電路板設(shè)計與制作11 2.3.2 電源管理電路12 2.3.3 圖像采集電路13 2.3.4 電機驅(qū)動電路16 2.3.5 測速部分設(shè)計17第三章 系統(tǒng)軟件設(shè)計183.1 MC9S12DG12

3、8片內(nèi)資源簡介183.2 軟件設(shè)計與編程18 3.2.1 時鐘模塊19 3.2.2 PWM模塊19 3.2.3 ECT模塊20 3.2.4 串口模塊21 3.2.5 普通IO模塊21第四章 賽車主要技術(shù)參數(shù)23 結(jié)論24 參考文獻(xiàn)25附錄 A:智能車源程序26附錄 B:攝像頭黑線識別算法和濾波方法40摘 要本文詳細(xì)闡述了極品飛車號的總體設(shè)計過程以及測試、調(diào)試過程。該系統(tǒng)以Freescale16 位單片機MC9S12DG128 作為系統(tǒng)控制處理器,采用基于面陣式CCD傳感器的圖像采樣模塊獲取賽道圖像信息的循線競速智能車系統(tǒng),該系統(tǒng)利用MC9S12DG128單片機內(nèi)部的ECT模塊,配合從視頻信號中

4、分離出的同步信號,可以將通過硬件二值化后的圖像信息存入單片機內(nèi)部的RAM中,然后通過軟件對圖像信息進(jìn)行處理,得到各種路徑參數(shù)。這種方案解決了圖像采集速度和存儲數(shù)據(jù)空間的技術(shù)難點,這樣不僅保證了所采集數(shù)據(jù)的準(zhǔn)確性,而且提高了采集速度,易于實現(xiàn)系統(tǒng)的實時控制。經(jīng)測試智能車系統(tǒng)取得了較高的穩(wěn)定性和速度。測速模塊采用穩(wěn)定可靠的光電碼盤測速方式。直流電機采用PI控制算法,實現(xiàn)電機速度快速響應(yīng)與穩(wěn)定控制。各功能模塊的緊密配合,實現(xiàn)了路徑的準(zhǔn)確識別、電機的快速響應(yīng)、舵機的精確控制。本文還對模型車的機械結(jié)構(gòu)調(diào)整進(jìn)行了說明。關(guān)鍵詞:飛思卡爾;MC9S12DG128;循線;面陣CCD;二值化第一章 引 言1.1.

5、 概述 為響應(yīng)教育部關(guān)于培養(yǎng)大學(xué)生的綜合知識運用能力、基本工程實踐能力和創(chuàng)新意識,以及倡導(dǎo)理論聯(lián)系實際、求真務(wù)實的學(xué)風(fēng)和團隊協(xié)作的人文精神號召,我們組隊積極參加了第三屆“飛思卡爾”杯全國大學(xué)生智能汽車邀請賽。從2007年11月開始著手進(jìn)行準(zhǔn)備,歷時近8個月。鑒于CCD 傳感器視距遠(yuǎn)、信息豐富的特點以及新技術(shù)路線帶來的挑戰(zhàn),我們在今年的方案設(shè)計中選擇了面陣式CCD 傳感器,并采用硬件二值化的方法降低圖像信息量。這種方案解決了圖像采集速度和存儲數(shù)據(jù)空間的技術(shù)難點,以在有限計算能力下獲得最高的分辨率和賽道中心檢測精度這樣不僅保證了所采集數(shù)據(jù)的準(zhǔn)確性,而且提高了采集速度,易于實現(xiàn)系統(tǒng)的實時控制,從而使

6、智能車能夠滿足高速運行下的動力性和穩(wěn)定性需求,獲得了良好的綜合性能和賽場表現(xiàn)。本技術(shù)報告將針對我們的傳感器信號處理設(shè)計、安裝、底盤參數(shù)選擇、電路設(shè)計、控制算法等方面進(jìn)行闡述,并列出了模型車的主要技術(shù)參數(shù)。1.2. 整車設(shè)計思路 1.2.1 控制系統(tǒng)設(shè)計 該控制系統(tǒng)采用攝像頭作為圖像采集傳感器,智能車共包括一下幾個模塊: 1)控制芯片MC9S12DG128。作為整個系統(tǒng)的核心部分,S12 單片機負(fù)責(zé)接收賽道圖像數(shù)據(jù)、智能車當(dāng)前速度等反饋信息,并對這些信息進(jìn)行恰當(dāng)?shù)奶幚?,并產(chǎn)生一定的控制量來對舵機和電機進(jìn)行控制。2) 圖像采集模塊.圖像采集模塊由CCD攝像頭、S12 的ECT模塊、視頻分離芯片LM

7、1881以及相應(yīng)的輔助電路組成。它的主要功能是獲取前方賽道的圖像數(shù)據(jù),以供S12作進(jìn)一步分析處理。速度傳感器模塊由附在驅(qū)動齒輪上的黑白間隔的彩帶和反射型光電傳感器組成,考定時檢測反射型光電傳感器電脈沖脈沖累積數(shù)來間接求得賽車的速度值。3) 電機驅(qū)動模塊,舵機驅(qū)動模塊.舵機模塊和驅(qū)動模塊分別用于實現(xiàn)賽車轉(zhuǎn)向和驅(qū)動。輔助調(diào)試模塊主要用于賽車系統(tǒng)的程序燒寫,功能調(diào)試和測試,賽車狀態(tài)監(jiān)控,賽車系統(tǒng)參數(shù)和運行策略設(shè)置等方面。4) 速度傳感模塊,采用增量式光電編碼器實現(xiàn)對智能車的測速。本賽車系統(tǒng)的結(jié)構(gòu)示意圖如圖 1.2.1:圖.2 電源系統(tǒng)設(shè)計由于在賽車運行過程中車輪摩擦阻力變化頻繁,并且

8、加速制動劇烈,從而造成電池負(fù)載變化劇烈,輸出電壓幅度也劇烈變化,所以加強了電池端的濾波。電源系統(tǒng)如圖所示: 圖1.2.2 電源管理系統(tǒng)第二章 系統(tǒng)硬件設(shè)計 2.1 傳感器選型及安裝方案設(shè)計 2.1.1 巡線傳感器的選擇 方案一:基于光電傳感器陣列的智能控制光電傳感器的排列方法、個數(shù)、彼此之間的間隔都與控制方法密切相關(guān)。但一般的認(rèn)識是:在不受到外部因素影響的前提下,能夠感知前方的距離越遠(yuǎn),行駛效率越高。由于光電傳感器電路板不可能伸出車體太遠(yuǎn),因此大多制作者調(diào)整了光電傳感器電路板與地面的夾角,使光電傳感器可以感知更遠(yuǎn)一點的跑道情況。圖2.1.1(a)、圖2.1.1(b)是兩種典型的光電循跡方案。2

9、.1.1(a)中模型車采用了8對光電傳感器且分布得較寬,2.1.1(b中模型車只采用了3對光電傳感器,放置在向外伸出的小電路板上,探測的范圍較小。具體何種方案合適,與光電傳感器掃描前方的距離和寬度以及控制策略密切相關(guān)。 在光電循跡方案中,為了得到質(zhì)量較高的接收信號,一般還附加了由電阻、電容組成的RC高通濾波器。這樣就能夠一定程度上避免由外部光線因素引起的路線識別不正確問題。有的模型車設(shè)計的傳感器離地面較遠(yuǎn),為了能夠接收更多的從發(fā)光傳感器反射過來的光線,也有使用凸透鏡的情況?;诜瓷涫郊t外傳感器的光電傳感器陣列的路徑檢測方法具有較高的可靠性與穩(wěn)定性,信息更新速度快且易于單片機處理。但是它易受環(huán)境

10、光線干擾,而且存在著檢測距離近的問題,硬件電路復(fù)雜。為了獲得遠(yuǎn)方的信息需要將傳感器伸得盡可能遠(yuǎn),從而增加了車體高速行駛時的轉(zhuǎn)動慣量,限制了智能車的最高速度。圖2.1.1(a) 光電傳感器方案(8對) 圖2.1.1(b) 光電傳感器方案(3對) 方案二:基于線陣CCD傳感器的智能控制基于線陣CCD傳感器的路徑檢測方法具有探測距離遠(yuǎn)(后文將這種前方探測距離稱為“前瞻”)的優(yōu)勢,能夠盡可能早地感知前方路徑信息并進(jìn)行預(yù)判斷,實現(xiàn)提前減速過彎。而且這樣還能夠提高轉(zhuǎn)彎的最高速度。同時還可以結(jié)合利用單片機內(nèi)部的A/D,在小車前方虛擬出24個光電傳感器。采用單一傳感器,硬件結(jié)構(gòu)簡單且高速運行時轉(zhuǎn)動慣量小,從而

11、增加了小車的最高速度。這樣不僅能克服傳統(tǒng)光電傳感器的缺點,又能夠精確地感知黑色引導(dǎo)線的位置,為智能車的穩(wěn)定運行提供保障。但是,在調(diào)研過程中我們發(fā)現(xiàn)這種線陣攝像頭在市場上很少,不易購買。 圖2.1.1(c) 使用面陣CCD傳感器的智能車 方案三:基于面陣CCD傳感器的智能控制 基于黑白面陣CCD傳感器的路徑檢測方法具有以上兩種方案的所有優(yōu)點,同時面陣CCD輸出的是復(fù)合視頻信號,采集到的信息將是前方整個一幅圖像。利用S12單片機內(nèi)部的A/D轉(zhuǎn)換器,并配合從視頻信號分離出的同步信號,該單片機可以直接將圖像信號采集到其內(nèi)部的RAM中,然后通過軟件對圖像信息進(jìn)行處理。這樣不僅可以識別道路的中心位置,同時

12、還可以得到賽路的方向、賽道的曲率等信息。這樣可以有效地對車模進(jìn)行運動控制,提高車模路徑跟蹤速度和運行速度。但是面陣CCD的延遲比較大(20ms),因此對信息的采集和處理有一定的約束。綜合以上分析,為了更多的獲得路況信息和取得大的前瞻,本設(shè)計選擇方案三,并對其進(jìn)行了改進(jìn)。2.1.2 測速傳感器的選擇為了使得智能車能夠平穩(wěn)地沿黑色引導(dǎo)線運行,除了控制前輪轉(zhuǎn)向舵以外,還需要比較精確地控制車速,使智能車在急轉(zhuǎn)彎時不會由于速度過快而沖出跑道。根據(jù)自動控制原理可以知道閉環(huán)的系統(tǒng)一般比較穩(wěn)定,通過一定的方法實時測量智能車的速度,從而形成閉環(huán)控制,使得智能車更加準(zhǔn)確的運行。一般可以采用以下幾種測速方法: 方案

13、一:霍爾傳感器測速。在后輪的軸附近安裝一個霍爾傳感器,相對應(yīng)的再在軸上安裝多個小型永磁鐵,根據(jù)霍爾傳感器特點,用一個上拉電阻將其接至5V,隨著后輪的轉(zhuǎn)動就會形成多個脈沖信號。根據(jù)單位時間內(nèi)的脈沖數(shù)量據(jù)可以測得當(dāng)前車速。方案二:反射式光電管測速。在后輪的軸上安裝一個黑白相間的光碼盤,然后通過一側(cè)安裝的反射式光電管讀取光碼盤轉(zhuǎn)動的脈沖。方案三:投射式光電管測速。采用具有齒槽結(jié)構(gòu)的圓盤固定的后軸上,采用直射式紅外光傳感器讀取齒槽圓盤的轉(zhuǎn)動脈沖。方案三:光電編碼器測速。光電編碼器可以分為增量式光電編碼器和絕對式光電編碼器。增量式光電編碼器可以輸出正比于轉(zhuǎn)速的脈沖,記錄單位時間內(nèi)的脈沖數(shù)就可以間接測取實

14、時速度。鑒于光電編碼器安裝簡單,輸出信號比較規(guī)整,所以我們采用方案三。2.2 模型車機械設(shè)計與實現(xiàn)2.2.1 前輪傾角調(diào)整現(xiàn)代汽車在正常行駛過程中,為了使汽車直線行駛穩(wěn)定,轉(zhuǎn)向輕便,轉(zhuǎn)向后能自動回正,并減少輪胎和轉(zhuǎn)向零件的磨損等,在轉(zhuǎn)向輪,轉(zhuǎn)向節(jié)和前軸之間須形成一定的相對安裝位置,叫轉(zhuǎn)向車輪定位,也叫前輪定位。前輪定位包括主銷后傾(角)、主銷內(nèi)傾(角)、前輪外傾(角)和前輪前束四個內(nèi)容。這是對兩個轉(zhuǎn)向前輪而言,對兩個后輪來說也同樣存在與后軸之間安裝的相對位置,稱后輪定位。后輪定位包括車輪外傾(角)和逐個后輪前束。這樣前輪定位和后輪定位總起來說叫四輪定位。1. 主銷后傾角:主銷的軸線相對于車輪的

15、中心線向后傾斜的角度。前輪重心在主銷的軸線上由于主銷向后傾斜使前輪的重心不在車輪與地面的接觸點上,于是產(chǎn)生了離心力,主銷后傾形成的離心力,可以保證汽車直線行駛的穩(wěn)定性還可以幫助車輪自動回正。主銷后傾角延長線離地面實際接觸越遠(yuǎn),車速越高,離心力就越大。后傾角越大,車速越高,車輪偏轉(zhuǎn)后自動回正的能力越強。但回正力矩過大,將會引起前輪回正過猛,加速前輪擺振,并導(dǎo)致轉(zhuǎn)向沉重。通過增加墊片的數(shù)量,可以改變主銷后傾角。綜上所述,智能車采用了23的主銷后傾角。2.主銷內(nèi)傾角:主銷的軸線相對于車輪的中心線向內(nèi)傾斜的角度稱為主銷內(nèi)傾角。保證汽車直線行駛的穩(wěn)定性,靠前軸軸荷,也可以幫助車輪自動回正。主銷內(nèi)傾軸線延

16、長線在沒超過前輪中心線的前提下,離前輪中心線越近,轉(zhuǎn)向角越大,轉(zhuǎn)向輪抬起的越高,車輪的回正力矩就越大。此外,主銷內(nèi)傾角還使得主銷軸線與路面交點到車輪中心平面與地面交線的距離減小,從而減小轉(zhuǎn)向時駕駛員加在方向盤上的力,使轉(zhuǎn)向輕便,同時也可減少從轉(zhuǎn)向輪傳到方向盤上的沖擊力。但主銷內(nèi)傾角也不宜過大,否則不僅會使車轉(zhuǎn)向變得很沉重,也加速了輪胎的磨損。通常汽車主銷內(nèi)傾角不大于8。3.前輪外傾角:從前后方向看車輪時,輪胎并非垂直安裝,而是稍微傾倒呈現(xiàn)“八”字形張開,稱為負(fù)外傾,而朝反方向張開時稱正外傾。如果車輪垂直地面一旦滿載就易產(chǎn)生變形,可能引起車輪上部向內(nèi)傾側(cè),導(dǎo)致車輪聯(lián)接件損壞。所以事先將車輪校偏一

17、個外八字角度,這個角度約在1左右。4.前束:前束是指兩輪之間的后距離數(shù)值與前距離數(shù)值之差,也指前輪中心線與縱向中心線的夾角。前輪前束的作用是保證汽車的行駛性能,減少輪胎的磨損。前輪在滾動時,其慣性力會自然將輪胎向內(nèi)偏斜,如果前束適當(dāng),輪胎滾動時的偏斜方向就會抵消,輪胎內(nèi)外側(cè)磨損的現(xiàn)象會減少。2.2.2 底盤高度調(diào)整按照常規(guī),車輛底盤高度越低,車輛重心越低,后輪抓地力越好,前輪轉(zhuǎn)向越敏感。因此在很多賽車比賽中,提高速度有效方法就是降低底盤高度。在前輪轉(zhuǎn)向機構(gòu)處,增加一塊墊片,略微降低了賽車前部的底盤高度,使底盤呈現(xiàn)一種前低后高的傾斜狀態(tài)。但是地盤過低,會導(dǎo)致智能車在上坡過程中輪胎的懸空,也會導(dǎo)致

18、智能車在賽道上行駛時產(chǎn)生較大的靜電,因此,合適選擇地盤高度能夠有效提高小車的性能。車身重心調(diào)整除了對車輛重心縱向的調(diào)整之外,車輛重心的前后方向調(diào)整,對賽車行駛性能,也有很大的影響。根據(jù)車輛運動學(xué)理論,車身重心前移,會增加轉(zhuǎn)向,但降低轉(zhuǎn)向的靈敏度(因為大部分重量壓在前輪,轉(zhuǎn)向負(fù)載增大),同時降低后輪的抓地力;重心后移,會減少轉(zhuǎn)向,但增大轉(zhuǎn)向靈敏度,后輪抓地力也會增加。因此,調(diào)整合適的車身重心,讓車模更加適應(yīng)比賽賽道是很關(guān)鍵的。但是由于賽道未知,只能通過舵機轉(zhuǎn)向性能,以及后輪驅(qū)動能力,來調(diào)整重心,使其適應(yīng)各種賽道。根據(jù)實際調(diào)試經(jīng)驗,鑒于當(dāng)前舵機響應(yīng)延時比較嚴(yán)重,經(jīng)常在普通彎角出現(xiàn)轉(zhuǎn)向不足的問題,因

19、此,需要將賽車重心適當(dāng)前移,增加轉(zhuǎn)向性能。轉(zhuǎn)向靈敏度的降低,只體現(xiàn)在蛇行道上,可以通過算法彌補。通過調(diào)整電路板及電池安裝位置,可以在不增加車重的情況下,控制車輛重心。以上對車模結(jié)構(gòu)進(jìn)行的調(diào)整,可以增加后輪抓地力,改善前輪轉(zhuǎn)向性能,為小車在賽道上的表現(xiàn)提供了最佳的機械支撐。2.2.4 舵機安裝 圖2.2.4(a) 圖2.2.4(b)我們的舵機采用了中位的固定方法如圖2.2.4(a)所示。這樣可以使左右轉(zhuǎn)向?qū)ΨQ,而且舵機的拆裝也較為簡便。如果采用偏置的固定方法如圖2.2.4(b)所示,雖然結(jié)構(gòu)比較緊湊,比較節(jié)省空間,但左右的轉(zhuǎn)向幅度會不同,左右轉(zhuǎn)向不對稱,這是程序控制上都無法校正的。系統(tǒng)電路設(shè)計與

20、實現(xiàn)智能車系統(tǒng)是以單片機MC9S12DG128為核心,配合由面陣CCD傳感器、光電編碼器、直流電機、舵機、電池以及相應(yīng)的驅(qū)動電路構(gòu)成??傮w硬件框圖如圖所示圖2.2 系統(tǒng)整體硬件框圖2.3.1 電路板設(shè)計與制作為了使得電路更加緊湊、外部引線更少,我們獨立設(shè)計了一塊核心控制電路板。如圖2.3.1 所示,電路板上包括了S12 單片機工作所必需的穩(wěn)壓模塊、時鐘模塊和復(fù)位模塊,同時還包括了視頻信號提取電路、電機驅(qū)動電路、BDM 調(diào)試接口以及其他一些電路。圖2.3.1 主板2.3.2 電源管理電路在電源管理電路中,所用電池為電壓7.2V,容量1800mAh的六芯鎳鎘電池組。該電池可以直接給舵機和直流電機供

21、電。而通過穩(wěn)壓至5V給單片機和光電碼盤供電,通過DC-DC升壓模塊給CCD傳感器供電。電源管理電路如圖所示 圖2.3.2(a) 電池濾波 圖2.3.2(b) 整車電源系統(tǒng)2.3.3 圖像采集電路極品飛車1號采用面陣式CCD攝像頭對賽道信息進(jìn)行采集。對于CCD攝像頭的圖像采集有一下兩種方案可以選擇:第一,利用S12單片機內(nèi)部的A/D轉(zhuǎn)換器,并配合從視頻信號分離出的同步信號,該單片機可以直接將圖像信號采集到其內(nèi)部的RAM中,然后通過軟件對圖像信息進(jìn)行處理。這樣不僅可以識別道路的中心位置,同時還可以得到賽路的方向、賽道的曲率等信息。這樣可以有效地對車模進(jìn)行運動控制,提高車模路徑跟蹤速度和運行速度。但

22、是面陣CCD的延遲比較大(20ms),因此對信息的采集和處理有一定的約束。第二,利用單片機的增強型捕捉定時器(ECT-Enhanced Capture Timer)模塊。通過硬件進(jìn)行圖像的二值化,然后將二值化圖像以及通過視頻分離芯片LM1881分離出的行同步信號和場同步信號,讀入單片機的增強型捕捉定時器(ECT-Enhanced Capture Timer)模塊,用中斷方式控制ECT采集有效的路況信息。通過比較研究,我們發(fā)現(xiàn)在所采集的圖像信息中,只需分清黑色的跑道和白色的背景即可。因此,為了降低圖像處理難度,可以先把復(fù)合視頻信號進(jìn)行二值化處理,即把圖像和背景作為分離的二值(0,1)對待。方案一

23、是采用S12單片機的10位A/D轉(zhuǎn)換器采集復(fù)合視頻信號,同時由同步信號控制采集時序。采集完一場圖像后,使用軟件設(shè)定視頻閾值來二值化分割,如公式(1)。 1.1式中,f(x,y)二值化后數(shù)據(jù);u(x,y)為原始數(shù)據(jù);為閾值。由于單片機的A/D轉(zhuǎn)換器采集速度比較低,進(jìn)行10位A/D轉(zhuǎn)換需要7us。這樣,如果使用這種采集方法,采集的圖像每行像素將很少,圖像的水平分辨率很低。解決這個問題,我們可以將S12適當(dāng)超頻或降低A/D精度等方式。通過研究視頻分離信號,我們得到了一種更簡單有效地方法硬件二值化。也就是將復(fù)合視頻信號通過一個比較器與某個閾值電壓比較后的二值化信號,由I/O口讀入單片機RAM中。這樣就

24、大大減少了圖像采集時間,提高了圖像采集速度。但是雖然解決了采集時間的問題,可圖像數(shù)據(jù)依然需要占據(jù)很大的存儲空間。進(jìn)一步地,如果將二值信號后讀入單片機的增強型捕捉定時器(ECT-Enhanced Capture Timer)模塊。視頻分離芯片LM1881將復(fù)合視頻信號分離出行同步信號和場同步信號,用中斷方式控制ECT采集有效的路況信息。1) 硬件二值化電路 如圖所示 圖2.3.2(a) 硬件二值化電路在硬件二值化電路中使用電位器分壓設(shè)定一個電壓閾值(3腳),它與復(fù)合視頻信號(2腳)一起進(jìn)入電壓比較器MAX903,輸出端(7腳)即可得到二值化信號。2) 視頻分離電路 視頻同步信號分離芯片(簡稱LM

25、1881)可從攝像頭信號中提取信號的時序信息,如行同步脈沖、場同步脈沖和奇、偶場信息等,并將它們轉(zhuǎn)換成TTL 電平直接輸給單片機的I/O口作控制信號之用LM1881 的端口接線方式如圖2.3.2(b)所示 圖2.3.2(b) 視頻分離芯片LM1881其中,引腳2為視頻信號輸入端,引腳1為行同步信號輸出端,引腳3為場同步信號輸出端,當(dāng)攝像頭信號的場同步脈沖到來時,該端將變?yōu)榈碗娖?,一般維持230us,然后重新變回高電平。引腳7 為奇-偶場同步信號輸出端,當(dāng)攝像頭信號處于奇場時,該端為高電平,當(dāng)處于偶場時,為低電平。事實上,我們不僅可以用場同步信號作為換場的標(biāo)志,也可以用奇-偶場間的交替作為換場的

26、標(biāo)志,在本方案中我們沒有用到該信號。LM1881信號時序圖如圖2.3.2(c)所示: 圖2.3.2(c) LM1881信號時序圖由LM1881 及其外圍電路構(gòu)成的攝像頭采樣電路如圖所示。攝像頭視頻信號端接LM1881的視頻信號輸入端,同時也接入MAX903進(jìn)行硬件二值化。LM1881的行同步信號輸出端和場同步信號輸出端分別接入S12的PT0和PT1,二值化信號接入S12的PT2。 2.3.2(d)攝像頭采樣電路 電機驅(qū)動電路電機驅(qū)動使用的是MC33886。由于使用的直流伺服電機堵轉(zhuǎn)時候的最大電流達(dá)到17.2A,而一片MC33886芯片提供的最大工作電流為5A,為了提供足夠的驅(qū)動電流,防止芯片被

27、燒壞或者驅(qū)動能力不夠而導(dǎo)致系統(tǒng)復(fù)位,本設(shè)計方案采用了四片驅(qū)動芯片腳對腳并聯(lián)的方式。這樣做在提高了驅(qū)動能力的同時,降低了發(fā)熱量,提高了系統(tǒng)的穩(wěn)定性。電路如圖3.4所示。圖2.3.4 電機驅(qū)動電路 測速部分設(shè)計由于需要對車進(jìn)行速度控制,需要將速度信號作為反饋信號返回給控制器,鑒于測速裝置的工作穩(wěn)定性和測速精度,我們采用光電編碼器進(jìn)行測速,由于只需要測速度信號,而不需要測量位移信號,為了便于信號輸出,選用500線的增量式光電碼盤對車速進(jìn)行測量。500線的增量式編碼盤每秒可以產(chǎn)生500個脈沖,但由于其A,B相可以產(chǎn)生兩相正交方波信號,通過硬件的合理設(shè)置,可以對碼盤進(jìn)行四倍頻,達(dá)到2000脈沖每秒,碼盤

28、的Z相用于尋找基準(zhǔn)零點,在本作品中,只需要測量小車的速度,而不需要測量其位移,所以不需要使用Z相,碼盤的輸出送入單片機的脈沖計數(shù)器中,通過周期性的讀取計數(shù)器的值,獲得速度信息,用計數(shù)器值作為速度的度量。第三章 系統(tǒng)軟件設(shè)計 3.1 MC9S12DG128片內(nèi)資源簡介MC9S12DG128 微控制單元作為MC9S12 系列的16位單片機,由標(biāo)準(zhǔn)片上外圍設(shè)備組成,包括16位中央處理器、128KB的Flash 存儲器、8KB的RAM、2KB的EEPROM、兩個異步串行通信接口、兩個串行外圍接口、一組8通道的輸入捕捉或輸出捕捉的增強型捕捉定時器、兩組8 通道10 路模數(shù)轉(zhuǎn)換器、一組8通道脈寬調(diào)制模塊、

29、一個字節(jié)數(shù)據(jù)鏈路控制器、29路獨立的數(shù)字I/O接口、20路帶中斷和喚醒功能的數(shù)字I/O 接口、5個增強型CAN總線接口。同時,單片機內(nèi)的鎖相環(huán)電路可使能耗和性能適應(yīng)具體操作的需要。MC9S12DG128片內(nèi)資源表如圖3.1:圖3.1 MC9S12DG128片內(nèi)資源5.2 軟件設(shè)計與編程在整個系統(tǒng)設(shè)計中,用到了5個單片機基本功能模塊:時鐘模塊、PWM 輸出模塊、ECT 模塊、串口通信模塊以及普通IO 模塊。根據(jù)系統(tǒng)實際需求,對各個模塊進(jìn)行了初始化配置,通過對相應(yīng)數(shù)據(jù)寄存器或狀態(tài)寄存器的讀寫,實現(xiàn)相應(yīng)的功能。5.2.1 時鐘模塊S12 單片機中有四個不同的時鐘,即外部晶振時鐘、鎖相環(huán)時鐘、總線時鐘

30、和內(nèi)核時鐘。 當(dāng)前電路板采用的是16MHz 的有源晶振,因此外部晶振時鐘為16MHz;默認(rèn)設(shè)置下,鎖相環(huán)時鐘為36MHz,總線時鐘為8MHz,內(nèi)核時鐘為16MHz。鎖相環(huán)時鐘與外部晶振時鐘的倍、分頻關(guān)系由SYNR、REFDV 兩寄存器決定??偩€時鐘用作片上外圍設(shè)備的同步,而內(nèi)核時鐘則用作CPU 的同步,它決定了指令執(zhí)行的速度。時鐘模塊初始化程序如下:#define PLLTimer 36 / REFDV = 15; SYNR = PLLTimer - 1; while(!CRGFLG_LOCK); /等待系統(tǒng)時鐘穩(wěn)定CLKSEL_PLLSEL = 0 x01; /選擇PLL時鐘作為系統(tǒng)時鐘5.

31、2.2 PWM 模塊脈寬調(diào)制模塊有8 路獨立的可設(shè)置周期和占空比的8 位PWM 通道,每個通道配有專門的計數(shù)器。該模塊有4 個時鐘源,能分別控制8 路信號。通過配置寄存器可設(shè)置PWM 的使能與否、每個通道的工作脈沖極性、每個通道輸出的對齊方式、時鐘源以及使用方式(八個8 位通道還是四個16 位通道)。驅(qū)動舵機的PWM信號的頻率為50Hz,電機的PWM信號的頻率為10KHz,為了提高舵機的響應(yīng)速度,將舵機的PWM頻率增大到100Hz。為了提高控制精度,我們將兩路8 位通道合并為一個16 位通道來控制舵機和電機,這樣可使舵機和電機的控制精度從1/255 提高到1/65536。PWM 模塊的初始化設(shè)

32、置過程為: PWME = 0 x00; / 關(guān)所有輸出 PWMPOL = 0 xff; PWMPOL_PPOL4 = 1; PWMPOL_PPOL5 = 1; PWMPOL_PPOL2 = 0; PWMPOL_PPOL3 = 0;/ 5通道和3通道兩個16位輸出通道反向,用于電機控制/ PWMCLK = 0 x00; / 選擇時鐘A,B /* PWMPRCLK寄存器決定了時鐘A和時鐘B與主頻率之間的關(guān)系 PCKA2 PCKA1 PCKA0 Value ofClock A 0 0 0 bus clock 0 0 1 bus clock / 2 0 1 0 bus clock / 4 0 1 1

33、bus clock / 8 1 0 0 bus clock / 16 1 0 1 bus clock / 32 1 1 0 bus clock / 64 1 1 1 bus clock / 128 PCKB2 PCKB1 PCKB0 Value ofClock B 0 0 0 bus clock 0 0 1 bus clock / 2 0 1 0 bus clock / 4 0 1 1 bus clock / 8 1 0 0 bus clock / 16 1 0 1 bus clock / 32 1 1 0 bus clock / 64 1 1 1 bus clock / 128 */ /*A

34、和SA及B和SB之間的換算掛關(guān)系Clock SA = Clock A / (2 * PWMSCLA)Clock SB = Clock B / (2 * PWMSCLB)*/ PWMPRCLK = 0 x00; / bus clock:40M;Clock A-0分頻,Clock B-0分頻 PWMCLK_PCLK1 = 1; / 01通道選擇Clock SA為時鐘源 PWMCLK_PCLK3 = 0; / 23通道選擇Clock B為時鐘源 PWMCLK_PCLK5 = 0; / 45通道選擇Clock A為時鐘源 PWMSCLA = 0 x08; / Clock SA = Clock A /

35、( 2 * PWMSCLA) Clock SA = Clock A / 8 PWMCTL = 0 xff; / 將兩個8位的PWM輸出通道組合成一個16位的PWM輸出通道PWMCAE = 0 x00; / 所有的PWM輸出為左對齊方式輸出PWMPER01 = 40000; / 舵機驅(qū)動,PWM周期為10MsPWMDTY01 = MIDSERVOMOTORDST; / 舵機初始化,找到中間位置 PWMPER45 = 4000; / 電機驅(qū)動PWMDTY45 = 2000; / 電機初始化PWMPER23 = 4000; / 電機驅(qū)動PWMDTY23 = 2000; / 電機初始化5.2.4 EC

36、T 模塊增強型捕捉定時器模塊能實現(xiàn)輸入捕捉和輸出波形產(chǎn)生兩大功能。在最終的方案中,有四路信號輸入ECT端口。首先是由視頻信號提取芯片(1881)得到的行同步、場同步和由比較器輸出的視頻二值信號。利用ECT 模塊的脈沖捕捉工作方式,可以獲得賽道引導(dǎo)線的位置信息,完成數(shù)據(jù)點的采集。同時,光電碼盤的脈沖也通過ECT進(jìn)行采集,ECT工作于脈沖累加工作方式,這樣,通過單位時間內(nèi)ECT端口得到的脈沖數(shù),可以得到智能車的運行速度。TIE = 0; TIOS = 0; / 所有的端口設(shè)置成輸入捕獲模式TSCR1 = 0 x90; / 使能時鐘模塊,讀取數(shù)據(jù)自動清零/ 設(shè)置了三個通道的比較捕獲模式:初始化為捕獲

37、下降沿TCTL4_EDG0B = 1, TCTL4_EDG0A = 0;TCTL4_EDG1B = 1, TCTL4_EDG1A = 0; TCTL4_EDG2B = 0, TCTL4_EDG2A = 0; TSCR2 = 0 x01; / 確定行分辨率 PACTL_PAEN = 1; / 使能脈沖計數(shù)器 PACTL_PAOVI = 1; / 使能溢出中斷TIE_C0I = 1; / 使能場同步中斷5.2.6 串口模塊串口通信模塊設(shè)有兩個串行通信接口SCI1 和SCI0。使用時,可以對波特率、數(shù)據(jù)格式(8 位或9 位)、發(fā)送輸出極性、接收喚醒方式等進(jìn)行選擇。另外,發(fā)送和接收可分開使能,模塊中還

38、提供了多種避免傳輸錯誤的選項。在本次設(shè)計,我們利用其中一個串口SCI0,將所需要的信息通過串口傳到上位機上進(jìn)行必要的處理和分析,以提高調(diào)試的效率。串口初始化部分程序:SCI0BD = 0 x0041; / 設(shè)置出口通信波特率38400 SCI0CR2_RE = 1; / 使能接收 SCI0CR2_RIE = 1; / 使能接收中斷SCI0CR2_TE = 1; / 使能發(fā)送串口發(fā)送程序:while(!SCI0SR1_TDRE); / 等待發(fā)送緩沖區(qū)空 SCI0DRL = SCI_Data_MSB; while(!SCI0SR1_TDRE); SCI0DRL = SCI_Data_LSB;串口接

39、收程序:while(!SCI0SR1_RDRF); SCI_DATA_REC = SCI0DRL;5.2.7 普通IO根據(jù)系統(tǒng)設(shè)計,普通IO 的用途主要有:按鍵(用于選擇運行模式)指示燈(用于顯示所選擇的模式)第四章 賽車主要技術(shù)參數(shù) 4.1 智能車主要技術(shù)參數(shù)改造后智能車的主要技術(shù)參數(shù)如表1所示:表1 模型車最后參數(shù)名稱/單位參數(shù)模型車重量(帶電池)/kg1.2模型車長寬高/cm3116.524.5電路功耗/W電容總?cè)萘?F約600傳感器種類及個數(shù)CCD1;光電碼盤1除車模原有驅(qū)動電機、舵機之外伺服電機個數(shù)無賽道信息檢測精度跑道信息檢測頻率50Hz結(jié)論 本設(shè)計基于自動控制原理,利用路徑識別模

40、塊得到的道路偏差使智能車實現(xiàn)循跡跟蹤,采用PWM技術(shù)控制電機的轉(zhuǎn)速和轉(zhuǎn)向。裝備CCD傳感器后車速有了更大的提高空間,直線與普通彎道的識別均可以達(dá)到預(yù)期的效果。通過測試,經(jīng)過改進(jìn)的循線競速智能車性能有了提高。可以展望,以后可以設(shè)計記憶算法第一圈勻速穩(wěn)定行駛將跑道的信息記錄下來并處理;第二圈不用路徑識別傳感器,使用上一次的處理過的記憶信息跑完全程。第二圈時將處理過的用來控制電機和舵機,這樣就能夠?qū)崿F(xiàn):以最大速度沖直道;提前減速入彎并快速加速;甚至直沖蛇形道。這種方法能夠最大限度的提高智能車的平均速度,但是它存在著一定的風(fēng)險很容易沖出跑道,而且需要較高的穩(wěn)定性。這些都是今后智能車設(shè)計制作時的努力方向

41、。參考文獻(xiàn)1卓晴.黃開勝.邵貝貝.學(xué)做智能車挑戰(zhàn)“飛思卡爾”杯.北京:北京航空航天大學(xué)出版社,2007.3.2陳伯時。電力拖動自動控制系統(tǒng)運動控制系統(tǒng).北京:機械工業(yè)出版社,2005.3陶永華.新型PID控制及其應(yīng)用.北京:機械工業(yè)出版社,2002.4邵貝貝.單片機嵌入式應(yīng)用的在線開發(fā)方法.北京:清華大學(xué)出版社,2004.5王慶有.圖像傳感器應(yīng)用技術(shù).北京:電子工業(yè)出版社,2003.9.附錄A: 智能車源程序#include includes.h/2008年6月18日23:16:43unsigned char No8 = /0 1 2 3 4 5 6 7 0 xfe, 0 xfd, 0 xfb

42、, 0 xf7, 0 xef, 0 xdf, 0 xbf, 0 x7f ;void(*fun8)(void); / 指向函數(shù)的指針數(shù)組,用于調(diào)用選定的函數(shù)段/ 視頻數(shù)據(jù)unsigned int dataDATALENGTH2;int dataWidth0DATALENGTH;int dataWidth1DATALENGTH;int dataPosition0DATALENGTH;int dataPosition1DATALENGTH;int *dataWidth0Pointer;int *dataWidth1Pointer;int *dataPosition0Pointer;int *data

43、Position1Pointer;int lineCnt;int fieldFlag;int slope20;typedef struct PID double SetPoint; / 設(shè)定目標(biāo)Desired valuedouble Proportion; / 比例常數(shù)Proportional Constdouble Integral; / 積分常數(shù)Integral Constdouble Derivative; / 微分常數(shù)Derivative Constdouble LastError; / Error-1double PrevError; / Error-2double SumError

44、; / Sums of Errors PID;double PIDCalc( PID *); / PID算法函數(shù)double PIDCalc( PID *pp) double dError = 0,Error = 0,Last = 0; Error = pp-SetPoint; / 偏差 pp-SumError = pp-SumError * 0.5; pp-SumError += Error; / 積分 dError = pp-LastError - pp-PrevError; / 當(dāng)前微分 pp-PrevError = pp-LastError; pp-LastError = Error;

45、 Last = pp-Proportion * Error / 比例項 + pp-Integral * pp-SumError / 積分項 + pp-Derivative * dError; / 微分項 return Last; void sysInit(void);void delay(unsigned int t);int distanceOf(int x, int y);void f0(void);void f1(void);void f2(void);void f3(void);void f4(void);void f5(void);void f6(void);void f7(void

46、);/ 描述:主函數(shù),鍵盤掃描,調(diào)用用戶程序/ 無參數(shù)void main(void) int CNT = -1; / 循環(huán)計數(shù) int i = 0; / 延時計數(shù)器 EnableInterrupts; sysInit(); / f1(); / 按鍵掃描 for (;) if (PORTB_BIT6 = 1) / 檢測K3按下情況, if (+CNT = 8) / 數(shù)碼管一共可以顯示32個數(shù) CNT = 0; PORTA = NoCNT; / K3用來選擇將要運行的程序段,顯示當(dāng)前CNT 值 delay(300); / 延時300ms,消抖 if (PORTB_BIT6 = 1) / 如果長按K

47、3按鍵,則連續(xù)加1 continue; if (PORTB_BIT7 = 1) / 檢測K2是否按下,K2確定將要運行的程序段 delay(100); / 延時100ms,消抖 if (PORTB_BIT7 = 1) / 在此檢測K2按下情況, for (;) / 已經(jīng)確定了將要運行的程序段,調(diào)用待運行程序 / 倒計時,3秒 PORTA = 0 x00; delay(200); PORTA = 0 x01; delay(200); PORTA = 0 x03; delay(200); PORTA = 0 x07; delay(200); PORTA = 0 x0f; delay(200); P

48、ORTA = 0 x1f; delay(200); PORTA = 0 x3f; delay(200); PORTA = 0 x7f; delay(200); PORTA = 0 xff; PWME_PWME4=1; PWME_PWME5=1; PWME = 0 xff; (*funCNT)(); / 調(diào)用選定的主控程序 for(;); /* wait forever */ 描述:系統(tǒng)初始化函數(shù),調(diào)用所有includes中聲明的應(yīng)用中使用到的模塊的初始化函數(shù)/ 函數(shù)名:sysInit/ 無參數(shù)/ 無返回值void sysInit(void) CRGInit(); / Clocks and Re

49、set Generator module initialization SCIInit(); / Serial Communication Interface initialization ECTInit(); / Enhanced Capture Timer module initialization PWMInit(); / PWM module initialization DDRA = 0 xff; DDRB = 0 x3f; PORTA = 0 xff; dataWidth0Pointer = dataWidth0; dataWidth1Pointer = dataWidth1; d

50、ataPosition0Pointer = dataPosition0; dataPosition1Pointer = dataPosition1; fun0 = f0; fun1 = f1; fun2 = f2; fun3 = f3; fun4 = f4; fun5 = f5; fun6 = f6; fun7 = f7; / 描述:延時函數(shù),單位ms,最大延時時間65535ms/ 函數(shù)名:delay/ 參數(shù):延時長度,單位ms/ 無返回值void delay(unsigned int t) unsigned int temp; temp = SysTimer + t; for (; temp

51、 != SysTimer;);int distanceOf(int x, int y) if (x y) return x - y; else return y - x;/*函數(shù)段*void f0(void)/ 測試程序,舵機滿幅擺動 for (;) setServoMotorDst(300); delay(500); setServoMotorDst(-300); delay(500); setServoMotorDst(40); delay(500); setServoMotorDst(-40); delay(500); void f1(void) int i, j, k; / 循環(huán)變量

52、int start, end; / 起始行終止行 int e; /舵機轉(zhuǎn)角 int pFlag, nFlag; / 最大值最小值標(biāo)記 int m, n; / slope數(shù)組的起始和終止位 PID sPID; / PID結(jié)構(gòu)體 double e1; /最遠(yuǎn)點偏差 int ePast; / int eold = 0; / double tt = 0.0; /比例 unsigned char scale = 0; / 判斷是什么賽道 sPID.Proportion = 0.280; / Set PID Coefficients P sPID.Integral = 0.0; / I sPID.Deri

53、vative = 0.040; / D sPID.SetPoint = 0.0; / Set PID Setpoint for (;) if (fieldFlag = 1) fieldFlag = 0; for (i = 1; i 200) *(dataPosition1Pointer + i) = *(dataPosition1Pointer + i - 1); for (i = DATALENGTH - 1; i 0 & *(dataWidth1Pointer + i) = 0; i-); / 終止行 最遠(yuǎn)處 end = i; / end for (; i 0 & *(dataWidth1

54、Pointer + i) != 0 ; i-); / 起始行 最近處 start = i; / start for ( i = 0; i 20; i+) *(slope + i) = 0; for ( i = start / 20 + 1; i end / 20 - 1; i+) *(slope + i) = *(dataPosition1Pointer + i * 20) + *(dataPosition1Pointer + i * 20 + 1) + *(dataPosition1Pointer + i * 20 + 2) - *(dataPosition1Pointer + i * 20

55、 + 20) - *(dataPosition1Pointer + i * 20 + 21) - *(dataPosition1Pointer + i * 20 + 22) ; for (i = 0; i 20 & *(slope + i) = 0; i+); / slope數(shù)組的起始位 m = i; / m for (; i 20 & *(slope + i) != 0 ; i+); / slope數(shù)組的終止位 n = i - 1; / n for ( i = m + 1, pFlag = m, nFlag = m; i *(slope + pFlag) pFlag = i; if ( *(

56、slope + i) 200 | (*(slope + pFlag) - *(slope + nFlag) -200) scale = 0; / 直道 tt = 1; else if ( (pFlag = m) & (nFlag = n) | (pFlag = n) & (nFlag = m) scale = 1; / 彎道 tt = (*(slope + pFlag) - *(slope + nFlag) / 50; if ( tt 0) tt = -tt; else scale = 2; / S道 tt = 1; for (j = start, k = 0; j 12000) k = 12

57、000; else if (k 40 & end 200) ePast = e; setServoMotorDst(e); if ( e 0) e = -e; if ( e - eold = 4) DstV = DstV + 2; else if ( e - eold 4) DstV+; else if ( e - eold = 30) DstV-; if ( DstV 47 - e / 30) DstV = 47 - e / 30; else if ( DstV 0) e = 300; setServoMotorDst(e); ePast = 300; DstV = 27; else if

58、(ePast TC1) if (!TCTL4_EDG2A) datalineCnt0 = TC2 - TC1; TCTL4_EDG2B = 0; TCTL4_EDG2A = 1; else if (TCTL4_EDG2A) datalineCnt1 = TC2 - TC1; interrupt void Enhanced_Capture_Timer_channel_1(void) / 行同步 / 處理前一行事件 TIE_C2I = 0; if (datalineCnt1 datalineCnt0) *(dataWidth0Pointer + lineCnt) = datalineCnt1 -

59、datalineCnt0; *(dataPosition0Pointer + lineCnt) = datalineCnt1 + datalineCnt0 - 1177; else if(datalineCnt1 = datalineCnt0) *(dataWidth0Pointer + lineCnt) = 0; else *(dataWidth0Pointer + lineCnt) = *(dataWidth0Pointer + lineCnt - 1); *(dataPosition0Pointer + lineCnt) = *(dataPosition0Pointer + lineCn

60、t - 1); / 處理行同步事件 lineCnt+; if (lineCnt = DATALENGTH) lineCnt = DATALENGTH - 1; / 處理下一行事件 datalineCnt0 = datalineCnt1 = 0; *(dataWidth0Pointer + lineCnt) = 0; *(dataPosition0Pointer + lineCnt) = 0; TCTL4_EDG2B = 1, TCTL4_EDG2A = 0; TIE_C2I = 1; TC1 = TC1;interrupt void Enhanced_Capture_Timer_channel

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論