(北京物資學(xué)院 北京 101149)
物流導(dǎo)引小車(chē)的主要導(dǎo)航模式包括電磁式導(dǎo)航[1]、激光導(dǎo)航[2]、慣性導(dǎo)航[3]、視覺(jué)導(dǎo)引式導(dǎo)航[4]。而本文設(shè)計(jì)的導(dǎo)航模式可以不依賴外部導(dǎo)航方式,依靠物流導(dǎo)引小車(chē)的自身的程序即可導(dǎo)航,降低了技術(shù)難度。這為無(wú)線通信技術(shù)提供了一種新的方法,同時(shí)也對(duì)將來(lái)AGV發(fā)展趨勢(shì)和現(xiàn)代智能家居的設(shè)計(jì)提供了參考價(jià)值[5]。
本設(shè)計(jì)的思路是基于以下幾個(gè)方面:以利用手機(jī)APP實(shí)現(xiàn)小車(chē)的任意路徑規(guī)劃,設(shè)計(jì)符合要求的手APP與控制程序。小車(chē)的控制程序主要通過(guò)Wi-Fi進(jìn)行信號(hào)的傳輸與反饋軟件基于Eclipse框架結(jié)構(gòu)[6],使用Java語(yǔ)言進(jìn)行開(kāi)發(fā)。
首先,實(shí)現(xiàn)基本的物流導(dǎo)引小車(chē)的移動(dòng)控制。之后,讓小車(chē)完成正方形的路徑,確保小車(chē)可以按照要求完成常規(guī)路徑。最后實(shí)現(xiàn)在手機(jī)APP上可以畫(huà)圖控制物流導(dǎo)引小車(chē)路徑,AGV能夠按照給定的路徑進(jìn)行移動(dòng),就完成了設(shè)計(jì)目標(biāo)。
Wi-Fi無(wú)線網(wǎng)絡(luò)是由無(wú)線網(wǎng)卡和網(wǎng)絡(luò)橋接器AP(Access Point)所組成的,對(duì)裝有無(wú)線網(wǎng)卡的終端進(jìn)入Wi-Fi覆蓋區(qū)域能由AP來(lái)接入Internet,Wi-Fi接入技術(shù)具有高速傳輸和無(wú)線接入的優(yōu)點(diǎn),最高速度可達(dá)54Mbps[7]。同時(shí)Wi-Fi技術(shù)布網(wǎng)簡(jiǎn)單,成本低廉,速度快,定位精確,傳輸不失真。其控制代碼格式如表1所示。
表1 控制代碼格式
其控制代碼主要分為4部分,包頭包尾均為ff,首兩位主要區(qū)分不同類(lèi)型的功能,次兩位分別同樣部分的不同命令,最后兩位主要區(qū)分同樣指令不同的數(shù)據(jù)位。
在物流導(dǎo)引小車(chē)的控制端(手機(jī)APP),具有的功能包括:
物流導(dǎo)引小車(chē)可以按照固定的路徑進(jìn)行移動(dòng)??梢园凑帐謾C(jī)APP畫(huà)出的路徑進(jìn)行移動(dòng),實(shí)時(shí)改變路徑,攝像頭可以傳輸畫(huà)面。
物流導(dǎo)引小車(chē)主要有三塊主板(Arduino2560主板、PWR電源板、Wi-Fi模塊),插入攝像頭上電源后由Wi-Fi模塊建立無(wú)線熱點(diǎn),手機(jī)可直接連接此熱點(diǎn)進(jìn)行視頻和控制。
1.手機(jī)APP的顯示設(shè)計(jì)
利用Arduino進(jìn)行硬件平臺(tái)開(kāi)發(fā),首先,先確認(rèn)我們使用的是Eclipse的ADT工具進(jìn)行開(kāi)發(fā),同時(shí)其還提供了模擬器,可以在軟件中模擬進(jìn)程。
Android系統(tǒng)的總體架構(gòu)主要分為4部分,分別為:核心操作系統(tǒng)底層、系統(tǒng)支持庫(kù)層、Android應(yīng)用框架層和應(yīng)用、小部件層。
首先需要先搭建環(huán)境。在安裝完成JDK后,再設(shè)置環(huán)境變量即可完成。建立一個(gè)開(kāi)始界面,在設(shè)計(jì)界面的過(guò)程中,采用了線性布局,分別是主界面是垂直布局,次級(jí)界面是水平布局。垂直布局的主要代碼為android:orientation=“horizontal”與android:orientation=“verticaltal”。采用的是xml。
手機(jī)控制AGV,需要有固定的程序,主要通過(guò)Activity實(shí)現(xiàn),即按一下按鍵,就實(shí)現(xiàn)相應(yīng)的功能。同時(shí)因?yàn)榘税l(fā)送自定義的功能,所以我們還需要用Edit Text,收集你所輸入的內(nèi)容。
2.手機(jī)APP端控制設(shè)計(jì)
按鍵前進(jìn)來(lái)控制物流導(dǎo)引小車(chē)前行。不進(jìn)行操作時(shí)物流導(dǎo)引小車(chē)停止。按鍵左轉(zhuǎn)可以控制物流導(dǎo)引小車(chē)左轉(zhuǎn)。按鍵右轉(zhuǎn)可以控制物流導(dǎo)引小車(chē)右轉(zhuǎn)。按鍵后退可以控制物流導(dǎo)引小車(chē)后退。
屏幕中間的按鍵CMD可以進(jìn)入自定義的命令,按鍵長(zhǎng)方形可以控制物流導(dǎo)引小車(chē)按照長(zhǎng)方形路徑進(jìn)行移動(dòng),按鍵圓形路與按鍵正方形同理。按鍵路徑規(guī)劃可以進(jìn)入下一級(jí)控制系統(tǒng),如圖1所示。
圖1 手機(jī)自定義命令的發(fā)送界面
圖2 路徑規(guī)劃初始界面
按路徑規(guī)劃鍵會(huì)彈出一張平面圖,可以在上邊畫(huà)出物流導(dǎo)引小車(chē)的理想移動(dòng)路徑,點(diǎn)擊開(kāi)始執(zhí)行就可以讓物流導(dǎo)引小車(chē)按照你所輸入的路徑進(jìn)行移動(dòng),如圖2所示。
Arduino2560電源板集成了L298P。L298P是一款雙全橋電機(jī)專(zhuān)用芯片,內(nèi)部包含4信道邏輯驅(qū)動(dòng)電路,接收標(biāo)準(zhǔn)TTL邏輯準(zhǔn)確信號(hào),可驅(qū)動(dòng)46V、2A以下的步進(jìn)電機(jī)或直流電機(jī),并透過(guò)電源來(lái)調(diào)節(jié)輸出電壓;此芯片可以直接由單片機(jī)的IO來(lái)提供模擬時(shí)序信號(hào)。
表2直觀的顯示出了電機(jī)轉(zhuǎn)動(dòng)和其所需要的高低電平情況。
表2 電機(jī)轉(zhuǎn)動(dòng)邏輯表
物流導(dǎo)引小車(chē)前進(jìn)要求電機(jī)1反轉(zhuǎn),電機(jī)2反轉(zhuǎn)。
物流導(dǎo)引小車(chē)后退要求電機(jī)1正轉(zhuǎn),電機(jī)2正轉(zhuǎn)。
物流導(dǎo)引小車(chē)右轉(zhuǎn)要求電機(jī)1正轉(zhuǎn),電機(jī)2反轉(zhuǎn)。
物流導(dǎo)引小車(chē)左轉(zhuǎn)要求電機(jī)1反轉(zhuǎn),電機(jī)2正轉(zhuǎn)。
物流導(dǎo)引小車(chē)停止要求電機(jī)1與電機(jī)2均為0,及低電平。
其電機(jī)連線如圖3所示。
圖3 物流導(dǎo)引小車(chē)的電機(jī)接線圖
四個(gè)電機(jī)的接線圖主要就是相互靠近的電機(jī)相同的兩極相連,并共同連到Arduino相應(yīng)的部分。相互靠近的兩個(gè)電機(jī)的正負(fù)極分別連接到同一M+與M-極。
首先,需要在Arduino中,將ENA、ENB、INPUT1、INPUT2、INPUT3、INPUT4都設(shè)置為輸出,即輸出屬性。
其次,確認(rèn)物流導(dǎo)引小車(chē)的指令,在Arduino中收到手機(jī)APP的命令之后,分辨他屬于那種命令,驅(qū)動(dòng)電機(jī)進(jìn)行相對(duì)應(yīng)的動(dòng)作。0x01指令為前進(jìn),即電機(jī)1與電機(jī)2均反轉(zhuǎn),0x02為后退指令,即電機(jī)1與電機(jī)2均正轉(zhuǎn),以此類(lèi)推。
之后,通過(guò)digitalWrite函數(shù),作用是設(shè)置引腳的輸出電壓為高(低)電平,該函數(shù)無(wú)返回值,從而控制L298P驅(qū)動(dòng)模塊,即電機(jī)驅(qū)動(dòng)板上,控制電機(jī)的正轉(zhuǎn)與反轉(zhuǎn)。由上面分析的物流導(dǎo)引小車(chē)的基本移動(dòng)需要的電機(jī)轉(zhuǎn)動(dòng)方向。其流程如圖4所示。
圖4 電機(jī)驅(qū)動(dòng)程序流程圖
首先將ENA、ENB、input1、input2、input3、input4設(shè)置為輸出,使其接電機(jī)時(shí)可以控制電機(jī)的正反轉(zhuǎn)。
正方形路徑步驟完全一樣,只是驅(qū)動(dòng)電機(jī)的程序不一樣。將ENA、ENB設(shè)為高電平,使得物流導(dǎo)引小車(chē)可以按照設(shè)定固定完成路線,執(zhí)行前進(jìn)指令,前進(jìn),即回到了原點(diǎn)。物流導(dǎo)引小車(chē)就可完成了一個(gè)固定的正方形路徑。
AGVs在制造業(yè)中主要作用是物料運(yùn)輸、裝配和加工制造等,尤其物料運(yùn)輸方面的應(yīng)用更為廣泛。對(duì)于現(xiàn)代制造業(yè)來(lái)講,提高AGV系統(tǒng)的工作效率,使AGVs能快速、準(zhǔn)確、高效地將物料運(yùn)送目的地上是非常重要的。為了滿足以上要求,AGV必須擁有流暢的行駛路徑,因此,對(duì)AGV進(jìn)行路徑規(guī)劃具有實(shí)際意義。物流導(dǎo)引小車(chē)的路徑規(guī)劃就是物流導(dǎo)引小車(chē)處于一個(gè)環(huán)境中,給定起點(diǎn)與終點(diǎn)或者給定路徑,控制物流導(dǎo)引小車(chē)的能按照路徑進(jìn)行移動(dòng)[8-11]。
如手機(jī)APP端控制設(shè)計(jì),將物流導(dǎo)引小車(chē)的路徑規(guī)劃基礎(chǔ)界面。當(dāng)我們?cè)谑謾C(jī)上畫(huà)出一個(gè)路徑時(shí),手機(jī)會(huì)把路徑分為節(jié)點(diǎn),近似的分為直線運(yùn)動(dòng),當(dāng)越彎的路徑需要的節(jié)點(diǎn)數(shù)越多,在路徑上遇到問(wèn)題時(shí),可以通過(guò)清空畫(huà)布按鍵,停止小車(chē),如果路徑?jīng)]有問(wèn)題,你還可以讓小車(chē)重復(fù)執(zhí)行路徑。
在畫(huà)布上的程序,通過(guò)Wi-Fi模塊與一定的規(guī)則,將相應(yīng)的命令傳輸給物流導(dǎo)引小車(chē)。
首先,在畫(huà)布上的路徑被分為了若干節(jié)點(diǎn),完成路徑主要分為兩部分,直行與轉(zhuǎn)彎。其中轉(zhuǎn)彎主要分為兩個(gè)變量,轉(zhuǎn)角與時(shí)間。
判斷執(zhí)行的命令,如果RevStatu==1(RevStatus等于1),那么判斷物流導(dǎo)引小車(chē)進(jìn)行左轉(zhuǎn)的命令,其轉(zhuǎn)角時(shí)間等于TurnAngle的數(shù)值乘以6,單位為毫秒。之后進(jìn)行直走命令,時(shí)間為Golength的數(shù)值乘以10,單位為毫秒。達(dá)到下一節(jié)點(diǎn),繼續(xù)此流程。右轉(zhuǎn)指令以此類(lèi)推。具體流程如圖5所示。
圖5 路徑規(guī)劃程序的流程圖
在手機(jī)畫(huà)布上的路徑與實(shí)際路徑比例大約為1:100,即畫(huà)布上1厘米,實(shí)際物流導(dǎo)引小車(chē)行進(jìn)大概1米,方向與畫(huà)布方向一致,即上方對(duì)應(yīng)前進(jìn),下方對(duì)應(yīng)后退,左側(cè)代表左轉(zhuǎn),右側(cè)代表右轉(zhuǎn)。
本文通過(guò)Wi-Fi進(jìn)行信號(hào)的傳輸與反饋,APP的設(shè)計(jì)基于Eclipse框架結(jié)構(gòu),使用Java語(yǔ)言進(jìn)行開(kāi)發(fā)。經(jīng)過(guò)多次試和修改代碼,成功實(shí)現(xiàn)了Wi-Fi小車(chē)預(yù)設(shè)的功能,在Wi-Fi輻射范圍內(nèi)通信穩(wěn)定,控制可靠靈活。經(jīng)過(guò)不斷優(yōu)化代碼最終實(shí)現(xiàn)“無(wú)障礙”通信、控制。
首先,實(shí)現(xiàn)了通過(guò)手機(jī)APP實(shí)時(shí)控制小車(chē)的運(yùn)行狀態(tài)。之后,通過(guò)預(yù)設(shè),小車(chē)可以按照指定路徑循環(huán)行走。最后,實(shí)現(xiàn)了小車(chē)按照已經(jīng)畫(huà)好的路徑行走,并且可以實(shí)時(shí)更改行走線路。
設(shè)計(jì)的意義在于將單片機(jī)電子技術(shù),Wi-Fi通信技術(shù)和智能終端設(shè)備有效結(jié)合,深化物聯(lián)網(wǎng)的概念,本方案可推廣到智能家居等領(lǐng)域。