專利名稱::網(wǎng)絡(luò)機(jī)器人系統(tǒng)以及其中的通信方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種在機(jī)器人系統(tǒng)中通信的方法和系統(tǒng),具體而言,涉及一種用于經(jīng)由網(wǎng)絡(luò)來分布式處理機(jī)器人功能的網(wǎng)絡(luò)機(jī)器人系統(tǒng),并且涉及在該網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法。本工作由MIC/IITA的IT研發(fā)計(jì)劃支持[2005-S-031,DevelopmentoftheInfraSystemforURCService]。
背景技術(shù):
:通常,機(jī)器人具有三個(gè)功能元素,包括感測外部環(huán)境、基于該感測信息做出判斷以及根據(jù)判斷結(jié)果執(zhí)行,從而被裝備有用于處理這些功能的設(shè)備。然而,為了向機(jī)器人添加不同的或新的功能,需要復(fù)雜的配置和昂貴的設(shè)備,從而使成本提高。因此,為了提供價(jià)格比較低廉的機(jī)器人,正在開發(fā)用于經(jīng)由網(wǎng)絡(luò)來分布式處理機(jī)器人功能的網(wǎng)絡(luò)機(jī)器人系統(tǒng)。通常,網(wǎng)絡(luò)機(jī)器人系統(tǒng)由包括多個(gè)機(jī)器人客戶機(jī)和服務(wù)器的分布式系統(tǒng)組成,其中,通過經(jīng)由通信中間件在機(jī)器人客戶機(jī)與服務(wù)器之間交換消息來執(zhí)行網(wǎng)絡(luò)通信。在此情況下,所述中間件并入了面向?qū)ο蟾拍畈?zhí)行遠(yuǎn)程方法調(diào)用(remotemethodinvocation,RMI),并且包括分布式組件對象模型(distributedcomponentobjectmodel,DCOM)、公共對象請求代理體系結(jié)構(gòu)(commonobjectrequestbrokerarchitecture,CORBA)、遠(yuǎn)程方法調(diào)用(RMI)和可擴(kuò)展標(biāo)記語言(XML)網(wǎng)頁服務(wù)的其它各種方法也已經(jīng)被提出并被采用。然而,這些類型的中間件無法適宜地滿足需要,因此不適合用于機(jī)器人和服務(wù)器之間。也就是說,由于DCOM或RMI局限于特定的操作系統(tǒng)或語言,因而它們不能有效用于機(jī)器人的各種操作系統(tǒng)和語言。另一方面,雖然CORBA支持各種操作系統(tǒng)和語言,但是因?yàn)樗敝匾灾劣诓荒馨惭b到像嵌入系統(tǒng)那樣的具有相對有限資源的設(shè)備環(huán)境中,所以使用價(jià)值較低。此夕卜,XML網(wǎng)頁服務(wù)使用XML格式的消息,這種格式的消息大小較大并且響應(yīng)慢。而且,由于它們是基于超級文本傳輸協(xié)議(HTTP)的,因此難以使用它們來訪問專用網(wǎng)絡(luò)(privatenetwork)等等。此外,網(wǎng)絡(luò)機(jī)器人系統(tǒng)具有有限的資源,不能夠傳輸被長期執(zhí)行的操作和諸如在處理導(dǎo)航、語音合成、流送數(shù)據(jù)等時(shí)的大型數(shù)據(jù)。因此,現(xiàn)有的通信中間件不適合用于網(wǎng)絡(luò)機(jī)器人系統(tǒng)中。
發(fā)明內(nèi)容本發(fā)明的一個(gè)方面提供一種網(wǎng)絡(luò)機(jī)器人系統(tǒng)以及在該網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,在該網(wǎng)絡(luò)機(jī)器人系統(tǒng)中經(jīng)由網(wǎng)絡(luò)執(zhí)行外部傳感功能和外部處理功能。本發(fā)明的一個(gè)方面還提供一種網(wǎng)絡(luò)機(jī)器人系統(tǒng)以及在該網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,該網(wǎng)絡(luò)機(jī)器人系統(tǒng)支持被長期執(zhí)行的搡作和諸如在機(jī)器人導(dǎo)航、機(jī)器人或軟件機(jī)器人中的一個(gè)的語音合成以及圖像處理等等中的大型數(shù)據(jù)的發(fā)送。本發(fā)明的一個(gè)方面還提供一種網(wǎng)絡(luò)機(jī)器人系統(tǒng)以及在該網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,該網(wǎng)絡(luò)機(jī)器人系統(tǒng)提供改進(jìn)的數(shù)據(jù)編碼方法用于與具有有限資源的機(jī)器人進(jìn)行高效通信。根據(jù)本發(fā)明的一個(gè)方面,提供一種在網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,該網(wǎng)絡(luò)機(jī)器人系統(tǒng)具有處理多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信的中間件,所述方法包括預(yù)先設(shè)置中間件的通信框架,以用于通過使用多個(gè)傳感器和服務(wù)器的分布式處理機(jī)器人的功能;以及通過使用預(yù)先設(shè)置的通信框架,執(zhí)行多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信,其中,根據(jù)從機(jī)器人調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小執(zhí)行同步和異步操作中的一個(gè)。根據(jù)本發(fā)明的另一個(gè)方面,提供一種網(wǎng)絡(luò)機(jī)器人系統(tǒng),包括機(jī)器人,其通過識別外部環(huán)境信息來提供服務(wù)的;多個(gè)傳感器,用于分布式處理機(jī)器人的感測外部環(huán)境信息的功能;服務(wù)器,用于分布式處理機(jī)器人的根據(jù)所述外部環(huán)境信息的服務(wù)處理功能;中間件,其連接位于遠(yuǎn)處的多個(gè)傳感器、服務(wù)器和機(jī)器人,并預(yù)先設(shè)置用于該多個(gè)傳感器、服務(wù)器和機(jī)器人之間的遠(yuǎn)程通信,其中,所述中間件根據(jù)從機(jī)器人調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小執(zhí)行同步操作和異步操作。從以下結(jié)合附圖的詳細(xì)說明,將更清楚地理解本發(fā)明的上述及其它方面、特征和其它優(yōu)點(diǎn),附圖中圖1是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)視圖2是示出了在通用分布式系統(tǒng)中的遠(yuǎn)程方法調(diào)用(RMI)的概念的視圖3是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信層的結(jié)構(gòu)視圖4是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的異步操作層的通信處理的流程圖5是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的機(jī)器人與服務(wù)器之間傳輸?shù)臄?shù)據(jù)格式的視圖;以及與服務(wù)器之間傳輸?shù)南⒏袷降囊晥D。具體實(shí)施例方式現(xiàn)在將參照附圖詳細(xì)說明本發(fā)明的示范性實(shí)施例。應(yīng)該注意的是,貫穿附圖,相同的參考標(biāo)記用來表示相同或相似的部件。在以下的描述中,眾所周知的功能以及結(jié)構(gòu)沒有詳細(xì)說明,以免它們在不必要的細(xì)節(jié)上模糊本發(fā)明。在描述根據(jù)本發(fā)明的示范性實(shí)施例的通信裝置和方法之前,對于本發(fā)明的示范性實(shí)施例可以考慮下列條件。首先,不僅考慮到計(jì)算環(huán)境,而且考慮到諸如具有相對有限資源的嵌入式系統(tǒng)這樣的設(shè)備環(huán)境,由于網(wǎng)絡(luò)機(jī)器人系統(tǒng)需要輕量(light)協(xié)議來最小化傳輸消息,所述傳輸消息是以非常簡單的二進(jìn)制格式編碼。第二,考慮到以各種操作系統(tǒng)或語言開發(fā)的應(yīng)用程序,網(wǎng)絡(luò)機(jī)器人系統(tǒng)應(yīng)該能夠獨(dú)立于特定的平臺或語言運(yùn)行。第三,由于網(wǎng)絡(luò)機(jī)器人系統(tǒng)采用相對不穩(wěn)定的無線通信,所以在處理通信的中斷中,中斷之后的再連接對應(yīng)用開發(fā)人員應(yīng)該盡可能的清楚。第四,應(yīng)該為網(wǎng)絡(luò)機(jī)器人系統(tǒng)考慮用于有效處理和傳輸諸如語音、圖像等這樣的大型數(shù)據(jù)的方法?;谏鲜隹紤],根據(jù)本發(fā)明的示范性實(shí)施例提出了網(wǎng)絡(luò)機(jī)器人系統(tǒng)的通信系統(tǒng)。在下文中,將詳細(xì)說明用于通信的方法和裝置,其中不同類型的機(jī)器人通過利用諸如語音識別、圖傳_識別、狀態(tài)感知(situationawareness)、機(jī)器人控制命令這樣的各種功能以及從外部服務(wù)器計(jì)算機(jī)所提供的機(jī)器人服務(wù)來提供各種服務(wù)?,F(xiàn)在,將描述根據(jù)本發(fā)明示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)的結(jié)構(gòu)。圖1是根據(jù)本發(fā)明的示范性實(shí)施例,舉例說明了網(wǎng)絡(luò)機(jī)器人系統(tǒng)100的結(jié)構(gòu)的結(jié)構(gòu)圖。參見圖1,網(wǎng)絡(luò)機(jī)器人系統(tǒng)100包括多個(gè)機(jī)器人110、服務(wù)器120以及多個(gè)傳感器130、以及用于使能它們之間的通信的中間件140。多個(gè)機(jī)器人110中的每一個(gè)均是具有基本的感測和處理能力的低成本硬件的機(jī)器人,并且其語音和圖像識別功能由高容量服務(wù)器120支持。所述服務(wù)器120可以包括語音識別服務(wù)器、圖象識別服務(wù)器、狀態(tài)識別服務(wù)器和授權(quán)服務(wù)器。服務(wù)器120收集并分配由狀態(tài)識別服務(wù)器所獲得的關(guān)于外部環(huán)境的感測信息和關(guān)于用戶的狀態(tài)信息,并且將該信息發(fā)送到多個(gè)機(jī)器人110。多個(gè)傳感器130被嵌入周圍環(huán)境中,并且經(jīng)由中間件140將感測信息發(fā)送到服務(wù)器120。中間件140使能多個(gè)機(jī)器人110與服務(wù)器120之間的通信。因此,多個(gè)機(jī)器人110可以利用服務(wù)器120的語音、圖像和狀態(tài)識別功能,并且服務(wù)器120可以定制命令,諸如傳送命令到機(jī)器人110?,F(xiàn)在將更加詳細(xì)地說明中間件140的結(jié)構(gòu)。將參照圖2簡要地描述根據(jù)在通用分布式系統(tǒng)中的中間件的結(jié)構(gòu)對遠(yuǎn)程控制調(diào)用的處理。然后,將描述根據(jù)本發(fā)明的示范性實(shí)施例的、由現(xiàn)有分布式通信中間件擴(kuò)展而來的中間件結(jié)構(gòu)。參見圖2,通常,中間件可以包括存根(stub)和骨架(skeleton)傳輸控制協(xié)議(TCP)層12、用于編碼和解碼的串行化(serialization)和解串(deserialization)層13和14、以及傳輸(TCP)層15。在通用中間件中,遠(yuǎn)程控制調(diào)用包括客戶機(jī)11通過利用由接口定義語言(IDL)編譯程序所生成的存根12來請求遠(yuǎn)程調(diào)用。然后,在下一個(gè)串行化層13中調(diào)用信息被編碼并打包(pack),并且經(jīng)由傳輸層15被發(fā)送。在一般操作的情況下,首先確定調(diào)用的可行性,然后執(zhí)行實(shí)際的調(diào)用。然后,服務(wù)器在解串層14里解碼從中間件發(fā)送的包括調(diào)用信息的消息并調(diào)用對象。作為調(diào)用的結(jié)果,對象在服務(wù)器中被編碼并被發(fā)送回客戶機(jī)。也就是說,從服務(wù)對象中所獲得的結(jié)果在串行化層13中被編碼并經(jīng)由傳輸層15發(fā)送到客戶機(jī)應(yīng)用11。在下文中,將參照附圖描述根據(jù)本發(fā)明的示范性實(shí)施例的、從通用中間件的上述結(jié)構(gòu)擴(kuò)展而來的中間件。圖3是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信層結(jié)構(gòu)的結(jié)構(gòu)圖。參見圖3,通信中間件140包括存根和骨架層210、異步操作層220、遠(yuǎn)程引用層230和傳輸層240,并且通過消息傳輸來執(zhí)行遠(yuǎn)程調(diào)用。存根以及骨架層210是在實(shí)際調(diào)用對象的時(shí)候由請求調(diào)用對象的客戶機(jī)實(shí)際調(diào)用的層。在此情況下,存根(代理對象)211是在客戶機(jī)一側(cè)請求調(diào)用代理對象的一方,以及骨架層212是接收調(diào)用請求的一方。異步操作層220是用于執(zhí)行異步操作,以便在進(jìn)行請求以后立即將諸如在導(dǎo)航、語音合成等中被長期執(zhí)行的操作發(fā)回,并且在以后需要時(shí)檢查結(jié)果。在此情況下,用于執(zhí)行異步操作的函數(shù)被定義為操作處理類型,并且異步操作層220返回被長期執(zhí)行的操作的對象。這種操作處理提供這樣的接口,其能夠檢查長期異步操作的狀態(tài)、控制該長期異步操作并獲得該長期異步操作的結(jié)果。異步操作層220包括操作處理器221和操作適配器222。操作適配器222包括具有訪問控制器223和鎖定管理器224、調(diào)度器225和流泵226的訪問中介(accessmediator)。在此情況下,異步操作之外的操作不通過異步操作層220。操作處理器221負(fù)責(zé)在客戶機(jī)一側(cè)處理由操作處理的接口定義的異步操作,并將執(zhí)行操作的請求發(fā)送到服務(wù)器一側(cè)的操作適配器222。操作適配器222為處理由在客戶機(jī)一側(cè)的操作處理器221所請求的每個(gè)異步操作分配獨(dú)立線程,并將該線程插入到調(diào)度器225的隊(duì)列。在此情況下,如果其是多方會話(multi-session),則正在一個(gè)會話中被處理的一項(xiàng)操作也可以被另一個(gè)會話請求。因此,鎖定管理器224執(zhí)行多方會話中的同時(shí)訪問控制,并且還通過訪問控制器224執(zhí)行對操作的請求的訪問控制。流泵226處理諸如以流格式發(fā)送的諸如語音和圖像數(shù)據(jù)其中之一的大型數(shù)據(jù)。遠(yuǎn)程引用層230將調(diào)用信息打包并發(fā)送,并且在一般操作情況下,確定調(diào)用的可行性并執(zhí)行實(shí)際調(diào)用。然而,在異步操作的情況下,所述實(shí)際調(diào)用是經(jīng)由異步操作層220執(zhí)行的。遠(yuǎn)程引用層230包括請求發(fā)送器231和請求接收器232,它們在客戶機(jī)一側(cè)和服務(wù)器一側(cè)二者上均被提供。請求發(fā)送器231編碼并打包傳輸消息并將該消息發(fā)送到在服務(wù)器一側(cè)的請求接收器232。請求接收器232解碼發(fā)送來的消息以調(diào)用對象,并且經(jīng)由在服務(wù)器一側(cè)的請求發(fā)送器將結(jié)果發(fā)送到客戶機(jī)一側(cè)??紤]到機(jī)器人到專用網(wǎng)絡(luò)的連接,傳輸層240負(fù)責(zé)實(shí)際連接并采用基于"面向連接"的通信的傳輸控制協(xié)議(TCP)。由于一般操作是同步地執(zhí)行,因此數(shù)據(jù)處于待命(standby)狀態(tài)直到操作完成。然而,在長期執(zhí)行操作的情況下,需要在接收請求之后立即將操作返回并在以后需要時(shí)檢查結(jié)果的功能。這可以通過利用中間件的異步操作層執(zhí)行異步操作來實(shí)現(xiàn)。因此,在下面將參考附圖描述通過利用異步操作執(zhí)行通信的處理,其支持在具有上述結(jié)構(gòu)的中間件中傳輸被長期執(zhí)行的操作以及諸如在機(jī)器人導(dǎo)航、機(jī)器人和軟件機(jī)器人其中之一的語音合成、圖像處理中的大型數(shù)據(jù)。圖4是示出了根據(jù)本發(fā)明的示范性實(shí)施例的網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的異步搡作層的通信處理的流程圖。參見圖4,在操作301中,請求調(diào)用中間件中的對象的客戶機(jī)調(diào)用相應(yīng)遠(yuǎn)程對象的存根。在此情況下,用于異步操作的函數(shù)被定義為操作處理類型。在客戶機(jī)一側(cè)的中間件的操作處理器處理由這種接口所定義的異步操作。在操作302中,中間件140的操作處理器221請求操作適配器222在服務(wù)器一側(cè)執(zhí)行異步操作并等待結(jié)果。在這一點(diǎn)上,操作處理器221可以執(zhí)行下列操作中的一項(xiàng)等待搡作在服務(wù)器一側(cè)被完成、只等待預(yù)定時(shí)間、和在中間件終止操作的執(zhí)行。在此情況下,包括在操作處理器221中的操作監(jiān)聽器(listener)接收請求的結(jié)果。當(dāng)操作處理器221請求異步操作時(shí),在操作303中,異步處理器被轉(zhuǎn)送到中間件里的操作適配器222。也就是說,操作處理器221經(jīng)由請求發(fā)送器231編碼用于異步操作的請求消息并將其發(fā)送到服務(wù)器一側(cè)。從而,服務(wù)器通過請求接收器232解碼接收到的請求消息并將其發(fā)送到操作適配器222作為操作對象。然后,在操作304中,服務(wù)器準(zhǔn)備執(zhí)行所請求的操作。在這一點(diǎn)上,服務(wù)器檢查用于操作的數(shù)據(jù)是否是語音和圖像數(shù)據(jù)中的一個(gè)。結(jié)果,如果數(shù)據(jù)是像圖像和語音之一這樣的大型數(shù)據(jù),那么在操作305中,中間件通過利用包含在操作適配器222中的流泵226執(zhí)行對于圖像和語音數(shù)據(jù)中的一個(gè)的操作。在此情況下,大型數(shù)據(jù)是以流格式傳輸?shù)?。然后,在操?06中,當(dāng)中間件結(jié)束執(zhí)行操作時(shí),操作結(jié)果被發(fā)送給請求該操作的客戶機(jī)的操作監(jiān)聽器。然而,根據(jù)在操作304中所檢查的結(jié)果,如果所述數(shù)據(jù)不是圖像和語音數(shù)據(jù)中的一個(gè),那么在操作307中,中間件在服務(wù)器一側(cè)生成操作對象"提供操作"并將它存儲在隊(duì)列中。然后,如果操作請求由許多客戶機(jī)產(chǎn)生,那么中間件調(diào)度操作的執(zhí)行。也就是說,中間件經(jīng)由包括在操作適配器222中的調(diào)度器225為每個(gè)操作請求分配工作線程,并逐個(gè)執(zhí)行存儲在隊(duì)列中的操作對象。在這一點(diǎn)上,在操作309中,中間件的操作適配器222經(jīng)由存根211請求對象,然后前進(jìn)到操作306,在操作306中它將操作執(zhí)行結(jié)果轉(zhuǎn)送到客戶機(jī)一側(cè)。在這種異步操作處理里,由于需要花費(fèi)相對長的時(shí)間來執(zhí)行長期搡作,因而可能存在對已經(jīng)被執(zhí)行的相同操作的請求。因此,雖然在服務(wù)器一側(cè)執(zhí)行操作,但是中間件可以執(zhí)行下列之中的一個(gè)經(jīng)由在客戶機(jī)一側(cè)的操作處理器221使所請求的操作處于待命狀態(tài),或者可以請求同時(shí)執(zhí)行。此外,在產(chǎn)生執(zhí)行長期操作的請求以后,中間件可以在完成以前中斷操作的執(zhí)行。中間件提供這樣的中斷功能操作其能夠只中斷由中間件本身所請求的操作,并且中斷相同類型操作中正在執(zhí)行或處于待命狀態(tài)的所有操作。在下文中,將描述根據(jù)本發(fā)明的示范性實(shí)施例的、經(jīng)由網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的中間件的遠(yuǎn)程引用層在機(jī)器人(客戶機(jī))與服務(wù)器之間傳輸?shù)膫鬏斚⒌臄?shù)據(jù)的編碼方法。該編碼方法用巴科斯-諾爾范式(BNF)表示。根據(jù)在消息的接收側(cè)(服務(wù)器)是否預(yù)先已知數(shù)據(jù)的類型,將數(shù)據(jù)編碼劃分為兩種情況。當(dāng)數(shù)據(jù)類型是預(yù)先已知的情況下,數(shù)據(jù)類型沒有包括在數(shù)據(jù)編碼中,以便最小化消息的大小。另一方面,當(dāng)數(shù)據(jù)類型不是已知的情況下,為了使接收器一側(cè)知道將被接收的數(shù)據(jù)的類型,在實(shí)際數(shù)據(jù)編碼以前添加數(shù)據(jù)類型信息。當(dāng)如上所述添加類型信息的時(shí)候,在終端的名稱前添加't’。現(xiàn)在將參照圖5描述根據(jù)上面所描述的數(shù)據(jù)編碼的數(shù)據(jù)格式。'boolean'是一種用于表示邏輯值的數(shù)據(jù)形式,真為1并且假為2,分別用1個(gè)字節(jié)表示。'byte'表示有符號位整數(shù)(bit-signedinteger),其具有范圍從最小-128到最大127的值。'short'表示16位有符號整數(shù),其具有從最小-231到最大215-1的值。通過big-endian編碼將'short'編碼為多個(gè)字節(jié)。'int'表示32位有符號整數(shù),其具有從最小-231到最大231-1的值。通過big-endian編碼來編碼'int'。'long'表示64位有符號整數(shù),其具有從最小-263到最大263-1的值。通過big隱endian編碼來編碼'long'。'double'表示64位有符號浮點(diǎn)數(shù),并且通過"正EE浮點(diǎn)數(shù)”表達(dá)式來編碼。'string'是表示字符串的數(shù)據(jù)形式,并且是以UTF-8格式編碼的字節(jié)串。'string'在四個(gè)字節(jié)中包括實(shí)際字符串的字節(jié)長度。長度0表示零長度字符串(""),而長度-l表示空字符串。'binary'是用于字節(jié)數(shù)組的數(shù)據(jù)形式,并且在前四個(gè)字節(jié)中包括實(shí)際字節(jié)數(shù)組的長度,作為〈nt〉形式值。長度-l表示空。'array,記錄任意數(shù)據(jù)形式的數(shù)組。在此情況下,數(shù)組的長度('length')以'int'形式編碼,并且順序地編碼數(shù)組的各個(gè)元素?cái)?shù)據(jù)。長度-l表示空字符串,而長度0表示0長度的數(shù)組。當(dāng)使用面向?qū)ο笳Z言的時(shí)候,類型T數(shù)組(即T[])可以不僅包括類型T數(shù)據(jù)而且包括從類型T導(dǎo)出的任意類型的數(shù)據(jù)來作為該數(shù)組的元素。此外,當(dāng)諸如Java語言這樣的接口被支持的時(shí)候,可以包括用于實(shí)現(xiàn)該接口的所有類型的數(shù)據(jù)。因此,數(shù)組的元素是通過在其中為每個(gè)元素?cái)?shù)據(jù)分別包括類型信息的編碼方法來編碼的。'parmy'是用于基本數(shù)據(jù)形式的數(shù)組的數(shù)據(jù)形式。該編碼方法與'array'數(shù)據(jù)形式的編碼方法相似,但該元素?cái)?shù)組值必須是基本的數(shù)據(jù)形式(boolean,byte、short、int、long、double、string和binary)。由于'parray'是基本凄t據(jù)形式的數(shù)組與不可能被導(dǎo)出的元素類型的數(shù)組中的一個(gè),因此來自該元素的數(shù)據(jù)和預(yù)先確定的數(shù)組元素類型一致。從而,不必記錄各個(gè)元素的類型信息,不同于上面所描述的'array'。'list'是用于任意數(shù)據(jù)類型的可變長度鏈表的數(shù)據(jù)形式。該編碼方法與上述的'array'的編碼方法相似,但不包括元素對象的數(shù)據(jù)類型名稱("elm—type"),其被設(shè)置于"array"中最前的位置。此外,不限制包括在鏈表中的數(shù)據(jù)元素的數(shù)據(jù)類型。'map'是一種編碼方法,用于映射任意類型的關(guān)鍵字(key)和值(value)數(shù)據(jù)的有序?qū)Φ男畔?。在該編碼方法中,首先設(shè)置映射中所包含的條目數(shù)量,然后按順序記錄的關(guān)鍵字和值的有序?qū)Α?length'為負(fù)值意味著空值。所存儲的'key'和'value'數(shù)據(jù)可以包括任意類型,因此可以添加類型代碼用于編碼。'valued'是用于任意類型的對象的編碼方法。對象的編碼范圍只包括對象中所包括的成員數(shù)據(jù),而不包括方法以及其它靜態(tài)成員。在該編碼方法中,構(gòu)成該對象的成員數(shù)目被放置在前四個(gè)字節(jié)中,然后在用于構(gòu)成對象的每一個(gè)成員的有序?qū)χ袑Τ蓡T名稱(string)和成員對象((typed))進(jìn)行編碼。'valued'通過對構(gòu)成對象的每個(gè)成員的名稱和值的有序?qū)M(jìn)行編碼來編碼對象。在該編碼方法中,當(dāng)編碼諸如數(shù)組和鏈表的多個(gè)相同類型的對象時(shí),在編碼時(shí)冗余地重復(fù)相同成員的名稱。當(dāng)調(diào)用遠(yuǎn)程方法時(shí),這增加了請求消息的大小和用于處理調(diào)用的時(shí)間。'remote'是編碼遠(yuǎn)程對象的引用(reference)的方法。在該編碼方法中,首先產(chǎn)生遠(yuǎn)程對象所處的通信中間件服務(wù)器的IP地址(主機(jī)名)和端口號,接著產(chǎn)生服務(wù)器中的對象的標(biāo)識符路徑作為字符串形式的數(shù)組值,最后產(chǎn)生相應(yīng)遠(yuǎn)程對象中的遠(yuǎn)程類型的名稱。在此情況下,當(dāng)已經(jīng)被編碼的對象將要再次被編碼時(shí),該引用使用特殊標(biāo)識符來引用先前被編碼的一個(gè)對象。這防止了^f艮據(jù)上述的'valued'編碼而永遠(yuǎn)存在的問題在'valued'編碼中,已經(jīng)被編碼的對象被再次編碼,從而造成當(dāng)對象的成員直接或間接地引用其本身時(shí)的無限編碼處理。'appdef使用在發(fā)送數(shù)據(jù)方和接收數(shù)據(jù)方之間事先達(dá)成一致的方法,并且可以解決"valued"編碼方法中所表現(xiàn)的不足。然而,在此方法中,調(diào)用方和非調(diào)用方必須使用相同數(shù)據(jù)編碼和解碼方法。在類型附加(typeappending)方法(tappdef)中,用于通知對方(counterpart)數(shù)據(jù)編碼方法的字符串格式的編碼標(biāo)簽被發(fā)送,以便使對方能夠使用合適的解碼器。通常,編碼標(biāo)簽使用被編碼的數(shù)據(jù)的類型(class)名稱。'throwable,是表示異常對象的編碼方法,并且編碼該異常對象的名稱(exception—name)和關(guān)于異常狀態(tài)的細(xì)節(jié)。如果異常對象名稱的值是空,則'throwable,被認(rèn)為是空。異常對象的名稱通常使用所生成的異常對象的類型名稱,并且細(xì)節(jié)被編碼為空,除非存在另外的說明。現(xiàn)在,基于上面描述的數(shù)據(jù)編碼方法,將描述對網(wǎng)絡(luò)服務(wù)系統(tǒng)中的機(jī)器人與服務(wù)器之間所傳輸?shù)南⑦M(jìn)行編碼的方法。在本發(fā)明的示范性實(shí)施例中,以BNF編碼消息,并且消息如圖6所示。連接請求消息(connection)610是這樣的消息,其纟皮發(fā)送用于請求連接以開始從機(jī)器人(客戶機(jī)一側(cè))到服務(wù)器的通信。連接請求消息610是在機(jī)器人與服務(wù)器之間建立了TCP套接字連接(但此后不使用)之后由嘗試連接到對方的一方發(fā)送的。除連接請求消息610之外的所有消息在最前的位置中都包含指定的消息頭。這種消息頭620包括'magic,、'request—id,、'length'禾口'code'。'magic,是4個(gè)字節(jié)的固定數(shù),通知通信中間件消息,并且使用十進(jìn)制數(shù)970208。'request—id,是請求標(biāo)識符,其僅僅被分配給'call'和'notify'消息中的每一個(gè)并為每一個(gè)消息在值上增加。'length'是表示包括消息頭的消息的大小的值。此外,'code'是記錄消息類型的1個(gè)字節(jié)的值并且代表下面表1中的下列消息類型。表l<table><row><column>代碼</column><column>類型</column></row><row><column></column><column>100</column><column>調(diào)用消息</column></row><row><column></column><column>101</column><column>應(yīng)答消息</column></row><table><row><column>102</column><column>錯(cuò)誤消息</column></row><row><column>103</column><column>通知消息消息頭中的代碼(code)值100表示調(diào)用消息,并且如圖6所示,調(diào)用消息630是從調(diào)用方(caller)發(fā)送到被調(diào)用方(callee)來調(diào)用指定遠(yuǎn)程對象的方法(操作)的。調(diào)用消息630的消息格式包括消息頭、對象的路徑、被調(diào)用的方法、以及將被用于像以BNF那樣調(diào)用的因子。在此情況下,因子數(shù)目為0表示調(diào)用無因子的方法。消息頭中的代碼值101表示應(yīng)答消息,并且如圖6所示,該應(yīng)答消息640是用于將通過調(diào)用消息630調(diào)用遠(yuǎn)程對象并在被調(diào)用方一側(cè)執(zhí)行調(diào)用的結(jié)果發(fā)送給調(diào)用方的消息。在應(yīng)答消息640的消息格式里,首先是消息頭,接著是在被調(diào)用的方法的定義中所聲明的返回類型值和實(shí)際操作返回值。為了提供調(diào)用結(jié)果的'pairing'信息,應(yīng)答消息640的消息頭中的'reqjd,必須使用在調(diào)用消息630中所描述的'request—id,值。,人方法的返回值可以清楚地知道該所返回的數(shù)據(jù)的類型。盡管如此,但是由于除了所聲明的具有實(shí)際返回值的類型以外,從相應(yīng)類型中獲得的類型值也可以被返回,因此方法中所聲明的返回類型信息被分別發(fā)送。消息頭中的代碼值102表示錯(cuò)誤消息,并且如圖6所示,錯(cuò)誤消息650用于當(dāng)遠(yuǎn)程對象調(diào)用由于異常而失敗的時(shí)候,將在被調(diào)用方一側(cè)生成的異常對象發(fā)送到調(diào)用方。在錯(cuò)誤消息650的消息格式里,首先是消息頭,然后是異常對象。在此情況下,為了通知哪個(gè)調(diào)用導(dǎo)致錯(cuò)誤,錯(cuò)誤消息頭的requested必須使用在調(diào)用消息里描述的requestjd值。消息頭中的代碼值103表示通知消息,并且如圖6所示,通知消息660通知特定事件。其與調(diào)用消息630相似,但不等待應(yīng)答消息640。通知消息660的消息格式包括消息頭、對象的路徑、被調(diào)用的方法、最后是將被用于調(diào)用的因子。因子數(shù)目為O表示調(diào)用無因子的方法。如上所述,根據(jù)本發(fā)明,經(jīng)由機(jī)器人和服務(wù)器之間的通信,從服務(wù)器有效地提供了機(jī)器人的基本功能。而且,中間件的通信框架在調(diào)用遠(yuǎn)程對象時(shí)使用二進(jìn)制信息編碼方法,以最小化傳輸消息。這使得本發(fā)明的網(wǎng)絡(luò)機(jī)器人系統(tǒng)可以被容易地裝在諸如嵌入式系統(tǒng)這樣的具有有限資源的設(shè)備環(huán)境中。此外,根據(jù)本發(fā)明的網(wǎng)絡(luò)機(jī)器人系統(tǒng)可以裝在以各種語言和操作系統(tǒng)開發(fā)的機(jī)器人中,使得與服務(wù)器之間的遠(yuǎn)程通信容易并且高效。網(wǎng)絡(luò)機(jī)器人系統(tǒng)被容易地連接至使用TCP的因特網(wǎng)路由器的專用網(wǎng)絡(luò),從而使得能夠在任何類型的網(wǎng)絡(luò)里通信。如上所述,根據(jù)本發(fā)明,網(wǎng)絡(luò)機(jī)器人系統(tǒng)采用嵌入在外部環(huán)境中的傳感器和在遠(yuǎn)處的高功能服務(wù)器而不是提高機(jī)器人的處理功能,從而最終提高機(jī)器人的性能。而且,網(wǎng)絡(luò)機(jī)器人系統(tǒng)執(zhí)行異步操作來有效地處理大型數(shù)據(jù)的傳輸并通過使用用于遠(yuǎn)程對象調(diào)用的二進(jìn)制信息編碼方法來最小化傳輸消息。因此,使得能夠與具有相對有限資源的設(shè)備進(jìn)行有效通信。雖然已經(jīng)結(jié)合示范性實(shí)施例示出并描述了本發(fā)明,但是對本領(lǐng)域技術(shù)人員來說顯而易見的是,在不脫離如后附的權(quán)利要求所定義的本發(fā)明的精神和范圍的情況下,可以對其進(jìn)行各種修改和變化。權(quán)利要求1.一種在網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,該網(wǎng)絡(luò)機(jī)器人系統(tǒng)具有處理多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信的中間件,所述方法包括預(yù)先設(shè)置中間件的通信框架,以用于通過使用所述多個(gè)傳感器和服務(wù)器的分布式處理;以及通過使用預(yù)先設(shè)置的通信框架,執(zhí)行所述多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信,其中,根據(jù)從所述機(jī)器人調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小執(zhí)行同步操作和異步操作中的一個(gè)。2.如權(quán)利要求1所述的方法,其中,所述預(yù)先設(shè)置中間件的通信框架包括設(shè)置存根和骨架層,其根據(jù)機(jī)器人的對象調(diào)用請求,命令和接收對遠(yuǎn)程對象的遠(yuǎn)程調(diào)用;設(shè)置異步操作層,其根據(jù)由遠(yuǎn)程調(diào)用命令所調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小來執(zhí)行異步操作;設(shè)置遠(yuǎn)程引用層,其將有關(guān)遠(yuǎn)程調(diào)用的信息打包并發(fā)送;以及設(shè)置傳輸層,其根據(jù)所述遠(yuǎn)程調(diào)用,通過使用傳輸協(xié)議連接所述機(jī)器人和服務(wù)器。3.如權(quán)利要求2所述的方法,其中,所述設(shè)置異步操作層是設(shè)置用于根據(jù)對所述對象的遠(yuǎn)程調(diào)用請求執(zhí)行異步操作的區(qū)域和用于執(zhí)行異步操作以便立即發(fā)送所述請求執(zhí)行異步操作的結(jié)果并且在以后需要時(shí)檢查該結(jié)果的區(qū)域。4.如權(quán)利要求l所述的方法,其中,所述執(zhí)行多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信包括在預(yù)先設(shè)置的通信框架的客戶機(jī)一側(cè)遠(yuǎn)程調(diào)用由機(jī)器人所調(diào)用的遠(yuǎn)程對象;請求執(zhí)行用于所述遠(yuǎn)程調(diào)用的操作;對用于請求執(zhí)行操作的傳輸消息進(jìn)行編碼;發(fā)送編碼后的傳輸消息;當(dāng)所述遠(yuǎn)程對象的數(shù)據(jù)的大小較大時(shí),在預(yù)先設(shè)置的通信框架的服務(wù)器一側(cè)執(zhí)行異步操作;將執(zhí)行異步操作的結(jié)果立即發(fā)送到所述客戶機(jī)一側(cè);以及當(dāng)所述遠(yuǎn)程對象的數(shù)據(jù)的大小不大時(shí),經(jīng)由調(diào)度來執(zhí)行同步操作。5.—種網(wǎng)絡(luò)才幾器人系統(tǒng),包括機(jī)器人,其通過識別外部環(huán)境信息來提供服務(wù);多個(gè)傳感器,用于分布式處理機(jī)器人的感測外部環(huán)境信息的功能;服務(wù)器,用于分布式處理機(jī)器人的根據(jù)外部環(huán)境信息的服務(wù)處理功能;中間件,其連接位于遠(yuǎn)處的多個(gè)傳感器、服務(wù)器和機(jī)器人,并且預(yù)先設(shè)置用于該多個(gè)傳感器、服務(wù)器和機(jī)器人之間的遠(yuǎn)程通信的通信框架,其中,所述中間件根據(jù)從所述機(jī)器人調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小執(zhí)行同步操作和異步操作。6.如權(quán)利要求5所述的系統(tǒng),其中,所述中間件的通信框架包括存根和骨架層,其根據(jù)機(jī)器人的對象調(diào)用,命令和接收對于所述遠(yuǎn)程對象的遠(yuǎn)程調(diào)用;異步操作層,其根據(jù)由遠(yuǎn)程調(diào)用命令所調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小來執(zhí)行異步操作;遠(yuǎn)程引用層,其將有關(guān)所述遠(yuǎn)程調(diào)用的信息打包并發(fā)送;傳輸層,其根據(jù)所述遠(yuǎn)程調(diào)用,通過使用傳輸協(xié)議連接所述機(jī)器人和服務(wù)器。7.如權(quán)利要求6所述的系統(tǒng),其中,所述異步操作層包括操作處理器,其根據(jù)對所述遠(yuǎn)程對象的遠(yuǎn)程調(diào)用,請求執(zhí)行異步操作;以及操作適配器,其執(zhí)行異步操作,以便立即發(fā)送所述請求執(zhí)行異步操作的結(jié)果并在以后需要時(shí)檢查該結(jié)果。8.如權(quán)利要求7所述的系統(tǒng),其中,所述操作適配器在所述遠(yuǎn)程對象的數(shù)據(jù)大小較大時(shí)執(zhí)行異步操作,并且將異步操作執(zhí)行的結(jié)果發(fā)送到客戶機(jī)一側(cè)。9.如權(quán)利要求7所述的系統(tǒng),其中,所述操作適配器包括調(diào)度器,其在所述遠(yuǎn)程對象的數(shù)據(jù)大小不大時(shí)執(zhí)行調(diào)度,并且通過所述調(diào)度執(zhí)行同步操作。10.如權(quán)利要求6所述的系統(tǒng),其中,所述遠(yuǎn)程引用層包括請求發(fā)送器,其編碼用于請求執(zhí)行操作的傳輸消息;以及請求接收器,其解碼編碼后的傳輸消息,其中,在機(jī)器人一側(cè)和服務(wù)器一側(cè)各自包括有所述請求發(fā)送器和所述請求接收器。全文摘要一種在網(wǎng)絡(luò)機(jī)器人系統(tǒng)中的通信方法,該網(wǎng)絡(luò)機(jī)器人系統(tǒng)具有處理多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信的中間件,該方法包括預(yù)先設(shè)置中間件的通信框架,以用于通過使用多個(gè)傳感器和服務(wù)器的分布式處理機(jī)器人的功能;以及通過使用預(yù)先設(shè)置的通信框架,執(zhí)行該多個(gè)傳感器、服務(wù)器和機(jī)器人之間的通信,其中,根據(jù)從機(jī)器人調(diào)用的遠(yuǎn)程對象的數(shù)據(jù)的大小執(zhí)行同步和異步操作中的一個(gè)。文檔編號H04L12/28GK101202689SQ200710306860公開日2008年6月18日申請日期2007年10月23日優(yōu)先權(quán)日2006年10月23日發(fā)明者徐榮浩,文愛璟,樸男植,李康宇,洪忠成,炫金,金敏永申請人:韓國電子通信研究院