智能車總結(jié).doc_第1頁
智能車總結(jié).doc_第2頁
智能車總結(jié).doc_第3頁
智能車總結(jié).doc_第4頁
智能車總結(jié).doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

_ 智能車電磁組總結(jié)專 業(yè): 信息安全(保密方向) 班 級: 09091401 姓 名: 李龍 學(xué) 號: 2014302479 暑期我在智能車基地進行了自己的暑期生產(chǎn)實習(xí),和隊友在之前搭建的智能車基礎(chǔ)上進行完善和改進,參加了恩智浦杯智能汽車競賽。我想本次的實習(xí)報告從智能車原理和算法設(shè)計上進行敘述。電磁類智能車概述智能車顧名思義便是可以按照預(yù)先設(shè)定的模式在特定的環(huán)境中自由的運動而不受人為的干預(yù)的小車,除了可以自動循跡(沿著特定的軌道跑),他還可以實時顯示自己的各種運動狀態(tài),如:速度,里程,實時輪胎打角狀況等。要實現(xiàn)它的自動化,小車便由三部分組成的傳感器部分、控制部分和執(zhí)行部分。首先傳感器部分便是智能車的眼睛,它用來收集智能車所在環(huán)境中的有用信號,將收集到的模擬信號轉(zhuǎn)化為數(shù)字信號以此為依據(jù)進行相應(yīng)的控制,我們組所做的是電磁類的智能車,傳感器便是電感,通過測量電感所產(chǎn)生的電壓來判斷小車在賽道的位置,由于電壓大小與和導(dǎo)線的距離有關(guān),所以這種方式可以實現(xiàn)位置檢測。測量具體原理如下,有畢奧-薩伐爾定律可知,通有穩(wěn)恒電流I、長度為L的直導(dǎo)線周圍會產(chǎn)生磁場,距離導(dǎo)線距離為r處的磁感應(yīng)強度為:B=u0I4r(cos2-cos1)對于無線長直導(dǎo)線先來說,上式中2等于,1等于0,u0為真空磁導(dǎo)率,則:B=u0I2r位于磁場中的電感線圈的感應(yīng)電動勢近似為:E=dtdt=dBSdt=SdBdt=Su02r2dIdt=Su02r2K Ex=KSu02hx2+h2其中Ex為水平方向上的感應(yīng)電動勢分量(我們將電感臥式放置),x為距離導(dǎo)線的水平距離,h為高,故感應(yīng)電動勢的大小正比于電流的變化率K,反比于距離r2,由于K是定值,故可通過測量E獲得水平距離r值。接著是控制部分,這部分主要是接受傳感器部分測量的信號進行計算分析,根據(jù)預(yù)先編進程序的策略傳送出控制信號給各部分執(zhí)行單位,控制部分主要是單片機,我們所用的是K60,他通過ADC模塊接收傳感器模塊傳進來的電壓信號并進行模數(shù)轉(zhuǎn)化,并經(jīng)過一系列的數(shù)據(jù)處理得到電壓值,通過電壓的計算得出小車在賽道中的位置值,以此為依據(jù)進行相應(yīng)的控制,當(dāng)然還接受其他部分傳進的信心以便更精細(xì)的控制,如編碼器等。一是轉(zhuǎn)向控制,當(dāng)計算出的位置值比較大時,說明小車已經(jīng)偏離賽道中央或者正在彎道中,這時小車應(yīng)該向賽道中央拐,控制部分通過FTM定時模塊輸出PWM波到執(zhí)行部分中的舵機中,使舵機進行相應(yīng)方向的打角讓小車回到賽道中央,為了在不同的車速下確保小車能夠及時回到賽道中央,多級的轉(zhuǎn)角大小應(yīng)該對應(yīng)小車位置的大小,PWM波的占空比決定舵機(步進電機)轉(zhuǎn)動的角度,具體PWM波的計算在后面會給出。二是速度控制,對于競速型的智能車,速度是小車的關(guān)鍵,小車要能夠在保證不沖出賽道的情況下盡量提高速度,這就需要小車具有非常靈敏的加減速功能,除去小車輪胎摩擦力和傾角外等一些硬件方面的因素外,加減速功能主要是通過控制部分的相應(yīng)功能實現(xiàn),單片機可通過輸出PWM波到驅(qū)動模塊使電機轉(zhuǎn)動,當(dāng)然可以改變占空比來控制電機轉(zhuǎn)動的快慢,從而控制速度的大小,加減速控制的時機和速度的大小可以通過相應(yīng)的算法進行判斷。最后是執(zhí)行部分,一是舵機模塊,這部分不需要驅(qū)動電路,只需將單片機的PWM波輸入到舵機相應(yīng)的引腳就可以,舵機內(nèi)部有自己的基準(zhǔn)波形,他和輸入的PWM波的占空比等相比較從而決定正轉(zhuǎn)還是反轉(zhuǎn)以及轉(zhuǎn)動的角度。電機模塊有電機的驅(qū)動電路和電機本身,一般電機只要通電就可以轉(zhuǎn)動起來,但要控制其轉(zhuǎn)動的快慢就需要驅(qū)動電路實現(xiàn)電機轉(zhuǎn)速的控制,同時驅(qū)動電路還可以提供相應(yīng)的電壓。程序設(shè)計一、位置獲取方式由電感采集的感應(yīng)電動勢信號通過信號板輸入單片機的ADC模數(shù)轉(zhuǎn)換模塊的各個端口,單片機將其轉(zhuǎn)化為數(shù)字信號后,可將其作為此刻的電動勢值,每個傳感器每次采集100次數(shù)據(jù),然后計算這100次采集的數(shù)據(jù)中最大值和最小值之差,作為電壓值。由于各個電感固定的位置不同,所測量到的電壓范圍也會有所不同,這些數(shù)據(jù)便不能直接進行比較或計算,為了能夠很好地處理數(shù)據(jù),我們通過歸一化將各個電感的數(shù)據(jù)統(tǒng)一到同一個范圍之內(nèi),這樣便可以進行比較計算了,同時歸一化還可以消除因賽道電流變化產(chǎn)生的誤差,實時地反映賽道的真實狀況,因為歸一化采用的是相對值,不易受絕對數(shù)據(jù)變動而產(chǎn)生的影響。歸一化的公式為:最終值=當(dāng)前值-最小值最大值-最小值*設(shè)定范圍這部分的程序為:void signal_collecting(void) /傳感器信號采集函數(shù) uint8 i; for(i=0;i100;i+) /每個傳感器采集100次數(shù)據(jù) sensor0i = LPLD_ADC_Get(ADC1, AD10); sensor1i = LPLD_ADC_Get(ADC1, AD8); sensor2i = LPLD_ADC_Get(ADC1, AD9); sensor3i = LPLD_ADC_Get(ADC0, AD12);sensor4i = LPLD_ADC_Get(ADC0, AD13);sensor5i = LPLD_ADC_Get(ADC1, AD11); sensor6i = LPLD_ADC_Get(ADC1, AD12); sensor7i = LPLD_ADC_Get(ADC1, AD13); sensor8i = LPLD_ADC_Get(ADC0, AD14); sensor9i = LPLD_ADC_Get(ADC0, AD15); for(i=0;i10;i+) peaki = CalcMaxToMin(sensori); /傳感器信號采集峰值計算 unityi = 300*peaki/maxi; /歸一化公式 uint16 CalcMaxToMin(uint16 data100) /峰值計算函數(shù) uint16 Max = 0; uint16 Min = 0; uint16 i = 0; Max = data0; Min = data0; for(i=0;i Max) Max = datai; /選取數(shù)組中最大值 if(datai 0) dis = sqrt(distance); else dis = 0; return dis;float32 Dis_Get1(void) /提線函數(shù)1 float32 dis_error; if(unity3unity1) /由13兩個電感值的大小來判斷小車的方向 dis_error=Distance2; /偏左,返回正值 else dis_error=(-1)*Distance2; /偏右,返回負(fù)值 return dis_error;二、舵機控制PD算法得到了位置信息之后,我們便可以通過它來進行舵機的控制,我們對于舵機的控制采取位置式PD算法,即:舵機PWM=中間值-P*位置矢量值-D*與前一次位置矢量值之差P為比例系數(shù),它所起的作用便是以最快速度(一次性)減小與目標(biāo)PWM占空比之間的差距,只要有偏差它便起作用,當(dāng)偏差為0時它便失去作用,系統(tǒng)保持在平衡狀態(tài),但它很容易產(chǎn)生超調(diào),調(diào)節(jié)得太過了,這樣下一次又會往回調(diào),來來回回就容易產(chǎn)生振蕩,不易在短時間內(nèi)達到目標(biāo)值,此時就需要D來解決,D為微分系數(shù),與他相乘的便是位置量變化的微分,微分反映位置變化的速率,所以D控制具有一定得預(yù)見性,使得在產(chǎn)生偏差之前就消除了偏差,從而一定程度上避免了系統(tǒng)產(chǎn)生超調(diào),至于另外一個積分調(diào)節(jié),他是用來消除靜態(tài)誤差的,但由于他積累了每次調(diào)節(jié)所產(chǎn)生的誤差,使得系統(tǒng)變化比較大,不易使用。為了防止舵機打角超過一定范圍會因為輪胎卡住而損壞舵機,我們應(yīng)該限定舵機打角的范圍,另外還有一種異常情況是當(dāng)電感偏離賽道太遠時,所收集到的電磁信號變得非常小,以至于判斷方向的兩個電感采集的值大小相等,從而舵機不打角甚至向相反的方向打角,使得小車亂跑,這是小車丟線了,為了防止丟線,我們應(yīng)該在小車失去判別方向能力的前一時刻防止小車大范圍打角,即保持之前的打角狀況,我們來檢測小車是否丟線的方法便是判斷與前一次位置矢量之差是否大于一個閾值,或者直接判斷位置矢量是否超過一個范圍,若是則采取相應(yīng)的防丟線措施。這部分的程序如下:void rudder_control(void)If(Dis_Error60|Dis_Error 5370 ) rp.rudder_PWM = 5370;if(rp.rudder_PWM 4570 ) rp.rudder_PWM = 4570;LPLD_FTM_PWM_ChangeDuty(FTM3, /使用FTM3 FTM_Ch1, /使用Ch1通道 rp.rudder_PWM); /舵機占空比賦值三、電機控制算法1、目標(biāo)速度設(shè)定我們在這部分控制中進行速度的設(shè)定與控制,首先在速度的設(shè)定中我們以位置變化速率為依據(jù),選一個速度設(shè)定依賴值trend(初始值為0),根據(jù)trend的值的范圍選定不同的速度,當(dāng)位置變化率比較小時,說明小車此時跑的賽道彎度不是很大或者在當(dāng)前速度下小車跑的姿態(tài)很好,能跟得上軌跡的變化,此時小車可以嘗試再加一點速度,則令trend+,而當(dāng)位置變化率比較大并且超過了設(shè)置的閾值,說明小車此時遇到了大角度彎道或者小車自身速度太快了,已經(jīng)不能隨著軌跡的快速變化調(diào)整自己的位置,此時需要的是快速降速以便小車能夠及時調(diào)整自己的位置,這時我們令trend=/2,這種增加降除的策略能夠很好的適應(yīng)加速平滑減速迅速的需要。最后實時目標(biāo)速度的設(shè)定可以根據(jù)現(xiàn)有的trend值得范圍來確定,trend越大,設(shè)置的目標(biāo)速度就越高。接著我們還考慮到小車跑時的姿態(tài)問題,如果小車過彎時在彎道中間或靠近彎道外側(cè)時,同樣的速度下在同一時間內(nèi)肯定沒有切內(nèi)彎跑得遠,而且太靠近彎道外側(cè)速度不容易提高,因為按照之前位置確定的計算方式下,當(dāng)電感離中心線太遠時,所采集到的電壓值每變化12個單位,位置值則跳變1020,這樣按照我們目標(biāo)速度設(shè)定方法,目標(biāo)速度就不易提高,但若小車是切內(nèi)道跑的,可以避免這個問題并且明顯減少跑完一圈所用的時間。要想切內(nèi)道跑我們所采取的策略是在設(shè)置的目標(biāo)速度上減去與小車位置有關(guān)的變量,小車離中心導(dǎo)線越遠,在原來目標(biāo)速度的基礎(chǔ)上減的就越多,小車就能及時跟得上軌跡變化并且還能靠近彎的內(nèi)道,當(dāng)小車在彎內(nèi)跑平穩(wěn)了還可以加速。目標(biāo)速度設(shè)定的程序如下:void targetspeed(void) /目標(biāo)速度設(shè)置函數(shù)standderror = ABS(error9)-ABS(error7); /求位置變化率 if(standderror=0.8 & trend1) trend /= 2; if(trend55)mp.targetspeed =1800 - ABS(rp.rudder_PWM-RUDDER_MID)/40; else if(trend45)mp.targetspeed =1700 - ABS(rp.rudder_PWM-RUDDER_MID)/50; else if(trend30)mp.targetspeed =1600 - ABS(rp.rudder_PWM-RUDDER_MID)/60; else if(trend20)mp.targetspeed =1500 - ABS(rp.rudder_PWM-RUDDER_MID)/70; else if(trend10)mp.targetspeed =1400 - ABS(rp.rudder_PWM-RUDDER_MID)/80;else mp.targetspeed =1400 - ABS(rp.rudder_PWM-RUDDER_MID)/90;if(mp.targetspeed 1800) mp.targetspeed = 1800;if(mp.targetspeed 1300) mp.targetspeed = 1300;2、速度控制算法(增量式PD)目標(biāo)速度設(shè)置好后,還需要速度控制策略保證小車按照目標(biāo)速度跑,由于車模自身有重量(慣性大)再加上摩擦力的影響,讓小車嚴(yán)格按照目標(biāo)速度跑肯定是做不到的,我們只能盡量控制讓小車接近目標(biāo)速度跑,將偏差限定的可接受范圍內(nèi),速度控制算法還是采用PID控制,和之前舵機控制不一樣,要想對速度進行相對及時且精準(zhǔn)的控制,我們還需要測量小車的實時速度,與目標(biāo)速度進行比較利用差值進行控制,形成閉環(huán)反饋控制。這次我們采取增量式PD算法,增量式PD是由兩個位置式PD相減的結(jié)果,它的結(jié)果只與上一次的結(jié)果有關(guān),當(dāng)小車速度有非正常跳變時,采用增量式可以降低這突變產(chǎn)生的影響。增量式PID的表達式為:ut=ut-ut-1=Kpet+Kiet+Kdet-e(t-1)由于小車要想跑得快且穩(wěn)就需要有非常及時的加減速能力,要能在該減速的時候迅速降低速度,而且還不能減得太猛,使得小車有較大的停頓,減下來后要及時將速度加上去,因此應(yīng)該有很好的加減速策略,在速度控制PD算法中已經(jīng)擁有加減速的功能,但當(dāng)反饋速度和目標(biāo)速度相差太多時,減速不見得那么得心應(yīng)手,總覺得減速的力度不夠大,不能及時將速度減下來,為了克服這一弊端,我們在原來PD控制算法的基礎(chǔ)上有添加了額外的控制算法,即bang-bang控制算法,我對bang-bang算法的理解是它是一個開關(guān)控制,每次走的都是兩個極端,在速度偏差比較大時,我們輸出更大的控制力度以求能夠在短時間內(nèi)達到目標(biāo)速度,這種做法我的理解是雖然可能錯失了最有效的控制時機,但通過大幅度的控制力度彌補了錯過控制時機的缺陷,但是由于bang-bang算法控制粗糙,不容易實現(xiàn)較為精準(zhǔn)的控制,在加上我們使用的B車模本身慣性比較大,若采用bang-bang算法雖然可以及時讓小車減下速來,但是很容易讓小車有停頓,最后我們果斷放棄bang-bang控制算法,仍采用抓住控制時機的控制策略,增量式PD算法由于有微分控制,所以能夠較為準(zhǔn)確地抓住控制時機,缺點是控制力度不強,我們就在原來的表達式中加了一個權(quán)值,使其控制力度能夠有效增加,最后我們有對這個權(quán)值進行變量化,讓它和速度變化速率緊密相關(guān),這樣又進一步降低了小車停頓的可能性。小車速度控制程序如下:void PID(void)if(mp.spdfeedback5) mp.motorPWMlast = 700; mp.speed_error = mp.targetspeed - mp.spdfeedback; /當(dāng)前的速度差值=目標(biāo)速度-當(dāng)/前速度返回值 mp.motorPWM=mp.motorPWMlast+motor_P * (mp.speed_error - mp.speed_eerror) + motor_I*mp.speed_error+motor_D*(mp.speed_error-2*mp.speed_eerror+ mp.speed_eeerror); if(mp.speed_error0 & mp.speed_eerror0 & trend1 =51) trend1+; else if(mp.speed_error-mp.speed_eerror)=50)slow = 0; else if(trend1=40)slow = 0.11; else if(trend1=30)slow = 0.13; else if(trend1=20)slow = 0.15; else if(trend1=10)slow = 0.17; else slow = 0.2; if(mp.motorPWM 10000) mp.motorPWM = 10000; if(mp.motorPWM 320 & unity2pre_unity2)nn = 1;slope=1; If(nn = 1 & unity2320 & unity2320 & unity2pre_unity2)nn = 3; if(nn = 3 & unity2320 & unity220 | Dis_Error30&unity030&unity4100&unity280&unity180&unity3170)&(unity1-unity3)-40) cj = 10; bj = 0 ; /初次檢測到環(huán)島等待確認(rèn)if(cj=10&(flag=1|bn=1)&(unity2220&(unity1140|unity3140)|(unity6150&unity8150&unity7200&ABS(unity6-unity8)40) bj

溫馨提示

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

評論

0/150

提交評論