(57)【要約】本発明の課題は、改良された方法により２つのソフトウェアモジュール間の接続を登録する導入部によるシステムを提供することである。この課題を達成するため、本システムの第１ソフトウェアモジュールは第１ポート手段を有し、本システムの第２ソフトウェアモジュールは第２ポート手段を有し、第１ポート手段は第２ポート手段と接続するよう構成され、第２ポート手段は第１ポート手段と接続するよう構成され、第１ポート手段は接続対象のポートとして第２ポート手段を登録するよう構成される登録手段を有し、第２ソフトウェアモジュールは第１ポート手段に接続対象のポートとして第２ポート手段の利用性の変更を通知するよう構成される通知手段を有する。【特許請求の範囲】
【請求項１】
第１ソフトウェアモジュールと第２ソフトウェアモジュールとの間の接続を登録するシステムであって、
前記第１ソフトウェアモジュールは第１ポート手段を有し、第２ソフトウェアモジュールは第２ポート手段を有し、
前記第１ポート手段は前記第２ポート手段と接続するよう構成され、前記第２ポート手段は前記第１ポート手段と接続するよう構成され、
前記第１ポート手段は、前記第２ポート手段を接続対象のポートとして登録するよう構成される登録手段を有し、
前記第２ソフトウェアモジュールは、接続対象のポートとして前記第２ポート手段の利用性の変更を前記第１ポート手段に通知するよう構成される、
ことを特徴とするシステム。
【請求項２】
請求項１記載のシステムであって、
前記第１ポート手段の登録手段は、前記第２ポート手段を前記接続が確立されているポートとして登録するよう構成されることを特徴とするシステム。
【請求項３】
請求項１記載のシステムであって、
前記第２ポート手段の利用性は、前記第２ポート手段の生成または消失を示すことを特徴とするシステム。
【請求項４】
第１ソフトウェアモジュールと第２ソフトウェアモジュールとの間の接続を登録する方法であって、
前記第１ソフトウェアモジュールは第１ポート手段を有し、第２ソフトウェアモジュールは第２ポート手段を有し、
前記第１ポート手段は前記第２ポート手段と接続するよう構成され、前記第２ポート手段は前記第１ポート手段と接続するよう構成され、
当該方法は、
前記第１ポート手段によって、前記第２ポート手段を接続対象のポートとして登録するステップと、
前記第２ソフトウェアモジュールによって、接続対象のポートとして前記第２ポート手段の利用性の変更を前記第１ポート手段に通知するステップと、
を有することを特徴とする方法。
【請求項５】
請求項４記載の方法であって、さらに、
前記第１ポート手段によって、前記接続が確立されているポートとして前記第２ポート手段を登録するステップを有することを特徴とする方法。
【請求項６】
請求項４記載の方法であって、
前記第２ポート手段の利用性は、前記第２ポート手段の生成または消失を示すことを特徴とする方法。
【請求項７】
請求項４乃至６何れか一項記載の方法を１以上の処理ユニットに実行させるための命令を格納したコンピュータ可読媒体。
【請求項８】
請求項１乃至３何れか一項記載のシステムを有することを特徴とするロボット装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１ソフトウェアモジュールと第２ソフトウェアモジュールとの間の接続を登録するシステムに関する。
【０００２】
本発明はさらに、第１ソフトウェアモジュールと第２ソフトウェアモジュールとの間の接続を登録する方法に関する。
【０００３】
本発明はさらに、１以上の処理ユニットに当該方法を実行させるための命令を格納したコンピュータ可読媒体に関する。
【０００４】
本発明はさらに、当該システムを有するロボット装置に関する。
【背景技術】
【０００５】
そのようなシステム及び方法の一実施例は、ＥＰ０９４０７４７に開示されている。ここでは、ソフトウェアシステムのクラスがプログラム実行中にシステムマネージャによって追加、変更または削除することができるということが開示されている。そこには、モジュラーコンピュータシステムのモジュールのサブシステムに関する情報が含まれている。クラスとは、１以上の属性とこれらの属性を操作するのに利用可能なメソッドを含むソフトウェア構造である。サブシステムとは、明確な機能を提供するクラスのインスタンスである。他のサブシステムは、それの機能を利用するため、サブシステムによって提供されるインタフェースを利用するようにしてもよい。モジュールとは、１以上のサブシステムを含むソフトウェアエンティティである。モジュールとは、動的にリンク可能なエンティティである。モジュールは、システムマネージャによって内部的に利用される。モジュールがダウンロードされると、システムマネージャは、当該モジュールが有するサブシステムに関する情報を取得するためモジュールを呼び出す。サブシステムが必要とされるとき、所望のサブシステムの場所を検出するリクエストがシステムマネージャに行われる。このシステムマネージャは、サブシステムを含むモジュールを検出し、当該モジュールにサブシステムを始動するよう指示し、要求されたサブシステムの場所を返す。その後、必要とされる限り、サブシステムを直接利用することができる。他のサブシステムが検出されるまで、システムマネージャは必要とされない。しかしながら、リクエストに応じたサブシステムが存在しない場合、システムマネージャは、要求されたサブシステムの場所を与えることができず、このため、要求されたサブシステムのインタフェースへのアクセスを提供することができない。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、改良された方法により２つのソフトウェアモジュール間の接続を登録する導入部によるシステムを提供することである。この課題を達成するため、本システムの第１ソフトウェアモジュールは第１ポート手段を有し、本システムの第２ソフトウェアモジュールは第２ポート手段を有し、第１ポート手段は第２ポート手段と接続するよう構成され、第２ポート手段は第１ポート手段と接続するよう構成され、第１ポート手段は接続対象のポートとして第２ポート手段を登録するよう構成される登録手段を有し、第２ソフトウェアモジュールは第１ポート手段に接続対象のポートとして第２ポート手段の利用性の変更を通知するよう構成される通知手段を有する。
【０００７】
これらソフトウェアモジュールは、個別の機能を実現するのに利用される構成ブロックである。例えば、ソフトウェアモジュールは、センサ、アクチュエータ、ビジョンアルゴリズム、制御動作、状態推定器などの機能を実現することが可能である。ソフトウェアモジュールは、オペレーティングシステムにおいて独立して実行可能なものとして始動することが可能である。ソフトウェアモジュールは、データを共有する入出力ポートを有し、当該データを処理するアルゴリズムを含む。１つのモジュールからのポートは、他のモジュールからの他のポートに接続することが可能であり、これにより、これら２つのモジュール間の接続が生成される。１つのモジュールからのポートは、異なるモジュールの異なるポートに接続することが可能である。各ポート内において当該ポートと接続可能なポートを登録することによって、ポーと自ら接続可能なポートに関する情報を有することとなる。従って、ポートには接続可能なポートの利用性の変更について通知可能となる。このとき、ポートは通知メッセージのコンテンツに基づく適切な動作をとることが可能となる。
【０００８】
本発明によるシステムの一実施例が、請求項２に記載される。接続が確立されるポートを登録することによって、ソフトウェアモジュールは、接続が期待されるポートと接続が確立されているポートを追跡することができる。従って、ソフトウェアモジュールは、それのすべての接続が確立されたかに関する情報を有することとなる。
【０００９】
本発明によるシステムのさらなる実施例が、請求項３に記載される。接続が期待されるポートの生成に関する情報を含めることによって、通知されたポートは、生成されたポートとの接続の生成などの適切な動作をとることが可能となる。さらに、接続が確立されているポートの消失に関する情報を含めることによって、通知されたポートは当該イベントに対する適切な動作をとることが可能となる。例えば、通知されたポートは、接続を閉じ、消失したポートを接続対象のポートの登録に登録する。さらに、それはこの消失したポートを有するソフトウェアモジュールが、消失したポートが再生成される場合に通知されるべきポートとして当該ソフトウェアモジュールの登録に追加するよう要求することができる。
【００１０】
本発明のさらなる課題は、改良された方法により２つのソフトウェアモジュール間の接続を登録する導入部による方法を提供することができる。この課題を達成するため、本方法の第１ソフトウェアモジュールは第１ポート手段を有し、本方法の第２ソフトウェアモジュールは第２ポート手段を有し、第１ポート手段は第２ポート手段と接続するよう構成され、第２ポート手段は第１ポート手段と接続するよう構成され、第１ポート手段は接続対象のポートとして第２ポート手段を登録するよう構成される登録手段を有し、第２ソフトウェアモジュールは第１ポート手段に接続対象のポートとして第２ポート手段の利用性の変更を通知するよう構成される通知手段を有する。
【００１１】
本方法の実施例が請求項５及び６に記載される。
【００１２】
本発明の上記及び他の特徴は、以下の図面により示されるような以降に説明される実施例を参照して明らかとされる。
【発明を実施するための最良の形態】
【００１３】
モジュールとは、各機能を実現するのに用いられる構成ブロックを構成するコンピュータ可読コードである。例えば、モジュールは、センサ、アクチュエータ、ビジョンアルゴリズム、制御動作、状態推定器、ロボットアプリケーションなどを実現可能である。モジュールは、例えば、ロボットアプリケーションなどの内部の他のモジュールに関して非同期的に動作する独立したソフトウェアプロセスである。プロセッサ時間及びメモリなどのモジュールにより必要とされるリソースは、オペレーティングシステムによって提供される。モジュールは、オペレーティングシステムにおいて個別に実行可能なものとして開始される。さらに、モジュールは他のモジュールとは独立に実現可能である。
【００１４】
図１は、モジュールアーキテクチャを概略的に示す。モジュール１００は出力ポート１０４を有し、モジュール１０２は入力ポート１０６と出力ポート１０８を有する。モジュール１００の出力ポート１０４は、接続１１０を介しモジュール１０２の入力ポート１０６に接続される。互いに接続される入力及び出力ポートは、データを共有する。モジュールは、このデータを処理するアルゴリズムを有する。ポートの属性が一致する場合、これらのポートは実行時に互いに接続可能である。ポートは、ポートタイプ、データタイプ、バッファタイプ及びトリガータイプの属性を有する。
・ポートタイプ：３つのポートタイプが存在する。第１のタイプは、入力ポートである。これらのポートは、他のモジュールからデータを読み出すのに利用される。第２のタイプは、出力ポートである。これらのポートは、他のモジュールにデータを書き込むのに利用される。これらのポートとの読出し及び書き込みは、非同期的に実行される。すなわち、１つのモジュールが他のモジュールにデータを書き込む場合、当該データの受信が完了するまで待機せず、それのアルゴリズムの実行を継続する。第３のタイプは、読出し及び書き込みが可能な双方向ポートである。この第３のタイプは、同期的な通信を可能にする。
・データタイプ：ポートは、好ましくは、１つのデータタイプのみサポートする。同じデータタイプを共有するポートが、互いに接続することができる。文字列、バイト、整数及び浮動小数、あるいは上記タイプの配列などの異なるデータタイプが、当該アーキテクチャ内で利用可能である。
・バッファタイプ：入力及び出力ポートは非同期的に動作するため、データは読出されることなく出力ポートに送信することができる。従って、このポートのバッファタイプが定義される。第１のバッファタイプは、到着した新たなデータアイテムを格納し、古いデータを削除する「キープラスト（ｋｅｅｐ  ｌａｓｔ）」バッファである。第２のバッファタイプは、読出されていない最初のデータアイテムを保持し、新たに到着したデータアイテムを削除する「キープファースト（ｋｅｅｐ  ｆｉｒｓｔ）」バッファである。第３のバッファタイプは、受信した読出されていないすべてのデータアイテムを格納する「キープオール（ｋｅｅｐ  ａｌｌ）」バッファである。
・トリガータイプ：ポート間のデータの転送をトリガーする機構には２つのタイプがある。第１の機構はプッシュ機構である。モジュールのアルゴリズムが書き込み動作を実行すると、プッシュ出力ポートはそれに接続されているプッシュ入力ポートにデータを直接転送する。これにより、接続されているモジュールの入力ポートに外部イベントが生成される。第２の機構はプル機構である。モジュールのアルゴリズムが読み出し動作を実行すると、プル入力ポートは、それに接続されているプル出力ポートに新しいデータに対するリクエストを送信する。これにより、接続されるモジュールの出力ポートにおいて外部イベントが生成される。プッシュ／プル入力ポートとプッシュ／プル出力ポート間のすべての組み合わせが可能とされる。しかしながら、プッシュ入力ポートとプル出力ポートの組み合わせに対して、データを転送するイニシアティブをとるポートは存在しない。
【００１５】
ポートはまた、本発明の趣旨から逸脱することなく、異なるタイプを有するより多くの（少ない）属性を有することが可能である。
【００１６】
各ポートは、他の複数のポートに接続可能である。例えば、出力ポートが複数の入力ポートに接続されている場合、入力ポートは転送されるデータのコピーを受信する。
【００１７】
図２は、ソフトウェアモジュールの登録方法の各ステップを示す。上述のように、モジュールは独立したプロセスである。従って、モジュールを互いに接続するため、モジュールとポートは、互いに検出し合う必要がある。これは、モジュールとポートに一意的な名前を与え、レジストリを用いることにより達成される。このレジストリは、実行中のすべてのモジュールの名前のリストを維持するプロセスである。最初のステップＳ２００において、モジュールＡが生成され、登録のためにそれの名前とそれのプロセス識別情報などの追加的情報とをレジストリに送信する。モジュールが登録されると、名前によって他のモジュールを検索することが可能となる。モジュールＡは、他のモジュールＢの入力ポートｉＢとの接続を所望する出力ポートｏＡを有する。ここでステップＳ２０２において、モジュールＡは、レジストリにモジュール名Ｂを有する他のモジュールのプロセス識別情報を問い合わせる。名前Ｂを有するモジュールが利用可能でない場合、本方法はステップＳ２０４に移行する。名前Ｂを有するモジュールが利用可能でない場合、本方法はステップＳ２０６に移行する。
【００１８】
ステップＳ２０４において、モジュールＡは、モジュールＢが生成されるかのつうちを受信するため、レジストリの通知リスト内にレジストリが登録されるよう求める。この通知リストは、通知される必要があるモジュールの名前と、生成通知が送信される必要があるモジュールの名前とを有する以下のようなテーブルを有する。
【００１９】
【表１】
2006518509.tif 000002
通知を必要とするモジュールごとの集合や生成されるモジュールごとの集合などの他のテーブルまたは集合もまた考えられる。
【００２０】
ステップＳ２０６において、モジュールＡは、モジュールＢに入力ポートｉＢに接続するよう求める。入力ポートｉＢが利用可能でない場合、本方法はステップＳ２０８に移行する。入力ポートｉＢが利用可能な場合、本方法はステップＳ２１０に移行する。
【００２１】
ステップＳ２０８において、モジュールＡは、入力ポートｉＢの生成に応答して通知を受け取るために、モジュールＢの通知リストに登録されることをモジュールＢに求める。モジュールＢは、モジュールＡの名前をそれの通知リストに登録する。この登録リストは、ポートが生成または削除される場合に、通知される必要があるすべてのモジュールの名前を有する。通知リストは、通知される必要があるモジュール名と生成または削除されるポート名との対応関係を有する。通知リストはまた、通知される必要があるモジュール名のポートごとの集合とすることも可能である。さらに、出力ポートｏＡは、入力ポートｉＢとの接続がまだ確立されていないことを登録する。
【００２２】
ステップＳ２１０において、モジュールＡの出力ポートｏＡとモジュールＢの入力ポートｉＢとの間の接続が確立される。出力ポートｏＡはまた、出力ポートｏＡはまた、接続が確立されているポート名のリストを有し、入力ポートｉＢをこの「確立済」リストに追加する。その後、入力ポートｉＢは、接続がまだ確立できないポートにより出力ポートｏＡのリストから削除される。さらに、入力ポートｉＢは、自らの「確立済」リストを有し、接続が確立されているポートして当該リスト内の出力ポートｏＡを登録する。
【００２３】
図３は、モジュールの生成方法の各ステップを示す。ステップＳ３００において、モジュールＡは、モジュールＢの入力ポートｉＢとの接続を確立しようとする。しかしながら、モジュールＢはレジストリによりまだ登録されていないため、モジュールＡは、モジュールＢが生成される場合に通知されるレジストリの通知リストに追加される。
【００２４】
ステップＳ３０２において、モジュールＢは開始され、自らをレジストリに登録する。レジストリは、モジュールＢをそれの名前とそれのプロセス識別情報により登録する。
【００２５】
次のステップＳ３０４において、レジストリは、それの通知リストをチェックし、モジュールＢの生成をモジュールＡに通知する。
【００２６】
ステップＳ３０６において、モジュールＡは、モジュールＢに入力ポートｉＢと接続するよう求める。入力ポートｉＢが利用可能でない場合、本方法は上述のようにステップＳ２０８に移行する。入力ポートｉＢが利用可能である場合、本方法は上述のようにステップＳ２１０に移行する。
【００２７】
図４は、接続ポートの生成方法の各ステップを示す。ステップＳ４００において、モジュールＡは、モジュールＡの出力ポートｏＡとモジュールＢの入力ポートｉＢとの間の接続を確立しようとする。モジュールＡは、モジュールＢのプロセス識別情報をレジストリに要求し、モジュールＡは、レジストリの当該プロセス識別情報を受け取る。この識別情報を利用することにより、モジュールＡは、モジュールＢに入力ポートｉＢとの接続を確立することを求める。しかしながら、入力ポートｉＢはまだ生成されておらず、モジュールＢは入力ポートｉＢが生成された場合に通知されるモジュールＢの通知リストにモジュールＡを追加する。
【００２８】
ステップＳ４０２において、モジュールＢは、名前ｉＢを有する入力ポートを生成する。モジュールＢは、それの通知リストをチェックし、モジュールＡに入力ポートｉＢが生成されることを通知する。
【００２９】
次のステップＳ４０４において、モジュールＡの出力ポートｏＡは、モジュールＢの入力ポートｉＢが接続を確立するよう要求する。
【００３０】
次のステップＳ２１０において、上述のように、出力ポートｏＡと入力ポートｉＢとの間の接続が確立される。
【００３１】
ポートまたはモジュールの消失の登録のため、モジュール及びレジストリはまた通知リストを有する。このモジュールの「消失」通知リストは、モジュールのポートの消失により通知される必要があるすべてのモジュールの追跡するものである。レジストリの「消失」通知リストは、モジュールが実行を停止すると通知される必要があるすべてのモジュールを追跡する。
【００３２】
本発明の方法に関する上記実施例における順序は必須なものではなく、当業者は本発明により意図される趣旨から逸脱することなく、各ステップの順序を変更したり、スレッドモデル、マルチプロセッサシステムまたは複数プロセスを同時使用することによって各ステップを実行するようにしてもよい。
【００３３】
図５は、本発明によるシステムの主要部を概略的に示す。システム５００は、マイクロプロセッサ５０２、ソフトウェアバス５０４及びメモリ５０６を有する。メモリ５０８は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）とすることが可能である。メモリ５０６は、ソフトウェアバス５０４を介しマイクロプロセッサと通信する。メモリ５０６は、コンピュータ可読コード５０８、５１０、５１２、５１４、５１６及び５１８を有する。コンピュータ可読コード５０８は、モーションセンサの機能を実現するソフトウェアモジュールとして構成される。コンピュータ可読コード５１４は、感知された動きに応答した応答機能を実現するソフトウェアモジュールとして構成される。この応答は、移動や警告とすることができる。コンピュータ可読コード５１０は、上述のような出力ポートの機能を実現するよう構成される。コンピュータ可読コード５１２は、接続がまだ確立されていないポートを登録する機能を実現するよう構成される。さらに、コンピュータ可読コード５１２は、接続が確立されているポートを登録する機能を実現するよう構成される。コンピュータ可読コード５１６は、上述のように、入力ポートの機能を実現するよう構成される。コンピュータ可読コード５１８は、上述のように、ポートが利用可能となった場合に通知される必要があるモジュールを登録する機能を実現するよう構成される。システム５００は、ロボット装置５２０内に構成される。
【００３４】
ここで、上記実施例は本発明を限定するものでなく、例示するためのものであり、添付された請求項の範囲から逸脱することなく他の多数の実施例を当業者は構成することが可能であろう。請求項では、括弧内の参照記号は請求項を限定するものと解釈されるべきでない。「有する」という用語は、請求項に列挙された以外の要素またはステップの存在を排除するものでない。要素に先行する「ある」という用語は、当該要素が複数存在することを排除するものでない。本発明は、複数の要素から構成されるハードウェアによって実現可能であると共に、適切にプログラムされたコンピュータにより実現することも可能である。複数の手段を列挙したシステムクレームでは、これらの手段のいくつかはコンピュータ可読ソフトウェアまたはハードウェアの同一のアイテムにより実現することが可能である。ある手段が相互に異なる従属クレームに記載されているという事実は、これらの手段の組み合わせが効果的に利用可能ではないということを示すものではない。
【図面の簡単な説明】
【００３５】
【図１】図１は、モジュールアーキテクチャを概略的に示す。
【図２】図２は、ソフトウェアモジュールの登録方法の各ステップを示す。
【図３】図３は、モジュールの生成方法の各ステップを示す。
【図４】図４は、接続ポートの生成方法の各ステップを示す。
【図５】図５は、本発明によるシステムの主要部を概略的に示す。
【図１】
2006518509.tif 000003
【図２】
2006518509.tif 000004
【図３】
2006518509.tif 000005
【図４】
2006518509.tif 000006
【図５】
2006518509.tif 000007
【国際調査報告】
2006518509.tif 000008
2006518509.tif 000009