楊澤平+文賡+馬佳敏+蔡妤婕+饒婷霜+郭夢(mèng)潔
摘 要:研究智能昆蟲機(jī)器人與移動(dòng)設(shè)備交互通信,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)在Android環(huán)境下運(yùn)行的與智能昆蟲機(jī)器人交互控制應(yīng)用系統(tǒng),使其可以運(yùn)行在手機(jī)、平板電腦等移動(dòng)設(shè)備上。系統(tǒng)易于操作,性能穩(wěn)定,具有廣闊的應(yīng)用前景。
關(guān)鍵詞:Arduino;藍(lán)牙;昆蟲機(jī)器人;移動(dòng)設(shè)備
中圖分類號(hào):TP242 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2017)08-00-03
0 引 言
近年來(lái),隨著機(jī)器人技術(shù)的逐漸完善,國(guó)內(nèi)外對(duì)機(jī)器人技術(shù)的發(fā)展越來(lái)越感興趣,機(jī)器人技術(shù)已被認(rèn)為是未來(lái)高新產(chǎn)業(yè)發(fā)展的重要基礎(chǔ)之一[1]。美國(guó)在智能機(jī)器人的技術(shù)研究方面一直保持領(lǐng)先,在航天、軍事等方面都使用了機(jī)器人技術(shù),該技術(shù)具有性能可靠,精確度高,適應(yīng)性好等特點(diǎn)。日本在家用機(jī)器人研究方面發(fā)展迅速,發(fā)明了各種類型的機(jī)器人,可做壽司、幫助客人倒茶、喂食老人等。而歐洲各國(guó)也投入大量精力和財(cái)力來(lái)支持機(jī)器人技術(shù)的研發(fā)。我國(guó)也越來(lái)越重視機(jī)器人技術(shù)的發(fā)展,清華大學(xué)、哈爾濱工程大學(xué)以及中科院等高校和研究所也積極推動(dòng)機(jī)器人技術(shù)的發(fā)展[2]。機(jī)器人技術(shù)不僅涉及工業(yè)制造、野外深空深??碧娇睖y(cè)、醫(yī)療服務(wù)、教育娛樂(lè)、家庭陪護(hù)等領(lǐng)域,還涉及交通、消防、軍事等方面,由此產(chǎn)生了不同用途的機(jī)器人,如工業(yè)機(jī)器人、輪式/履帶式移動(dòng)機(jī)器人、外星探索機(jī)器人、水下機(jī)器人、飛行機(jī)器人、醫(yī)療與康復(fù)機(jī)器人和仿生機(jī)器人等[3]。這些機(jī)器人在面臨一些復(fù)雜環(huán)境完成相應(yīng)任務(wù)時(shí),其自身對(duì)周圍環(huán)境的認(rèn)知就直接影響了任務(wù)的完成,所以對(duì)機(jī)器人環(huán)境感知、人機(jī)交互等方面提出了很高的要求。昆蟲機(jī)器人屬于仿生機(jī)器人的一種,它和依靠輪子或履帶式移動(dòng)的機(jī)器人相比,在崎嶇不平的地面上或有陡斜坡、階梯的地段上移動(dòng)時(shí),穩(wěn)定性和可操作性更好。
Arduino是一個(gè)開源電子制作平臺(tái),包括硬件(各種型號(hào)的Arduino控制板)和軟件(Arduino的集成開發(fā)環(huán)境和編程接口)。Arduino體積小、易于上手,是一款非常實(shí)用的開源硬件[4]。該平臺(tái)的硬件部分可以獨(dú)立購(gòu)買加以改造,重新組裝成新的電路板,且Arduino提供多種編程接口,既有類似于C語(yǔ)言的開發(fā)環(huán)境,也可以直接使用Flash或Processing等軟件來(lái)實(shí)現(xiàn)功能[5]。Arduino還提供了USB等接口,使其擴(kuò)展性更強(qiáng),用戶可以通過(guò)反復(fù)編程來(lái)實(shí)現(xiàn)功能,因此廣泛應(yīng)用于環(huán)境監(jiān)測(cè)、可穿戴設(shè)備、智能家居等多個(gè)領(lǐng)域,特別是在機(jī)器人和自動(dòng)化領(lǐng)域?;贏rduino開發(fā)的機(jī)器人,易于操作,設(shè)備簡(jiǎn)單,非專業(yè)人士也可以按照自己的想法來(lái)設(shè)計(jì)開發(fā)。
隨著移動(dòng)設(shè)備和移動(dòng)機(jī)器人使用的頻繁、移動(dòng)互聯(lián)網(wǎng)的普及,人們對(duì)移動(dòng)設(shè)備和移動(dòng)機(jī)器人的用戶體驗(yàn)要求越來(lái)越高,研究智能機(jī)器人與移動(dòng)設(shè)備交互通信并給出實(shí)用的App系統(tǒng)對(duì)增強(qiáng)用戶體驗(yàn)具有積極意義。本文基于開源硬件Arduino實(shí)驗(yàn)平臺(tái),給出了一個(gè)在Android環(huán)境下運(yùn)行的與昆蟲機(jī)器人交互的應(yīng)用系統(tǒng),使得移動(dòng)設(shè)備和昆蟲機(jī)器人可實(shí)現(xiàn)很好的通信。
1 總體架構(gòu)
系統(tǒng)設(shè)計(jì)之初,考慮移動(dòng)設(shè)備與昆蟲機(jī)器人的交互可以通過(guò)無(wú)線通信來(lái)實(shí)現(xiàn),無(wú)線通信包括紅外、藍(lán)牙、WiFi和NFC等。NFC是近距離無(wú)線通訊技術(shù),其基礎(chǔ)是非接觸式射頻識(shí)別及互連技術(shù),具有能耗小、成本低等優(yōu)點(diǎn)。由于其安全性高,因此在刷卡領(lǐng)域(門禁系統(tǒng)、交通一卡通、支付領(lǐng)域等)應(yīng)用廣泛。紅外通信采用紅外線傳輸數(shù)據(jù),此方式具有成本低、簡(jiǎn)單易用、低功耗等優(yōu)點(diǎn),廣泛用于移動(dòng)設(shè)備(筆記本電腦、移動(dòng)通訊設(shè)備等)之間的數(shù)據(jù)交換以及電視、空調(diào)遙控等,但其不適用于傳輸障礙較多的場(chǎng)景。WiFi是使用最廣泛的一種無(wú)線網(wǎng)絡(luò)通信技術(shù),它基于IEEE802.11標(biāo)準(zhǔn),可以解決大數(shù)據(jù)量傳輸問(wèn)題,使得任何接入WiFi的設(shè)備之間都可以相互交換數(shù)據(jù)。藍(lán)牙也屬于短距離無(wú)線傳輸技術(shù),有著成本低、功耗低等優(yōu)點(diǎn),可實(shí)現(xiàn)固定設(shè)備(打印機(jī)、音響等)、移動(dòng)設(shè)備(手機(jī)、平板電腦、筆記本等)以及一些小型設(shè)備之間的數(shù)據(jù)交換。相比NFC和紅外,雖然這些技術(shù)同屬短距離傳輸,但藍(lán)牙的距離一般可達(dá)10 m(紅外的使用距離為1 m,NFC的使用距離為0.1 m),并且在傳輸速率上也優(yōu)于NFC和紅外。相比WiFi,不僅WiFi的成本高、實(shí)現(xiàn)較復(fù)雜,其安全性也不高,因此藍(lán)牙通信技術(shù)廣泛應(yīng)用于物聯(lián)網(wǎng)技術(shù)中。在本系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)中,采用藍(lán)牙通信技術(shù)。
系統(tǒng)主要包括硬件和軟件部分。
硬件部分包括智能昆蟲機(jī)器人和藍(lán)牙模塊。智能昆蟲機(jī)器人采用DFRobot開源硬件組裝而成,包括前腿舵機(jī)、中腿舵機(jī)、后腿舵機(jī)、紅外傳感器、光線傳感器和Arduino主控板。硬件調(diào)試采用Arduino開發(fā)環(huán)境來(lái)實(shí)現(xiàn),文中使用Arduino-1.6.7版本。
軟件部分的開發(fā)環(huán)境為Android Studio,采用Android_studio_2.1.0.0版本,針對(duì)Android環(huán)境。整個(gè)系統(tǒng)通過(guò)藍(lán)牙模塊來(lái)實(shí)現(xiàn)移動(dòng)設(shè)備和智能昆蟲機(jī)器人之間的通信。移動(dòng)設(shè)備在測(cè)試階段采用基于Android系統(tǒng)的手機(jī),用戶通過(guò)手機(jī)App進(jìn)行操作,然后App通過(guò)調(diào)用手機(jī)藍(lán)牙將操作對(duì)應(yīng)的指令發(fā)送給機(jī)器人,機(jī)器人根據(jù)指令執(zhí)行相應(yīng)的動(dòng)作。
系統(tǒng)整體架構(gòu)如圖1所示。
2 藍(lán)牙模塊的安裝及調(diào)試
采用Risym HC-05無(wú)線藍(lán)牙模塊。Arduino主板已集成支持串口通信,分別為TX和RX引腳,需手動(dòng)引出。雖然串口通信引腳在USB接口中已有集成,但只適用于測(cè)試使用,若在機(jī)器人運(yùn)行中使用,不僅占用USB,還需從USB口引出USB數(shù)據(jù)線用于串口通信,結(jié)構(gòu)相對(duì)復(fù)雜,不穩(wěn)定。這里使用杜邦線引出,可直接用插拔的方式與藍(lán)牙模塊連接。具體包括以下操作:
(1)雙層板拆離;
(2)去排針+去舊焊錫;
(3)焊接新排針;
(4)將Arduino主板、底板和藍(lán)牙模塊與杜邦線連接。endprint
在Arduino軟件環(huán)境中,通過(guò)設(shè)置串口通信波特率即可進(jìn)行藍(lán)牙通信調(diào)試。在setup()函數(shù)中通過(guò)Serial.begin(9600)語(yǔ)句來(lái)初始化波特率,然后在loop()函數(shù)中循環(huán)等待藍(lán)牙連接后接受數(shù)據(jù),定義的通訊協(xié)議為F:前進(jìn);B:后退;L:左轉(zhuǎn);R:右轉(zhuǎn);A:自主移動(dòng)。進(jìn)行藍(lán)牙通信時(shí),首先通過(guò)BluetoothAdapter獲取藍(lán)牙適配器對(duì)象,在打開藍(lán)牙、獲取藍(lán)牙適配器時(shí),可能需要用戶通過(guò)對(duì)話框進(jìn)行確認(rèn)。獲取藍(lán)牙適配器之后,進(jìn)行可配對(duì)設(shè)備搜索時(shí),首先判斷isDiscovering()的狀態(tài),如果此時(shí)狀態(tài)正忙,則通過(guò)cancelDiscovery()重置startDiscovery()的狀態(tài)后再進(jìn)行搜索;如果此時(shí)狀態(tài)空閑,則直接調(diào)用startDiscovery()進(jìn)行搜索。搜索完成后,點(diǎn)擊可配對(duì)設(shè)備列表中的設(shè)備即可通過(guò)connectToPairedEquip進(jìn)行設(shè)備配對(duì)。配對(duì)成功之后即可通過(guò)getOutputStream與getInputStream進(jìn)行通信,不過(guò)需注意,由于藍(lán)牙通信的對(duì)象為嵌入式片上系統(tǒng)(System on Chip,SOC),使用AT指令協(xié)議進(jìn)行通信,所以需要調(diào)用getHexBytes()方法將字符轉(zhuǎn)換為十六進(jìn)制才能正常通信。具體流程如圖2所示。手機(jī)控制應(yīng)用得到的結(jié)果如圖3所示,顯示了可配對(duì)設(shè)備與當(dāng)前配對(duì)設(shè)備。
3 核心代碼的設(shè)計(jì)與實(shí)現(xiàn)
昆蟲機(jī)器人集成了各種精密傳感器數(shù)據(jù)處理模塊,可以通過(guò)手機(jī)的控制應(yīng)用程序來(lái)實(shí)現(xiàn)左轉(zhuǎn)、右轉(zhuǎn)、直行等操作。在具體操作過(guò)程中,通過(guò)各傳感器來(lái)檢測(cè)昆蟲機(jī)器人周圍是否有障礙物,當(dāng)檢測(cè)到障礙物時(shí),則回避障礙物,從而實(shí)現(xiàn)自動(dòng)避障,在避開障礙物后繼續(xù)前進(jìn)。避障具體流程如圖4所示。
此處主要通過(guò)analogRead()函數(shù)來(lái)獲取左右光線傳感器與距離傳感器ADC接口與輸入模擬電壓相對(duì)應(yīng)的數(shù)值,然后將獲得的傳感器數(shù)值與設(shè)置的碰撞觸發(fā)閾值相比較來(lái)判斷周圍是否有障礙物。如果在直行過(guò)程中發(fā)現(xiàn)前方有障礙物,則昆蟲機(jī)器人會(huì)調(diào)整前、中、后舵機(jī)的角度后退幾步,根據(jù)左右光線傳感器數(shù)據(jù)來(lái)決定左轉(zhuǎn)或右轉(zhuǎn),從而實(shí)現(xiàn)避障;如果在左轉(zhuǎn)或右轉(zhuǎn)過(guò)程中發(fā)現(xiàn)存在障礙物,則會(huì)根據(jù)左右光線傳感器的數(shù)據(jù)來(lái)判斷應(yīng)后退還是保持不動(dòng)。
4 結(jié) 語(yǔ)
通過(guò)對(duì)智能昆蟲機(jī)器人與移動(dòng)設(shè)備交互通信的研究,給出了一個(gè)在Android環(huán)境下運(yùn)行的與智能昆蟲機(jī)器人交互的控制應(yīng)用程序,不僅可以應(yīng)用于手機(jī)、平板電腦等移動(dòng)設(shè)備,也可以在所有Android環(huán)境下使用。未來(lái)將對(duì)軟件進(jìn)行進(jìn)一步優(yōu)化改善,使其擁有更好的用戶體驗(yàn),達(dá)到比較穩(wěn)定的程度。后期可將成熟的產(chǎn)品推廣到智能家居,可穿戴設(shè)備等領(lǐng)域,同時(shí)還應(yīng)考慮該機(jī)器人的商業(yè)化發(fā)展方向,使其擁有更廣闊的應(yīng)用前景。
參考文獻(xiàn)
[1]徐揚(yáng)生.智能機(jī)器人引領(lǐng)高新技術(shù)發(fā)展[J].科學(xué)時(shí)報(bào), 2010(9):28-31.
[2]張乃風(fēng),張志先,陶偉謙.智能機(jī)器人技術(shù)研究進(jìn)展[J].機(jī)器人技術(shù)與應(yīng)用, 2012(6):9-11.
[3]譚民, 王碩.機(jī)器人技術(shù)研究進(jìn)展[J].自動(dòng)化學(xué)報(bào), 2013, 39(7):963-972.
[4]孫秋鳳.基于開源平臺(tái)Arduino的大學(xué)創(chuàng)客實(shí)踐探索[J].物聯(lián)網(wǎng)技術(shù), 2016, 6(12):112-113.
[5]蔡睿妍. Arduino的原理及應(yīng)用[J].電子設(shè)計(jì)工程, 2012,20(16):155-157.
[6]謝杰騰,顏曉文.基于Android手機(jī)語(yǔ)音和Arduino控制板的機(jī)器人控制系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2015,5(3):101-102.
[7]陸陽(yáng),喬鋼柱,譚瑛.基于Android的智能家居程序開發(fā)與研究[J].物聯(lián)網(wǎng)技術(shù),2014,4(3):31-32.
[8]李林.智能交互機(jī)器人實(shí)驗(yàn)平臺(tái)的結(jié)構(gòu)設(shè)計(jì)與系統(tǒng)集成[D].北京:北京大學(xué),2009.endprint