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