|
經(jīng)過(guò)6個(gè)月艱苦的校內(nèi)選拔賽,我終于可以進(jìn)入校隊(duì),代表學(xué)校參加飛思卡爾華南賽。接下來(lái)就是兩個(gè)月的備賽階段。上一錄說(shuō)到,我被分到一個(gè)牛人的隊(duì)伍里面。面對(duì)完全不同等級(jí)的合作伙伴,首先我就必須得花時(shí)間熟悉人家隊(duì)伍之前的車模情況,了解整體硬件架構(gòu),以及他們的控制算法。智能車的控制系統(tǒng),其實(shí)是個(gè)典型的非線性不對(duì)稱控制系統(tǒng),代碼量已近萬(wàn)行。其實(shí)自己寫算法的難度并不高,難的是看別人的代碼,領(lǐng)悟別人的算法。由于函數(shù)編寫的習(xí)慣大家都各不一樣,有些人喜歡用大量的條件編譯,有些人喜歡用結(jié)構(gòu)體,有些人喜歡把變量寫得這一塊那一塊,嵌套地調(diào)用、跨文件地調(diào)用,有些人喜歡指針有些人不喜歡用,更多的是不會(huì)用。很多人寫程序的時(shí)候,不會(huì)刻意地去注釋,上萬(wàn)行的程序就這么讀下來(lái),我用了大概兩天的時(shí)間才弄明白整體的控制思想。 為了更加迅速地磨合和提高效率,我充當(dāng)著一個(gè)輔助的角色,幫著他優(yōu)化和調(diào)試他寫好的路況識(shí)別算法和控制算法。這位牛人的研發(fā)能力和研發(fā)技巧真的讓我大開(kāi)眼界,他為了加快研發(fā)的速度,通過(guò)將上百?gòu)埜鞣N路況的圖片經(jīng)串口上傳至電腦,然后使用MATLAB寫好的圖像識(shí)別算法,處理一張一張的圖片,調(diào)試好濾波、檢索范圍的參數(shù)等等,最后得到一個(gè)良好的效果以后,再將MATLAB語(yǔ)言轉(zhuǎn)化成C語(yǔ)言,寫入單片機(jī)里面。這樣的做法既不用一直蹲在車的旁邊低著頭看,也不用一邊推著車一邊檢查自己寫的算法究竟效果好不好,只需要手指輕擊鼠標(biāo)不斷地切換圖片文件,在電腦前就可以調(diào)試。在現(xiàn)在看來(lái),這種方法對(duì)與我而言已經(jīng)不算什么新鮮了,因?yàn)槲椰F(xiàn)在經(jīng)常用這種方法去做項(xiàng)目,但是如果沒(méi)有跟著他偷師,現(xiàn)在估計(jì)還是不知道如何使用這種技術(shù)和方法。
我學(xué)到的遠(yuǎn)遠(yuǎn)不止這些,還有調(diào)試的技巧,一開(kāi)始我按照以前我自己的調(diào)試方法幫他調(diào)試PID,可是卻被他說(shuō)我在瞎調(diào),沒(méi)辦法,他再一次教會(huì)了我怎么調(diào)試是最有效率的,叫我怎么看速度的變化曲線,調(diào)節(jié)參數(shù)的方向選定等等。寫到這里,大家都會(huì)覺(jué)得我一點(diǎn)貢獻(xiàn)都沒(méi)有吧!其實(shí)不然,我還是挺有貢獻(xiàn)的。
我們兩個(gè)當(dāng)時(shí)遇到的問(wèn)題是車體在減速入彎的嚴(yán)重甩尾現(xiàn)象,他之前也一直沒(méi)有解決這個(gè)問(wèn)題,無(wú)論怎么換輪胎加大摩擦,又或者使用后橋舵機(jī)實(shí)時(shí)調(diào)整車體重心,都無(wú)濟(jì)于事!于是,他在PID里面采用了積分限幅來(lái)削弱電機(jī)得到的能量,以放棄硬加速為代價(jià),保證了車體轉(zhuǎn)彎的準(zhǔn)確性,但是整體的速度控制就變得很軟,速度一直上不去。于是,我提出了一種方案,就是通過(guò)判斷當(dāng)前路況的斜率動(dòng)態(tài)地調(diào)整積分限幅的力度,讓車子在直道的時(shí)候控制變硬,轉(zhuǎn)彎的時(shí)候才變軟。另外,我們還發(fā)現(xiàn)車體的左右轉(zhuǎn)彎的控制不怎么對(duì)稱,有些時(shí)候轉(zhuǎn)左正常轉(zhuǎn)右就偏大了,對(duì)于這些問(wèn)題,我又提出了不對(duì)稱參數(shù)補(bǔ)償?shù)姆椒ā5牵z憾的是,我們一直都沒(méi)有解決入彎甩尾的問(wèn)題。直到上火車去廈門參賽的前一天,我發(fā)現(xiàn),當(dāng)我將車子的落地測(cè)速輪拆掉之后,讓車子快速地開(kāi)環(huán)跑,車子竟然沒(méi)有任何甩尾現(xiàn)象,我便提出改成差速輪測(cè)速的方法,但是他并沒(méi)有采納,而是我們通宵修改落地測(cè)速輪的機(jī)械結(jié)構(gòu),雖然有所改善,但是速度依然不樂(lè)觀,直到上火車前的2個(gè)小時(shí),我們只好收拾東西,無(wú)耐地坐上參賽的火車,聽(tīng)天由命吧!
在火車上,我就在想,其實(shí)牛人也有錯(cuò)的時(shí)候,牛人他也有做得不好的地方。不過(guò),也恨自己沒(méi)有早點(diǎn)發(fā)現(xiàn)這個(gè)重大的問(wèn)題。幸運(yùn)的是,我們還是拿了華南賽二等獎(jiǎng),但是我一點(diǎn)都不開(kāi)心:這8個(gè)月來(lái),我走得好辛苦,為什么別的隊(duì)可以拿一等獎(jiǎng)而我不能?不過(guò),總算松了一口氣,那天晚上,我睡得挺自在,雖然沒(méi)有大喜,卻8也沒(méi)有大悲。
8個(gè)月的嘔心瀝血,讓我真正地成長(zhǎng)了。它讓我明白,一項(xiàng)工程,并不是一道數(shù)學(xué)題、一套試卷那么簡(jiǎn)單,需要的是耐性、智慧、毅力以及勇氣。得到的,不是那個(gè)空洞成績(jī),而是人生的價(jià)值!
|
|