大家都知道,目前最流行的手機是基於 Android 作業系統的手機,市場佔有率高達約80%;此外,Android採取Apache軟體授權方式的開源軟體,成為人人可以免費使用及自行修改的軟體平台系統。UBOT的全名是:UBOTeam Unified Framework for Ro-bot Team)。它是高煥堂團隊基於Android平台的擴充,而成為機器人的共用程式設計環境及整合運行平台,它逐漸發展成為AIoT的共用程式開發及整合執行平台。UBOT的上層是App(提供使用者介面);下層是外掛程式(Plugin)來促進機器人硬體設備的客制化特性;而UBOT則是位於中間層 的軟體框架(Framework),它是開源的軟體系統(圖1)。
當協力廠商開發者基於UBOT而開發出上層App時,開發者可以自行決定其 App是否開源或閉源,亦即該App可以不開源;同樣地,當開發者基於UBOT 而開發出連接到硬體設備的客制化外掛程式(Plugin)時,仍由其開發者自行決定該外掛程式是否開源或閉源,亦即該外掛程式可以不開源。
如上所述,在UBOT裡,其應用框架(App Framework)層是開源的,開發者可以將它匯入到Android Studio開發環境裡使用,於是就可以使用您已經熟悉的Android SDK來開發多機器人的創新整合應用了,而不必花費心力於各機器人廠家的不同SDK,無論是學習或開發都將更加事半功倍。
由於在開發多機器人的整合應用時,各機器人產品往往來自不同的廠商,各廠商也常推出針對自己產品的 SDK(即App開發環境)。此時,開發者面臨多個SDK,各自獨立、不能相容,就會遭遇開發工作的複雜性,而變得困難重重。
其化解之道是:大家採用同一種SDK。在本文裡,筆者建議採用Android SDK,讓大家 都能使用多數人已經熟悉的Android Studio來進行App的開發工作,就可以省去學習各廠商SDK的時間和負擔。
例如,一旦使用Android Studio +UBOT(如藍牙模組)開發出來一支針對Ironbot機器人的 App。若想繼續整合另一廠牌的Dobot機器人時,就不必再花時間學習Android Studio和 UBOT,直接動手開發約 20% 產品客制化的部分程式碼即可,例如不同廠牌(或型號)的機器人,其傳遞訊息的格式(Format)大多不相同,這就是所謂的客製化部分。
以此類推,如果想繼續整合更多個(不同廠牌)的機器人時,一樣不必花時間學習新的 SDK,而迅速動手開發約 20% 產品客客製化的部分程式碼即可。因而,學生的學習效率提高、學習信心也提升了。
整合通信:以藍牙技術為例
藍牙設備能以固定的週期持續發送廣播,手機端App掃瞄(接收)到廣播後,解析廣播包,然後可進行以設備的識別、配對,連線和資料讀寫等。
於是,使用者的手機就能掃瞄到周邊的藍牙設備所發出的藍牙訊號。接下來,就能進一步與這些設備建立連線(Connection),才能對這些設備進行訊息傳遞,例如從BLE設備讀取資訊或把資訊寫到BLE設備裡,這些資訊就包括了控制指令及相關的參數等。
在Android手機裡的軟體結構裡(圖2),由myActivity模組提供 UI畫面,例如讓使用者隨機地選取一個RGB顏色,並依據該設備所能接受的訊息格式,傳遞給myFa-cade去進行訊息傳送的任務。此時,myFacade會透過Session來將訊息傳送給BLEMessage,再轉送給IronbotBLEMsg。
IronbotBLEMsg接到從myFacade傳來的訊息之後,就將訊息存入佇列(Queue)裡,然後依據先後順序,逐一從佇列裡取出訊息傳送給Android的BLE模組,然後以無線方式傳送給藍牙設備,此時履帶車上的LED燈的顏色就改變了。
AI賦能:運用語音AI的多機協同合作
藉助於UBOT/BLE框架的高度擴充能力,手機裡的UBOT/BLE模組更能同步發送藍牙訊息給多台機器人(如手臂和履帶車),順利指揮多機的協同合作,展開團隊行動。
例如圖3裡,讓 Zenbo 透過Wi-Fi來與 UBOT手機通訊,這樣可以充分發揮 Zenbo的AI語音功能,擔任迎賓服務者的角色。
從圖3裡,可以看人們透過語音AI來和Zenbo機器人(在此圖的左上角)對話,然後Zenbo沒有手,就拿Dobot手臂(右下角)來搭配起來,便能聽從客人的指示而準確按下咖啡機(的按鈕),泡出客人想喝的咖啡了。
此時,如果再搭配匠客Ironbot機器人(左下角)來端送咖啡給客人,將是更加體貼的服務了。也就是,經由同一支UBOT/Android手機來精準安排Dobot泡咖啡,並且把泡好的咖啡交給Ironbot機器人,然後端送到客人面前。
在這個咖啡館的範例裡,是以 Ironbot、Dobot和 Zenbo三種機器人為主角,來進行創新組合,搭配語音AI的軟硬整合應用案例,其中闡述了AI機器人的軟硬整合技術,包括AI機器人的平台(Platform)架構,並詳細說明其開源的軟體原始碼。這非常有助於學習AI時代的科技知識和體驗。隨著AI(人工智慧)與機器學習能力的提升,與物聯網(IoT)結合機器人的創新 應用,將會更上一層樓。而以Android開發環境來演練 Java和Python程式設計語言,將形成一個先進的智慧物聯網(AIoT)的程式設計學習環境。
穩定結構:善用Android的多進程機制
最簡單的情況是讓兩台機器人(例如,一台Dobot機 器手臂和一台Ironbot履帶車)能隨時做創新組合、協同合作。當然也能進一步擴充為三或更多台的機器人,並且讓它們進行更多花樣的創新組合、協同合作。
為了兼顧擴充性和穩定性,在Android手機裡可以把數台機器人的相關軟體模組,各自安排在不同的進程(Process)裡,例如這三隻機器人的相關類別,各載入到不同的進程裡執行(圖5)。在這個架構裡,它們各自的相關類別都在各自的進程裡執行,可以提升整個App的穩定性、安全性、擴充性和並行性等。
打造生態:基於UBOT的開放API
目前的手機市場中,Android平台的App數量已經超過4百萬了。基於其龐大的客戶群,我們巧妙地從An-droid平台延伸出UBOT共用平台,將可替各種機器人產品,招來龐大的App開發者和使用群。
同時,UBOT平台也來支撐眾多的創客們來進行軟硬 體產品的創新。因此,UBOT可帶給App開發者許多幫助。就像Android平台一樣迅速累積許多App開發者。這些App只要稍做調整,就能執行於新產品上,因而 UBOT迅速為新產品帶來眾多的App,非常有助於創客的新產品迅速進入市場而獲利。
至於下層的機器人硬體廠商,為了能迅速獲得更多 App,其機器人產品就會來支援這統一而開放的API。於是,上層累積愈多App,下層也會吸引愈多的機器人產品,上層和下層相互加乘,就形成一個蓬勃發展的「生態(Ecosystem)」了。
開放API:掌握API,才有話語權
在本文裡,筆者拿UBOT機器人聯合平台來做說明,並且拿Zenbo、Ironbot和Dobot三種機器人產品來組合創新,闡述最基礎的機器人(Robot)軟硬整合、共用平台、開放API、以及App的開發技術。
其中的核心要素就是:API。掌握平台API的制定權,就能成為生態的盟主。此外,還要大膽開源軟體和開放API,就能促進生態蓬勃發展。