版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Broker 經(jīng)濟人,Proxy代理,Module模塊,method方法。這四個可以說是構(gòu)成naoqi框架的主要內(nèi)容,直接進行分析,主要的參考資料就是官方文檔。 Broker,直譯為經(jīng)紀人,主要完成兩項任務1,提供字典服務,能夠查找該broker下的Module及Method。2,提供網(wǎng)絡連接,使得模塊中方法能夠被外部模塊調(diào)用。在大多數(shù)情況下,你不需要考慮broker,可以視作透明的,將允許你像調(diào)用local module(本地模塊)一樣對 remote module(遠程模塊)進行調(diào)用。Proxy作為module的代理存在,在對module訪
2、問其內(nèi)部method的時候,總是通過proxy來進行操作的。有兩種思路來創(chuàng)建一個proxy:1,直接使用module的名字。AL:ALProxy proxy = AL:ALProxy(<modulename>);在這種情況下,必須要求你運行的代碼與你將要生成的module在同一個broker中。2,使用 module 名字,及broker的ip、port。AL:ALProxy proxy = AL:ALProxy(<modulename>, <ip_adress>,
3、160;<port_number>);在這種情況下,module一定是位于你指定ip的broker中。也就是說,必須保證 明確module所在的位置,如果位于同一個broker中,則不需要指明,如果位于不同的broker中,則需要明確broker的ip-addr,prot-number。在實際應用中可能會用到AL:ALProxy proxy = AL:ALProxy(boost:shared_ptr<AL:ALBroker> broker);這里可以參考文檔中C+ API 中的 alcommon -> Proxy的構(gòu)造函數(shù),
4、需要注意的是里面的modulename參數(shù),往往在進行初始化的時候?qū)LProxy替換為具體的Proxy,不需要再特別給出該參數(shù)值。同樣分析最后一行實際應用用的案例,其實是調(diào)用了 ALProxy (boost:shared_ptr< ALBroker > pBroker, const std:string &pModuleName, int pProxyMask=0, int timeout=0) 構(gòu)造函數(shù),同樣省略modulename。 ModuleModule可以看做是簡單的類庫中的類,當類庫在autoload.init中加載的時候,會自動實例化mo
5、dule類,(調(diào)用構(gòu)造函數(shù),及init()方法)。在module類的構(gòu)造函數(shù)(繼承自ALModule)中你可以綁定方法。這將會向其broker廣告method名字及其方法,這樣該這些方法就可以被其他module調(diào)用了。Module 分為兩類,local module,remote module:Local module,將會被編譯成一個庫文件,只能在robot內(nèi)部調(diào)用,執(zhí)行效率較高。是指相對于同一個broker中的module而言的。由于都在一個broker中,module之間的調(diào)用不必通過網(wǎng)絡,所以更加迅速,Remote module,將會被
6、編譯成一個可執(zhí)行文件,并且可以在機器人外部運行。Rmote module 可以方便的使用和調(diào)試,但是運行速度慢效率低。是相對于位于不同的broker中的module而言的。Remote module之間的通信必須是通過網(wǎng)絡進行的,一個remote module 需要借由broker來與另一broker中的module進行通信。網(wǎng)絡通信是通過SOAP協(xié)議進行的。兩個不同broker中的module(換句話說兩者相對是 remote module)此時存在兩種通訊方式,broker-broker,proxy-broker。Broker-
7、broker:雙向通道,兩側(cè)所有的module均可互聯(lián)。建立這種連接,在啟動module的時候要指定main broker的ip、port。因為你在建立broker連接的時候就已經(jīng)指定ip、port,所以在之后進行module調(diào)用的時候不需要再指明,直接利用名字進行proxy的創(chuàng)建。Proxy-broker:單向通道,proxy所代理的module可以訪問另一側(cè)所有的module,反之則不可以。你需要在你的module內(nèi)部創(chuàng)建一個proxy,同時指定想要連接的broker的ip、port。 案例分析:現(xiàn)有NAO(IP:192.168.169.4),PC(IP:192.168
8、.168.2)實現(xiàn)多組方式通訊。方案一:不制作module,直接C+編程實現(xiàn)對NAO內(nèi)部API的調(diào)用,具體是實現(xiàn)獲取nao當前視覺內(nèi)容,并顯示。程序執(zhí)行界面:在啟動時將直接指定nao IP地址,也就是naoqi broker所在的IP地址。這里將顯示nao的視覺信息:調(diào)用關(guān)鍵代碼:cpp view plaincopy1. /* Create a proxy to ALVideoDevice on the robot.*/ 2. ALVideoDeviceProxy camP
9、roxy(robotIp, 9559); 這里便是直接指定遠程broker的IP,Port,然后生成代理,而后可調(diào)用相應module,不再多說。方案二:制作遠程module,通過調(diào)用遠程module中的方法實現(xiàn)特定的功能,這里我實現(xiàn)了一個VisionModule,并實現(xiàn)了與機器人視覺相關(guān)的部分內(nèi)容。啟動remote module界面如下:這里可以看出VisionModule監(jiān)聽的端口為:192.168.169.2:54012,可以看出是在PC端運行的。同時建立了與NAO(192.168.169.4:9559)的連接。利用test函數(shù)對該remote module
10、進行測試,嘗試調(diào)用幾個參數(shù)設定函數(shù),測試界面如下:client端:module端:這里test程序中生成的proxy同樣指定為nao的IP地址,代碼如下:cpp view plaincopy1. boost:shared_ptr<AL:ALProxy> testProxy 2. = boost:shared_ptr<AL:ALProxy>(new AL:ALProxy("VisionModule", robotIP, port); 這就有點意思了,
11、我調(diào)用的是visionmodule,這是個naoqi中并不存在的module,但是卻仍然通過nao的broker進行創(chuàng)建代理。查看文檔我找到這樣一句話,Brokers can be connected to each other to form a tree where each broker has parent broker until the base of the tree.意思就是多個broker可以互聯(lián)并形成樹結(jié)構(gòu),而每一個新生成的broker都有一個父broker直至樹的根節(jié)點。我便作此假設,remote module所生成的broker其實是naoqi broker的一個 子b
12、roker。在程序中又可以應用這樣的語句來創(chuàng)建proxy:ALVideoDeviceProxy camProxy(getParentBroker(); 從另一個方面印證了上述觀點。作為父broker理應能夠得到子broker中的全部信息(這句話有待推敲,并沒有找到確鑿的證據(jù)說明這一點,只是通過naoqi framework的 自省機制(introspection)推斷得來)。這樣我便得到了這樣的結(jié)論,naoqi broker 作為 test application 與 vision module (remote module) 的中介存在,在test看來,vision module 也不過是 naoqi broker 中的一個 module,并不需要知道它是remote module 還是 local module。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Trilysine-TFA-生命科學試劑-MCE-4187
- KIF18A-IN-15-生命科學試劑-MCE-5317
- 4-4-Dimethoxyoctafluorobiphenyl-生命科學試劑-MCE-5198
- 1-3-Dinervonoyl-glycerol-生命科學試劑-MCE-1243
- 2025年度特色民宿體驗住宿協(xié)議
- 二零二五年度消防設備定制設計與銷售合同
- 二零二五年度農(nóng)產(chǎn)品線上線下一體化購銷合同標準
- 施工現(xiàn)場施工防傳染病傳播制度
- 個人兼職用工合同模板
- 鄉(xiāng)村別墅租賃合同樣本
- 老師呀請你別生氣教學反思
- 2023年北京市平谷區(qū)中考英語二模試卷
- 變壓器更換施工方案
- 【高分復習筆記】陳澄《新編地理教學論》筆記和課后習題詳解
- 安徽新宸新材料有限公司年產(chǎn)6000噸鋰離子電池材料雙氟磺酰亞胺鋰項目環(huán)境影響報告書
- 日本酒類消費行業(yè)市場分析報告
- GB/T 29594-2013可再分散性乳膠粉
- 西子奧的斯電梯ACD2調(diào)試說明書
- 成長感恩責任高中主題班會-課件
- 建設項目全過程工程咨詢服務指引(咨詢企業(yè)版)(征求意見稿)
- 分手的協(xié)議書模板(5篇)
評論
0/150
提交評論