智能昆蟲機(jī)器人與移動(dòng)設(shè)備交互通信的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引 言
近年來,隨著機(jī)器人技術(shù)的逐漸完善,國(guó)內(nèi)外對(duì)機(jī)器人技術(shù)的發(fā)展越來越感興趣,機(jī)器人技術(shù)已被認(rèn)為是未來高新產(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)力來支持機(jī)器人技術(shù)的研發(fā)。我國(guó)也越來越重視機(jī)器人技術(shù)的發(fā)展,清華大學(xué)、哈爾濱工程大學(xué)以及中科院等高校和研究所也積極推動(dòng)機(jī)器人技術(shù)的發(fā)展 [2]。機(jī)器人技術(shù)不僅涉及工業(yè)制造、野外深空深海勘探勘測(cè)、醫(yī)療服務(wù)、教育娛樂、家庭陪護(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 等軟件來實(shí)現(xiàn)功能[5]。Arduino 還提供了 USB 等接口,使其擴(kuò)展性更強(qiáng),用戶可以通過反復(fù)編程來實(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è)人士也可以按照自己的想法來設(shè)計(jì)開發(fā)。
隨著移動(dòng)設(shè)備和移動(dòng)機(jī)器人使用的頻繁、移動(dòng)互聯(lián)網(wǎng)的普及,人們對(duì)移動(dòng)設(shè)備和移動(dòng)機(jī)器人的用戶體驗(yàn)要求越來越高, 研究智能機(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ī)器人的交互可以通過無(wú)線通信來實(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ù)量傳輸問題,使得任何接入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.1m),并且在傳輸速率上也優(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)境來實(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)通過藍(lán)牙模塊來實(shí)現(xiàn)移動(dòng)設(shè)備和智能昆蟲機(jī)器人之間的通信。移動(dòng)設(shè)備在測(cè)試階段采用基于Android 系統(tǒng)的手機(jī),用戶通過手機(jī) App 進(jìn)行操作,然后App 通過調(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)牙模塊與杜邦線連接。在 Arduino軟件環(huán)境中,通過設(shè)置串口通信波特率即可進(jìn)行藍(lán)牙通信調(diào)試。在setu(p)函數(shù)中通過 Serial.begi(n9600)語(yǔ)句來初始化波特率,然后在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í),首先通過BluetoothAdapter獲取藍(lán)牙適配器對(duì)象,在打開藍(lán)牙、獲取藍(lán)牙適配器時(shí),可能需要用戶通過對(duì)話框進(jìn)行確認(rèn)。獲取藍(lán)牙適配器之后,進(jìn)行可配對(duì)設(shè)備搜索時(shí),首先判斷 isDiscovering()的狀態(tài),如果此時(shí)狀態(tài)正忙,則通過cancelDiscovery() 重置 startDiscovery()的狀態(tài)后再進(jìn)行搜索;如果此時(shí)狀態(tài)空閑,則直接調(diào)用 startDiscovery()進(jìn)行搜索。搜索完成后, 點(diǎn)擊可配對(duì)設(shè)備列表中的設(shè)備即可通過 connectToPairedEquip 進(jìn)行設(shè)備配對(duì)。配對(duì)成功之后即可通過 getOutputStream 與 getInputStream 進(jìn)行通信,不過需注意,由于藍(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ù)處理模塊,可以通過手機(jī)的控制應(yīng)用程序來實(shí)現(xiàn)左轉(zhuǎn)、右轉(zhuǎn)、直行等操作。在具體操作過程中,通過各傳感器來檢測(cè)昆蟲機(jī)器人周圍是否有障礙物,當(dāng)檢測(cè)到障礙物時(shí),則回避障礙物,從而實(shí)現(xiàn)自動(dòng)避障,在避開障礙物后繼續(xù)前進(jìn)。避障具體流程如圖 4 所示。
此處主要通過analogRead()函數(shù)來獲取左右光線傳感器與距離傳感器ADC 接口與輸入模擬電壓相對(duì)應(yīng)的數(shù)值,然后將獲得的傳感器數(shù)值與設(shè)置的碰撞觸發(fā)閾值相比較來判斷周圍是否有障礙物。如果在直行過程中發(fā)現(xiàn)前方有障礙物,則昆蟲機(jī)器人會(huì)調(diào)整前、中、后舵機(jī)的角度后退幾步,根據(jù)左右光線傳感器數(shù)據(jù)來決定左轉(zhuǎn)或右轉(zhuǎn),從而實(shí)現(xiàn)避障 ;如果在左轉(zhuǎn)或右轉(zhuǎn)過程中發(fā)現(xiàn)存在障礙物,則會(huì)根據(jù)左右光線傳感器的數(shù)據(jù)來判斷應(yīng)后退還是保持不動(dòng)。
4 結(jié) 語(yǔ)
通過對(duì)智能昆蟲機(jī)器人與移動(dòng)設(shè)備交互通信的研究,給 出了一個(gè)在 Android 環(huán)境下運(yùn)行的與智能昆蟲機(jī)器人交互的控 制應(yīng)用程序,不僅可以應(yīng)用于手機(jī)、平板電腦等移動(dòng)設(shè)備,也 可以在所有Android 環(huán)境下使用。未來將對(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)用 前景。