版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Broker 經(jīng)濟人,Proxy代理,Module模塊,method方法。這四個可以說是構成naoqi框架的主要內容,直接進行分析,主要的參考資料就是官方文檔。 Broker,直譯為經(jīng)紀人,主要完成兩項任務1,提供字典服務,能夠查找該broker下的Module及Method。2,提供網(wǎng)絡連接,使得模塊中方法能夠被外部模塊調用。在大多數(shù)情況下,你不需要考慮broker,可以視作透明的,將允許你像調用local module(本地模塊)一樣對 remote module(遠程模塊)進行調用。Proxy作為module的代理存在,在對module訪
2、問其內部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的構造函數(shù),
4、需要注意的是里面的modulename參數(shù),往往在進行初始化的時候將ALProxy替換為具體的Proxy,不需要再特別給出該參數(shù)值。同樣分析最后一行實際應用用的案例,其實是調用了 ALProxy (boost:shared_ptr< ALBroker > pBroker, const std:string &pModuleName, int pProxyMask=0, int timeout=0) 構造函數(shù),同樣省略modulename。 ModuleModule可以看做是簡單的類庫中的類,當類庫在autoload.init中加載的時候,會自動實例化mo
5、dule類,(調用構造函數(shù),及init()方法)。在module類的構造函數(shù)(繼承自ALModule)中你可以綁定方法。這將會向其broker廣告method名字及其方法,這樣該這些方法就可以被其他module調用了。Module 分為兩類,local module,remote module:Local module,將會被編譯成一個庫文件,只能在robot內部調用,執(zhí)行效率較高。是指相對于同一個broker中的module而言的。由于都在一個broker中,module之間的調用不必通過網(wǎng)絡,所以更加迅速,Remote module,將會被
6、編譯成一個可執(zhí)行文件,并且可以在機器人外部運行。Rmote module 可以方便的使用和調試,但是運行速度慢效率低。是相對于位于不同的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:雙向通道,兩側所有的module均可互聯(lián)。建立這種連接,在啟動module的時候要指定main broker的ip、port。因為你在建立broker連接的時候就已經(jīng)指定ip、port,所以在之后進行module調用的時候不需要再指明,直接利用名字進行proxy的創(chuàng)建。Proxy-broker:單向通道,proxy所代理的module可以訪問另一側所有的module,反之則不可以。你需要在你的module內部創(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內部API的調用,具體是實現(xiàn)獲取nao當前視覺內容,并顯示。程序執(zhí)行界面:在啟動時將直接指定nao IP地址,也就是naoqi broker所在的IP地址。這里將顯示nao的視覺信息:調用關鍵代碼:cpp view plaincopy1. /* Create a proxy to ALVideoDevice on the robot.*/ 2. ALVideoDeviceProxy camP
9、roxy(robotIp, 9559); 這里便是直接指定遠程broker的IP,Port,然后生成代理,而后可調用相應module,不再多說。方案二:制作遠程module,通過調用遠程module中的方法實現(xiàn)特定的功能,這里我實現(xiàn)了一個VisionModule,并實現(xiàn)了與機器人視覺相關的部分內容。啟動remote module界面如下:這里可以看出VisionModule監(jiān)聽的端口為:192.168.169.2:54012,可以看出是在PC端運行的。同時建立了與NAO(192.168.169.4:9559)的連接。利用test函數(shù)對該remote module
10、進行測試,嘗試調用幾個參數(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、我調用的是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)并形成樹結構,而每一個新生成的broker都有一個父broker直至樹的根節(jié)點。我便作此假設,remote module所生成的broker其實是naoqi broker的一個 子b
12、roker。在程序中又可以應用這樣的語句來創(chuàng)建proxy:ALVideoDeviceProxy camProxy(getParentBroker(); 從另一個方面印證了上述觀點。作為父broker理應能夠得到子broker中的全部信息(這句話有待推敲,并沒有找到確鑿的證據(jù)說明這一點,只是通過naoqi framework的 自省機制(introspection)推斷得來)。這樣我便得到了這樣的結論,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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 網(wǎng)絡文明培訓課件
- 《能源互聯(lián)網(wǎng)》課件
- 小班安全課件《狗狗來了》
- 廚具銷售培訓課件
- 共青科技職業(yè)學院《現(xiàn)代基礎化學》2023-2024學年第一學期期末試卷
- 贛州師范高等??茖W校《金融法》2023-2024學年第一學期期末試卷
- 贛州師范高等??茖W?!队耙晱V告設計》2023-2024學年第一學期期末試卷
- 《雞病解剖及診斷》課件
- 贛東學院《體質測量與評價》2023-2024學年第一學期期末試卷
- 甘孜職業(yè)學院《莎士比亞戲劇導讀》2023-2024學年第一學期期末試卷
- 應急預案監(jiān)理實施細則
- 基于英語學習活動觀的高中英語課堂教學實踐
- 焊工職業(yè)技能鑒定考試題庫及答案
- 2024年4月自考00159高級財務會計試題
- MOOC 工程材料學-華中科技大學 中國大學慕課答案
- 《中國高鐵作業(yè)設計方案-2023-2024學年科學冀人版》
- 招標代理服務服務方案
- 初一數(shù)學上冊有理數(shù)加減混合運算練習題及答案(共100題)
- 論蘇軾詩詞中的曠達風格
- 部編人教版八年級下冊英語同步訓練全套
- 運輸成本核算
評論
0/150
提交評論