做個(gè)全省一等獎(jiǎng)的小車,其實(shí)不難
賽題分析
通過對(duì)賽題的分析研究,我們認(rèn)為,要完成題目需要滿足以下幾點(diǎn)要求:
1)實(shí)現(xiàn)小車的自動(dòng)尋跡功能。題目要求小車需要沿著標(biāo)記線自動(dòng)行駛,到達(dá)目標(biāo)位置時(shí),需要發(fā)出聲音提示,且小車整體投影不得脫離標(biāo)記線。
2)10s—20s時(shí)間內(nèi)任意設(shè)定。同時(shí)行駛過程中需要以勻速狀態(tài)行駛,并且設(shè)定的時(shí)間與實(shí)際的行駛時(shí)間誤差不能超過1s,總共行駛時(shí)間不得超過30s。
3)要求指定角度實(shí)現(xiàn)小車勻速爬坡。同時(shí)規(guī)定行駛過程中不能停頓、打滑、碾壓標(biāo)記線。
4)利用TI的MSP430/MSP432 平臺(tái),設(shè)計(jì)制作一個(gè)四輪電動(dòng)小車。要求小車能沿著指定路線在坡道上自動(dòng)循跡騎線行駛。
硬件部分
1)坡道木板的搭建。
在構(gòu)建坡道部分賽題中有相應(yīng)的要求:坡道用長、寬約 1m 的細(xì)木工板制作,允許板上有木質(zhì)本色及自然木紋。
木工板表面鋪設(shè)畫有1cm×1cm黑白間隔的紙條(以下簡稱為標(biāo)記線)作為路線指示;標(biāo)記線起始段為直線,平行于木板兩邊;
標(biāo)記線在坡頂轉(zhuǎn)向 90°,轉(zhuǎn)彎半徑 20cm;標(biāo)記線平行坡頂距離≥30cm,距坡頂距離≤20cm;標(biāo)記線總長度為1m。
停車標(biāo)記為寬1cm長5cm的黑色線條,垂直于坡頂標(biāo)記線。行駛路面不得鋪設(shè)除標(biāo)記線外的任何材料。小車全程在木工板上行駛。
依據(jù)該要求,我們搭建了符合題目要求的坡道木板,但因?yàn)椴馁|(zhì)的問題,之后小車的行駛并不是很順利,總是會(huì)產(chǎn)生一些錯(cuò)誤的識(shí)別,可能也是由于材質(zhì)本身的原因,所以后面我們又采用了另一種材質(zhì)木板,最后以此搭建的坡道能夠結(jié)合小車很好的完成相應(yīng)的題目要求。
2)小車的搭建
賽題對(duì)小車的要求是:
小車必須獨(dú)立運(yùn)行,車外不能使用任何設(shè)備(包括電源)。
小車(含電池)重量小于1.5kg,外形尺寸在地面投影不大于25cm×25cm。
總的來說,做出小車的過程可謂是一波三折,實(shí)際上來講,我們都不知道總共做了幾版小車了,做出來的小車總會(huì)在某個(gè)地方遇到難以跨越的阻礙,剛開始時(shí),采用的是結(jié)合MSP432結(jié)合灰度模塊的方案,然后輪子采用的是固定前面兩輪,后輪采用差速的方法實(shí)現(xiàn)轉(zhuǎn)90度彎;
首先采用兩個(gè)灰度模塊并行在小車前方,用于保持小車不走出黑白線組成的道路,之后采用另一個(gè)灰度模塊來識(shí)別黑塊,該灰度模塊用于實(shí)現(xiàn)轉(zhuǎn)彎控制,實(shí)際上的效果是,在直線方向上,還是能夠?qū)崿F(xiàn)較好的效果,當(dāng)現(xiàn)在轉(zhuǎn)彎的時(shí)候發(fā)現(xiàn),由于輪子本身稍大且本身車體寬的原因,小車在轉(zhuǎn)彎時(shí),必定壓線。
在試過多次后,發(fā)現(xiàn)該結(jié)構(gòu)不行,于是就將前面兩輪更改成了用電機(jī)驅(qū)動(dòng)的方式,只是在轉(zhuǎn)彎時(shí)給一個(gè)差速,實(shí)現(xiàn)轉(zhuǎn)彎,前面差速與后面差速是不一樣的,前面的差速能夠?qū)崿F(xiàn)轉(zhuǎn)彎不壓線的效果,再之后我們又發(fā)現(xiàn)了利用舵機(jī)轉(zhuǎn)向來控制方向的辦法。
事實(shí)上,這樣帶來的效果更好,但同時(shí)我們?cè)跍y試的過程中又發(fā)現(xiàn)一個(gè)存在缺陷的地方,那就是灰度模塊只有識(shí)別到黑塊才會(huì)進(jìn)行轉(zhuǎn)彎,那么這樣就會(huì)遇到一個(gè)問題,就是起始的位置不同,會(huì)使得小車到轉(zhuǎn)彎處的位置不一樣,那么固定的用于識(shí)別轉(zhuǎn)彎的灰度模塊實(shí)際上就會(huì)在有些時(shí)候在需要轉(zhuǎn)彎的地方識(shí)別到的卻是白塊。
當(dāng)如此之后,小車實(shí)際上就會(huì)直接直行出黑白線通道,而不會(huì)實(shí)現(xiàn)轉(zhuǎn)彎功能,我們想到的是給小車加模塊的辦法,實(shí)際上也如此做了,但帶來的效果卻不盡人意,在增加代碼的復(fù)雜度的同時(shí),卻并沒有解決相應(yīng)的問題。
因?yàn)榧由闲碌幕叶饶K之后,雖然最終會(huì)識(shí)別到黑塊,但總歸是在另一個(gè)位置識(shí)別到的,在轉(zhuǎn)向時(shí)會(huì)出現(xiàn)壓線的情況,所以我們舍棄了MSP432加灰度模塊的方案,而使用MSP432加OpenMV的全新方案。
在最后,我們使用MSP432加OpenMV,以及舵機(jī)前輪加上電機(jī)后輪來確定了小車的最終成品結(jié)構(gòu),實(shí)際結(jié)果表明這樣的方案是可行且有效的。
軟件部分
1)系統(tǒng)軟件平臺(tái)選擇
軟件程序采用keil5平臺(tái)開發(fā)。實(shí)際上對(duì)于TI的板子來說,用CCS來編譯可能會(huì)更好,但由于當(dāng)時(shí)并沒有接觸CCS這個(gè)軟件,也就不太會(huì)用,所以最終采用的是keil5平臺(tái),但若是采用MSP430應(yīng)該是不能使用keil5的,當(dāng)時(shí)找相應(yīng)的芯片包是并沒有找到的,也就是說可能keil5是不支持開發(fā)MSP430的板子的。
2)主要模塊軟件設(shè)計(jì)思路
1、菜單設(shè)計(jì)思路
在OLED上顯示菜單,菜單主要功能有設(shè)置模式:自動(dòng)尋跡以及規(guī)定時(shí)間內(nèi)尋跡;以及設(shè)置PID參數(shù)和設(shè)定電機(jī)速度等功能,主要是為了能在調(diào)控小車時(shí),能夠快速的找到合適的參數(shù)進(jìn)行調(diào)節(jié)。以及測試時(shí)方便選擇相應(yīng)模式進(jìn)行測試。
2、電機(jī)和舵機(jī)驅(qū)動(dòng)設(shè)計(jì)思路
采用三路PWM輸出,一路用于控制舵機(jī)轉(zhuǎn)向,另外兩路控制電機(jī)驅(qū)動(dòng),由于電機(jī)不同,所以用到了兩個(gè)定時(shí)器輸出PWM,一個(gè)50HZ,另一個(gè)給10KHZ。
3、數(shù)據(jù)采集模塊設(shè)計(jì)思路
接收OpenMV傳來的識(shí)別到的黑塊位置,MSP432對(duì)數(shù)據(jù)作相應(yīng)處理,控制電機(jī)和舵機(jī)做相應(yīng)的動(dòng)作,以實(shí)現(xiàn)轉(zhuǎn)彎等相應(yīng)功能。
4、控制模塊
控制部分,為了保持勻速行駛,采用PID閉環(huán)控制電機(jī)到達(dá)規(guī)定的期望值,同時(shí)考慮到上坡時(shí)不僅有摩擦力,還有車體本身重力的斜向下分力,在PID控制時(shí),I的系數(shù)需要較為精準(zhǔn),過大過小都會(huì)使小車失控,同時(shí),為了防止小車在行駛過程中會(huì)誤識(shí)別其它黑點(diǎn),所以,加上了最小值濾波,以防止此類情況出現(xiàn),實(shí)際效果良好。
實(shí)物展示
總結(jié)
對(duì)我們來說,軟件部分難度相對(duì)不大,比較吃力的是小車結(jié)構(gòu)上的搭建,為了盡可能的爬陡坡,我們把小車搭了拆,拆了搭,做了大車,小車,寬車,窄車,重車,輕車,光結(jié)構(gòu)就換了十幾種。
我們發(fā)現(xiàn)電機(jī)太小的話,30度的坡上不去,而車體太重上坡也會(huì)比較困難,所以我們選用大電機(jī)并且減輕車的負(fù)重。還有就是車底重心越低,爬坡能力越好。
為增大摩擦力,我們選用了面積大的軟質(zhì)輪胎。電池和驅(qū)動(dòng)也要合理選擇,在滿足要求的情況下盡量使用質(zhì)量輕的驅(qū)動(dòng)模塊和電池。轉(zhuǎn)彎部分的速度也要把握好,當(dāng)時(shí)我們使用開環(huán)在跑道上實(shí)現(xiàn)了定點(diǎn)減速拐彎,但終歸是個(gè)小聰明,不是真正的循跡,經(jīng)過不斷的嘗試還是換成了閉環(huán)控制。最終得以圓滿的完成了題目。
-END-
最 后
關(guān)注下方公眾號(hào),后臺(tái)回復(fù)【電賽】,送你一份電賽學(xué)習(xí)資源。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請(qǐng)聯(lián)系我們,謝謝!