(57)【要約】【課題】ロボット応用プログラムの移植性を向上させ、ロボット応用プログラムの性能が強化されるように、ロボット応用をなす各モジュールをプラグインで構成し、必要時に動的に搭載するロボット応用プログラム実行装置及び方法を提供する。【解決手段】本発明のロボット応用プログラム実行装置は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含む。【選択図】図１
2010142943.tif 000002
【特許請求の範囲】
【請求項１】
ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、
各種センサ及びエフェクタを有しているロボット装置部と、
前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、
前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部と
を含むことを特徴とするロボット応用プログラム実行装置。
【請求項２】
それぞれのプラグインは、前記ロボット応用プログラムの機能をモジュール別に実現し、動的にローディング可能なファイルであることを特徴とする請求項１に記載のロボット応用プログラム実行装置。
【請求項３】
前記ロボット応用実行装置は、前記ロボット応用プログラムの実行中に動的に前記プラグインを搭載し、前記プラグイン内に定義されたプラガブルオブジェクトを登録するプラグインフレームワークを含むことを特徴とする請求項２に記載のロボット応用プログラム実行装置。
【請求項４】
前記ロボット応用実行装置は、前記登録されたプラガブルオブジェクトを生成し、前記生成されたプラガブルオブジェクトを初期化し、前記初期化されたプラガブルオブジェクトにサービスを提供するアプリケーションフレームワークを含むことを特徴とする請求項３に記載のロボット応用プログラム実行装置。
【請求項５】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトが前記アプリケーションフレームワークと相互作用するためのインターフェースを提供するアプリケーションファサードを含むことを特徴とする請求項４に記載のロボット応用プログラム実行装置。
【請求項６】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトで定義したシンボルを登録、管理するシンボルサービス管理者を含むことを特徴とする請求項４に記載のロボット応用プログラム実行装置。
【請求項７】
前記アプリケーションフレームワークは、前記動的に搭載されたプラグインの前記プラガブルオブジェクトのうち、前記アプリケーションフレームワークが現在活性化させたプラガブルオブジェクトに対するリストを管理するプラガブルオブジェクト管理者を含むことを特徴とする請求項４に記載のロボット応用プログラム実行装置。
【請求項８】
前記プラグインフレームワークは、前記プラガブルオブジェクトを登録するためのプラグイン登録関数と、前記登録されたプラガブルオブジェクトを管理するプラガブルオブジェクト登録テーブルとを含むことを特徴とする請求項３に記載のロボット応用プログラム実行装置。
【請求項９】
前記プラガブルオブジェクトは、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに登録されることを特徴とする請求項８に記載のロボット応用プログラム実行装置。
【請求項１０】
それぞれのプラガブルオブジェクトの名前、生成関数及び削除関数は、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに伝達することを特徴とする請求項９に記載のロボット応用プログラム実行装置。
【請求項１１】
複数のプラグインをロボット応用プログラムに動的に搭載する段階と、
前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、
アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、
前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階と
を含むことを特徴とするロボット応用プログラム実行方法。
【請求項１２】
前記動的にプラグインを搭載する段階は、
前記アプリケーションフレームワークが前記プラグインフレームワークにロボットに搭載された全てのプラグイン又は特定のプラグインを搭載するように命令する段階を含むことを特徴とする請求項１１に記載のロボット応用プログラム実行方法。
【請求項１３】
前記プラガブルオブジェクトを生成する段階を更に含むことを特徴とする請求項１１に記載のロボット応用プログラム実行方法。
【請求項１４】
前記プラガブルオブジェクトを生成する段階では、
前記プラグインフレームワークは前記プラガブルオブジェクトの生成を要請され、前記プラグインフレームワークが管理するプラガブルオブジェクト登録テーブルで前記プラガブルオブジェクトに対する登録エントリを探し、前記登録エントリに登録された生成関数を呼び出すことを特徴とする請求項１３に記載のロボット応用プログラム方法。
【請求項１５】
前記特定プラガブルオブジェクトを初期化する段階では、
前記プラガブルオブジェクトが定義する関数及びシンボルに対してサービスを登録することを特徴とする請求項１１に記載のロボット応用プログラム方法。
【請求項１６】
前記サービスを登録する段階では、
タイマサービス、シンボルサービス及びシンボル変更通知サービスが登録されることを特徴とする請求項１１に記載のロボット応用プログラム方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はロボット応用プログラム実行装置及び方法に関し、更に詳しくは、ロボットソフトウェアを実行時間に動的に再構成し、これを即時に利用可能なようにする装置及び方法に関する。
【背景技術】
【０００２】
ロボットは、多くのハードウェア装置を有するプラットホームである。このプラットホームに基づいてロボットを制御し、ユーザに有用なサービスを提供するロボット応用プログラムを作成するようになる。このようなロボット用応用プログラムは、通常、センシング、認識、意志決定、行動の順序を経て動作するようになる。
【０００３】
外部との相互作用を担当するセンシングと行動動作はロボット応用プログラムがコンピュータ上でのみ動作する既存の応用プログラムとは異なる多くの特徴を有するようにする。
【０００４】
特に、センシングと行動動作は、ロボットに付着された装置に依存的であるため、既存のロボット応用プログラムが特定のロボットでのみ動作するという短所を必然的に有さなければならなかった。
【０００５】
従来のロボット応用プログラムにおいては、ロボットソフトウェアの各モジュールが静的に結合されているため、ロボットプラットホームが変更されたり、ロボットのモジュールを切り換えるためには、ロボット応用プログラム全体をコンパイルし直さなければならなかった。また、動的にモジュールを搭載しても、モジュールの機能のうち、応用プログラムで事前に定義した機能のみ呼び出されることができる。従って、従来のロボット応用プログラムは移植性が低く、活用が制約的であるという短所があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許第５３３９４３０号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、上記事情に鑑みてなされたものであって、その目的は、ロボット応用プログラムの移植性を向上させ、ロボット応用プログラムの性能が強化されるように、ロボット応用をなす各モジュールをプラグインで構成し、必要時に動的に搭載するロボット応用プログラム実行装置及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の態様によれば、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含むことを特徴とするロボット応用プログラム実行装置が提供される。
【０００９】
更に、本発明の他の態様によれば、複数のプラグインをロボット応用プログラムに動的に搭載する段階と、前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階とを含むロボット応用プログラム実行方法が提供される。
【発明の効果】
【００１０】
本発明によれば、応用を構成する各モジュールが動的に搭載されるため、各モジュールを応用と独立して開発できるという効果を奏する。従って、開発の効率性が向上でき、開発時間及び努力を軽減することができる。
【００１１】
また、各モジュールは応用プログラムの再コンパイリングを行うことなく、簡単に交換できるため、応用プログラムを低コストでアップグレードできる。
【００１２】
更に、各モジュールのインターフェースを他のモジュールが使用できるため、応用プログラムのロボット間の移植性を増大することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明によるロボット応用プログラム実行装置を示す図である。
【図２】本発明によるプラグインの構造を示す図である。
【図３】本発明によるアプリケーションフレームワークを示す図である。
【図４】本発明によるプラグインフレームワークの構造を示す図である。
【図５】本発明によるプラガブルオブジェクトの構造を示す図である。
【図６】本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【図７】本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【図８】本発明により生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【図９】本発明によってタイマサービスを登録する過程の一例を示す図である。
【図１０】本発明によってシンボルサービスを登録する過程の一例を示す図である。
【図１１】本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【図１２】本発明による機能呼出しサービスを登録する一例を示す図である。
【図１３】本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の好適な実施形態を添付する図面を参照して詳細に説明する。
【００１５】
図１は、本発明によるロボット応用プログラム実行装置を示す図である。図１を参照すれば、本発明によるロボット応用プログラム実行装置１００は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行部１１０と、多数の各種センサ及び出力を担当するエフェクタを有しているロボット装置部１２０と、ロボットの外部や内部で作成されたプラグインを格納するプラグイン格納部１３０と、ロボット応用プログラムを格納するためのロボット応用プログラム格納部１４０とで構成される。但し、プラグイン格納部１３０とロボット応用プログラム格納部１４０は、それぞれ別途に存在するか、同じ格納装置を活用することができる。
【００１６】
図２は、本発明によるプラグインの構造を示す図である。プラグインは、多様な応用が共有し、応用に動的に搭載可能である。
【００１７】
図２を参照すれば、本発明によるプラグイン２００は、初期化関数２１０及び複数のプラガブルオブジェクト２２０、２３０、２４０を定義することができる。初期化関数２１０は、各応用でプラグイン２００をロードするとき、真っ先に呼び出す関数であり、プラガブルオブジェクト２２０、２３０、２４０は、所望の機能を行うために応用が実際に利用する個体である。
【００１８】
図３は、本発明によるアプリケーションフレームワークを示す図である。全ての応用は１つのアプリケーションフレームワーク３００を有する。
【００１９】
図３を参照すれば、本発明によるアプリケーションフレームワーク３００は、アプリケーションファサード３１０、シンボルサービス管理者３２０、プラガブルオブジェクト管理者３３０、機能呼出しサービス管理者３４０、タイマサービス管理者３５０を有する。
【００２０】
アプリケーションファサード３１０は、各プラガブルオブジェクトがアプリケーションフレームワーク３００と相互作用するインターフェースを提供する。アプリケーションファサード３１０は、各プラガブルオブジェクトが生成される時にプラガブルオブジェクトに伝達され、全てのプラガブルオブジェクトは、アプリケーションファサード３１０とのみ相互作用する。
【００２１】
シンボルサービス管理者３２０は、プラガブルオブジェクトで定義したシンボルを登録、管理する。各プラガブルオブジェクト自身が定義したシンボルのうち、外部に露出させたいシンボルをアプリケーションファサード３１０を通じて登録要請すれば、アプリケーションファサード３１０はシンボルサービス管理者３２０に該当シンボルの登録を要請する。
【００２２】
また、プラガブルオブジェクトは、シンボルサービス管理者３２０により登録されたシンボルに対するサービス（例えば、シンボル値の獲得、シンボル値の割り当て、シンボル値の変更の通知及び他のプラガブルオブジェクトのシンボル値を獲得しようとする試みの通知など）の登録をアプリケーションファサード３１０を通じてシンボルサービス管理者３２０に要請できる。
【００２３】
プラガブルオブジェクト管理者３３０は、動的に搭載されたプラグインのプラガブルオブジェクトのうち、アプリケーションフレームワーク３００が現在活性化させたプラガブルオブジェクトのリストを管理する。
【００２４】
機能呼出しサービス管理者３４０は、プラガブルオブジェクトの機能を登録、管理する。各プラガブルオブジェクトが自身の機能のうち、外部に露出させたい機能をアプリケーションファサード３１０を通じて登録要請すれば、アプリケーションファサード３１０は、機能呼出しサービス管理者３４０に該当機能の登録を要請する。各プラガブルオブジェクトは、機能呼出しサービス管理者３４０に登録された他のプラガブルオブジェクトの機能を呼び出すことで、他のプラガブルオブジェクトの機能を利用できるようになる。
【００２５】
タイマサービス管理者３５０は、プラガブルオブジェクトの機能の周期的な呼び出しを登録、管理する。各プラガブルオブジェクトが機能をアプリケーションファサード３１０を通じてタイマサービス管理者３５０に登録すれば、登録された機能は一定の周期で呼び出される。
【００２６】
図４は、本発明によるプラグインフレームワークの構造を示す図である。図４を参照すれば、本発明によるプラグインフレームワーク４００は、１つのプラグイン登録関数４１０と、登録されたプラガブルオブジェクトを管理するためのプラガブルオブジェクト登録テーブル４２０とで構成される。プラグインフレームワーク４００は、動的ローディングが可能なプラグインをロードし、プラグイン内に定義されているプラガブルオブジェクトを登録する。プラグインフレームワーク４００は、そのためにプラガブルオブジェクトを登録するとき、利用できるプラグイン登録関数４１０を定義する。ここで、プラグインとプラグインフレームワーク４００との間にはプラグイン登録関数４１０に対する呼び出しシグネチャが事前に約束されていなければならない。
【００２７】
プラガブルオブジェクトは、プラグイン登録関数４１０を通じて登録される。このとき、プラグイン登録関数４１０を通じてプラグイン登録関数４１０をなす関数シグネチャであるプラガブルオブジェクトの名前、プラガブルオブジェクト生成関数、プラガブルオブジェクト削除関数が伝達される。
【００２８】
図５は、本発明によるプラガブルオブジェクトの構造を示す図である。
【００２９】
図５を参照すれば、プラガブルオブジェクト５００は、登録インターフェース５１０、共通インターフェース５２０、個別インターフェース／データ定義部５３０で構成され、これらは論理的に区分される。
【００３０】
登録インターフェース５１０は、プラガブルオブジェクト５００を生成するためのプラガブルオブジェクト生成関数（例えば、「Ｃｒｅａｔｅ（）」）及びプラガブルオブジェクト５００を削除するためのプラガブルオブジェクト削除関数（例えば、「Ｄｅｓｔｒｏｙ（）」）を定義する。プラグインフレームワーク４００を通じてプラグインが初期化されるとき、プラグインは登録インターフェース５１０に定義されたプラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数をプラグインフレームワーク４００に伝達する。プラグインフレームワーク４００は、プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数を呼び出すことで、それぞれプラガブルオブジェクト５００のエンティティ（ｅｎｔｉｔｙ）を生成及び削除する。プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数は、プラグインフレームワーク４００とプラガブルオブジェクト５００との間に既に約束された関数シグネチャを有さなければならない。
【００３１】
共通インターフェース５２０は、プラガブルオブジェクト５００とアプリケーションフレームワーク３００との間のインターフェースである。共通インターフェース５２０は、最小限にプラガブルオブジェクト５００を初期化するための初期化関数（例えば、「Ｉｎｉｔ（）」）、プラガブルオブジェクト５００を活性化するための活性化関数（例えば、「Ｏｎ（）」）及びプラガブルオブジェクト５００を非活性化するための非活性化関数（例えば、「Ｏｆｆ（）」）で構成される。
【００３２】
登録インターフェース５１０及び共通インターフェース５２０は、プラガブルオブジェクト５００がアプリケーションフレームワーク３００及びプラグインフレームワーク４００と相互作用するための必須のインターフェースであるので、全てのプラガブルオブジェクト５００毎に定義されなければならない。
【００３３】
個別インターフェース／データ定義部５３０は、プラガブルオブジェクト５００で行う主要機能及びシンボルを定義し、これはプラガブルオブジェクト５００の開発者が任意に定義することができる。
【００３４】
図６は、本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【００３５】
まず、アプリケーションフレームワークは、プラグイン搭載命令を用いてプラグインフレームワークにロボットに搭載された全ての又は一部のプラグインを搭載するよう命令する（段階Ｓ６１０)。プラグイン搭載命令は、搭載するプラグインを指定できる。図６の例では、２つのプラグイン、即ち、プラグイン「Ａ」及びプラグイン「Ｂ」が搭載されるように指定される。
【００３６】
プラグインフレームワークはプラグイン「Ａ」を動的に搭載した後、プラグイン「Ａ」の初期化関数「ＩｎｉｔＰｌｕｇｉｎ」を呼び出す（段階Ｓ６２０）。このとき、プラグインフレームワークの登録関数「ｒｅｇｉｓｔｅｒＰｌｕｇｉｎ」が初期化関数「ＩｎｉｔＰｌｕｇｉｎ」のパラメータとしてプラグイン「Ａ」に伝達される。プラグイン「Ａ」は２つのプラガブルオブジェクト「ａ１」及び「ａ２」を有する。段階Ｓ６２０で伝達を受けた初期化関数「ＩｎｉｔＰｌｕｇｉｎ」を用いて、プラグイン「Ａ」はプラガブルオブジェクト「ａ１」の名前「ａ１」、プラガブルオブジェクト生成関数「Ｃｒｅａｔｅ_ａ１（）」、プラガブルオブジェクト削除関数「Ｄｅｓｔｒｏｙ_ａ１（）」をプラグインフレームワークに登録する（段階Ｓ６３０）。また、プラグイン「Ａ」はプラガブルオブジェクト「ａ２」の名前「ａ２」、プラガブルオブジェクト生成関数「Ｃｒｅａｔｅ_ａ２（）」、プラガブルオブジェクト削除関数「Ｄｅｓｔｒｏｙ_ａ２（）」をプラグインフレームワークに登録する（段階Ｓ６４０）。
【００３７】
同様に、プラグインフレームワークはプラグイン「Ｂ」を動的に搭載した後、プラグイン「Ｂ」の初期化関数「ＩｎｉｔＰｌｕｇｉｎ」を呼び出す（段階Ｓ６５０）。プラグイン「Ｂ」は２つのプラガブルオブジェクト「ｂ１」及び「ｂ２」を有する。プラグイン「Ｂ」はプラガブルオブジェクト「ｂ１」の名前「ｂ１」、プラガブルオブジェクト生成関数「Ｃｒｅａｔｅ_ｂ１（）」、プラガブルオブジェクト削除関数「Ｄｅｓｔｒｏｙ_ｂ１（）」をプラグインフレームワークに登録する（段階Ｓ６６０）。また、プラグイン「Ｂ」はプラガブルオブジェクト「ｂ２」の名前「ｂ２」、プラガブルオブジェクト生成関数「Ｃｒｅａｔｅ_ｂ２（）」、プラガブルオブジェクト削除関数「Ｄｅｓｔｒｏｙ_ｂ２（）」をプラグインフレームワークに登録する（段階Ｓ６７０）。結局、図６に示すように、プラグインフレームワークはプラガブルオブジェクト「ａ１」、「ａ２」、「ｂ１」及び「ｂ２」に対する４つの登録エントリを保有する。
【００３８】
図７は、本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【００３９】
まず、アプリケーションフレームワークは、プラグインフレームワークに登録されたプラガブルオブジェクト（例えば、プラガブルオブジェクト「ａ１」）の生成を要請する（段階Ｓ７１０）。要請を受けたプラグインフレームワークは、プラガブルオブジェクト登録テーブルで要請されたプラガブルオブジェクトに該当する登録エントリを探し、探した登録エントリに登録されたプラガブルオブジェクト生成関数を呼び出す（段階Ｓ７２０）。図７の例で呼び出されたプラガブルオブジェクト生成関数の実際の実現コードはプラグイン「Ａ」に存在するので、プラガブルオブジェクト生成関数「Ａ.ａ１.Ｃｒｅａｔｅ_ａ１（）」が呼び出される。その後、生成されたプラガブルオブジェクト「ａ１」のポインタがプラグインフレームワークに返還される（段階Ｓ７３０）。プラグインフレームワークは、生成されたプラガブルオブジェクト「ａ１」のポインタをアプリケーションフレームワークに伝達する（段階Ｓ７４０）。生成されたプラガブルブルオブジェクトのポインタは、アプリケーションフレームワークのプラガブルオブジェクト管理者に伝達されてプラガブルオブジェクトテーブルに登録される。その後、アプリケーションファサードは生成されたプラガブルオブジェクトに対する初期化を行う。
【００４０】
図８は、本発明による生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【００４１】
まず、アプリケーションファサードは、プラガブルオブジェクト「ａ１」に初期化命令を下す（段階Ｓ８１０）。命令を受けたプラガブルオブジェクト「ａ１」は自身が定義した各種機能をアプリケーションファサードを通じて機能呼出しサービス管理者に登録する（段階Ｓ８２０）。また、プラガブルオブジェクト「ａ１」は自身が定義したシンボルをシンボルサービス管理者に登録し（段階Ｓ８３０）、自身の機能の周期的な呼び出しをタイマサービス管理者に登録する（段階Ｓ８４０）。アプリケーションフレームワークは、機能呼出しサービス管理者、シンボルサービス管理者及びタイマサービス管理者を通じてそれぞれ機能呼出しサービス、シンボルサービス及びタイマサービスをプラガブルオブジェクトに提供する。従って、段階Ｓ８２０で関数、段階Ｓ８３０でシンボル、段階Ｓ８４０で周期的な呼び出しを登録したら、プラガブルオブジェクト「ａ１」はアプリケーションの一部として本格的に動作するようになる（段階Ｓ８５０）。
【００４２】
図９〜図１２は、プラガブルオブジェクト初期化過程で各種サービスを登録する過程を例示する図である。
【００４３】
図９は、本発明によってタイマサービスを登録する過程の一例の図である。
【００４４】
図９の例では、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトがアプリケーションフレームワークに既に動的に搭載されており、各プラガブルオブジェクトが初期化過程でタイマサービスを登録する。ソナーセンサプラガブルオブジェクトは、０.１秒毎にロボットから提供されるソナーセンサ情報を処理して最も近い障害までの距離及び方向を抽出する。０.１秒毎に障害までの距離及び方向を抽出するためには該当機能が０.１秒毎に呼び出されなければならない。即ち、該当機能に対する周期的実行（即ち、タイマサービス）がアプリケーションフレームワークに登録されなければならない。
【００４５】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う（段階Ｓ９１０）。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前（Ｓｏｎａｒ）と機能名（ｃａｌｃｕｌａｔｅＤｉｓｔａｎｃｅ）を伝達する（段階Ｓ９２０）。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する（段階Ｓ９３０）。
【００４６】
ビジョン基盤客体探知プラガブルオブジェクトも、類似の方法でタイマサービスを登録する。ビジョン基盤客体探知プラガブルオブジェクトは、カメラから入ってくる映像を分析して、１秒毎に客体までの距離及び方向を計算するプラガブルオブジェクトである。ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う（段階Ｓ９４０）。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前（ｃａｍｅｒａ）と機能名（ＭｅａｓｕｒｅＤｉｓｔａｎｃｅ）を伝達する（段階Ｓ９５０）。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する（段階Ｓ９６０）。
【００４７】
図１０は、本発明によってシンボルサービスを登録する過程の一例を示す図である。各プラガブルオブジェクトは自身が定義したシンボルを登録して、他のプラガブルオブジェクトが該当シンボルの値を照合したり、変更できるようにする。図１０の例では、ソナーセンサプラガブルオブジェクトとビジョン基盤客体探知プラガブルオブジェクトがそれぞれ障害までの距離「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」及び「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」を登録して、他のプラガブルオブジェクトがその距離値を照合したり、変更できるようにする。
【００４８】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションフレームワークのアプリケーションファサードに自身が計算したシンボル（即ち、障害までの距離（Ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ））の登録を要請する（段階Ｓ１０００）。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する（段階Ｓ１０１０）。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する（段階Ｓ１０２０）。
【００４９】
同様に、ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードに自身が計算したシンボル（即ち、障害までの距離（ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ））の登録を要請する（段階Ｓ１０３０）。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する（段階Ｓ１０４０）。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する（段階Ｓ１０５０）。
【００５０】
図１１は、本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【００５１】
各プラガブルオブジェクトはシンボルを指定して該当シンボルの値が変更された場合、これの通知を受けることができる。図１１の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、障害の位置を基準としてこれを回避できるようにする機能を行うプラグブルオブジェクトである。従って、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが提供する障害位置情報を利用する。即ち、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが障害の位置を更新する毎にこれの通知を受けてロボットの次の動作を決定する。
【００５２】
まず、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクトが「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルの値を変更する毎にこれの通知を受けるために、アプリケーションファサードにシンボル変更通知サービスの登録を要請する（段階Ｓ１１００）。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボル管理者に登録する（段階Ｓ１１１０）。シンボルサービス管理者は、シンボル変更通知サービスのための「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」機能を、シンボルテーブル内の「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する（段階Ｓ１１２０）。「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルの値が変更されれば、シンボルサービス管理者は「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【００５３】
同様に、ロボットメインコントロールプラガブルオブジェクトは、ビジョン基盤客体探知プラガブルオブジェクトが更新するシンボルである「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対してもシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、アプリケーションファサードに「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルに対する変更通知サービスの登録を要請する（段階Ｓ１１３０）。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボルサービス管理者に登録する（段階Ｓ１１４０）。シンボルサービス管理者は「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」機能を、シンボルテーブル内の「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する（段階Ｓ１１５０）。「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルの値が変更されれば、シンボルサービス管理者は「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【００５４】
図１１の例で「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルと「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」シンボルに対して「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」機能を登録したように、同じ機能を様々なシンボルに対して登録することで、各シンボル値が変更される毎に全てのシンボル値を総合的に考慮してロボットのモーションコントロールを実行することができる。
【００５５】
図１２は、本発明による機能呼出しサービスを登録する一例を示す図である。本発明では各プラガブルオブジェクトが自身のシンボルを外部に公開できるだけでなく、自身が提供する機能を他のプラガブルオブジェクトが使用できるように公開できる。図１２は、そのような機能の公開を例示する図である。
【００５６】
図１２のモータ制御プラガブルオブジェクトは、ロボット動作を制御するプラガブルオブジェクトであり、ロボット動作制御機能「ｔｕｒｎＬｅｆｔ」、「ｔｕｒｎＲｉｇｈｔ」、「ｆｏｒｗａｒｄ」及び「ｂａｃｋｗａｒｄ」を有する。
【００５７】
モータ制御プラガブルオブジェクトは、アプリケーションファサードにロボット動作制御機能の登録を要請する（段階Ｓ１２１０）。要請を受けたアプリケーションファサードは、ロボット動作制御機能を機能呼出しサービス管理者に登録する（段階Ｓ１２２０）。機能呼出しサービス管理者は、呼び出しサービスリストにロボット動作制御機能を追加する（段階Ｓ１２３０）。
【００５８】
他のプラガブルオブジェクトは、登録されたロボット動作制御機能「ｔｕｒｎＬｅｆｔ」、「ｔｕｒｎＲｉｇｈｔ」、「ｆｏｒｗａｒｄ」及び「ｂａｃｋｗａｒｄ」を正確な個数のパラメータと共に呼び出して使用することができる。
【００５９】
図１３は、本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【００６０】
まず、タイマサービス「ｓｏｎａｒ.Ｔｉｍｅｒ１」は、０.１秒間隔で呼び出される登録された機能「ｓｏｎａｒ.ｃａｌｃｕｌａｔｅＤｉｓｔａｎｃｅ」を呼び出す（段階Ｓ１３１０）。その後、タイマサービス「ｃａｍｅｒａ.Ｔｉｍｅｒ１」は、１秒間隔で呼び出される登録された機能「ｃａｍｅｒａ.ＭｅａｓｕｒｅＤｉｓｔａｎｃｅ」を呼び出す（段階Ｓ１３２０）。段階Ｓ１３１０での呼び出しに対する応答として、ソナーセンサプラガブルオブジェクトは、機能「ｓｏｎａｒ.ｃａｌｃｕｌａｔｅＤｉｓｔａｎｃｅ」を行い、シンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」の更新された値をアプリケーションファサードに通知する（段階Ｓ１３３０）。アプリケーションファサードは、シンボルサービス管理者にシンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」値の更新を要請する（段階Ｓ１３４０）。更新を要請されたシップボールサービス管理者は、シンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」の値を更新した後、変更通知リストを参照してシンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対するシンボル変更通知サービスを行う（段階Ｓ１３５０）。このとき、図１３の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」を呼び出す。たとえ、機能「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」が行われても、ビジョン基盤客体探知プラガブルオブジェクトの必要なシンボル値を獲得するまでは次のロボット動作が決定されない。
【００６１】
ビジョン基盤客体探知プラガブルオブジェクトは、段階Ｓ１３２０で呼び出される機能「ｃａｍｅｒａ.ＭｅａｓｕｒｅＤｉｓｔａｎｃｅ」を行って障害までの距離を計算し、アプリケーションファサードにシンボル「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」値の更新を要請する（段階Ｓ１３６０）。シンボルサービス管理者に「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」値の更新を要請する（段階Ｓ１３７０）。更新を要請されたシンボルサービス管理者は、シンボル「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」の値を更新した後、変更通知リストを参照してシンボル「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対するシンボル変更通知サービスを行う（段階Ｓ１３８０）。「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対するシンボル変更通知サービスを行う（段階Ｓ１３５０）。このとき、図１３の例ではロボットメインコントロールプラガブルオブジェクトがシンボル「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「ｃｏｎｔｒｏｌ.ｏｎＤｉｓｔａｎｃｅＣｈａｎｇｅｄ」を呼び出す。
【００６２】
ロボットメインコントロールプラガブルオブジェクトは、段階Ｓ１３５０及び段階Ｓ１３８０で更新されたシンボル「ｓｏｎａｒ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」の値とシンボル「ｃａｍｅｒａ.ｄｉｓｔａｎｃｅＴｏＯｂｊｅｃｔ」の値を用いて障害までの距離を更に精巧に計算し、次のロボットの動作を決定する（段階Ｓ１３９０）。
【００６３】
段階Ｓ１３９０の判断結果、ロボットが左に回転する必要がある場合、ロボットメインコントロールプラガブルオブジェクトはアプリケーションファサードに機能「ａｃｔｉｏｎ.ｔｕｒｎＬｅｆｔ」を呼び出すよう要請する。呼び出しを要請されたアプリケーションファサードは、機能呼出しサービス管理者を検索して「ａｃｔｉｏｎ.ｔｕｒｎＬｅｆｔ」という名前で登録された機能呼出しサービスがあるかを検索する（段階Ｓ１３９２）。機能呼出しサービス管理者は、モータ制御プラガブルオブジェクトに機能「ａｃｔｉｏｎ.ｔｕｒｎＬｅｆｔ」を行うよう要請する（段階Ｓ１３９４）。要請を受けたモータ制御プラガブルオブジェクトは、ロボットのモータを制御して実際にロボットを左に回転させる。
本実施形態のモジュール、機能ブロック又は手段は、電子回路、集積回路、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ Ｓｐｅｃｉｆｉｃ Ｉｎｔｅｇｒａｔｅｄ Ｃｉｒｃｕｉｔ）など公知となった多様な素子で実現されることができ、それぞれ別個で実現されてもよく、２つ以上が１つに統合されて実現されてもよい。
【００６４】
以上のように本発明の理解のためにその実施形態を記述したが、当業者であれば分かるように、本発明は本明細書で記述された特定の実施形態に限定されるものではなく、本発明の範疇を逸脱しない範囲内で多様に変形、変更及び代替され得る。
【図１】
2010142943.tif 000003
【図２】
2010142943.tif 000004
【図３】
2010142943.tif 000005
【図４】
2010142943.tif 000006
【図５】
2010142943.tif 000007
【図６】
2010142943.tif 000008
【図７】
2010142943.tif 000009
【図８】
2010142943.tif 000010
【図９】
2010142943.tif 000011
【図１０】
2010142943.tif 000012
【図１１】
2010142943.tif 000013
【図１２】
2010142943.tif 000014
【図１３】
2010142943.tif 000015