<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 多機(jī)器人的創(chuàng)新組合開發(fā)技術(shù)

          多機(jī)器人的創(chuàng)新組合開發(fā)技術(shù)

          作者:高煥堂 時(shí)間:2018-10-25 來源:電子產(chǎn)品世界 收藏

          作者 高煥堂 臺(tái)灣地區(qū)主席、廈門VR/AR協(xié)會(huì)榮譽(yù)會(huì)長兼總顧問

          本文引用地址:http://www.ex-cimer.com/article/201810/393379.htm

            除了制造產(chǎn)品之外,創(chuàng)造多臺(tái)的協(xié)同合作,也是很有趣的、具有商業(yè)價(jià)值的。就如同花卉,我們不一定要自己當(dāng)農(nóng)夫種花卉,其實(shí)開花店、插花、賣捧花或花束等,可能更詩情畫意、美不勝收呢。

          1 創(chuàng)新組合:多的協(xié)同開發(fā)

            大家都知道,目前最流行的手機(jī)是基于Android操作系統(tǒng)的手機(jī)。目前市場(chǎng)占有率大約高達(dá) 80%了。此外,Android是采取Apache軟件授權(quán)方式的開源軟件,成為人人可以免費(fèi)使用及自行修改的軟件平臺(tái)系統(tǒng)。

            的全名是:eam(Unified Framework for Robot Team)。它是高煥堂團(tuán)隊(duì)基于Android平臺(tái)的擴(kuò)充,而成為機(jī)器人的共享編程環(huán)境及整合運(yùn)行平臺(tái)。它逐漸發(fā)展成為AIoT的共享程序開發(fā)及整合執(zhí)行平臺(tái)。的上層是App(提供用戶接口),而UBOT的下層是插件(Plugin)來促進(jìn)機(jī)器人硬設(shè)備的客制化特性。而UBOT則是位于中間層的軟件框架(Framework),它是開源的軟件系統(tǒng)(圖1)。

            當(dāng)?shù)谌介_發(fā)者基于UBOT而開發(fā)出上層App時(shí),開發(fā)者可以自行決定其App是否開源或閉源,亦即該App可以不開源。同樣地,當(dāng)開發(fā)者基于UBOT而開發(fā)出連接到硬設(shè)備的客制化插件(Plugin)時(shí),仍由其開發(fā)者自行決定該插件程序是否開源或閉源,亦即該插件程序可以不開源。

            如上所述,在UBOT里,其應(yīng)用框架(App Framework)層是開源的,開發(fā)者可以將它匯入到Android Studio開發(fā)環(huán)境里使用,于是就可以使用您已經(jīng)熟悉的Android SDK來開發(fā)多機(jī)器人的創(chuàng)新整合應(yīng)用了,而不必花費(fèi)心力于各機(jī)器人廠家的不同SDK,無論是學(xué)習(xí)或開發(fā)都會(huì)更加事半功倍了。

            由于在開發(fā)多機(jī)器人的整合應(yīng)用時(shí),各機(jī)器人產(chǎn)品往往來自不同的廠商,各廠商也常推出針對(duì)自己產(chǎn)品的SDK(即 App開發(fā)環(huán)境)。此時(shí),開發(fā)者面臨多個(gè)SDK,各自獨(dú)立、不能兼容,就會(huì)遭遇開發(fā)工作的復(fù)雜性,變得困難重重了。

            其化解之道是:大家采用同一種SDK。在本文里,筆者建議采用Android SDK,讓大家都能使用多數(shù)人已經(jīng)熟悉的Android Studio來進(jìn)行App的開發(fā)工作,就可以省去學(xué)習(xí)各廠商SDK的時(shí)間和負(fù)擔(dān)了。

            例如,一旦您使用Android Studio + UBOT(如藍(lán)牙模塊)開發(fā)出來一支針對(duì)Ironbot機(jī)器人的App,若想繼續(xù)整合另一廠牌的Dobot機(jī)器人時(shí),就不必再花時(shí)間學(xué)習(xí)Android Studio和UBOT了,直接動(dòng)手開發(fā)約20%產(chǎn)品定制化的部分程序代碼即可了,例如不同廠牌(或型號(hào))的機(jī)器人,其傳遞信息的格式(Format)大多不相同,這就所謂的定制化部分。

            以此類推,如果想繼續(xù)整合更多個(gè)(不同廠牌)的機(jī)器人時(shí),一樣的不必花時(shí)間學(xué)習(xí)新的SDK,而迅速動(dòng)手開發(fā)約20%產(chǎn)品定制化的部分程序代碼即可。因而,學(xué)生的學(xué)習(xí)效率提高了,學(xué)習(xí)信心也提升了。

          2 整合通信:以藍(lán)牙技術(shù)為例

            藍(lán)牙設(shè)備能以固定的周期持續(xù)發(fā)送廣播,手機(jī)端App掃描(接收)到廣播后,解析廣播包,然后可進(jìn)行對(duì)設(shè)備的識(shí)別、配對(duì)、聯(lián)機(jī)和數(shù)據(jù)讀寫等。于是,您的手機(jī)就能掃描到周邊的藍(lán)牙設(shè)備所發(fā)出的藍(lán)牙信號(hào)了。接下來,就能進(jìn)一步與這些設(shè)備建立聯(lián)機(jī)(Connection),才能對(duì)這些設(shè)備進(jìn)行信息傳遞,例如從BLE設(shè)備讀取信息或把信息寫到BLE設(shè)備里,這些信息就包括了控制指令及相關(guān)的參數(shù)等。

            在Android手機(jī)里的軟件結(jié)構(gòu)里(圖2),由myActivity模塊提供UI畫面,例如讓用戶隨機(jī)選取一個(gè)RGB顏色,并依據(jù)該設(shè)備所能接受的信息格式,傳遞給myFacade去進(jìn)行信息傳送的任務(wù)。此時(shí),myFacade會(huì)通過Session來將信息傳送給BLEMessage,再轉(zhuǎn)送給IronbotBLEMsg。

            這IronbotBLEMsg接到從myFacade傳來的訊息之后,就存入隊(duì)列(Queue)里,然后依據(jù)先后順序,逐一從隊(duì)列里取出訊息傳送給Android的BLE模塊,然后以無線方式傳送給藍(lán)牙設(shè)備,此時(shí)履帶車上的LED燈的顏色就改變了。

          3 AI賦能:運(yùn)用語音AI的多機(jī)協(xié)同合作

            借助于UBOT/BLE框架的高度擴(kuò)充能力,手機(jī)里的UBOT/BLE模塊更能同步發(fā)送藍(lán)牙訊息給多臺(tái)機(jī)器人(如手臂和履帶車),順利指揮多機(jī)的協(xié)同合作,展開團(tuán)隊(duì)行動(dòng)。

            例如下圖里(如圖3),讓Zenbo透過WiFi來與UBOT手機(jī)通訊。這樣可以充分發(fā)揮Zenbo的AI語音功能,擔(dān)任迎賓服務(wù)者的角色。

            從圖3里,可以看到人們通過語音AI來和Zenbo機(jī)器人(圖3左上角)對(duì)話,然后Zenbo沒有手,就拿Dobot手臂(圖3右下角)來搭配起來,便能聽從客人的指示而準(zhǔn)確按下咖啡機(jī)(的按鈕),泡出客人想喝的咖啡了。

            此時(shí),如果再搭配匠客Ironbot機(jī)器人(圖3左下角)來端送咖啡給客人,將是更加體貼的服務(wù)了。也就是,經(jīng)由同一支UBOT/Android手機(jī)來精準(zhǔn)安排Dobot泡咖啡,并且把泡好的咖啡交給Ironbot機(jī)器人,然后端送到客人面前。

            在這個(gè)咖啡館的范例里,是以Ironbot、Dobot和Zenbo三種機(jī)器人為主角,來進(jìn)行創(chuàng)新組合,搭配語音AI的軟硬整合應(yīng)用案例,其中闡述了AI機(jī)器人的軟硬整合技術(shù),包括AI機(jī)器人的平臺(tái)(Platform)架構(gòu),并詳細(xì)說明其開源的軟件原始碼。這非常有助于學(xué)習(xí)AI時(shí)代的科技知識(shí)和體驗(yàn)。隨著AI(人工智能)與機(jī)器學(xué)習(xí)能力的提升,與物聯(lián)網(wǎng)(IoT)結(jié)合機(jī)器人的創(chuàng)新應(yīng)用,將會(huì)更上一層樓。而以Android開發(fā)環(huán)境來演練Java和Python程序設(shè)計(jì)語言,將形成一個(gè)先進(jìn)的智能物聯(lián)網(wǎng)(AIoT)的程序設(shè)計(jì)學(xué)習(xí)環(huán)境。

          4 穩(wěn)定結(jié)構(gòu):善用Android的多進(jìn)程機(jī)制

            最簡單的情況是讓兩臺(tái)機(jī)器人(例如一臺(tái)Dobot機(jī)器手臂和一臺(tái)Ironbot履帶車)能隨時(shí)做創(chuàng)新組合、協(xié)同合作。當(dāng)然也能進(jìn)一步擴(kuò)充為三或更多臺(tái)的機(jī)器人,并且讓它們進(jìn)行更多花樣的創(chuàng)新組合、協(xié)同合作(圖5)。

            為了兼顧擴(kuò)充性和穩(wěn)定性,在Android手機(jī)里可以把機(jī)器人的相關(guān)軟件模塊,各自安排在不同的進(jìn)程(Process)里,例如這三只機(jī)器人的相關(guān)類別,各加載到不同的進(jìn)程里執(zhí)行(圖6)。

            在這個(gè)架構(gòu)里,它們各自的相關(guān)類別都在各自的進(jìn)程里執(zhí)行,可以提升整個(gè)App的穩(wěn)定性、安全性、擴(kuò)充性和并行性等。

          5 打造生態(tài):基于UBOT的開放API

            目前的手機(jī)市場(chǎng)中,Android平臺(tái)的App數(shù)量已經(jīng)超過400萬了。基于其龐大的客戶群,我們巧妙地從Android平臺(tái)延伸出UBOT共享平臺(tái),將可替各種機(jī)器人產(chǎn)品,招來龐大的App開發(fā)者和使用群。同時(shí),UBOT平臺(tái)也來支撐眾多的創(chuàng)客們來進(jìn)行軟硬件產(chǎn)品的創(chuàng)新。

            因此,UBOT可帶給App開發(fā)者許多幫助。就像Android平臺(tái)一樣迅速累積許多App開發(fā)者。這些App只要稍做調(diào)整,就能執(zhí)行于新產(chǎn)品上,因而UBOT迅速為新產(chǎn)品帶來眾多的App,非常有助于創(chuàng)客的新產(chǎn)品迅速進(jìn)入市場(chǎng)而獲利。

            至于下層的機(jī)器人硬件廠商,為了能迅速獲得更多App,其機(jī)器人產(chǎn)品就會(huì)來支持這統(tǒng)一而開放的API。于是,上層累積愈多App,下層也會(huì)吸引愈多的機(jī)器人產(chǎn)品,上層和下層相互加乘,就形成一個(gè)蓬勃發(fā)展的生態(tài)(Ecosystem)了。

          6 開放API:掌握API,才有話語權(quán)

            在本文里,筆者拿UBOT機(jī)器人聯(lián)合平臺(tái)來做說明。并且拿Zenbo、Ironbot和Dobot三種機(jī)器人產(chǎn)品來組合創(chuàng)新,闡述最基礎(chǔ)的機(jī)器人(Robot)軟硬整合、共享平臺(tái)、開放API、以及App的開發(fā)技術(shù)。其中的核心要素就是:API。掌握平臺(tái)API的制定權(quán),就能成為生態(tài)的盟主。此外,還要大膽開源軟件和開放API,就能促進(jìn)生態(tài)蓬勃發(fā)展。最后,也歡迎您參閱筆者的新書:《AI機(jī)器人、藍(lán)牙與Android整合開發(fā)技術(shù)》。

            本文來源于《電子產(chǎn)品世界》2018年第11期第81頁,歡迎您寫論文時(shí)引用,并注明出處。



          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();