(57)【要約】      （修正有）【課題】外部のセンシング機能及び外部のプロセッシング機能をネットワークを通じて活用するためのネットワークロボットシステム及びその通信方法の提供。【解決手段】ロボットの機能を多数のセンサ及びサーバを利用して分散処理のためのミドルウェアの通信フレームワークを予め設定し、上記予め設定された通信フレームワークを利用して上記多数のセンサ及びサーバと上記ロボットとの間の通信を実行することでロボットの性能を向上させることができ、上記ロボットから呼び出された遠隔客体のデータの大きさに応じて同期／非同期演算を実行することで、大きさの大きいデータの伝送を待機せずに直ちに効果的に処理することができ、遠隔客体呼び出しのためにバイナリーメッセージエンコード方式で伝送メッセージを最小化することにより相対的に資源が制限された装置との効率的な通信を実行することができるという効果を奏する。【選択図】図３
2008146634.tif 000002
【特許請求の範囲】
【請求項１】
多数のセンサと、サーバと、ロボットとの間の通信を処理するミドルウェアを備えるネットワークロボットシステムにおける通信方法において、
前記ロボットの機能を前記多数のセンサ及びサーバを利用して、分散処理のための前記ミドルウェアの通信フレームワークを予め設定する工程と、
前記予め設定された通信フレームワークを利用して前記多数のセンサ及びサーバと前記ロボットとの間の通信を実行する工程と、を含み、
前記ロボットから呼び出された遠隔客体のデータの大きさに応じて同期／非同期演算を実行することを特徴とするネットワークロボットシステムにおける通信方法。
【請求項２】
前記ミドルウェアの通信フレームワークを予め設定する工程は、
前記ロボットの客体呼び出し要請に従って前記客体を遠隔呼び出し命令／受信するスタブ／スケルトン階層を設定するステップと、
前記遠隔呼び出し命令に従って前記呼び出された客体のデータの大きさに応じて非同期演算を実行する非同期オペレーション階層を設定するステップと、
前記遠隔呼び出しに対する情報をパッキングして伝達する遠隔リファレンス階層を設定するステップと、
前記遠隔呼び出しに従って、伝送プロトコルを利用して前記ロボットと前記サーバとの間の連結を実行する伝送階層を設定するステップと、を含むことを特徴とする請求項１に記載のネットワークロボットシステムにおける通信方法。
【請求項３】
前記非同期オペレーション階層を設定するステップは、前記客体を遠隔呼び出しに従って非同期演算実行を要請する領域と、前記演算実行要請に従って結果を直ちに伝達し、その後望む場合に前記結果を確認するように非同期演算を実行する領域とに設定されることを特徴とする請求項２に記載のネットワークロボットシステムにおける通信方法。
【請求項４】
前記多数のセンサ及びサーバと前記ロボットとの間の通信を実行する工程は、
前記予め設定された通信フレームワークのクライアント側で、前記ロボットが要請した客体を遠隔呼び出すステップと、
前記遠隔呼び出しに対する演算実行を要請するステップと、
前記演算実行要請に対する伝送メッセージをエンコードして伝送するステップと、
前記予め設定された通信フレームワークのサーバ側で、前記要請された客体に対するデータの大きさが大きい場合に非同期演算を実行するステップと、
前記非同期演算実行結果を直ちに前記クライアント側に伝達するステップと、
前記要請された客体に対するデータの大きさが大きくない場合にスケジューリングによって同期演算を実行するステップと、を含むことを特徴とする請求項１に記載のネットワークロボットシステムにおける通信方法。
【請求項５】
外部環境の情報を認識してサービスを提供するロボットと、
前記外部環境情報をセンシングする前記ロボットの機能を分散処理する多数のセンサと、
前記外部環境情報による前記ロボットでのサービス処理機能を分散処理するサーバと、
遠隔地に位置した前記多数のセンサ及び前記サーバと前記ロボットとを連結し、前記多数のセンサ／前記サーバと前記ロボット間の遠隔通信のための通信フレームワークを予め設定するミドルウェアと、を含み、
前記ミドルウェアは、前記ロボットから呼び出された遠隔客体のデータの大きさに応じて同期／非同期演算を実行することを特徴とするネットワークロボットシステム。
【請求項６】
前記ミドルウェアの通信フレームワークは、前記ロボットの客体呼び出し要請に従って前記客体を遠隔呼び出し命令／受信するスタブ／スケルトン階層と、
前記遠隔呼び出し命令に従って前記呼び出された客体のデータの大きさに応じて非同期演算を実行する非同期オペレーション階層と、
前記遠隔呼び出しに対する情報をパッキングして伝達する遠隔リファレンス階層と、
前記遠隔呼び出しに従って伝送プロトコルを利用して前記ロボットと前記サーバとの間の連結を実行する伝送階層と、を含むことを特徴とする請求項５に記載のネットワークロボットシステム。
【請求項７】
前記非同期オペレーション階層は、前記客体を遠隔呼び出しに従って非同期演算実行を要請するオペレーションハンドラーと、
前記演算実行要請に従って結果を直ちに伝達し、その後望む場合に前記結果を確認するように非同期演算を実行するオペレーションアダプタと、を含むことを特徴とする請求項６に記載のネットワークロボットシステム。
【請求項８】
前記オペレーションアダプタは、前記要請された客体に対するデータの大きさが大きい場合に非同期演算を実行し、前記非同期演算実行結果を直ちに前記クライアント側に伝達することを特徴とする請求項７記載のネットワークロボットシステム。
【請求項９】
前記オペレーションアダプタは、前記要請された客体に対するデータの大きさが大きくない場合にスケジューリングをするスケジューラを含み、前記スケジューリングによって同期演算を実行することを特徴とする請求項７に記載のネットワークロボットシステム。
【請求項１０】
前記遠隔リファレンス階層は、前記演算実行要請に対する伝送メッセージをエンコードする要請送信器と、
前記エンコードされた伝送メッセージをデコーディングする要請受信器と、を含み、
前記要請受信器及び要請送信器は、前記ロボット側と前記サーバ側に区分されて含まれることを特徴とする請求項６又は７に記載のネットワークロボットシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットシステムにおける通信方法及びシステムに関し、特に、ロボットの機能をネットワークを通じて分散処理するためのネットワークロボットシステム及びネットワークロボットシステムにおける通信方法に関するものである。
本発明は、情報通信部IT新成長動力核心技術開発事業の一環として行った研究から導かれたものである[課題管理番号: 2005-S-031, 課題名: URC事業のためのインフラシステム]。
【背景技術】
【０００２】
一般的にロボットは、外部環境をセンシングし、センシングされた情報を基に判断し、判断結果に従って行動する３つの種類機能要素を有し、このような機能を処理するための装置を備えている。しかしながら、ロボットに多様な機能を全て付加したり、新たな機能を付加するためにはそれだけの複雑な構成及び高価な装備が必要とされるので、多様な機能を提供し難く、コストの負担が増えてしまう。
【０００３】
従って、近年では、より低廉なロボットを提供するためにロボットでの機能をネットワークを通じて分散処理するためのネットワークロボットシステムが開発されている。
【０００４】
一般的に、ネットワークロボットシステムは、多数のロボットクライアントとサーバで構成される分散システムから成っている。このような分散システムにおけるネットワーク通信は、通信ミドルウェアを活用して分散したシステム間のメッセージ交換によって行われる。これらのミドルウェアは、客体志向概念と結合して遠隔客体呼び出し機能を提供し、ＤＣＯＭ、ＣＯＲＢＡ、ＲＭＩ、ＸＭＬ Ｗｅｂ Ｓｅｒｖｉｃｅｓなどの多様な方法が提案されて使用されてきた。
【０００５】
しかしながら、これらのミドルウェアは、要求事項を適宜に満足できずロボットとサーバとの間の通信ミドルウェアとして活用されるのに不十分である。即ち、上記ＤＣＯＭやＲＭＩの場合には、これらが特定のＯＳや特定の言語に制限された通信ミドルウェアであって、多様なＯＳロボットや多様な言語で開発されるロボットを考慮したときには効率性が落ちるという問題点がある。一方、上記ＣＯＲＢＡの場合には、多様なＯＳや多様な言語を支援するが、埋め込みシステムのように相対的に資源が制限された装置環境に搭載されるには重いため、利用価値が落ちるという問題点がある。そして、上記ＸＭＬ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓは、伝送メッセージがＸＭＬ形態であるため、メッセージサイズが相対的に大きく、応答時間が遅いという短所を有しており、ＨＴＴＰを基盤とするため、私設網の接続などでは使用し難いという問題点がある。
【０００６】
また、ネットワークロボットシステムは、利用する資源が制限されているため、ナビゲーション、音声合成、ストリーミングデータ処理などのように長期間行われる演算及び大容量のデータに対する伝送が難しい。そのため、ネットワークロボットシステムにおいて既存の通信ミドルウェアを活用するには不十分な点がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従って、本発明の目的はネットワークロボットシステムにおいて、外部のセンシング機能と外部のプロセッシング機能をネットワークを通じて活用するためのネットワークロボットシステム及びネットワークロボットシステムにおける通信方法を提供することである。
【０００８】
本発明の他の目的は、ネットワークロボットシステムの特性に合うようにロボットナビゲーション、ロボット又はソフトウェアロボットの音声合成、映像処理など長期間行われる演算及び大容量のデータの伝送を支援するためのネットワークロボットシステム及びネットワークロボットシステムにおける通信方法を提供することである。
【０００９】
本発明のさらに他の目的は、ネットワークロボットシステムにおいて制限された資源を有するロボットとの効率的な通信のために、改善されたデータエンコード方式を提供するためのネットワークロボットシステム及びネットワークロボットシステムにおける通信方法を提供することである。
【課題を解決するための手段】
【００１０】
上記係る本発明の目的を達成するための方法は、多数のセンサ及びサーバとロボットとの間の通信を処理するミドルウェアを備えるネットワークロボットシステムにおける通信方法であって、上記ロボットの機能を上記多数のセンサ及びサーバを利用して分散処理のための上記ミドルウェアの通信フレームワークを予め設定する工程と、上記予め設定された通信フレームワークを利用して上記多数のセンサ及びサーバと上記ロボットとの間の通信を実行する工程とを含み、上記ロボットから呼び出された遠隔客体のデータの大きさに応じて同期／非同期演算を実行することを特徴とする。
【００１１】
上記本発明の目的を達成するためのネットワークロボットシステムは、外部環境の情報を認識してサービスを提供するロボットと、上記外部環境情報をセンシングする上記ロボットの機能を分散処理する多数のセンサと、上記外部環境情報による上記ロボットでのサービス処理機能を分散処理するサーバと、遠隔地に位置した上記多数のセンサ及び上記サーバと上記ロボットとを連結し、上記多数のセンサ／上記サーバと上記ロボットとの間の遠隔通信のための通信フレームワークを予め設定するミドルウェアとを含み、上記ミドルウェアは上記ロボットから呼び出された遠隔客体のデータの大きさに応じて同期／非同期演算を実行することを特徴とする。
【発明の効果】
【００１２】
本発明は、ネットワークロボットシステムは外部環境に内在したセンサ機能を活用してロボットのプロセッシングを高めることにより、遠隔地の高機能サーバを活用することでロボットの性能を向上させることができ、非同期演算を提供することにより、容量の大きいデータの伝送を効果的に処理するために非同期演算を実行することができるという効果があり、遠隔客体呼び出しのためにバイナリーメッセージエンコード方式により伝送メッセージを最小化することにより、相対的に資源が制限された装置との効率的な通信を実行することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の好ましい実施例を添付の図面を参照して詳しく説明する。先ず、各図の構成要素に参照符号を付加することにおいて、同じ構成要素に限っては、他の図面上に表示されてもできるだけ同符号を有するようにしていることに留意すべきである。そして、本発明を説明するにあたり、係る公知機能又は構成に対する具体的な説明が本発明の要旨を不要に曇らせる恐れがあると判断される場合には、その詳細な説明を省略する。
【００１４】
本発明の実施例に係る通信方法及び装置を説明する前に、本発明の実施例では次のような条件を考慮する必要がある。
【００１５】
第１に、ネットワークロボットシステムは、コンピュータ環境だけでなく、埋め込みシステムのように相対的に資源が制限された装置環境を考慮して、伝送メッセージを最小化することができる軽いプロトコルが必要であるので、伝送メッセージを非常に簡潔な形態の２進フォーマットにエンコードする方式を利用する。
【００１６】
第２に、ネットワークロボットシステムは、多様なＯＳ又は多様な言語で開発された応用を考慮しなければならないので、特定のプラットホームや言語に独立して運用できなければならない。
【００１７】
第３に、ネットワークロボットシステムは、比較的不安全な無線通信を使用するので、通信の断絶に対する対処を考慮して、断絶後の再接続が応用開発者に対して最大限に透明に行われる必要がある。
【００１８】
第４に、ネットワークロボットシステムは、音声、映像など大きいデータの伝送を効果的に処理するための方案が考慮されるべきである。
【００１９】
本発明の実施例では、このような考慮事項を基にネットワークロボットシステムの通信システムを提案することができる。従って、以下、本発明の実施例では、異種の多様なロボットは外部のサーバコンピューターで提供する多様な機能（音声認識、映像認識、状況認識、ロボット制御命令、ロボットサービスなど）を活用して多様なサービスを提供するための通信方法及び装置について具体的に説明する。
【００２０】
それでは、本発明の実施例に係るネットワークロボットシステムの構造を添付の図を参照して説明する。
【００２１】
図１は、本発明の実施例に係るネットワークロボットシステムの構造を示す構成図である。
【００２２】
上記図１を参照すると、ネットワークロボットシステムは、多数のロボット１１０と、サーバ１２０と、多数のセンサ１３０とに分散して構成され、これらの通信のためのミドルウェア１４０で構成される。
【００２３】
上記多数のロボット１１０は、最小限のセンシング及びプロセッシング能力を有する低価のハードウェア（Ｈ／Ｗ）ロボットであって、音声及び映像認識機能は、高性能サーバ１２０を介して支援される。
【００２４】
上記サーバ１２０は、音声認識、映像認識、状況認識及び認証サーバなどを含むことができる。さらに、上記サーバ１２０は、上記状況認識サーバを介して外部環境からセンシングされた情報とユーザに対する状況情報をモデリング、収集及び分配して上記多数のロボット１１０に伝送する。
【００２５】
上記多数のセンサ１３０は周辺環境に内在したセンサであって、センシングされた情報を上記ミドルウェア１４０を介して上記サーバ１２０に伝達する。
【００２６】
上記ミドルウェア１４０は、上記多数のロボット１１０とサーバ間の通信機能を提供する役目を果たす。これにより、上記多数のロボット１１０は、上記サーバ１２０の音声、映像、状況認識機能を利用することができ、サーバ１２０は、上記ロボット１１０に移動命令などを下すことができる。このようなミドルウェア１４０の構造についてより具体的に説明する。
【００２７】
先ず、一般的な分散システムにおけるミドルウェア構造により遠隔制御呼び出しについて添付の図２を参照して簡略に説明した後、既存分散通信ミドルウェアを拡張した本発明の実施例に係るミドルウェア構造について説明する。
【００２８】
上記図２を参照すると、一般的にミドルウェアはスタブ（ｓｔｕｂ）／ スケルトン（ＳＫｅｌｅｔｏｎ）伝送（ＴＣＰ）階層１２と、エンコーディング階層（Ｓｅｒｉａｌｉｚａｔｉｏｎ）１３／デコーディング階層（Ｄｅｓｅｒｉａｌｉｚａｔｉｏｎ）１４及び伝送（Ｔｒａｎｓｐｏｒｔ（ＴＣＰ））階層１５に区分できる。このような一般的なミドルウェアにおいて、遠隔制御呼び出しは、クライアント１１がＩＤＬコンパイルによって生成されたスタブ１２を利用して遠隔制御要請をする。そうすると、次の階層のエンコーディング階層（Ｓｅｒｉａｌｉｚａｔｉｏｎ）１３で呼び出し情報をエンコードパッキングして伝送階層１５を介して伝達する。一般演算の場合には、呼び出しが可能であるかを判断した後実際呼び出しを実行する。そうすると、サーバは、伝達されたメッセージをデコーディング（Ｄｅｓｅｒｉａｌｉｚａｔｉｏｎ）１４で解いて客体を呼び出す。こうして呼び出された結果、客体は、再びサーバ側でエンコードしてクルライアント側に伝達される。即ち、サービスオブジェクト（Ｓｅｒｖｉｃｅ  Ｏｂｊｅｃｔ）で得た結果をエンコーディング階層（Ｓｅｒｉａｌｉｚａｔｉｏｎ）１３でエンコードして伝送階層１５を介してクライアントアプリケーション１１に伝達する。
【００２９】
このような一般的なミドルウェア構造を基盤に拡張された本発明の実施例に係るミドルウェアを添付された図を参照して説明する。
【００３０】
図３は本発明の実施例に係るネットワークロボットシステムにおける通信階層構造を示す構成図である。
【００３１】
上記図３を参照すると、通信ミドルウェア１４０はスタブ／スケルトン階層２１０、同期オペレーション階層２２０と、遠隔リファレンス階層２３０と、伝送階層（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ)２４０とで構成され、メッセージの伝送による遠隔呼び出しが行われる。
【００３２】
上記スタブ／スケルトン階層（Ｓｔｕｂ／Ｓｋｅｌｅｔｏｎ  Ｌａｙｅｒ）２１０は、客体呼び出しを要請するクライアントが客体を呼び出す際実際に呼び出される階層である。ここで、スタブ（Ｓｔｕｂ；Ｐｒｏｘｙ  Ｏｂｊｅｃｔ）２１１はクライアント側のプロキシ客体で呼び出しを要請する側であり、逆に、スケルトン（Ｓｋｅｌｅｔｏｎ）２１２は呼び出しの要請を受ける側である。
【００３３】
上記非同期オペレーション階層（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｌａｙｅｒ）２２０は、ナビゲーション、音声合成などのように長期間行われる演算の場合要請直後直ちに返還し、後で望む場合にその結果を確認する機能のために非同期演算を実行するための階層である。ここで、非同期演算実行関数の場合には、オペレーションハンドル（ＯｐｅｒａｔｉｏｎＨａｎｄｌｅ）タイプで定義され長期間行われる演算の客体を返還するようになる。このような上記オペレーションハンドル（ＯｐｅｒａｔｉｏｎＨａｎｄｌｅ）は、長期間非同期演算に対する状態確認、制御、そして演算の結果を得ることができるインターフェースを提供する。
【００３４】
上記非同期オペレーション階層２２０は、オペレーションハンドラー（ＯｐｅｒａｔｉｏｎＨａｎｄｌｅｒ）２２１及びオペレーションアダプダ（ＯｐｅｒａｔｉｏｎＡｄａｐｔｅｒ）２２２に区分され、上記オペレーションアダプタ２２２は、また、アクセス制御器（ＡｃｃｅｓｓＣｏｎｔｒｏｌｌｅｒ）２２３及びロックマネージャー（Ｌｏｃｋ  Ｍａｎａｇｅｒ）２２４から成るアクセスメディエーター（Ａｃｅｓｓ  Ｍｅｄｉａｔｏｒ）と、スケジューラ（Ｓｃｈｅｄｕｌｅｒ）２２５及びストリームポンプ（Ｓｔｒｅａｍ  Ｐｕｍｐ）２２６に区分される。ここで、非同期演算でない場合には、上記非同期オペレーション階層２２０は経たなくなる。
【００３５】
上記オペレーションハンドラー２２１は、オペレーションハンドル（ＯｐｅｒａｔｉｏｎＨａｎｄｌｅ）のインタフェースで定義されたクライアント側の非同期演算処理を担当し、サーバ側の上記オファーレーションアダプダ２２２に演算要請を伝達する。
【００３６】
上記オペレーションアダプダ２２２は、クライアント側の上記オペレーションハンドラー２２１からの演算要請を受け、要請された各非同期演算を処理する独立的なスレッドを割り当てスケジューラ２２５のキューに挿入する。ここで、多重セッションの場合には、１セッションで演算を実行するうちにさらに他のセッションでその演算を再度要請することができる。これにより、上記ロックマネージャー２２３は、上記多重セッションでの同時接続制御を行い、上記アクセス制御器２２４の演算要請に対する接近制御を実行する。
【００３７】
上記ストリームポンプ２２６は、音声や映像データのようなサイズの大きいデータをストリーミング形態で伝送する場合伝送されたデータを処理する。
【００３８】
上記遠隔リファレンス階層（Ｒｅｍｏｔｅ  Ｒｅｆｅｒｅｎｃｅ  Ｌａｙｅｒ）２３０は、呼び出し情報をパッキングして伝達し、一般演算の場合、呼び出しが可能であるかを判断した後、実際呼び出しを実行する。但し、非同期演算の場合は実際呼び出しが上記非同期オペレーション階層２２０を経て実行される。そして、上記遠隔リファレンス階層（Ｒｅｍｏｔｅ  ｒｅｆｅｒｅｎｃｅ  Ｌａｙｅｒ）２３０は、クライアント側とサーバ側に区分され、それぞれ要請送信器２３１及び要請受信器２３２を含む。上記クライアント側の要請送信器２３１は、伝達メッセージをエンコードしてパッキングし、これをサーバ側の要請送信器２３２に伝達する。上記要請受信器２３２は、伝達されたメッセージを解いて客体を呼び出し、その結果をサーバ側の要請送信器を介してクライアント側に伝達する。
【００３９】
上記伝送階層（Ｔｒａｎｓｐｏｒｔ  Ｌａｙｅｒ）２４０は、実際に連結を担当する階層であって、ロボットの私設網接続などを考慮して‘コネクション型通信（ｃｏｎｎｅｃｔｉｏｎ−ｏｒｉｅｎｔｅｄ）’基盤の通信方式であるＴＣＰを使用する。
【００４０】
一方、一般的な演算は、同期的に行われるためその実行が全て終わる時まで待機するが、長期間行われる演算の場合には、要請直後直ちに返還され、その後望む場合にその結果を確認する機能が必要である。そのためには、上記ミドルウェアでの上記非同期オペレーション階層を利用して非同期演算（ａｓｙｎｃｈｒｏｎｏｕｓ  ｏｐｅｒａｔｉｏｎ）を実行しなければならない。
【００４１】
従って、上記のような構造を有するミドルウェアでロボットナビゲーション、ロボット又はソフトウェアロボットの音声合成、映像処理など長期間行われる演算及び大容量のデータの伝送を支援する非同期演算による通信実行工程について添付された図面を参照して説明する。
【００４２】
図４は、本発明の実施例によってネットワークロボットシステムにおける非同期オペレーション階層の通信工程を示すフローチャットである。
【００４３】
上記図４を参照すると、ステップ３０１で、ミドルウェアでの客体呼び出しを要請するクライアントは当該遠隔客体のスタブ（Ｓｔｕｂ）を呼び出す。ここで、非同期演算実行関数の場合には、オペレーションハンドル（ＯｐｅｒａｔｉｏｎＨａｎｄｌｅ）タイプで定義される。これによって、ミドルウェアのオペレーションハンドラー（Ｏｐｅｒａｔｉｏｎ Ｈａｎｄｌｅｒ）は、このようなインタフェースで定義されたクライアント側の非同期演算処理を担当する。
【００４４】
ステップ３０２で、ミドルウェア１４０は、上記オペレーションハンドラー２２１からサーバ側のオペレーションアダプダ２２２に上記非同期演算に対する作業実行を要請した後、その結果を待つ。この際、オペレーションハンドラー２２１は、サーバ側の演算の実行が終了するまで待っても良いし、又は決められた時間分だけ待ったり、実行を途中中断させても良い。ここで、上記要請に対する結果は、上記オペレーションハンドラー２２１に含まれたオペレーションリスナ（Ｏｐｅｒａｔｉｏｎ  Ｌｉｓｔｅｎｅｒ）を介して受けられる。
【００４５】
上記オペレーションハンドラー２２１が非同期演算を要請すると、ステップ３０３で、ミドルウェアは、上記オペレーションアダプダ２２２に上記非同期演算作業を伝達する。即ち、要請送信器（Ｒｅｑｕｅｓｔ  Ｓｅｎｄｅｒ）２３１を介して上記非同期演算要請に対する要請メッセージをエンコードして上記サーバ側に伝達する。これにより、サーバ側では要請受信器（Ｒｅｑｕｅｓｔ  Ｒｅｃｅｉｖｅｒ）２３２を介して上記受信した要請メッセージをデコーディングして実行客体として上記オペレーションアダプダ２２２に伝達する。
【００４６】
その後、ステップ３０４で、ミドルウェアは、上記サーバ側で要請された演算を実行する準備をする。この際、サーバ側では演算のためのデータが音声か又は映像かを確認する。
【００４７】
確認の結果、映像又は音声などのように大きさが大きいデータの場合には、ステップ３０５で、ミドルウェアは、上記映像又は音声データに対する演算をオペレーションアダプダ２２２に含まれたストリームポンプ２２６を介して実行させる。ここで、大きさの大きいデータはストリーム（Ｓｔｒｅａｍｉｎｇ）形態で伝送される。
【００４８】
その後、ステップ３０６で、ミドルウェアは、上記実行を終えたら、上記演算を要請したクライアントのオペレーションリスナに演算の結果を伝送する。
【００４９】
一方、ステップ３０４で確認した結果、映像又は音声データでない場合には、ステップ３０７で、ミドルウェアは、サーバ側に‘プロバイドオペレーション（ＰｒｏｖｉｄｅＯｐｅｒａｔｉｏｎ）’演算客体を生成した後キュー（Ｑｕｅｕｅ）に保存する。
【００５０】
その後、ステップ３０８で、ミドルウェアは、多くのクライアントからサーバ側に演算要請をする場合には、これらの実行をスケジューリングする。即ち、オペレーションアダプダ２２２に含まれたスケジューラ２２５を介して各演算要請に１つのワークスレッド（Ｗｏｒｋ  Ｔｈｒｅａｄ）を割り当て、キュー（Ｑｕｅｕｅ）に保存された演算客体を１つずつ実行する。この時、ステップ３０９で、ミドルウェアのオペレーションアダプダ２２２は、スタブ２１１を介して客体を要請した後、ステップ３０６に進んで演算実行結果をクライアント側に伝達する。
【００５１】
このような非同期演算工程において、長期間実行演算の場合には、その実行時間が比較的長いため、実行中、同一演算に対する演算要請が発生しうる。そのため、ミドルウェアは、サーバ側で演算を実行している場合には、クライアント側のオペレーションハンドラー２２１を介して要請された演算を待機させたり、同時に実行するための要請をすることができる。
【００５２】
また、ミドルウェアは、長期間実行演算要請後に、必要に応じてその演算が完了する前に中断させることができる。中断される演算の範囲では、自己要請した演算のみを中断させることができる方法と同じ演算で現在実行中であるか実行待機中の全ての演算を中断させることができる中断可能（ｉｎｔｅｒｒｕｐｔｉｂｌｅ  ｏｐｅｒａｔｉｏｎ）演算を提供する。
【００５３】
本発明の実施例に係るネットワークロボットシステムにおいて、ミドルウェアの遠隔リファレンス階層を介してロボット（クライアント）とサーバとの間に伝送される伝送メッセージのデータインコーディング方式について説明する。ここで、エンコード方式に対する表現はＢＮＦ（Ｂａｃｋｕｓ−Ｎａｕｒ  Ｆｏｒｍ）を使用する。
【００５４】
データエンコードは、メッセージの受信側（サーバ）でデータのタイプが予め分かる場合とデータのタイプが予め分からない場合の２つの場合があるが、データタイプが予め分かる場合には、メッセージの大きさを減らせるようにデータエンコードに含まない。一方、データタイプが予め分からない場合には、伝達するデータのタイプを受信側が分かるように実際データエンコードの前にタイプ情報を追加する。こうしてタイプ情報が追加された場合には、ターミナル名の前に‘t’を追加して表示する。
【００５５】
このようなデータエンコードによるデータフォーマットについて添付の図５を参照して説明する。
【００５６】
‘ｂｏｏｌｅａｎ’は、真偽値を示すための資料型であって、真の場合は１で、偽の場合は２であり各１バイトで表される。
【００５７】
‘ｂｙｔｅ’資料型は、ｂｉｔ ｓｉｇｎｅｄ定数値を表すものであり、最小で−１２８から最大で１２７までの値を有する。
【００５８】
‘ｓｈｏｒｔ’資料型は、１６ｂｉｔ  ｓｉｇｎｅｄ定数を表すものであり、最小で−２１５から最大で２１５−１までの値を取ることができ、上記ショット（ｓｈｏｒｔ）は、マルチバイト（ｍｕｌｔｉ−ｂｙｔｅ）エンコードでビックエンディアン（ｂｉｇ−ｅｎｄｉａｎ）エンコード方式を使用する。
【００５９】
‘ｉｎｔ’資料型は、３２ｂｉｔ  ｓｉｇｎｅｄ定数を表すもので、最小で−２３１から最大で２３１−１までの値を取ることができ、ビックエンディアン（ｂｉｇ−ｅｎｄｉａｎ）エンコード方式を使用する。
【００６０】
‘ｌｏｎｇ’資料型は、６４ｂｉｔ ｓｉｇｎｅｄ定数を表すものであり、最小で−２６３から最大で２６３−１までの値を取ることができ、ｂｉｇ−ｅｎｄｉａｎエンコード方式を使用する。
【００６１】
‘ｄｏｕｂｌｅ’資料型は、６４ｂｉｔ  ｓｉｇｎｅｄ浮動小数点を表すもので、‘ＩＥＥＥ  ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｎｕｍｂｅｒ’表現方法によりエンコードされる。
【００６２】
‘ｓｔｒｉｎｇ’資料型は、文字列のための資料型であって、ＵＴＦ−８形式でエンコードされたｂｙｔｅ列であり、最初４バイトでは実際文字列をｂｙｔｅの長さに含む。万一、長さが０の場合はゼロ長さ（ｚｅｒｏ−ｌｅｎｇｔｈ）文字列（“”）を意味し、−１の場合はヌル（ｎｕｌｌ）文字列を意味する。
【００６３】
‘ｂｉｎａｒｙ’資料型は、ｂｙｔｅ配列のための資料型で、最初４バイトは実際ｂｙｔｅ配列の長さ値がｉｎｔ型値で追加される。万一、長さ−１の場合はヌル（ｎｕｌｌ）配列を意味する。
【００６４】
‘ａｒｒａｙ’資料型は、任意の資料型の配列を記録する。ここで、エンコード方式は、最初に配列の長さ（‘ｌｅｎｇｔｈ’）が‘ｉｎｔ’方式でエンコードされ、配列の各元素データが順番通りエンコードされる。長さが−１の場合には、配列がヌル（ｎｕｌｌ）であることを意味し、０の場合には、長さ０の配列を意味する。客体志向言語を使用する場合には、タイプＴの配列（即ち、Ｔ［］）であれば単にタイプＴのデータのみならずタイプＴで相続された任意のタイプのデータも配列の元素として含むことができる。また、ジャバ（Ｊａｖａ）言語のようにインタフェースを支援する場合には、当該インタフェースを実現する全てのタイプのデータも含むことができる。従って、配列の元素をエンコードする場合には、各元素データ毎に別にタイプ情報が含まれたエンコード方法を使用する。
【００６５】
‘ｐａｒｒａｙ'は、基本資料型の配列のための資料型である。エンコード方式は、上記のａｒｒａｙ資料型方式と類似し、元素値は必ず基本資料型（ｂｏｏｌｅａｎ、ｂｙｔｅ、ｓｈｏｒｔ、ｉｎｔ、ｌｏｎｇ、ｄｏｕｂｌｅ、ｓｔｒｉｎｇ、ｂｉｎａｒｙ）でなければならない。基本資料型又は相続できない元素タイプの配列であるため、元素として来るデータは全て宣言された配列元素タイプと同じであるので、上記の‘ａｒｒａｙ’とは異なって各元素のタイプ情報を追加して記録する必要がない。
【００６６】
‘ｌｉｓｔ’は、任意の資料型の可変長さリストのための資料型である。エンコード方式は、上記の‘ａｒｒａｙ’資料型と類似し、‘ａｒｒａｙ’資料型の最初に位置する元素客体の資料型名前（“ｅｌｍ＿ｔｙｐｅ”）が含まれず、リストに含まれる元素データの資料型に制約を与えない。
【００６７】
‘ｍａｐ'は、任意のタイプの二つのデータ (キーとデータ)の順序対のマッピング情報のためのエンコード方式である。エンコード方式は、最初にマッピングに含まれたエントリー（ｅｎｔｒｙ）の個数が位置し、その次に（ｋｅｙ、ｖａｌｕｅ）データの順序対が順番通り記録される。万一、“ｌｅｎｇｔｈ”値が負数の場合には、ヌル（ｎｕｌｌ）値を意味する。保存される‘ｋｅｙ'と‘ｖａｌｕｅ’データのタイプは任意のものを含むことができるので、それぞれをエンコードする時にタイプコードを追加する。
【００６８】
‘ｖａｌｕｅｄ’は、任意のタイプの客体をエンコードするための方式である。本標準の客体エンコード範囲には客体に含まれたメンバーデータのみを含み、客体のメソッド及びその他の静的メンバー（ｓｔａｔｉｃ  ｍｅｍｂｅｒ）などは範囲に含まれない。エンコード方法は、最初４バイトは客体を構成するメンバーの個数が位置し、その後で、客体を構成する各メンバーに対しメンバー名（ｓｔｒｉｎｇ）とメンバー客体（ｔｙｐｅｄ）が一つの順序対でエンコードされる。
【００６９】
‘ｖａｌｕｅｄ’は、客体をエンコードすれば客体を構成する各メンバーに対し名前と値の順序対を順番通りエンコードする。このようなエンコード方式は、配列、リストなどのように同一タイプの多数客体をエンコードする場合に同じメンバー名を不要に重複してエンコードされるので、遠隔メソッド呼び出し時に、要請メッセージの大きさが不要に大きくなり呼び出し処理時間が増加する。
【００７０】
‘ｒｅｍｏｔｅ'は、遠隔客体のリファレンス（ｒｅｆｅｒｅｎｃｅ）をエンコードする方式である。エンコード方式は、遠隔客体が位置した通信ミドルウェアサーバのＩＰ住所（ｈｏｓｔ）の名前とポート番号（ｐｏｒｔ）が来て、サーバ内の客体の識別字経路（ｐａｔｈ）がストーリング（ｓｔｒｉｎｇ）タイプの配列値で位し、最後に当該遠隔客体の提供する遠隔タイプの名前が位置する。ここで、リファレンス（ｒｅｆｅｒｅｎｃｅ）は、１客体をエンコードする工程中に既にエンコードをし始めた客体を再びエンコードする場合に、再びエンコードせずに特別な表式を使用して先にエンコードされたものを指すようにする。これは、客体のメンバーが直間接的に自己をリファレンスする場合があり得るが、このような場合に上記ｖａｌｕｅｄ方式により客体をエンコードすれば、既にエンコードされた客体を再び循環エンコードするようになり、無限にエンコード作業が進行されるので、これを解決するためのものである。
【００７１】
‘ａｐｐｄｅｆ’は、データを送受信する両側で互いに予め約束された方式を使用する方式であって、上記言及したｖａｌｕｅｄエンコード方式が有する短所を解決することができる。但し、この方式は、呼び出し者及び非呼び出し者が同一のデータエンコーディング／デコーディング方式を使用しなければならない短所を有する。タイプ追加 （ｔａｐｐｄｅｆ）方式では、データエンコード方式を相手側に知らせることが可能な文字列形式のエンコードタグを伝達し、相手側をして適切なデコーダを使用できるようにする。一般的に、エンコードタグは、エンコードされるデータのタイプ（クラス）の名前を使用する。
【００７２】
‘ｔｈｒｏｗａｂｌｅ’は、例外客体を表すエンコード方式であり、発生された例外客体の名前（ｅｘｃｅｐｔｉｏｎ＿ｎａｍｅ）と例外状況に対する説明（ｄｅｔａｉｌｓ）がエンコードされる。万一、例外客体名前値がヌル（ｎｕｌｌ）の場合には、‘ｔｈｒｏｗａｂｌｅ’がヌル（ｎｕｌｌ）であるものと見做す。例外客体名前は、一般的に発生された例外客体のタイプ名前を使用し、追加説明のない場合の説明（ｄｅｔａｉｌｓ）は、ヌル（ｎｕｌｌ）でエンコードされる。
【００７３】
一方、上述したようなデータエンコード方式を基盤にネットワークサービスシステムでのロボットとサーバ間に伝達されるメッセージエンコード方式について説明する。
【００７４】
本発明の実施例で使用されるメッセージエンコード方式はＢＮＦを使用し、各メッセージは添付された図６に示す通りである。
【００７５】
連結要請メッセージ（ｃｏｎｎｅｃｔ）６１０は、ロボット（クライアント側）でサーバ通信を始めるために連結を要請する際に伝達されるメッセージである。上記連結要請メッセージ６１０は、ロボットとサーバ間のＴＣＰソケット連結が生成された後、連結を試みた側で相手に伝達する時だけ使用され、その後には使用されない。
【００７６】
上記連結要請メッセージ６１０を除いた全てのメッセージは定義されたヘッダを最初に含む。このようなヘッダ（ｈｅａｄｅｒ）６２０は、‘ｍａｇｉｃ’と、‘ｒｅｑｕｅｓｔ＿ｉｄ’と、‘ｌｅｎｇｔｈ’と、‘ｃｏｄｅ’とで構成される。上記‘ｍａｇｉｃ’は、通信ミドルウェアメッセージであることを知らせる４バイト定数値であり、１０進数９７０２０８を使用する。上記‘ｒｅｑｕｅｓｔ＿ｉｄ’は、要請識別字であり、通信ミドルウェアによって付与される番号で外部に伝送する‘ｃａｌｌ’又は‘ｎｏｔｉｆｙ’メッセージ毎に増加して唯一に配定値である。上記‘ｌｅｎｇｔｈ’は、メッセージの大きさでヘッダを含む値である。そして、‘ｃｏｄｅ’は、メッセージの種類を記録する１バイト値で、下記の表１と同じ意味を有する。
【００７７】
【表１】
2008146634.tif 000003
【００７８】
上記ヘッダでｃｏｄｅ値が１００の場合には、呼び出し（ｃａｌｌ）メッセージを表し、添付の図６に示すように上記呼び出し（ｃａｌｌ）メッセージ６３０は、指定された遠隔客体のメソッド（演算）を呼び出すために送信者（ｃａｌｌｅｒ）から受信者（ｃａｌｌｅｅ）に伝達されるメッセージである。上記呼び出しメッセージ６３０のメッセージフォーマットは、下記ＢＮＦのようにメッセージヘッダと、対象客体の経路（ｐａｔｈ）と、呼び出し対象メソッドと、最後に呼び出しに使用される因子とで構成される。ここで因子の個数が０の場合は因子がないメソッドの呼び出しを意味する。
【００７９】
上記ヘッダでｃｏｄｅ値が１０１の場合には、応答（ｒｅｐｌｙ）メッセージを表し、図６に示すように応答（ｒｅｐｌｙ）メッセージ６４０は、呼び出し（ｃａｌｌ）メッセージ６３０によって遠隔客体呼び出して受信者（ｃａｌｌｅｅ）側で行った結果を送信者（ｃａｌｌｅｒ）に伝達する時に使用されるメッセージである。このような応答メッセージ６４０のメッセージフォーマットは、最初に上記説明したヘッダが位置し、その次に呼び出されたメソッド定義で宣言された返還タイプ値と実際実行返還値が位置する。上記応答メッセージ６４０のヘッダ内ｒｅｑｕｅｓｔ＿ｉｄは、呼び出し結果の‘ｐａｉｒｉｎｇ’情報を知らせるために必ず上記呼び出しメッセージ６３０で記述されたｒｅｑｕｅｓｔ＿ｉｄ値を使用しなければならない。メソッドの返還値によって返還されるデータのタイプを明示的に分かるにもかかわらず、メソッドに宣言された返還タイプ情報を別に送る理由は、実際に返還値が宣言されたタイプの他にも、当該タイプで相続されたタイプの値を返還することができるためである。
【００８０】
上記ヘッダでｃｏｄｅ値が１０２の場合には、エラー（ｅｒｒｏｒ）メッセージを表し、添付された図６に示すようにエラー（ｅｒｒｏｒ）メッセージ６５０は遠隔客体呼び出しを実行するうちに例外発生で失敗した場合に受信者（ｃａｌｌｅｅ）側で発生した例外客体を送信者（ｃａｌｌｅｒ）に伝達する時に使用されるメッセージである。エラー（ｅｒｒｏｒ）メッセージ６５０のメッセージフォーマットは、最初にメッセージヘッダが位置し、その次に発生された例外客体が位置する。ここで、如何なる呼び出しによる誤りかを知らせるためにエラーメッセージヘッダのｒｅｑｕｅｓｔ＿ｉｄは必ずｃａｌｌメッセージで記述されたｒｅｑｕｅｓｔ＿ｉｄ値を使用しなければならない。
【００８１】
上記ヘッダでｃｏｄｅ値が１０２の場合には、通知（ｎｏｔｉｆｙ）メッセージを表し、添付された図６に示すように通知（ｎｏｔｉｆｙ）メッセージ６６０は、特定イベントが発生する場合に知らせるメッセージである。これは、呼び出しメッセージ６３０と類似するが、応答メッセージ６４０を待たない。上記通知メッセージ６６０のメッセージフォーマットは、メッセージヘッダと、対象客体の経路（ｐａｔｈ）と、呼び出し対象メソッドと、そして最後に呼び出しに使用される因子とで構成される。因子の個数が０の場合には、因子がないメソッドの呼び出しを意味する。
【００８２】
上述したように、本発明は、多様なロボットがサーバとの通信を通じて効果的にサーバ側で提供するロボットの基本機能を活用することができ、上記ミドルウェアの通信フレームワークが遠隔客体呼び出しのためにバイナリーメッセージエンコード方式で伝送メッセージを最小化されることによって、埋め込みシステムのように相対的に資源が制限された装置環境でも搭載できる。
【００８３】
また、本発明は、多様なＯＳ上で多様な言語で開発された多様なロボットに搭載でき、これにより、サーバとの遠隔通信が非常に容易で、効率的に実行することができ、ＴＣＰを利用してインターネット共有器を活用した私設網において接続に問題がなくあらゆるネットワーク網でも通信が可能である。
【００８４】
一方、本発明の詳細な説明では、具体的な実施例に関し、本発明の範囲から外れない限度内で様々な変形が可能であることは勿論である。従って、本発明の範囲は、説明された実施例に限って決められるべきではなく、上記特許請求の範囲だけでなく当該特許請求の範囲と均等なものなどによって決められるべきである。
【図面の簡単な説明】
【００８５】
【図１】本発明の実施例に係るネットワークロボットシステムの構造を示す構成図である。
【図２】一般的な分散システムにおけるミドルウェアで遠隔客体呼び出しの概念を示す状態図である。
【図３】本発明の実施例に係るネットワークロボットシステムにおける通信階層構造を示す構成図である。
【図４】本発明の実施例に係るネットワークロボットシステムにおける同期オペレーション階層の通信工程を示す流れ図である。
【図５】本発明の実施例に係るネットワークロボットシステムにおけるロボットとサーバ間に伝達されるデータフォーマットを示す図である。
【図６】本発明の実施例に係るネットワークロボットシステムにおけるロボットとサーバ間に伝達されるメッセージのフォーマットを示す図である。
【符号の説明】
【００８６】
１１０  ロボット
１２０  サーバ
１３０  センサ
１４０  通信ミドルウェア
２１０  スタブ／スケルトン階層
２２０  同期オペレーション階層
２３０  遠隔リファレンス階層
２４０  伝送階層
【図１】
2008146634.tif 000004
【図２】
2008146634.tif 000005
【図３】
2008146634.tif 000006
【図４】
2008146634.tif 000007
【図５】
2008146634.tif 000008
【図６】
2008146634.tif 000009