王 建 ,張曉煒 ,楊 錦 ,昝 鑫 ,劉小勇
(1.中國(guó)科學(xué)技術(shù)大學(xué) 自動(dòng)化系,安徽 合肥230027;2.西安交通大學(xué) 人工智能與機(jī)器人研究所,陜西 西安710049;3.西安交通大學(xué) 金禾經(jīng)濟(jì)研究中心,陜西 西安710049;4.西安交通大學(xué) 電子與信息工程學(xué)院,陜西 西安710049)
以飛思卡爾智能車大賽為背景,制作了一個(gè)能巡線快速行駛的小車。
智能車的運(yùn)動(dòng)控制是通過(guò)控制驅(qū)動(dòng)馬達(dá)和伺服舵機(jī)實(shí)現(xiàn)的。在理想情況下,可以認(rèn)為4個(gè)輪胎繞著同一個(gè)圓心做純滾動(dòng),其離散運(yùn)動(dòng)模型公式為:
其中V是線速度,W為角速度,x(t)、y(t)為小車的坐標(biāo),angle(t)為智能車的方向角(以小車前進(jìn)方向?yàn)槠鹗季€,逆時(shí)針為正),Δt為采樣周期。模型如圖1所示。
由于模型車的運(yùn)動(dòng)速度較高,在行駛過(guò)程中輪胎與賽道會(huì)發(fā)生一定側(cè)滑,因此還需要引進(jìn)側(cè)滑修正。
方向控制是控制策略的難點(diǎn)。傳統(tǒng)的PID算法[1,2]不需要對(duì)控制對(duì)象做細(xì)致分析,只需根據(jù)控制效果對(duì)參數(shù)進(jìn)行調(diào)整[3]。但由于控制器的輸入量均對(duì)輸出量產(chǎn)生影響,且高度耦合,很難根據(jù)控制效果準(zhǔn)確地對(duì)參數(shù)進(jìn)行修正,因此參數(shù)的整定工作十分繁重。此外,當(dāng)車的狀態(tài)不同時(shí)(如低速和高速時(shí)),最佳參數(shù)也有很大不同,這給進(jìn)一步調(diào)試帶來(lái)了困難。
本文采用“最優(yōu)曲率法”。控制思想是:模型車在一個(gè)控制周期內(nèi)的運(yùn)動(dòng)軌跡可以近似為一段圓弧,整個(gè)運(yùn)動(dòng)軌跡可以看做由小段圓弧連接成的曲線。在假設(shè)線速度恒定的前提下,給定路徑上的一個(gè)點(diǎn)就能確定出智能車到達(dá)該點(diǎn)所應(yīng)具有的舵機(jī)角度[4]。在每個(gè)控制周期內(nèi)選擇路徑上的一點(diǎn)(或若干點(diǎn)),根據(jù)預(yù)先建立的圓弧運(yùn)動(dòng)模型計(jì)算出模型車在接下來(lái)的一個(gè)(或若干個(gè))運(yùn)動(dòng)周期內(nèi)要到達(dá)選定點(diǎn)所需的理想狀態(tài),此時(shí)該控制周期的輸出量就是在未來(lái)幾個(gè)控制周期內(nèi)使模型車的實(shí)際狀態(tài)盡可能逼近理想狀態(tài)的控制量。
以車的后橋中點(diǎn)為原點(diǎn)建立坐標(biāo)系,車的中軸為y軸,其正向?yàn)檐嚨那胺?。設(shè)(c_x,c_y)為路徑上的點(diǎn)在該坐標(biāo)系中的坐標(biāo)。則控制量的計(jì)算公式為[5]:
其中r_b為后輪的轉(zhuǎn)彎半徑,L為車的前橋與后橋的距離,wheel_angle為車前輪的理想角度,rudder為舵機(jī)的PWM輸出值,m為將wheel_angle轉(zhuǎn)換為rudder的系數(shù)(由實(shí)驗(yàn)測(cè)得)。
這種方法在車速較低時(shí)可以取得很好的效果,當(dāng)車速較高時(shí),有很多因素對(duì)控制效果的影響會(huì)顯著增大,需要作出適當(dāng)?shù)难a(bǔ)償。其中主要因素是控制量的實(shí)際輸出時(shí)刻與理想輸出時(shí)刻的延時(shí),這個(gè)延時(shí)是由圖像處理和控制量的計(jì)算都需要一定時(shí)間造成的。對(duì)此,本文采取的方法是根據(jù)車的當(dāng)前狀態(tài)估算出控制量的輸出時(shí)刻的路徑信息,用這個(gè)路徑信息計(jì)算控制量。
設(shè)延時(shí)期間車的角度變化量為Δw,則橫縱坐標(biāo)變化量分別為 Δx、Δy,則當(dāng)前時(shí)刻的前瞻點(diǎn)(c_x,c_y)在經(jīng)過(guò)延時(shí) Δt后的坐標(biāo)為(p_x,p_y),用 p_x、p_y 計(jì)算控制量。設(shè)車速為v,當(dāng)前車前輪轉(zhuǎn)角為β,車長(zhǎng)為L(zhǎng),則計(jì)算公式為:
證明公式(7)~公式(11):
R=L/tanβ,得公式(7);
在直角三角形 ABC 中,∠ABC=(π-Δw)/2,Δx=AB×cos∠ABC=AB×sin(Δw/2),Δy=AB×sin∠ABC=AB×cos(Δw/2),而 AB 即為 v×Δt,即得公式(8)和公式(9)。
p_y=GF=AE×sin(Δw)+GE×cos(Δw);而 AE=c_x-Δx,GE=c_y-Δy,由此得公式(10)和公式(11),如圖 2 所示。
在對(duì)下弦混凝土進(jìn)行澆筑施工前,需對(duì)梁體實(shí)施檢查與調(diào)整,再進(jìn)行高強(qiáng)螺栓的安裝。對(duì)于高強(qiáng)度螺栓,其施工主要分為兩部分,即為初擰與終擰,要求在一日內(nèi)完成。待初擰完成后,采用敲擊法進(jìn)行檢查,確認(rèn)合格后,使用白色油漆做好標(biāo)記,以便對(duì)終擰時(shí)是否出現(xiàn)轉(zhuǎn)動(dòng)現(xiàn)象進(jìn)行檢查。終擰主要使用扭矩法,開始前先用扳手做好標(biāo)定,要求誤差不能超過(guò)扭矩±5%。各班組在操作之前和之后都應(yīng)對(duì)扳手做好校正,將校正的結(jié)果準(zhǔn)確填寫到記錄表格當(dāng)中,然后由專門的校正人員進(jìn)行簽字確認(rèn)。操作完成后的校正過(guò)程中,若發(fā)現(xiàn)實(shí)際誤差較大,則需要對(duì)扳手做特別檢查,根據(jù)檢查結(jié)果及早處理。待終擰完成后,使用紅色的油漆作出相關(guān)標(biāo)記。
另一個(gè)重要因素是側(cè)滑。智能車在行駛過(guò)程中存在側(cè)滑,可以通過(guò)側(cè)滑角作補(bǔ)償。設(shè)車輪的角度為θ,加入側(cè)滑后的等效車輪角度為θ′,本文假設(shè)二者符合如下關(guān)系:
在計(jì)算出車輪應(yīng)當(dāng)具有的實(shí)際角度θ′后,用上式求出θ,進(jìn)而求出PWM的值。這樣就可以補(bǔ)償側(cè)滑的影響。
還有一個(gè)重要因素是,當(dāng)車速較高時(shí),舵機(jī)的響應(yīng)速度相對(duì)較慢。要克服這個(gè)問(wèn)題,應(yīng)使舵機(jī)提前做出反應(yīng)。因此需要在控制器的輸出量中引入路徑的趨勢(shì)。本文用前瞻點(diǎn)處的斜率k表示路徑的趨勢(shì),在原控制量θ的基礎(chǔ)上增加一個(gè)與路徑趨勢(shì)相關(guān)的分量 θ″=para×v×k,其中para通過(guò)實(shí)驗(yàn)結(jié)果自動(dòng)調(diào)整,如果需要,可以將para設(shè)為和其他變量相關(guān)的函數(shù)。
經(jīng)過(guò)上述改進(jìn)之后,最優(yōu)曲率法在車速較高的時(shí)候依然能夠取得很好的控制效果。此部分程序流程圖如圖3所示。
圖3 舵機(jī)控制流程圖
該算法的優(yōu)點(diǎn)是參變量較少,且相互間的耦合很小,對(duì)控制效果的影響較為獨(dú)立,可以根據(jù)實(shí)驗(yàn)結(jié)果快速確定調(diào)整量。只要對(duì)參數(shù)進(jìn)行適當(dāng)調(diào)整,就能取得較好的控制效果。
在速度決策方面,首先嘗試了基于有效前瞻的速度控制[6],即v=基準(zhǔn)值+有效前瞻量×系數(shù)。這個(gè)策略的好處是簡(jiǎn)單有效。但事實(shí)上智能車通過(guò)路線的最佳速度和前瞻量并不呈簡(jiǎn)單的線性關(guān)系。如果處于彎道中,尤其是“十”字彎中時(shí),由于車的阻力增大,車速也大大下降,同時(shí)由于車體運(yùn)行較穩(wěn)定,車輪不會(huì)發(fā)生大幅度轉(zhuǎn)向,側(cè)滑的風(fēng)險(xiǎn)很小,這時(shí)可以提速;當(dāng)出彎時(shí),如果檢測(cè)或預(yù)測(cè)到前方較平緩,可以放心加速。由于局部快不一定整體快,因此還要做好銜接,使得整個(gè)跑的過(guò)程中各速度間過(guò)渡圓滑?;谶@些想法,本文在前面的速度決策上做了改進(jìn),在保證安全性的前提下提高了整體速度。
為了便于分析控制效果,本文搭建了一個(gè)Matlab仿真環(huán)境。在這個(gè)仿真環(huán)境中,車模的參數(shù)和動(dòng)態(tài)響應(yīng)特性都是參照實(shí)驗(yàn)結(jié)果設(shè)計(jì)的,并引入了側(cè)滑、延時(shí)、舵角死區(qū)等很多干擾因素,可以在很大程度上反映算法的真實(shí)情況。仿真界面如圖4所示。
在實(shí)際的調(diào)試過(guò)程中,本文首先在仿真環(huán)境下設(shè)計(jì)算法,并分析模型車通過(guò)各種跑道時(shí)所需要的理想的舵機(jī)角度,測(cè)試通過(guò)后將算法移植到模型車上。如果實(shí)際控制效果與仿真結(jié)果差別較大,則將控制算法的執(zhí)行情況與理想情況下的期望值進(jìn)行比較,針對(duì)差別有目的地作出改進(jìn)。這在很大程度上提高了調(diào)試效率。
優(yōu)化問(wèn)題中有兩個(gè)約束條件:
(1)車不出邊界。
(2)小車行駛路徑最短。主要是彎道切彎行駛,大小S彎走最優(yōu)路徑。
對(duì)于一般問(wèn)題,全局最優(yōu)解是最好的結(jié)果,但是智能小車行駛的跑道是隨機(jī)的,并且小車傳感器獲得的道路信息有限,要得到全局最優(yōu)解很困難,所以根據(jù)貪婪算法思想,在局部的每一點(diǎn)獲得最優(yōu)解來(lái)逼近全局最優(yōu)解。貪婪路徑規(guī)劃就是給出一些小車行駛路徑點(diǎn),保證小車行駛時(shí)最大程度地滿足以上兩個(gè)優(yōu)化條件。
比賽用的路徑只有兩種:直道和圓弧道。關(guān)鍵在圓弧道,分單圓弧道和多圓弧道,單圓弧道指銜接兩個(gè)直道的一個(gè)彎道,多圓弧道指S形彎道。
首先,分析單圓弧。單圓弧示意圖如圖5所示,已知路徑寬為60 cm,T點(diǎn)為小車傳感器識(shí)別出的最遠(yuǎn)前瞻路徑點(diǎn)。
如果車向著T點(diǎn)行駛?cè)ィ囉锌赡艹雠艿?。所以需要?jì)算出最遠(yuǎn)前瞻點(diǎn)和車頭連線(OT)與路徑圓弧線(弧 OT)之間的最遠(yuǎn)距離 D,如果D超出 20 cm(車模寬20 cm,當(dāng)車模恰好壓跑道邊時(shí),車模中心與路徑線的距離是 20 cm),就不滿足約束條件(1)。
當(dāng)D超出20 cm時(shí),可以將前瞻點(diǎn)T后移,計(jì)算出使D=20 cm的T′點(diǎn),如圖5所示。在給出的直線上根據(jù)小車的速度可以選取一點(diǎn)作為貪婪規(guī)劃的解路徑點(diǎn)。速度快時(shí),選點(diǎn)前移,反之后移。
其次,對(duì)于多圓弧S形道,需要找到兩個(gè)圓弧的連接點(diǎn),稱為轉(zhuǎn)折點(diǎn)。圖6中T點(diǎn)為轉(zhuǎn)折點(diǎn)。S形道路與一般彎道路徑不同,不能用單圓弧的方法求出最優(yōu)路徑點(diǎn),因?yàn)樽钸h(yuǎn)前瞻點(diǎn)可能跨兩個(gè)圓弧,求取距離D困難,最重要的是用單圓弧的方法利用最遠(yuǎn)前瞻點(diǎn)求出的解不是最優(yōu)的解。可以發(fā)現(xiàn)在圓弧轉(zhuǎn)折點(diǎn)前面的圓?。ɑT)是一個(gè)單圓弧,用這段單圓弧來(lái)求解才是合理的。利用最小二乘法可以對(duì)每一個(gè)點(diǎn)求出一個(gè)斜率,其中轉(zhuǎn)折點(diǎn)的特點(diǎn)是轉(zhuǎn)折點(diǎn)是斜率曲線的極值點(diǎn)??梢园l(fā)現(xiàn),對(duì)于 90°小S彎,D等于14.65 cm,小車直線通過(guò),而120°中等 S彎,D等于 25 cm。
需要注意,由于傳感器的視野和圖像處理的限制,有時(shí)最遠(yuǎn)前瞻點(diǎn)只能取到N點(diǎn),如圖5所示。這時(shí)可以使用廣角鏡頭(實(shí)驗(yàn)中選取焦距f=2.8 mm)擴(kuò)大視野,提高圖像處理算法的精度來(lái)使前瞻點(diǎn)盡量靠前,到達(dá)T附近。
本文根據(jù)轉(zhuǎn)向模型,提出了“最優(yōu)曲率”算法及“貪婪路徑規(guī)劃”算法。實(shí)驗(yàn)表明,這兩種算法結(jié)合起來(lái)能使小車更安全、快速地行駛,可作為除PID算法和模糊控制算法以外的第三種選擇。
[1]卓晴,黃開勝,邵貝貝,等.學(xué)做智能車[M].北京:北京航空航天大學(xué)出版社,2007.
[2]馬艷,徐淑華,周建春.基于攝像頭尋跡的智能電動(dòng)車的設(shè)計(jì)[J].機(jī)械與電子,2009,27(2):21-24.
[3]艾寧,瞿少成,劉冬,等.基于 CCD攝像頭的智能車路徑識(shí)別及跟蹤研究[J].電子測(cè)量技術(shù),2009,32(8):77-80.
[4]尹念東,余群.基于橫向預(yù)瞄偏差的駕駛員前視軌跡控制模型[J].汽車工程,2002,24(4):287-289.
[5]魏玉虎,石琛宇,姜建釗,等.基于視覺(jué)的智能車轉(zhuǎn)向控制策略[J].電子技術(shù)應(yīng)用,2009,35(1):130-134.
[6]蔡慶楠,蔡興旺,潘錦洲.上海大學(xué)S.U.L.挑戰(zhàn)者隊(duì)技術(shù)報(bào)告[R],2009.