ロボット応用プログラム実行装置及び方法
【課題】ロボット応用プログラムの移植性を向上させ、ロボット応用プログラムの性能が強化されるように、ロボット応用をなす各モジュールをプラグインで構成し、必要時に動的に搭載するロボット応用プログラム実行装置及び方法を提供する。
【解決手段】本発明のロボット応用プログラム実行装置は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含む。
【解決手段】本発明のロボット応用プログラム実行装置は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はロボット応用プログラム実行装置及び方法に関し、更に詳しくは、ロボットソフトウェアを実行時間に動的に再構成し、これを即時に利用可能なようにする装置及び方法に関する。
【背景技術】
【0002】
ロボットは、多くのハードウェア装置を有するプラットホームである。このプラットホームに基づいてロボットを制御し、ユーザに有用なサービスを提供するロボット応用プログラムを作成するようになる。このようなロボット用応用プログラムは、通常、センシング、認識、意志決定、行動の順序を経て動作するようになる。
【0003】
外部との相互作用を担当するセンシングと行動動作はロボット応用プログラムがコンピュータ上でのみ動作する既存の応用プログラムとは異なる多くの特徴を有するようにする。
【0004】
特に、センシングと行動動作は、ロボットに付着された装置に依存的であるため、既存のロボット応用プログラムが特定のロボットでのみ動作するという短所を必然的に有さなければならなかった。
【0005】
従来のロボット応用プログラムにおいては、ロボットソフトウェアの各モジュールが静的に結合されているため、ロボットプラットホームが変更されたり、ロボットのモジュールを切り換えるためには、ロボット応用プログラム全体をコンパイルし直さなければならなかった。また、動的にモジュールを搭載しても、モジュールの機能のうち、応用プログラムで事前に定義した機能のみ呼び出されることができる。従って、従来のロボット応用プログラムは移植性が低く、活用が制約的であるという短所があった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第5339430号
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、上記事情に鑑みてなされたものであって、その目的は、ロボット応用プログラムの移植性を向上させ、ロボット応用プログラムの性能が強化されるように、ロボット応用をなす各モジュールをプラグインで構成し、必要時に動的に搭載するロボット応用プログラム実行装置及び方法を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するための本発明の態様によれば、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含むことを特徴とするロボット応用プログラム実行装置が提供される。
【0009】
更に、本発明の他の態様によれば、複数のプラグインをロボット応用プログラムに動的に搭載する段階と、前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階とを含むロボット応用プログラム実行方法が提供される。
【発明の効果】
【0010】
本発明によれば、応用を構成する各モジュールが動的に搭載されるため、各モジュールを応用と独立して開発できるという効果を奏する。従って、開発の効率性が向上でき、開発時間及び努力を軽減することができる。
【0011】
また、各モジュールは応用プログラムの再コンパイリングを行うことなく、簡単に交換できるため、応用プログラムを低コストでアップグレードできる。
【0012】
更に、各モジュールのインターフェースを他のモジュールが使用できるため、応用プログラムのロボット間の移植性を増大することができる。
【図面の簡単な説明】
【0013】
【図1】本発明によるロボット応用プログラム実行装置を示す図である。
【図2】本発明によるプラグインの構造を示す図である。
【図3】本発明によるアプリケーションフレームワークを示す図である。
【図4】本発明によるプラグインフレームワークの構造を示す図である。
【図5】本発明によるプラガブルオブジェクトの構造を示す図である。
【図6】本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【図7】本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【図8】本発明により生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【図9】本発明によってタイマサービスを登録する過程の一例を示す図である。
【図10】本発明によってシンボルサービスを登録する過程の一例を示す図である。
【図11】本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【図12】本発明による機能呼出しサービスを登録する一例を示す図である。
【図13】本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の好適な実施形態を添付する図面を参照して詳細に説明する。
【0015】
図1は、本発明によるロボット応用プログラム実行装置を示す図である。図1を参照すれば、本発明によるロボット応用プログラム実行装置100は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行部110と、多数の各種センサ及び出力を担当するエフェクタを有しているロボット装置部120と、ロボットの外部や内部で作成されたプラグインを格納するプラグイン格納部130と、ロボット応用プログラムを格納するためのロボット応用プログラム格納部140とで構成される。但し、プラグイン格納部130とロボット応用プログラム格納部140は、それぞれ別途に存在するか、同じ格納装置を活用することができる。
【0016】
図2は、本発明によるプラグインの構造を示す図である。プラグインは、多様な応用が共有し、応用に動的に搭載可能である。
【0017】
図2を参照すれば、本発明によるプラグイン200は、初期化関数210及び複数のプラガブルオブジェクト220、230、240を定義することができる。初期化関数210は、各応用でプラグイン200をロードするとき、真っ先に呼び出す関数であり、プラガブルオブジェクト220、230、240は、所望の機能を行うために応用が実際に利用する個体である。
【0018】
図3は、本発明によるアプリケーションフレームワークを示す図である。全ての応用は1つのアプリケーションフレームワーク300を有する。
【0019】
図3を参照すれば、本発明によるアプリケーションフレームワーク300は、アプリケーションファサード310、シンボルサービス管理者320、プラガブルオブジェクト管理者330、機能呼出しサービス管理者340、タイマサービス管理者350を有する。
【0020】
アプリケーションファサード310は、各プラガブルオブジェクトがアプリケーションフレームワーク300と相互作用するインターフェースを提供する。アプリケーションファサード310は、各プラガブルオブジェクトが生成される時にプラガブルオブジェクトに伝達され、全てのプラガブルオブジェクトは、アプリケーションファサード310とのみ相互作用する。
【0021】
シンボルサービス管理者320は、プラガブルオブジェクトで定義したシンボルを登録、管理する。各プラガブルオブジェクト自身が定義したシンボルのうち、外部に露出させたいシンボルをアプリケーションファサード310を通じて登録要請すれば、アプリケーションファサード310はシンボルサービス管理者320に該当シンボルの登録を要請する。
【0022】
また、プラガブルオブジェクトは、シンボルサービス管理者320により登録されたシンボルに対するサービス(例えば、シンボル値の獲得、シンボル値の割り当て、シンボル値の変更の通知及び他のプラガブルオブジェクトのシンボル値を獲得しようとする試みの通知など)の登録をアプリケーションファサード310を通じてシンボルサービス管理者320に要請できる。
【0023】
プラガブルオブジェクト管理者330は、動的に搭載されたプラグインのプラガブルオブジェクトのうち、アプリケーションフレームワーク300が現在活性化させたプラガブルオブジェクトのリストを管理する。
【0024】
機能呼出しサービス管理者340は、プラガブルオブジェクトの機能を登録、管理する。各プラガブルオブジェクトが自身の機能のうち、外部に露出させたい機能をアプリケーションファサード310を通じて登録要請すれば、アプリケーションファサード310は、機能呼出しサービス管理者340に該当機能の登録を要請する。各プラガブルオブジェクトは、機能呼出しサービス管理者340に登録された他のプラガブルオブジェクトの機能を呼び出すことで、他のプラガブルオブジェクトの機能を利用できるようになる。
【0025】
タイマサービス管理者350は、プラガブルオブジェクトの機能の周期的な呼び出しを登録、管理する。各プラガブルオブジェクトが機能をアプリケーションファサード310を通じてタイマサービス管理者350に登録すれば、登録された機能は一定の周期で呼び出される。
【0026】
図4は、本発明によるプラグインフレームワークの構造を示す図である。図4を参照すれば、本発明によるプラグインフレームワーク400は、1つのプラグイン登録関数410と、登録されたプラガブルオブジェクトを管理するためのプラガブルオブジェクト登録テーブル420とで構成される。プラグインフレームワーク400は、動的ローディングが可能なプラグインをロードし、プラグイン内に定義されているプラガブルオブジェクトを登録する。プラグインフレームワーク400は、そのためにプラガブルオブジェクトを登録するとき、利用できるプラグイン登録関数410を定義する。ここで、プラグインとプラグインフレームワーク400との間にはプラグイン登録関数410に対する呼び出しシグネチャが事前に約束されていなければならない。
【0027】
プラガブルオブジェクトは、プラグイン登録関数410を通じて登録される。このとき、プラグイン登録関数410を通じてプラグイン登録関数410をなす関数シグネチャであるプラガブルオブジェクトの名前、プラガブルオブジェクト生成関数、プラガブルオブジェクト削除関数が伝達される。
【0028】
図5は、本発明によるプラガブルオブジェクトの構造を示す図である。
【0029】
図5を参照すれば、プラガブルオブジェクト500は、登録インターフェース510、共通インターフェース520、個別インターフェース/データ定義部530で構成され、これらは論理的に区分される。
【0030】
登録インターフェース510は、プラガブルオブジェクト500を生成するためのプラガブルオブジェクト生成関数(例えば、「Create()」)及びプラガブルオブジェクト500を削除するためのプラガブルオブジェクト削除関数(例えば、「Destroy()」)を定義する。プラグインフレームワーク400を通じてプラグインが初期化されるとき、プラグインは登録インターフェース510に定義されたプラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数をプラグインフレームワーク400に伝達する。プラグインフレームワーク400は、プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数を呼び出すことで、それぞれプラガブルオブジェクト500のエンティティ(entity)を生成及び削除する。プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数は、プラグインフレームワーク400とプラガブルオブジェクト500との間に既に約束された関数シグネチャを有さなければならない。
【0031】
共通インターフェース520は、プラガブルオブジェクト500とアプリケーションフレームワーク300との間のインターフェースである。共通インターフェース520は、最小限にプラガブルオブジェクト500を初期化するための初期化関数(例えば、「Init()」)、プラガブルオブジェクト500を活性化するための活性化関数(例えば、「On()」)及びプラガブルオブジェクト500を非活性化するための非活性化関数(例えば、「Off()」)で構成される。
【0032】
登録インターフェース510及び共通インターフェース520は、プラガブルオブジェクト500がアプリケーションフレームワーク300及びプラグインフレームワーク400と相互作用するための必須のインターフェースであるので、全てのプラガブルオブジェクト500毎に定義されなければならない。
【0033】
個別インターフェース/データ定義部530は、プラガブルオブジェクト500で行う主要機能及びシンボルを定義し、これはプラガブルオブジェクト500の開発者が任意に定義することができる。
【0034】
図6は、本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【0035】
まず、アプリケーションフレームワークは、プラグイン搭載命令を用いてプラグインフレームワークにロボットに搭載された全ての又は一部のプラグインを搭載するよう命令する(段階S610)。プラグイン搭載命令は、搭載するプラグインを指定できる。図6の例では、2つのプラグイン、即ち、プラグイン「A」及びプラグイン「B」が搭載されるように指定される。
【0036】
プラグインフレームワークはプラグイン「A」を動的に搭載した後、プラグイン「A」の初期化関数「InitPlugin」を呼び出す(段階S620)。このとき、プラグインフレームワークの登録関数「registerPlugin」が初期化関数「InitPlugin」のパラメータとしてプラグイン「A」に伝達される。プラグイン「A」は2つのプラガブルオブジェクト「a1」及び「a2」を有する。段階S620で伝達を受けた初期化関数「InitPlugin」を用いて、プラグイン「A」はプラガブルオブジェクト「a1」の名前「a1」、プラガブルオブジェクト生成関数「Create_a1()」、プラガブルオブジェクト削除関数「Destroy_a1()」をプラグインフレームワークに登録する(段階S630)。また、プラグイン「A」はプラガブルオブジェクト「a2」の名前「a2」、プラガブルオブジェクト生成関数「Create_a2()」、プラガブルオブジェクト削除関数「Destroy_a2()」をプラグインフレームワークに登録する(段階S640)。
【0037】
同様に、プラグインフレームワークはプラグイン「B」を動的に搭載した後、プラグイン「B」の初期化関数「InitPlugin」を呼び出す(段階S650)。プラグイン「B」は2つのプラガブルオブジェクト「b1」及び「b2」を有する。プラグイン「B」はプラガブルオブジェクト「b1」の名前「b1」、プラガブルオブジェクト生成関数「Create_b1()」、プラガブルオブジェクト削除関数「Destroy_b1()」をプラグインフレームワークに登録する(段階S660)。また、プラグイン「B」はプラガブルオブジェクト「b2」の名前「b2」、プラガブルオブジェクト生成関数「Create_b2()」、プラガブルオブジェクト削除関数「Destroy_b2()」をプラグインフレームワークに登録する(段階S670)。結局、図6に示すように、プラグインフレームワークはプラガブルオブジェクト「a1」、「a2」、「b1」及び「b2」に対する4つの登録エントリを保有する。
【0038】
図7は、本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【0039】
まず、アプリケーションフレームワークは、プラグインフレームワークに登録されたプラガブルオブジェクト(例えば、プラガブルオブジェクト「a1」)の生成を要請する(段階S710)。要請を受けたプラグインフレームワークは、プラガブルオブジェクト登録テーブルで要請されたプラガブルオブジェクトに該当する登録エントリを探し、探した登録エントリに登録されたプラガブルオブジェクト生成関数を呼び出す(段階S720)。図7の例で呼び出されたプラガブルオブジェクト生成関数の実際の実現コードはプラグイン「A」に存在するので、プラガブルオブジェクト生成関数「A.a1.Create_a1()」が呼び出される。その後、生成されたプラガブルオブジェクト「a1」のポインタがプラグインフレームワークに返還される(段階S730)。プラグインフレームワークは、生成されたプラガブルオブジェクト「a1」のポインタをアプリケーションフレームワークに伝達する(段階S740)。生成されたプラガブルブルオブジェクトのポインタは、アプリケーションフレームワークのプラガブルオブジェクト管理者に伝達されてプラガブルオブジェクトテーブルに登録される。その後、アプリケーションファサードは生成されたプラガブルオブジェクトに対する初期化を行う。
【0040】
図8は、本発明による生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【0041】
まず、アプリケーションファサードは、プラガブルオブジェクト「a1」に初期化命令を下す(段階S810)。命令を受けたプラガブルオブジェクト「a1」は自身が定義した各種機能をアプリケーションファサードを通じて機能呼出しサービス管理者に登録する(段階S820)。また、プラガブルオブジェクト「a1」は自身が定義したシンボルをシンボルサービス管理者に登録し(段階S830)、自身の機能の周期的な呼び出しをタイマサービス管理者に登録する(段階S840)。アプリケーションフレームワークは、機能呼出しサービス管理者、シンボルサービス管理者及びタイマサービス管理者を通じてそれぞれ機能呼出しサービス、シンボルサービス及びタイマサービスをプラガブルオブジェクトに提供する。従って、段階S820で関数、段階S830でシンボル、段階S840で周期的な呼び出しを登録したら、プラガブルオブジェクト「a1」はアプリケーションの一部として本格的に動作するようになる(段階S850)。
【0042】
図9〜図12は、プラガブルオブジェクト初期化過程で各種サービスを登録する過程を例示する図である。
【0043】
図9は、本発明によってタイマサービスを登録する過程の一例の図である。
【0044】
図9の例では、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトがアプリケーションフレームワークに既に動的に搭載されており、各プラガブルオブジェクトが初期化過程でタイマサービスを登録する。ソナーセンサプラガブルオブジェクトは、0.1秒毎にロボットから提供されるソナーセンサ情報を処理して最も近い障害までの距離及び方向を抽出する。0.1秒毎に障害までの距離及び方向を抽出するためには該当機能が0.1秒毎に呼び出されなければならない。即ち、該当機能に対する周期的実行(即ち、タイマサービス)がアプリケーションフレームワークに登録されなければならない。
【0045】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う(段階S910)。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前(Sonar)と機能名(calculateDistance)を伝達する(段階S920)。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する(段階S930)。
【0046】
ビジョン基盤客体探知プラガブルオブジェクトも、類似の方法でタイマサービスを登録する。ビジョン基盤客体探知プラガブルオブジェクトは、カメラから入ってくる映像を分析して、1秒毎に客体までの距離及び方向を計算するプラガブルオブジェクトである。ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う(段階S940)。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前(camera)と機能名(MeasureDistance)を伝達する(段階S950)。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する(段階S960)。
【0047】
図10は、本発明によってシンボルサービスを登録する過程の一例を示す図である。各プラガブルオブジェクトは自身が定義したシンボルを登録して、他のプラガブルオブジェクトが該当シンボルの値を照合したり、変更できるようにする。図10の例では、ソナーセンサプラガブルオブジェクトとビジョン基盤客体探知プラガブルオブジェクトがそれぞれ障害までの距離「sonar.distanceToObject」及び「camera.distanceToObject」を登録して、他のプラガブルオブジェクトがその距離値を照合したり、変更できるようにする。
【0048】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションフレームワークのアプリケーションファサードに自身が計算したシンボル(即ち、障害までの距離(Sonar.distanceToObject))の登録を要請する(段階S1000)。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する(段階S1010)。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する(段階S1020)。
【0049】
同様に、ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードに自身が計算したシンボル(即ち、障害までの距離(camera.distanceToObject))の登録を要請する(段階S1030)。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する(段階S1040)。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する(段階S1050)。
【0050】
図11は、本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【0051】
各プラガブルオブジェクトはシンボルを指定して該当シンボルの値が変更された場合、これの通知を受けることができる。図11の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、障害の位置を基準としてこれを回避できるようにする機能を行うプラグブルオブジェクトである。従って、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが提供する障害位置情報を利用する。即ち、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが障害の位置を更新する毎にこれの通知を受けてロボットの次の動作を決定する。
【0052】
まず、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクトが「sonar.distanceToObject」シンボルの値を変更する毎にこれの通知を受けるために、アプリケーションファサードにシンボル変更通知サービスの登録を要請する(段階S1100)。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボル管理者に登録する(段階S1110)。シンボルサービス管理者は、シンボル変更通知サービスのための「control.onDistanceChanged」機能を、シンボルテーブル内の「sonar.distanceToObject」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する(段階S1120)。「sonar.distanceToObject」シンボルの値が変更されれば、シンボルサービス管理者は「control.onDistanceChanged」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【0053】
同様に、ロボットメインコントロールプラガブルオブジェクトは、ビジョン基盤客体探知プラガブルオブジェクトが更新するシンボルである「camera.distanceToObject」に対してもシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、アプリケーションファサードに「camera.distanceToObject」シンボルに対する変更通知サービスの登録を要請する(段階S1130)。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボルサービス管理者に登録する(段階S1140)。シンボルサービス管理者は「control.onDistanceChanged」機能を、シンボルテーブル内の「camera.distanceToObject」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する(段階S1150)。「camera.distanceToObject」シンボルの値が変更されれば、シンボルサービス管理者は「control.onDistanceChanged」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【0054】
図11の例で「sonar.distanceToObject」シンボルと「camera.distanceToObject」シンボルに対して「control.onDistanceChanged」機能を登録したように、同じ機能を様々なシンボルに対して登録することで、各シンボル値が変更される毎に全てのシンボル値を総合的に考慮してロボットのモーションコントロールを実行することができる。
【0055】
図12は、本発明による機能呼出しサービスを登録する一例を示す図である。本発明では各プラガブルオブジェクトが自身のシンボルを外部に公開できるだけでなく、自身が提供する機能を他のプラガブルオブジェクトが使用できるように公開できる。図12は、そのような機能の公開を例示する図である。
【0056】
図12のモータ制御プラガブルオブジェクトは、ロボット動作を制御するプラガブルオブジェクトであり、ロボット動作制御機能「turnLeft」、「turnRight」、「forward」及び「backward」を有する。
【0057】
モータ制御プラガブルオブジェクトは、アプリケーションファサードにロボット動作制御機能の登録を要請する(段階S1210)。要請を受けたアプリケーションファサードは、ロボット動作制御機能を機能呼出しサービス管理者に登録する(段階S1220)。機能呼出しサービス管理者は、呼び出しサービスリストにロボット動作制御機能を追加する(段階S1230)。
【0058】
他のプラガブルオブジェクトは、登録されたロボット動作制御機能「turnLeft」、「turnRight」、「forward」及び「backward」を正確な個数のパラメータと共に呼び出して使用することができる。
【0059】
図13は、本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【0060】
まず、タイマサービス「sonar.Timer1」は、0.1秒間隔で呼び出される登録された機能「sonar.calculateDistance」を呼び出す(段階S1310)。その後、タイマサービス「camera.Timer1」は、1秒間隔で呼び出される登録された機能「camera.MeasureDistance」を呼び出す(段階S1320)。段階S1310での呼び出しに対する応答として、ソナーセンサプラガブルオブジェクトは、機能「sonar.calculateDistance」を行い、シンボル「sonar.distanceToObject」の更新された値をアプリケーションファサードに通知する(段階S1330)。アプリケーションファサードは、シンボルサービス管理者にシンボル「sonar.distanceToObject」値の更新を要請する(段階S1340)。更新を要請されたシップボールサービス管理者は、シンボル「sonar.distanceToObject」の値を更新した後、変更通知リストを参照してシンボル「sonar.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1350)。このとき、図13の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル「sonar.distanceToObject」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「control.onDistanceChanged」を呼び出す。たとえ、機能「control.onDistanceChanged」が行われても、ビジョン基盤客体探知プラガブルオブジェクトの必要なシンボル値を獲得するまでは次のロボット動作が決定されない。
【0061】
ビジョン基盤客体探知プラガブルオブジェクトは、段階S1320で呼び出される機能「camera.MeasureDistance」を行って障害までの距離を計算し、アプリケーションファサードにシンボル「camera.distanceToObject」値の更新を要請する(段階S1360)。シンボルサービス管理者に「camera.distanceToObject」値の更新を要請する(段階S1370)。更新を要請されたシンボルサービス管理者は、シンボル「camera.distanceToObject」の値を更新した後、変更通知リストを参照してシンボル「camera.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1380)。「sonar.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1350)。このとき、図13の例ではロボットメインコントロールプラガブルオブジェクトがシンボル「camera.distanceToObject」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「control.onDistanceChanged」を呼び出す。
【0062】
ロボットメインコントロールプラガブルオブジェクトは、段階S1350及び段階S1380で更新されたシンボル「sonar.distanceToObject」の値とシンボル「camera.distanceToObject」の値を用いて障害までの距離を更に精巧に計算し、次のロボットの動作を決定する(段階S1390)。
【0063】
段階S1390の判断結果、ロボットが左に回転する必要がある場合、ロボットメインコントロールプラガブルオブジェクトはアプリケーションファサードに機能「action.turnLeft」を呼び出すよう要請する。呼び出しを要請されたアプリケーションファサードは、機能呼出しサービス管理者を検索して「action.turnLeft」という名前で登録された機能呼出しサービスがあるかを検索する(段階S1392)。機能呼出しサービス管理者は、モータ制御プラガブルオブジェクトに機能「action.turnLeft」を行うよう要請する(段階S1394)。要請を受けたモータ制御プラガブルオブジェクトは、ロボットのモータを制御して実際にロボットを左に回転させる。
本実施形態のモジュール、機能ブロック又は手段は、電子回路、集積回路、ASIC(Application Specific Integrated Circuit)など公知となった多様な素子で実現されることができ、それぞれ別個で実現されてもよく、2つ以上が1つに統合されて実現されてもよい。
【0064】
以上のように本発明の理解のためにその実施形態を記述したが、当業者であれば分かるように、本発明は本明細書で記述された特定の実施形態に限定されるものではなく、本発明の範疇を逸脱しない範囲内で多様に変形、変更及び代替され得る。
【技術分野】
【0001】
本発明はロボット応用プログラム実行装置及び方法に関し、更に詳しくは、ロボットソフトウェアを実行時間に動的に再構成し、これを即時に利用可能なようにする装置及び方法に関する。
【背景技術】
【0002】
ロボットは、多くのハードウェア装置を有するプラットホームである。このプラットホームに基づいてロボットを制御し、ユーザに有用なサービスを提供するロボット応用プログラムを作成するようになる。このようなロボット用応用プログラムは、通常、センシング、認識、意志決定、行動の順序を経て動作するようになる。
【0003】
外部との相互作用を担当するセンシングと行動動作はロボット応用プログラムがコンピュータ上でのみ動作する既存の応用プログラムとは異なる多くの特徴を有するようにする。
【0004】
特に、センシングと行動動作は、ロボットに付着された装置に依存的であるため、既存のロボット応用プログラムが特定のロボットでのみ動作するという短所を必然的に有さなければならなかった。
【0005】
従来のロボット応用プログラムにおいては、ロボットソフトウェアの各モジュールが静的に結合されているため、ロボットプラットホームが変更されたり、ロボットのモジュールを切り換えるためには、ロボット応用プログラム全体をコンパイルし直さなければならなかった。また、動的にモジュールを搭載しても、モジュールの機能のうち、応用プログラムで事前に定義した機能のみ呼び出されることができる。従って、従来のロボット応用プログラムは移植性が低く、活用が制約的であるという短所があった。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許第5339430号
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、上記事情に鑑みてなされたものであって、その目的は、ロボット応用プログラムの移植性を向上させ、ロボット応用プログラムの性能が強化されるように、ロボット応用をなす各モジュールをプラグインで構成し、必要時に動的に搭載するロボット応用プログラム実行装置及び方法を提供することにある。
【課題を解決するための手段】
【0008】
上記目的を達成するための本発明の態様によれば、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、各種センサ及びエフェクタを有しているロボット装置部と、前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部とを含むことを特徴とするロボット応用プログラム実行装置が提供される。
【0009】
更に、本発明の他の態様によれば、複数のプラグインをロボット応用プログラムに動的に搭載する段階と、前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階とを含むロボット応用プログラム実行方法が提供される。
【発明の効果】
【0010】
本発明によれば、応用を構成する各モジュールが動的に搭載されるため、各モジュールを応用と独立して開発できるという効果を奏する。従って、開発の効率性が向上でき、開発時間及び努力を軽減することができる。
【0011】
また、各モジュールは応用プログラムの再コンパイリングを行うことなく、簡単に交換できるため、応用プログラムを低コストでアップグレードできる。
【0012】
更に、各モジュールのインターフェースを他のモジュールが使用できるため、応用プログラムのロボット間の移植性を増大することができる。
【図面の簡単な説明】
【0013】
【図1】本発明によるロボット応用プログラム実行装置を示す図である。
【図2】本発明によるプラグインの構造を示す図である。
【図3】本発明によるアプリケーションフレームワークを示す図である。
【図4】本発明によるプラグインフレームワークの構造を示す図である。
【図5】本発明によるプラガブルオブジェクトの構造を示す図である。
【図6】本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【図7】本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【図8】本発明により生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【図9】本発明によってタイマサービスを登録する過程の一例を示す図である。
【図10】本発明によってシンボルサービスを登録する過程の一例を示す図である。
【図11】本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【図12】本発明による機能呼出しサービスを登録する一例を示す図である。
【図13】本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【発明を実施するための形態】
【0014】
以下、本発明の好適な実施形態を添付する図面を参照して詳細に説明する。
【0015】
図1は、本発明によるロボット応用プログラム実行装置を示す図である。図1を参照すれば、本発明によるロボット応用プログラム実行装置100は、ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行部110と、多数の各種センサ及び出力を担当するエフェクタを有しているロボット装置部120と、ロボットの外部や内部で作成されたプラグインを格納するプラグイン格納部130と、ロボット応用プログラムを格納するためのロボット応用プログラム格納部140とで構成される。但し、プラグイン格納部130とロボット応用プログラム格納部140は、それぞれ別途に存在するか、同じ格納装置を活用することができる。
【0016】
図2は、本発明によるプラグインの構造を示す図である。プラグインは、多様な応用が共有し、応用に動的に搭載可能である。
【0017】
図2を参照すれば、本発明によるプラグイン200は、初期化関数210及び複数のプラガブルオブジェクト220、230、240を定義することができる。初期化関数210は、各応用でプラグイン200をロードするとき、真っ先に呼び出す関数であり、プラガブルオブジェクト220、230、240は、所望の機能を行うために応用が実際に利用する個体である。
【0018】
図3は、本発明によるアプリケーションフレームワークを示す図である。全ての応用は1つのアプリケーションフレームワーク300を有する。
【0019】
図3を参照すれば、本発明によるアプリケーションフレームワーク300は、アプリケーションファサード310、シンボルサービス管理者320、プラガブルオブジェクト管理者330、機能呼出しサービス管理者340、タイマサービス管理者350を有する。
【0020】
アプリケーションファサード310は、各プラガブルオブジェクトがアプリケーションフレームワーク300と相互作用するインターフェースを提供する。アプリケーションファサード310は、各プラガブルオブジェクトが生成される時にプラガブルオブジェクトに伝達され、全てのプラガブルオブジェクトは、アプリケーションファサード310とのみ相互作用する。
【0021】
シンボルサービス管理者320は、プラガブルオブジェクトで定義したシンボルを登録、管理する。各プラガブルオブジェクト自身が定義したシンボルのうち、外部に露出させたいシンボルをアプリケーションファサード310を通じて登録要請すれば、アプリケーションファサード310はシンボルサービス管理者320に該当シンボルの登録を要請する。
【0022】
また、プラガブルオブジェクトは、シンボルサービス管理者320により登録されたシンボルに対するサービス(例えば、シンボル値の獲得、シンボル値の割り当て、シンボル値の変更の通知及び他のプラガブルオブジェクトのシンボル値を獲得しようとする試みの通知など)の登録をアプリケーションファサード310を通じてシンボルサービス管理者320に要請できる。
【0023】
プラガブルオブジェクト管理者330は、動的に搭載されたプラグインのプラガブルオブジェクトのうち、アプリケーションフレームワーク300が現在活性化させたプラガブルオブジェクトのリストを管理する。
【0024】
機能呼出しサービス管理者340は、プラガブルオブジェクトの機能を登録、管理する。各プラガブルオブジェクトが自身の機能のうち、外部に露出させたい機能をアプリケーションファサード310を通じて登録要請すれば、アプリケーションファサード310は、機能呼出しサービス管理者340に該当機能の登録を要請する。各プラガブルオブジェクトは、機能呼出しサービス管理者340に登録された他のプラガブルオブジェクトの機能を呼び出すことで、他のプラガブルオブジェクトの機能を利用できるようになる。
【0025】
タイマサービス管理者350は、プラガブルオブジェクトの機能の周期的な呼び出しを登録、管理する。各プラガブルオブジェクトが機能をアプリケーションファサード310を通じてタイマサービス管理者350に登録すれば、登録された機能は一定の周期で呼び出される。
【0026】
図4は、本発明によるプラグインフレームワークの構造を示す図である。図4を参照すれば、本発明によるプラグインフレームワーク400は、1つのプラグイン登録関数410と、登録されたプラガブルオブジェクトを管理するためのプラガブルオブジェクト登録テーブル420とで構成される。プラグインフレームワーク400は、動的ローディングが可能なプラグインをロードし、プラグイン内に定義されているプラガブルオブジェクトを登録する。プラグインフレームワーク400は、そのためにプラガブルオブジェクトを登録するとき、利用できるプラグイン登録関数410を定義する。ここで、プラグインとプラグインフレームワーク400との間にはプラグイン登録関数410に対する呼び出しシグネチャが事前に約束されていなければならない。
【0027】
プラガブルオブジェクトは、プラグイン登録関数410を通じて登録される。このとき、プラグイン登録関数410を通じてプラグイン登録関数410をなす関数シグネチャであるプラガブルオブジェクトの名前、プラガブルオブジェクト生成関数、プラガブルオブジェクト削除関数が伝達される。
【0028】
図5は、本発明によるプラガブルオブジェクトの構造を示す図である。
【0029】
図5を参照すれば、プラガブルオブジェクト500は、登録インターフェース510、共通インターフェース520、個別インターフェース/データ定義部530で構成され、これらは論理的に区分される。
【0030】
登録インターフェース510は、プラガブルオブジェクト500を生成するためのプラガブルオブジェクト生成関数(例えば、「Create()」)及びプラガブルオブジェクト500を削除するためのプラガブルオブジェクト削除関数(例えば、「Destroy()」)を定義する。プラグインフレームワーク400を通じてプラグインが初期化されるとき、プラグインは登録インターフェース510に定義されたプラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数をプラグインフレームワーク400に伝達する。プラグインフレームワーク400は、プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数を呼び出すことで、それぞれプラガブルオブジェクト500のエンティティ(entity)を生成及び削除する。プラガブルオブジェクト生成関数及びプラガブルオブジェクト削除関数は、プラグインフレームワーク400とプラガブルオブジェクト500との間に既に約束された関数シグネチャを有さなければならない。
【0031】
共通インターフェース520は、プラガブルオブジェクト500とアプリケーションフレームワーク300との間のインターフェースである。共通インターフェース520は、最小限にプラガブルオブジェクト500を初期化するための初期化関数(例えば、「Init()」)、プラガブルオブジェクト500を活性化するための活性化関数(例えば、「On()」)及びプラガブルオブジェクト500を非活性化するための非活性化関数(例えば、「Off()」)で構成される。
【0032】
登録インターフェース510及び共通インターフェース520は、プラガブルオブジェクト500がアプリケーションフレームワーク300及びプラグインフレームワーク400と相互作用するための必須のインターフェースであるので、全てのプラガブルオブジェクト500毎に定義されなければならない。
【0033】
個別インターフェース/データ定義部530は、プラガブルオブジェクト500で行う主要機能及びシンボルを定義し、これはプラガブルオブジェクト500の開発者が任意に定義することができる。
【0034】
図6は、本発明によってプラグインを動的に搭載する過程の一例を示す図である。
【0035】
まず、アプリケーションフレームワークは、プラグイン搭載命令を用いてプラグインフレームワークにロボットに搭載された全ての又は一部のプラグインを搭載するよう命令する(段階S610)。プラグイン搭載命令は、搭載するプラグインを指定できる。図6の例では、2つのプラグイン、即ち、プラグイン「A」及びプラグイン「B」が搭載されるように指定される。
【0036】
プラグインフレームワークはプラグイン「A」を動的に搭載した後、プラグイン「A」の初期化関数「InitPlugin」を呼び出す(段階S620)。このとき、プラグインフレームワークの登録関数「registerPlugin」が初期化関数「InitPlugin」のパラメータとしてプラグイン「A」に伝達される。プラグイン「A」は2つのプラガブルオブジェクト「a1」及び「a2」を有する。段階S620で伝達を受けた初期化関数「InitPlugin」を用いて、プラグイン「A」はプラガブルオブジェクト「a1」の名前「a1」、プラガブルオブジェクト生成関数「Create_a1()」、プラガブルオブジェクト削除関数「Destroy_a1()」をプラグインフレームワークに登録する(段階S630)。また、プラグイン「A」はプラガブルオブジェクト「a2」の名前「a2」、プラガブルオブジェクト生成関数「Create_a2()」、プラガブルオブジェクト削除関数「Destroy_a2()」をプラグインフレームワークに登録する(段階S640)。
【0037】
同様に、プラグインフレームワークはプラグイン「B」を動的に搭載した後、プラグイン「B」の初期化関数「InitPlugin」を呼び出す(段階S650)。プラグイン「B」は2つのプラガブルオブジェクト「b1」及び「b2」を有する。プラグイン「B」はプラガブルオブジェクト「b1」の名前「b1」、プラガブルオブジェクト生成関数「Create_b1()」、プラガブルオブジェクト削除関数「Destroy_b1()」をプラグインフレームワークに登録する(段階S660)。また、プラグイン「B」はプラガブルオブジェクト「b2」の名前「b2」、プラガブルオブジェクト生成関数「Create_b2()」、プラガブルオブジェクト削除関数「Destroy_b2()」をプラグインフレームワークに登録する(段階S670)。結局、図6に示すように、プラグインフレームワークはプラガブルオブジェクト「a1」、「a2」、「b1」及び「b2」に対する4つの登録エントリを保有する。
【0038】
図7は、本発明によるプラガブルオブジェクトを生成する過程の一例を示す図である。
【0039】
まず、アプリケーションフレームワークは、プラグインフレームワークに登録されたプラガブルオブジェクト(例えば、プラガブルオブジェクト「a1」)の生成を要請する(段階S710)。要請を受けたプラグインフレームワークは、プラガブルオブジェクト登録テーブルで要請されたプラガブルオブジェクトに該当する登録エントリを探し、探した登録エントリに登録されたプラガブルオブジェクト生成関数を呼び出す(段階S720)。図7の例で呼び出されたプラガブルオブジェクト生成関数の実際の実現コードはプラグイン「A」に存在するので、プラガブルオブジェクト生成関数「A.a1.Create_a1()」が呼び出される。その後、生成されたプラガブルオブジェクト「a1」のポインタがプラグインフレームワークに返還される(段階S730)。プラグインフレームワークは、生成されたプラガブルオブジェクト「a1」のポインタをアプリケーションフレームワークに伝達する(段階S740)。生成されたプラガブルブルオブジェクトのポインタは、アプリケーションフレームワークのプラガブルオブジェクト管理者に伝達されてプラガブルオブジェクトテーブルに登録される。その後、アプリケーションファサードは生成されたプラガブルオブジェクトに対する初期化を行う。
【0040】
図8は、本発明による生成されたプラガブルオブジェクトに対する初期化過程を示す図である。
【0041】
まず、アプリケーションファサードは、プラガブルオブジェクト「a1」に初期化命令を下す(段階S810)。命令を受けたプラガブルオブジェクト「a1」は自身が定義した各種機能をアプリケーションファサードを通じて機能呼出しサービス管理者に登録する(段階S820)。また、プラガブルオブジェクト「a1」は自身が定義したシンボルをシンボルサービス管理者に登録し(段階S830)、自身の機能の周期的な呼び出しをタイマサービス管理者に登録する(段階S840)。アプリケーションフレームワークは、機能呼出しサービス管理者、シンボルサービス管理者及びタイマサービス管理者を通じてそれぞれ機能呼出しサービス、シンボルサービス及びタイマサービスをプラガブルオブジェクトに提供する。従って、段階S820で関数、段階S830でシンボル、段階S840で周期的な呼び出しを登録したら、プラガブルオブジェクト「a1」はアプリケーションの一部として本格的に動作するようになる(段階S850)。
【0042】
図9〜図12は、プラガブルオブジェクト初期化過程で各種サービスを登録する過程を例示する図である。
【0043】
図9は、本発明によってタイマサービスを登録する過程の一例の図である。
【0044】
図9の例では、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトがアプリケーションフレームワークに既に動的に搭載されており、各プラガブルオブジェクトが初期化過程でタイマサービスを登録する。ソナーセンサプラガブルオブジェクトは、0.1秒毎にロボットから提供されるソナーセンサ情報を処理して最も近い障害までの距離及び方向を抽出する。0.1秒毎に障害までの距離及び方向を抽出するためには該当機能が0.1秒毎に呼び出されなければならない。即ち、該当機能に対する周期的実行(即ち、タイマサービス)がアプリケーションフレームワークに登録されなければならない。
【0045】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う(段階S910)。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前(Sonar)と機能名(calculateDistance)を伝達する(段階S920)。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する(段階S930)。
【0046】
ビジョン基盤客体探知プラガブルオブジェクトも、類似の方法でタイマサービスを登録する。ビジョン基盤客体探知プラガブルオブジェクトは、カメラから入ってくる映像を分析して、1秒毎に客体までの距離及び方向を計算するプラガブルオブジェクトである。ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードにタイマサービス登録要請を行う(段階S940)。サービス登録要請を受けたアプリケーションファサードは、タイマサービス管理者にタイマサービス登録要請をしたプラガブルオブジェクトの名前(camera)と機能名(MeasureDistance)を伝達する(段階S950)。その後、タイマサービス管理者は、該当サービスエントリをタイマサービステーブルに追加する(段階S960)。
【0047】
図10は、本発明によってシンボルサービスを登録する過程の一例を示す図である。各プラガブルオブジェクトは自身が定義したシンボルを登録して、他のプラガブルオブジェクトが該当シンボルの値を照合したり、変更できるようにする。図10の例では、ソナーセンサプラガブルオブジェクトとビジョン基盤客体探知プラガブルオブジェクトがそれぞれ障害までの距離「sonar.distanceToObject」及び「camera.distanceToObject」を登録して、他のプラガブルオブジェクトがその距離値を照合したり、変更できるようにする。
【0048】
まず、ソナーセンサプラガブルオブジェクトは、アプリケーションフレームワークのアプリケーションファサードに自身が計算したシンボル(即ち、障害までの距離(Sonar.distanceToObject))の登録を要請する(段階S1000)。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する(段階S1010)。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する(段階S1020)。
【0049】
同様に、ビジョン基盤客体探知プラガブルオブジェクトは、アプリケーションファサードに自身が計算したシンボル(即ち、障害までの距離(camera.distanceToObject))の登録を要請する(段階S1030)。要請を受けたアプリケーションファサードは、シンボルサービス管理者に該当シンボルを登録するように要請する(段階S1040)。シンボルサービス管理者は、要請されたシンボルに該当するシンボルサービスエントリをシンボルテーブルに追加する(段階S1050)。
【0050】
図11は、本発明によるシンボル変更通知サービスを登録する過程の一例を示す図である。
【0051】
各プラガブルオブジェクトはシンボルを指定して該当シンボルの値が変更された場合、これの通知を受けることができる。図11の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、障害の位置を基準としてこれを回避できるようにする機能を行うプラグブルオブジェクトである。従って、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが提供する障害位置情報を利用する。即ち、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクト及びビジョン基盤客体探知プラガブルオブジェクトが障害の位置を更新する毎にこれの通知を受けてロボットの次の動作を決定する。
【0052】
まず、ロボットメインコントロールプラガブルオブジェクトは、ソナーセンサプラガブルオブジェクトが「sonar.distanceToObject」シンボルの値を変更する毎にこれの通知を受けるために、アプリケーションファサードにシンボル変更通知サービスの登録を要請する(段階S1100)。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボル管理者に登録する(段階S1110)。シンボルサービス管理者は、シンボル変更通知サービスのための「control.onDistanceChanged」機能を、シンボルテーブル内の「sonar.distanceToObject」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する(段階S1120)。「sonar.distanceToObject」シンボルの値が変更されれば、シンボルサービス管理者は「control.onDistanceChanged」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【0053】
同様に、ロボットメインコントロールプラガブルオブジェクトは、ビジョン基盤客体探知プラガブルオブジェクトが更新するシンボルである「camera.distanceToObject」に対してもシンボル変更通知サービスを登録する。ロボットメインコントロールプラガブルオブジェクトは、アプリケーションファサードに「camera.distanceToObject」シンボルに対する変更通知サービスの登録を要請する(段階S1130)。要請を受けたアプリケーションファサードは、シンボル変更通知サービスをシンボルサービス管理者に登録する(段階S1140)。シンボルサービス管理者は「control.onDistanceChanged」機能を、シンボルテーブル内の「camera.distanceToObject」シンボルに該当するシンボルサービスエントリの変更通知リストに追加する(段階S1150)。「camera.distanceToObject」シンボルの値が変更されれば、シンボルサービス管理者は「control.onDistanceChanged」機能を呼び出してロボットメインコントロールプラガブルオブジェクトに変更されたシンボル値を通知する。
【0054】
図11の例で「sonar.distanceToObject」シンボルと「camera.distanceToObject」シンボルに対して「control.onDistanceChanged」機能を登録したように、同じ機能を様々なシンボルに対して登録することで、各シンボル値が変更される毎に全てのシンボル値を総合的に考慮してロボットのモーションコントロールを実行することができる。
【0055】
図12は、本発明による機能呼出しサービスを登録する一例を示す図である。本発明では各プラガブルオブジェクトが自身のシンボルを外部に公開できるだけでなく、自身が提供する機能を他のプラガブルオブジェクトが使用できるように公開できる。図12は、そのような機能の公開を例示する図である。
【0056】
図12のモータ制御プラガブルオブジェクトは、ロボット動作を制御するプラガブルオブジェクトであり、ロボット動作制御機能「turnLeft」、「turnRight」、「forward」及び「backward」を有する。
【0057】
モータ制御プラガブルオブジェクトは、アプリケーションファサードにロボット動作制御機能の登録を要請する(段階S1210)。要請を受けたアプリケーションファサードは、ロボット動作制御機能を機能呼出しサービス管理者に登録する(段階S1220)。機能呼出しサービス管理者は、呼び出しサービスリストにロボット動作制御機能を追加する(段階S1230)。
【0058】
他のプラガブルオブジェクトは、登録されたロボット動作制御機能「turnLeft」、「turnRight」、「forward」及び「backward」を正確な個数のパラメータと共に呼び出して使用することができる。
【0059】
図13は、本発明による各種プラガブルオブジェクトが登録及び初期化が完了した状態でのロボット応用プログラムの動作の一例を示す図である。
【0060】
まず、タイマサービス「sonar.Timer1」は、0.1秒間隔で呼び出される登録された機能「sonar.calculateDistance」を呼び出す(段階S1310)。その後、タイマサービス「camera.Timer1」は、1秒間隔で呼び出される登録された機能「camera.MeasureDistance」を呼び出す(段階S1320)。段階S1310での呼び出しに対する応答として、ソナーセンサプラガブルオブジェクトは、機能「sonar.calculateDistance」を行い、シンボル「sonar.distanceToObject」の更新された値をアプリケーションファサードに通知する(段階S1330)。アプリケーションファサードは、シンボルサービス管理者にシンボル「sonar.distanceToObject」値の更新を要請する(段階S1340)。更新を要請されたシップボールサービス管理者は、シンボル「sonar.distanceToObject」の値を更新した後、変更通知リストを参照してシンボル「sonar.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1350)。このとき、図13の例では、ロボットメインコントロールプラガブルオブジェクトがシンボル「sonar.distanceToObject」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「control.onDistanceChanged」を呼び出す。たとえ、機能「control.onDistanceChanged」が行われても、ビジョン基盤客体探知プラガブルオブジェクトの必要なシンボル値を獲得するまでは次のロボット動作が決定されない。
【0061】
ビジョン基盤客体探知プラガブルオブジェクトは、段階S1320で呼び出される機能「camera.MeasureDistance」を行って障害までの距離を計算し、アプリケーションファサードにシンボル「camera.distanceToObject」値の更新を要請する(段階S1360)。シンボルサービス管理者に「camera.distanceToObject」値の更新を要請する(段階S1370)。更新を要請されたシンボルサービス管理者は、シンボル「camera.distanceToObject」の値を更新した後、変更通知リストを参照してシンボル「camera.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1380)。「sonar.distanceToObject」に対するシンボル変更通知サービスを行う(段階S1350)。このとき、図13の例ではロボットメインコントロールプラガブルオブジェクトがシンボル「camera.distanceToObject」に対する通知サービスを要請したため、シンボルサービス管理者はロボットメインコントロールプラガブルオブジェクトの機能「control.onDistanceChanged」を呼び出す。
【0062】
ロボットメインコントロールプラガブルオブジェクトは、段階S1350及び段階S1380で更新されたシンボル「sonar.distanceToObject」の値とシンボル「camera.distanceToObject」の値を用いて障害までの距離を更に精巧に計算し、次のロボットの動作を決定する(段階S1390)。
【0063】
段階S1390の判断結果、ロボットが左に回転する必要がある場合、ロボットメインコントロールプラガブルオブジェクトはアプリケーションファサードに機能「action.turnLeft」を呼び出すよう要請する。呼び出しを要請されたアプリケーションファサードは、機能呼出しサービス管理者を検索して「action.turnLeft」という名前で登録された機能呼出しサービスがあるかを検索する(段階S1392)。機能呼出しサービス管理者は、モータ制御プラガブルオブジェクトに機能「action.turnLeft」を行うよう要請する(段階S1394)。要請を受けたモータ制御プラガブルオブジェクトは、ロボットのモータを制御して実際にロボットを左に回転させる。
本実施形態のモジュール、機能ブロック又は手段は、電子回路、集積回路、ASIC(Application Specific Integrated Circuit)など公知となった多様な素子で実現されることができ、それぞれ別個で実現されてもよく、2つ以上が1つに統合されて実現されてもよい。
【0064】
以上のように本発明の理解のためにその実施形態を記述したが、当業者であれば分かるように、本発明は本明細書で記述された特定の実施形態に限定されるものではなく、本発明の範疇を逸脱しない範囲内で多様に変形、変更及び代替され得る。
【特許請求の範囲】
【請求項1】
ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、
各種センサ及びエフェクタを有しているロボット装置部と、
前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、
前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部と
を含むことを特徴とするロボット応用プログラム実行装置。
【請求項2】
それぞれのプラグインは、前記ロボット応用プログラムの機能をモジュール別に実現し、動的にローディング可能なファイルであることを特徴とする請求項1に記載のロボット応用プログラム実行装置。
【請求項3】
前記ロボット応用実行装置は、前記ロボット応用プログラムの実行中に動的に前記プラグインを搭載し、前記プラグイン内に定義されたプラガブルオブジェクトを登録するプラグインフレームワークを含むことを特徴とする請求項2に記載のロボット応用プログラム実行装置。
【請求項4】
前記ロボット応用実行装置は、前記登録されたプラガブルオブジェクトを生成し、前記生成されたプラガブルオブジェクトを初期化し、前記初期化されたプラガブルオブジェクトにサービスを提供するアプリケーションフレームワークを含むことを特徴とする請求項3に記載のロボット応用プログラム実行装置。
【請求項5】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトが前記アプリケーションフレームワークと相互作用するためのインターフェースを提供するアプリケーションファサードを含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項6】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトで定義したシンボルを登録、管理するシンボルサービス管理者を含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項7】
前記アプリケーションフレームワークは、前記動的に搭載されたプラグインの前記プラガブルオブジェクトのうち、前記アプリケーションフレームワークが現在活性化させたプラガブルオブジェクトに対するリストを管理するプラガブルオブジェクト管理者を含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項8】
前記プラグインフレームワークは、前記プラガブルオブジェクトを登録するためのプラグイン登録関数と、前記登録されたプラガブルオブジェクトを管理するプラガブルオブジェクト登録テーブルとを含むことを特徴とする請求項3に記載のロボット応用プログラム実行装置。
【請求項9】
前記プラガブルオブジェクトは、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに登録されることを特徴とする請求項8に記載のロボット応用プログラム実行装置。
【請求項10】
それぞれのプラガブルオブジェクトの名前、生成関数及び削除関数は、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに伝達することを特徴とする請求項9に記載のロボット応用プログラム実行装置。
【請求項11】
複数のプラグインをロボット応用プログラムに動的に搭載する段階と、
前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、
アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、
前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階と
を含むことを特徴とするロボット応用プログラム実行方法。
【請求項12】
前記動的にプラグインを搭載する段階は、
前記アプリケーションフレームワークが前記プラグインフレームワークにロボットに搭載された全てのプラグイン又は特定のプラグインを搭載するように命令する段階を含むことを特徴とする請求項11に記載のロボット応用プログラム実行方法。
【請求項13】
前記プラガブルオブジェクトを生成する段階を更に含むことを特徴とする請求項11に記載のロボット応用プログラム実行方法。
【請求項14】
前記プラガブルオブジェクトを生成する段階では、
前記プラグインフレームワークは前記プラガブルオブジェクトの生成を要請され、前記プラグインフレームワークが管理するプラガブルオブジェクト登録テーブルで前記プラガブルオブジェクトに対する登録エントリを探し、前記登録エントリに登録された生成関数を呼び出すことを特徴とする請求項13に記載のロボット応用プログラム方法。
【請求項15】
前記特定プラガブルオブジェクトを初期化する段階では、
前記プラガブルオブジェクトが定義する関数及びシンボルに対してサービスを登録することを特徴とする請求項11に記載のロボット応用プログラム方法。
【請求項16】
前記サービスを登録する段階では、
タイマサービス、シンボルサービス及びシンボル変更通知サービスが登録されることを特徴とする請求項11に記載のロボット応用プログラム方法。
【請求項1】
ロボット応用を実行するための動的ライブラリを支援する運営体制が搭載されたロボット応用実行装置と、
各種センサ及びエフェクタを有しているロボット装置部と、
前記動的ライブラリを構成するプラグインを格納するプラグイン格納部と、
前記ロボット応用プログラムを格納するためのロボット応用プログラム格納部と
を含むことを特徴とするロボット応用プログラム実行装置。
【請求項2】
それぞれのプラグインは、前記ロボット応用プログラムの機能をモジュール別に実現し、動的にローディング可能なファイルであることを特徴とする請求項1に記載のロボット応用プログラム実行装置。
【請求項3】
前記ロボット応用実行装置は、前記ロボット応用プログラムの実行中に動的に前記プラグインを搭載し、前記プラグイン内に定義されたプラガブルオブジェクトを登録するプラグインフレームワークを含むことを特徴とする請求項2に記載のロボット応用プログラム実行装置。
【請求項4】
前記ロボット応用実行装置は、前記登録されたプラガブルオブジェクトを生成し、前記生成されたプラガブルオブジェクトを初期化し、前記初期化されたプラガブルオブジェクトにサービスを提供するアプリケーションフレームワークを含むことを特徴とする請求項3に記載のロボット応用プログラム実行装置。
【請求項5】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトが前記アプリケーションフレームワークと相互作用するためのインターフェースを提供するアプリケーションファサードを含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項6】
前記アプリケーションフレームワークは、前記プラガブルオブジェクトで定義したシンボルを登録、管理するシンボルサービス管理者を含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項7】
前記アプリケーションフレームワークは、前記動的に搭載されたプラグインの前記プラガブルオブジェクトのうち、前記アプリケーションフレームワークが現在活性化させたプラガブルオブジェクトに対するリストを管理するプラガブルオブジェクト管理者を含むことを特徴とする請求項4に記載のロボット応用プログラム実行装置。
【請求項8】
前記プラグインフレームワークは、前記プラガブルオブジェクトを登録するためのプラグイン登録関数と、前記登録されたプラガブルオブジェクトを管理するプラガブルオブジェクト登録テーブルとを含むことを特徴とする請求項3に記載のロボット応用プログラム実行装置。
【請求項9】
前記プラガブルオブジェクトは、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに登録されることを特徴とする請求項8に記載のロボット応用プログラム実行装置。
【請求項10】
それぞれのプラガブルオブジェクトの名前、生成関数及び削除関数は、前記プラグイン登録関数を通じて、前記プラガブルオブジェクト登録テーブルに伝達することを特徴とする請求項9に記載のロボット応用プログラム実行装置。
【請求項11】
複数のプラグインをロボット応用プログラムに動的に搭載する段階と、
前記動的に搭載された各プラグインに登録された多数のプラガブルオブジェクトをプラグインフレームワークに登録する段階と、
アプリケーションフレームワークが前記登録された各プラグインのうち、特定のプラガブルオブジェクトを初期化する段階と、
前記アプリケーションフレームワークが提供する前記特定のプラガブルオブジェクトのためのサービスを登録する段階と
を含むことを特徴とするロボット応用プログラム実行方法。
【請求項12】
前記動的にプラグインを搭載する段階は、
前記アプリケーションフレームワークが前記プラグインフレームワークにロボットに搭載された全てのプラグイン又は特定のプラグインを搭載するように命令する段階を含むことを特徴とする請求項11に記載のロボット応用プログラム実行方法。
【請求項13】
前記プラガブルオブジェクトを生成する段階を更に含むことを特徴とする請求項11に記載のロボット応用プログラム実行方法。
【請求項14】
前記プラガブルオブジェクトを生成する段階では、
前記プラグインフレームワークは前記プラガブルオブジェクトの生成を要請され、前記プラグインフレームワークが管理するプラガブルオブジェクト登録テーブルで前記プラガブルオブジェクトに対する登録エントリを探し、前記登録エントリに登録された生成関数を呼び出すことを特徴とする請求項13に記載のロボット応用プログラム方法。
【請求項15】
前記特定プラガブルオブジェクトを初期化する段階では、
前記プラガブルオブジェクトが定義する関数及びシンボルに対してサービスを登録することを特徴とする請求項11に記載のロボット応用プログラム方法。
【請求項16】
前記サービスを登録する段階では、
タイマサービス、シンボルサービス及びシンボル変更通知サービスが登録されることを特徴とする請求項11に記載のロボット応用プログラム方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2010−142943(P2010−142943A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2009−252125(P2009−252125)
【出願日】平成21年11月2日(2009.11.2)
【出願人】(596180076)韓國電子通信研究院 (733)
【氏名又は名称原語表記】Electronics and Telecommunications Research Institute
【住所又は居所原語表記】161 Kajong−dong, Yusong−gu, Taejon korea
【Fターム(参考)】
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願日】平成21年11月2日(2009.11.2)
【出願人】(596180076)韓國電子通信研究院 (733)
【氏名又は名称原語表記】Electronics and Telecommunications Research Institute
【住所又は居所原語表記】161 Kajong−dong, Yusong−gu, Taejon korea
【Fターム(参考)】
[ Back to top ]