洪櫻+馮潔瑜+盧學(xué)榮+李忻儀
【摘要】 本文針對智能學(xué)步機(jī)的基本載體——避障小車功能的不足, 對智能學(xué)步機(jī)進(jìn)行算法設(shè)計及其優(yōu)化, 以完善學(xué)步機(jī)功能及實現(xiàn)功能的多樣化。
【關(guān)鍵詞】 智能學(xué)步機(jī) 算法設(shè)計 優(yōu)化
引言:作為移動機(jī)器人的一種,自動避障小車發(fā)展迅猛,其內(nèi)容涵蓋計算機(jī),自動控制,電子,機(jī)械等學(xué)術(shù)領(lǐng)域,且廣泛應(yīng)用于冶金,交通,國防等生活和軍事領(lǐng)域,具有良好的民用和軍用的發(fā)展前景[3]。 根據(jù)避障小車迅猛的發(fā)展?fàn)顩r,我們也將它應(yīng)用于民用領(lǐng)域,將其作為我們所要開發(fā)的智能學(xué)步機(jī)的載體。然而,避障小車所擁有的功能是很有限的,僅僅是遇到障礙物就進(jìn)行躲開。針對這種情況,我們對避障小車的功能進(jìn)行優(yōu)化,及進(jìn)行新的算法設(shè)計,在我們本身的算法的基礎(chǔ)上,我們還可以進(jìn)行算法的優(yōu)化,以完善學(xué)步機(jī)的功能和實現(xiàn)功能的多樣性。
一、智能學(xué)步機(jī)的基本算法設(shè)計
1、直線算法。對于學(xué)步機(jī)而言,要使其走直線,不需要學(xué)步機(jī)的避障版塊,即超聲波測距版塊,只需要保持其方向不變,一直向前走即可,此時保持兩邊的車輪的速度保持一定不改變。2、轉(zhuǎn)彎算法。對于學(xué)步機(jī)而言,要使其轉(zhuǎn)彎,不需要學(xué)步機(jī)的避障版塊, 即超聲波測距版塊,只需要使學(xué)步機(jī)兩邊輪子的車速不同即可。例如,向右轉(zhuǎn)時使學(xué)步機(jī)左邊的輪子速度大于右邊輪子速度,否則左轉(zhuǎn)。這里利用了雙輪差速驅(qū)動原理[2]。3、走圓算法。事實上,走圓算法是轉(zhuǎn)彎算法的升級版,當(dāng)保持兩邊輪子的速度差相同且速度不改變時,即可使其不停地轉(zhuǎn)彎,這個不停轉(zhuǎn)彎的過程將會構(gòu)成多個圓。這仍然是使用了雙圓差速驅(qū)動原理,利用兩個獨立的輪子實現(xiàn)運動, 這個方法雖然簡單,但很容易控制。它甚至可以實現(xiàn)半徑為 0 的原地轉(zhuǎn)動。然而在實現(xiàn)走圓算法時,必須要使速度較快,否則,學(xué)步機(jī)沒轉(zhuǎn)彎一次將會停頓一次,造成不連續(xù)的結(jié)果,也就不能成為真正意義上的圓。4、避障算法。對學(xué)步機(jī)而言,要實現(xiàn)避障算法,我們需要超聲波測距模塊。我們的智能學(xué)步機(jī)使用了四個超聲波模塊,通過超聲波傳感器網(wǎng)前后左右四個方向?qū)⒊暡ㄕ駝有盘栂蛲獍l(fā)射出去,遇到障礙物后發(fā)生反射,接收器在接收到反射回來的超聲波以后,通過轉(zhuǎn)換器將其轉(zhuǎn)換為脈沖信號[1]。該信號通過 STM32 單片機(jī)處理以后轉(zhuǎn)化為一個值并與預(yù)定值相比較,然后做出后續(xù)動作。我們需根據(jù)學(xué)步車的運動環(huán)境給他設(shè)定一個參考值,考慮到學(xué)步機(jī)要帶領(lǐng)嬰幼兒學(xué)步的安全性,該設(shè)定值不能過小,否則當(dāng)嬰幼兒運動過于激烈時難以控制自身運動撞擊到障礙物而受傷。在設(shè)定參考值后,我們即可使用該參考值與超聲波測出的距離相比較。實際上,避障的原理為: 當(dāng)前方的距離值大于預(yù)設(shè)參考值時, 直線前行;當(dāng)前方出現(xiàn)障礙物, 且距離值小于預(yù)設(shè)參考值時, 小調(diào)用停車程序?qū)W(xué)步機(jī)暫停,此時比較左右后三個方向的距離值與預(yù)設(shè)值,當(dāng)左右后距離值有至少一個大于預(yù)設(shè)參考值時,對左右后值進(jìn)行比較,選擇距離值大的方向前進(jìn)。 當(dāng)左右距離值均小于預(yù)設(shè)參考值時,學(xué)步機(jī)直線后退,直接讓嬰幼兒抓住。
二、智能學(xué)步機(jī)的算法優(yōu)化
1、一種“由下而上”的隨機(jī)算法。在前面我們已經(jīng)實現(xiàn)了幾個基本的算法,為了減少實時控制已經(jīng)增加小車運動軌跡的多樣性,我們將幾個不使用避障模塊的算法封裝起來,用一個隨機(jī)函數(shù)將其控制,成為一個走隨機(jī)動作的功能。
2、走圓算法的優(yōu)化。在生物界中,我們常常可以觀察到一些關(guān)于蜜蜂的奇特的現(xiàn)象——蜜蜂常常咋空中飛出一個“ 8”字形,由此得到啟發(fā),我們是否也可以讓學(xué)步機(jī)像蜜蜂一樣跳起“ 8”字舞呢?由數(shù)字 8 我們可以聯(lián)想到兩個圓拼接在一起。事實上, 要實現(xiàn)“ 8 字舞”算法,我們必須讓學(xué)步機(jī)學(xué)會分別以順時針和逆時針的方向轉(zhuǎn)動[2]。這是因為構(gòu)成數(shù)字 8 的兩個圓實際上式兩個不同的圓,它們轉(zhuǎn)動的方向恰好相反。在學(xué)會兩個方向以后,學(xué)步機(jī)需要在順時針轉(zhuǎn)動一段特定的時間后切換到逆時針方向,反之亦然。如此,我們即可在走圓算法的基礎(chǔ)上升級為走“ 8 字舞”。
3、避障算法的優(yōu)化。在前面的避障算法中我們可以發(fā)現(xiàn),超聲波測距是無差別的,也就是說,在超聲波看來, 人和別的障礙物時無區(qū)別的。這就看出了我們的產(chǎn)品僅應(yīng)用超聲波測距的缺陷所在。學(xué)步機(jī)使得的對象是人,因而它需要將人與其它障礙物區(qū)分開來。
為了解決上述問題,我們加入了紅外模塊。堅持以“人”為本的觀點,我們需先使用紅外測出人再使用超聲波模塊測出其它障礙物的距離。再根據(jù)紅外的形狀——呈半圓形,我們使用了一個紅外與其它超聲波測距相互結(jié)合。其中兩者相結(jié)合的方法為:紅外一直開啟,當(dāng)紅外檢測到有人動物時,就開啟超聲波進(jìn)行探測,然后比較四個超聲波傳感器傳回來的距離值,往距離值最短的那個超聲波傳感器的反方向躲避。
結(jié)語:本文探討和實現(xiàn)了一些基本的智能學(xué)步機(jī)的算法,并在一定程度上將其升級和優(yōu)化. 然后可實現(xiàn)的算法和功能還有很多,本文實現(xiàn)和優(yōu)化的算法很有限,因而對于學(xué)步機(jī)的算法實現(xiàn)這一模塊, 我們?nèi)匀焕^續(xù)探討和研究,學(xué)無止境!
參 考 文 獻(xiàn)
[1] 王化祥, 張淑英. 傳感器原理及應(yīng)用 [M]. 天津: 天津大學(xué)出版社, 2004.
[2] 謝曉石. 機(jī)器人走“ 8 字舞”例析 [J]. 實驗教學(xué)與儀器, 2015(1): 62-63.
[3] 趙津, 朱三超. 基于 Arduino 單片機(jī)的智能避障小車設(shè)計 [J]. 自動化與儀表, 2013, 28(5): 1-4.