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