薛 梁,方海峰,黃 迪
(江蘇科技大學(xué)蘇州理工學(xué)院,江蘇 張家港 215600)
如今,智能科技正深刻改變著我們的生產(chǎn)方式、生活方式、學(xué)習(xí)方式。智能車作為智能科技的代表,因其靈活性、智能化在倉(cāng)庫(kù)、車間、危險(xiǎn)區(qū)域都扮演著重要的角色。本文設(shè)計(jì)的智能小車基于arduino 開發(fā)板,小車底盤采用麥克納姆輪,能夠?qū)崿F(xiàn)智能車各個(gè)方向的運(yùn)動(dòng)以及避障和跟隨功能。該小車具有兩種模式:一種是在狹小的環(huán)境利用超聲波傳感器進(jìn)行測(cè)距實(shí)現(xiàn)避障功能;另一種是利用超聲波和紅外傳感器對(duì)移動(dòng)目標(biāo)進(jìn)行跟隨。該智能車在物流運(yùn)輸、科學(xué)勘測(cè)、跟蹤識(shí)別、抗震救災(zāi)等方面具有廣闊的應(yīng)用前景[1]。
智能車包括機(jī)械、電路硬件、軟件三個(gè)主要部分,它們之間相互影響。搭載麥克納姆輪的小車能夠?qū)崿F(xiàn)全方位運(yùn)動(dòng),配合適當(dāng)?shù)膫鞲衅鳎?dāng)執(zhí)行避障模式時(shí),可以準(zhǔn)確檢測(cè)到前方障礙物,主動(dòng)避開障礙物;當(dāng)執(zhí)行跟隨模式時(shí),超聲波模塊檢測(cè)與前方目標(biāo)距離,紅外傳感器檢測(cè)左右兩側(cè)目標(biāo)所在方向,實(shí)現(xiàn)目標(biāo)的精準(zhǔn)跟隨。
該智能車底盤主體采用鋁合金板,4 個(gè)車輪為麥克納姆輪結(jié)構(gòu),采用兩左旋、兩右旋的組對(duì)安裝形式,形成X形如圖1 所示。麥克納姆輪通過聯(lián)軸器與固定在底板上的電機(jī)相連接,且每個(gè)麥克納姆輪由電機(jī)獨(dú)立驅(qū)動(dòng)[2]。

圖1 麥克納姆輪安裝位置
通過對(duì)4 個(gè)電機(jī)旋轉(zhuǎn)方向的控制可以使車實(shí)現(xiàn)不同的操作[3]。當(dāng)輪1、2、3 和4 同時(shí)向前或向后旋轉(zhuǎn)時(shí),小車可以實(shí)現(xiàn)相應(yīng)的向前或向后平移;
當(dāng)輪1 和輪3 向前運(yùn)動(dòng),輪2 和輪4 不動(dòng)時(shí),小車實(shí)現(xiàn)向右前方45°平移;
當(dāng)輪1 和輪3 向后運(yùn)動(dòng),輪2 和輪4 不動(dòng)時(shí),小車實(shí)現(xiàn)向左后方45°平移;
當(dāng)輪2 和輪4 向前運(yùn)動(dòng),輪1 和輪3 不動(dòng)時(shí),小車實(shí)現(xiàn)向左前方45°平移;
當(dāng)輪2 和輪4 向后運(yùn)動(dòng),輪1 和輪3 不動(dòng)時(shí),小車實(shí)現(xiàn)向右后方45°平移;
當(dāng)輪1 和輪3 向前運(yùn)動(dòng),輪2 和輪4 向后運(yùn)動(dòng)時(shí),小車向右平移;
當(dāng)輪1 和輪3 向后運(yùn)動(dòng),輪2 和輪4 向前運(yùn)動(dòng)時(shí),小車向左平移;
當(dāng)輪1 和輪4 向前運(yùn)動(dòng),輪2 和輪3 向后運(yùn)動(dòng)時(shí),小車原地順時(shí)針旋轉(zhuǎn);
當(dāng)輪1 和輪4 向后運(yùn)動(dòng),輪2 和輪3 向前運(yùn)動(dòng)時(shí),小車原地逆時(shí)針旋轉(zhuǎn)。
本設(shè)計(jì)采用Arduino AFMotor 電機(jī)擴(kuò)展板來(lái)驅(qū)動(dòng)4 個(gè)直流電機(jī),板載2 塊L293D 芯片負(fù)責(zé)電機(jī)驅(qū)動(dòng)的核心工作,并配合Arduino Uno R3 開發(fā)板共同運(yùn)行。AFMotor 電機(jī)擴(kuò)展板上配有外接電源接口,該接口所連接的直流電源可以為電機(jī)和Arduino 開發(fā)板供電。AFMotor 擴(kuò)展板中的L293D 芯片所允許的直流電源電壓范圍是4.5 ~25 V。本文使用兩節(jié)18650 鋰電池串聯(lián)供電,電壓為7.4 V。
本設(shè)計(jì)使用HC-SR04 超聲波測(cè)距模塊,性能穩(wěn)定,距離測(cè)量精確。超聲波測(cè)距工作原理:通過IO 口Trig 觸發(fā)測(cè)距,發(fā)出高電平信號(hào),接收器收到返回信號(hào)停止計(jì)時(shí),根據(jù)聲波在空氣中的傳播速度,計(jì)算距離。
Arduino 連接方法:
(1)HC-SR04 引腳VCC 連接到Arduino 引腳+5VDC;
(2)HC-SR04 引腳Trig 連接到Arduino 引腳A1;
(3)HC-SR04 引腳Echo 連接到Arduino 引腳A0;
(4)HC-SR04 引腳GND 連接到Arduino 引腳GND。
舵機(jī)是一種位置(角度)伺服的驅(qū)動(dòng)器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)[4]。舵機(jī)包含一個(gè)小型電動(dòng)機(jī),內(nèi)部電機(jī)內(nèi)置電路可將電機(jī)輸出軸的位置進(jìn)行反饋,因此它的輸出軸可以被Arduino 等控制在某一個(gè)固定角度。本設(shè)計(jì)采用MG90S型號(hào)舵機(jī),它能夠在0~180°的范圍內(nèi)旋轉(zhuǎn),用于帶動(dòng)超聲波測(cè)距模塊的轉(zhuǎn)向,以實(shí)現(xiàn)智能車前、左、右方向的測(cè)距。
紅外傳感器模塊采用安裝在智能車側(cè)面的兩對(duì)紅外傳感器來(lái)探測(cè)周圍目標(biāo)情況,完成智能車跟隨功能的實(shí)現(xiàn)。紅外傳感器具有一對(duì)發(fā)射和接收管,當(dāng)檢測(cè)到目標(biāo)物時(shí)輸出指示燈亮起。可以通過電位器調(diào)節(jié)檢測(cè)距離,檢測(cè)范圍為2 ~30 cm,角度為35°,工作電壓為3.3 ~5 V,紅外傳感器通過發(fā)射紅外線反射并探測(cè)是否存在物體[5]。
在鋁合金底板上安裝有4 個(gè)獨(dú)立驅(qū)動(dòng)的電機(jī)分別驅(qū)動(dòng)四個(gè)麥克納姆輪,底盤上還安裝了電源、Arduino UNO R3 開發(fā)板、AFMotor 擴(kuò)展板,舵機(jī)用支架安裝在智能車的正前方,舵機(jī)的輸出軸上還安裝了另一個(gè)支架。該支架中間安裝超聲波測(cè)距模塊,兩側(cè)分別安裝紅外傳感器,使得智能車前方的舵機(jī)能夠同時(shí)帶動(dòng)超聲波測(cè)距模塊和紅外傳感器左右偏轉(zhuǎn),制作的麥克納姆輪智能車實(shí)物如圖2 所示。

圖2 麥克納姆輪智能車實(shí)物
結(jié)合麥克納姆輪的運(yùn)動(dòng)原理,通過串口通訊控制4 個(gè)獨(dú)立的直流電機(jī)驅(qū)動(dòng)車輪,實(shí)現(xiàn)全方位運(yùn)動(dòng)。串口控制具體操作:輸入“5”執(zhí)行停止;“2”執(zhí)行后退“8”執(zhí)行前進(jìn);“4”執(zhí)行左轉(zhuǎn);“6”執(zhí)行右轉(zhuǎn);“7”執(zhí)行向前逆時(shí)針旋轉(zhuǎn);“9”執(zhí)行向前順時(shí)針旋轉(zhuǎn);“3”執(zhí)行向后逆時(shí)針旋轉(zhuǎn);“1”執(zhí)行向后順時(shí)針旋轉(zhuǎn);“a”執(zhí)行左移;“d”執(zhí)行右移;“q”執(zhí)行左前移;“e”執(zhí)行右前移;“z”執(zhí)行左后移;“c”執(zhí)行右后移。
避障功能中會(huì)使用到舵機(jī)、超聲波和電機(jī)驅(qū)動(dòng)模塊,因此首先確定程序中需要的庫(kù)文件:Servo 和AFMotor;對(duì)智能車所運(yùn)行的狀態(tài)進(jìn)行宏定義,對(duì)電機(jī)變量、脈沖引腳、舵機(jī)變量名、超聲波信號(hào)引腳、串口波特率等進(jìn)行定義并在set up()函數(shù)中進(jìn)行相關(guān)變量的初始化;定義電機(jī)驅(qū)動(dòng)函數(shù),設(shè)置4 個(gè)電機(jī)的運(yùn)動(dòng)方式驅(qū)動(dòng)小車實(shí)現(xiàn)相應(yīng)運(yùn)動(dòng);定義測(cè)距程序,使超聲波模塊發(fā)出高低電平,讀出脈沖時(shí)間,并將時(shí)間轉(zhuǎn)換成距離并輸出。在主函數(shù)中運(yùn)行舵機(jī)和測(cè)距的程序:默認(rèn)小車向前方運(yùn)動(dòng),超聲波模塊對(duì)準(zhǔn)正前方;當(dāng)前方有障礙物,且距離小于30 cm 時(shí),停止前進(jìn);舵機(jī)帶動(dòng)超聲波模塊向左轉(zhuǎn),測(cè)量與左側(cè)物體的距離;隨后舵機(jī)右轉(zhuǎn),測(cè)量右測(cè)與物體的距離,然后比較左右兩側(cè)距離,如果右側(cè)距離比左側(cè)小,則左轉(zhuǎn),否則右轉(zhuǎn),實(shí)現(xiàn)避障功能。
跟隨功能中使用紅外傳感器、超聲波、舵機(jī)、電機(jī)模塊,使用庫(kù)文件有:NewPing、Servo 和AFMotor;同樣對(duì)電機(jī)、舵機(jī)、超聲波、紅外傳感器進(jìn)行定義和初始化;在主程序中調(diào)用測(cè)距函數(shù),并讀取紅外傳感器I/O口狀態(tài):如果左右兩邊紅外傳感器沒有檢測(cè)到信號(hào),且超聲波檢測(cè)到物體距離在10 ~30 cm 之間,說明物體在智能車正前方,則向前跟隨目標(biāo)運(yùn)動(dòng);當(dāng)超聲波檢測(cè)到的距離超出30 cm,右側(cè)紅外傳感器檢測(cè)到信號(hào),左側(cè)沒有,則右轉(zhuǎn),左側(cè)紅外傳感器檢測(cè)到信號(hào),右側(cè)沒有則左轉(zhuǎn);如果左右兩側(cè)同時(shí)檢測(cè)到物體則停止運(yùn)動(dòng);當(dāng)超聲波檢測(cè)到與目標(biāo)距離小于10 cm時(shí),智能車停止運(yùn)動(dòng)。
根據(jù)設(shè)計(jì)要求,實(shí)現(xiàn)智能車的避障和跟隨功能并通過電路的設(shè)計(jì)使兩個(gè)模式可以互相切換。其運(yùn)行流程如下:
模式1:當(dāng)檢測(cè)到D2 口的狀態(tài)為1 時(shí)執(zhí)行跟隨模式。執(zhí)行超聲波測(cè)距,檢測(cè)前方的距離執(zhí)行前進(jìn)或停止;通過兩側(cè)的紅外傳感器檢測(cè)左右的距離,調(diào)整智能車方向,以此來(lái)實(shí)現(xiàn)智能車的跟隨。
模式2:當(dāng)檢測(cè)到D2 口的狀態(tài)為0 時(shí)執(zhí)行避障模式。通過超聲波測(cè)距,檢測(cè)前方是否有障礙物來(lái)決定小車是前進(jìn)或停止。當(dāng)前方有障礙物時(shí)停止,舵機(jī)帶動(dòng)超聲波模塊左右轉(zhuǎn)向檢測(cè)智能車左右兩側(cè)的空間距離,當(dāng)左側(cè)距離大于右側(cè),小車左轉(zhuǎn),否則右轉(zhuǎn),以此來(lái)實(shí)現(xiàn)智能車的避障。
為了驗(yàn)證麥克納姆輪智能車設(shè)計(jì)是否符合要求,進(jìn)行避障實(shí)驗(yàn)。先讓智能車前方?jīng)]有障礙物,把智能車調(diào)到避障模式,打開電源,智能車前進(jìn)。隨后人站在智能車前方模擬障礙物,當(dāng)智能車距離前方障礙物小于30 cm 時(shí),智能車停止前進(jìn),將一本書立在智能車的右側(cè),舵機(jī)帶動(dòng)超聲波測(cè)距模塊左右旋轉(zhuǎn),智能車左側(cè)與環(huán)境物體距離大于右側(cè),智能車向左旋轉(zhuǎn)后再次測(cè)量正前方與障礙物的距離是否滿足大于30 cm,滿足條件后繼續(xù)前進(jìn);用同樣的方法,將書立在智能車的左側(cè),智能車左側(cè)與環(huán)境物體距離小于右側(cè),智能車向右旋轉(zhuǎn)朝向距離大的那側(cè),滿足與前方物體距離大于30 cm 時(shí)繼續(xù)前進(jìn);當(dāng)前方又遇到障礙物時(shí)再次停下,測(cè)量智能車左右兩側(cè)物體與智能車之間的距離,控制智能車向更空曠的方向前進(jìn),如此循環(huán)往復(fù),實(shí)驗(yàn)表明該麥克納姆輪智能車能夠?qū)崿F(xiàn)避障功能。
把智能車調(diào)到跟隨模式,打開電源,此時(shí)智能車靜止,把手掌放在智能車正前方30 cm 處,作為跟隨目標(biāo),智能車前進(jìn)靠近手掌,當(dāng)手掌與智能車之間距離小于10 cm 時(shí)智能車停止;把手掌靠近智能車左側(cè),智能車向左轉(zhuǎn)向,手掌靠近智能車右側(cè),智能車向右轉(zhuǎn)向;將手掌保持與智能車20 cm 左右并且移動(dòng),智能車會(huì)靠近手掌運(yùn)動(dòng),手掌向左前方移動(dòng)時(shí),智能車跟隨手掌往左前方運(yùn)動(dòng),手掌向右前方移動(dòng)時(shí),智能車跟隨手掌往右前方運(yùn)動(dòng),手掌停下,智能車靠近手掌并且距離在10 cm 左右時(shí)也停止。實(shí)驗(yàn)表明,該麥克納姆輪智能車能夠?qū)崿F(xiàn)跟隨功能。
本文設(shè)計(jì)一輛基于arduino 的麥克納姆輪智能車,采用安裝在車頭的舵機(jī)帶動(dòng)超聲波模塊檢測(cè)智能車與左、前和右側(cè)障礙物之間距離,通過改變4 個(gè)麥克納姆輪轉(zhuǎn)向,使智能車避讓障礙物,實(shí)現(xiàn)避障功能;采用超聲波模塊測(cè)量與目標(biāo)物體之間的距離是否在設(shè)定的區(qū)間,以及左右兩側(cè)的紅外傳感器判斷目標(biāo)的左右位置,控制智能車準(zhǔn)確實(shí)現(xiàn)目標(biāo)的跟隨,并且完成了麥克納姆輪智能車的制作。實(shí)驗(yàn)結(jié)果表明,該智能車運(yùn)動(dòng)靈活,穩(wěn)定可靠,能夠滿足功能要求,這將在智能倉(cāng)儲(chǔ)搬運(yùn)小車或智能跟隨行李箱等智能化產(chǎn)品領(lǐng)域有很大的發(fā)展應(yīng)用前景。