(57)【要約】【課題】再使用性及びメンテナンスが向上し得る知能型ロボットにおいてロボットコンポーネントの管理装置及び方法を提供する。【解決手段】多数のロボットコンポーネントを含むロボット応用構成部と、前記ロボット応用構成部の動作を管理し、前記ロボット応用構成部の動作による状態情報及び前記ロボットコンポーネントに関する情報をモニタリングするロボット応用管理部と、前記ロボット応用管理部の管理によって前記ロボットコンポーネントのライフサイクルを管理するライフサイクル管理部と、前記センサにより感知された周辺環境の認識によるセンシング信号の入力を受けて前記ロボット応用構成部に伝達したり、前記ロボット応用構成部からの実行信号を前記知能型ロボットシステムのアクチュエータに伝達する運営体制とを含む。従って、ロボットコンポーネントの開発が迅速、且つ、容易であるだけでなく、エラーを最少化できる。【選択図】図１
2010105150.tif 000002
【特許請求の範囲】
【請求項１】
センサとアクチュエータを有するロボットシステムで用いるためのロボットコンポーネント管理装置であって、
多数のロボットコンポーネントを含むロボット応用構成部と、
前記ロボット応用構成部の動作を管理し、前記ロボット応用構成部の動作による状態情報及び前記ロボットコンポーネントに関する情報をモニタリングするロボット応用管理部と、
前記ロボット応用管理部の管理によって前記ロボットコンポーネントのライフサイクルを管理するライフサイクル管理部と、
前記センサにより感知された周辺環境の認識によるセンシング信号の入力を受けて前記ロボット応用構成部に伝達し、前記ロボット応用構成部からの実行信号を知能型ロボットシステムのアクチュエータに伝達する運営体制と
を含むことを特徴とするロボットコンポーネント管理装置。
【請求項２】
請求項１に記載のロボットコンポーネント管理装置において、
前記ライフサイクル管理部は、前記ロボットコンポーネントのライフサイクルが変更される度に前記ロボットコンポーネントのコールバック関数のうちライフサイクルの変更に該当するライフサイクルコールバック関数を呼び出して前記ロボットコンポーネントで必要な作業を行うようにすることを特徴とするロボットコンポーネント管理装置。
【請求項３】
請求項２に記載のロボットコンポーネント管理装置において、
前記ライフサイクルコールバック関数は、各々のロボットコンポーネントで行われたロボットコンポーネントの初期化、開始、終了、一時停止、一時停止後の再開始、エラーの処理、エラーの復旧、周期的実行、削除のうちのいずれか１つであることを特徴とするロボットコンポーネント管理装置。
【請求項４】
請求項１に記載のロボットコンポーネント管理装置において、
前記ロボット応用構成部は、前記ロボット応用構成部の実行開始、終了、一時停止、再開始のうちのいずれかの動作を行うことを特徴とするロボットコンポーネント管理装置。
【請求項５】
請求項１に記載のロボットコンポーネント管理装置において、
前記ロボット応用構成部は、前記ロボットコンポーネントのそれぞれに割り当てられて前記ロボットコンポーネントの状態及び状態遷移を処理する有限状態機械処理部をさらに含むことを特徴とするロボットコンポーネント管理装置。
【請求項６】
請求項１に記載のロボットコンポーネント管理装置において、各々の前記ロボットコンポーネントは、
前記ロボットコンポーネント間でデータを交換するためのデータポートと、
前記ロボットコンポーネント間でイベントを交換するためのイベントポートと、
前記ロボットコンポーネント間にメソッドを呼び出すためのメソッドポートと
を含むことを特徴とするロボットコンポーネント管理装置。
【請求項７】
請求項６に記載のロボットコンポーネント管理装置において、
前記データポートは、前記データの伝送及び受信のための入力及び出力データポートであり、前記データの伝送はノンブロッキング方式で支援されることを特徴とするロボットコンポーネント管理装置。
【請求項８】
請求項６に記載のロボットコンポーネント管理装置において、
前記イベントポートは、前記イベントの伝送及び受信のための入力及び出力イベントポートであり、前記イベントの伝送はノンブロッキング方式で支援されることを特徴とするロボットコンポーネント管理装置。
【請求項９】
請求項６に記載のロボットコンポーネント管理装置において、
前記メソッドポートは、前記メソッドの呼び出し及び提供のための要求及び提供メソッドポートであり、ブロッキング呼び出し及びノンブロッキング呼び出しを支援することを特徴とするロボットコンポーネント管理装置。
【請求項１０】
ライフサイクル管理部によりロボットコンポーネントが実行されるロボットにおけるロボットコンポーネント管理方法であって、
前記ロボットコンポーネントのうち命令処理コンポーネントからロボット移動コンポーネントへ指定された移動目的地を伝達する過程と、
前記ロボットコンポーネントのうちセンサ読取コンポーネントにより外部のセンシング信号を受信してセンサデータに変換する過程と、
変換されたセンサデータを前記ロボットコンポーネントのうち障害物探知コンポーネントに伝達して前記変換されたセンサデータに基づいて障害物を感知したか否かを判断する過程と、
前記障害物を感知したか否かの判断結果に応じてイベントを生成し、生成されたイベントを前記ロボット移動コンポーネントに伝達する過程と、
前記ロボット移動コンポーネントに伝達される前記生成されたイベントと、前記移動目的地に対応する制御信号を前記ロボットのアクチュエータに伝達する過程と
を含むことを特徴とするロボットコンポーネント管理方法。
【請求項１１】
請求項１０に記載のロボットコンポーネント管理方法において、
前記生成されたイベントは、障害物感知イベント又は障害物無しイベントであることを特徴とするロボットコンポーネント管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は知能型ロボットにおけるロボットコンポーネント（ｒｏｂｏｔ ｃｏｍｐｏｎｅｎｔｓ）管理技術に関し、特に、再使用が容易なロボットコンポーネントを開発するのに適した知能型ロボットシステムにおけるロボットコンポーネント管理装置及び方法に関する。
【背景技術】
【０００２】
知能型ロボットは、変化する周辺環境と互いに作用しながらユーザに多様なサービスを能動的に提供する。そのために、ロボットの内部には映像処理、自律走行、音声認識、音声合成、モータ及びセンサ制御、ユーザタスクの実行などのような多数の複雑な機能が全て含まれている。しかしながら、このような多数の機能を行うロボットを１つのロボットメーカーが全て開発することは容易ではなく、結局、既に開発されたコンポーネントを組み合わせて多様な機能を満たすロボットを開発せざるを得なかった。また、ロボットのようなリアルタイムシステムは多様なプロセスを並行して同時に行うことや、プロセスの処理に優先順位を有することが特徴である。
【０００３】
既存のロボット応用（ｒｏｂｏｔ ａｐｐｌｉｃａｔｉｏｎ）の開発方法は、多様な機能をモジュール化することなく、スパゲッティ形式で相互依存的に作成した。そのため、ロボットのメンテナンス及び新たなロボットの応用を開発するとき、既存に作成されたアルゴリズムやプログラムを再使用することが容易ではなく、データやイベントの処理及びメソッドの呼び出しを処理しながら、並行的に実行されるロボット応用を簡単に開発することも難しいという問題がある。即ち、既存のロボット応用の場合には、ロボット応用内に存在するプログラムや主要アルゴリズムがモジュール化されず、互いに混合されて開発され、他のロボット応用の開発時に再使用するための多くの努力が必要である。
【０００４】
しかし、他のメーカーが作成したアルゴリズムやプログラムを再使用することが非常に難しいという問題がある。また、ライフサイクルの管理、データの伝達、イベントの伝達、メソッドの呼び出し、周期的実行、有限状態機械（Ｆｉｎｉｔｅ Ｓｔａｔｅ Ｍａｃｈｉｎｅ；ＦＳＭ）の処理のような機能をロボット応用の開発者が全て実現しなければならないため、開発期間及び開発費用が多くかかるという問題が発生し得る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０００／００４２５０４号パンフレット
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、本発明の目的は、再使用性及びメンテナンスが向上し得る知能型ロボットにおいてロボットコンポーネントの管理装置及び方法を提供することにある。
【０００７】
また、本発明の他の目的は、迅速、且つ、容易なロボットコンポーネントの開発、開発エラーの最少化、ロボット応用開発者の作業利便性を向上させるロボットコンポーネントの管理装置及び方法を提供することにある。
【課題を解決するための手段】
【０００８】
前記目的を達成するために本発明の第１の態様によれば、センサとアクチュエータを有するロボットで用いるためのロボットコンポーネント管理装置は、多数のロボットコンポーネントを含むロボット応用構成部と、前記ロボット応用構成部の動作を管理し、前記ロボット応用構成部の動作による状態情報及び前記ロボットコンポーネントに関する情報をモニタリングするロボット応用管理部と、前記ロボット応用管理部の管理によって前記ロボットコンポーネントのライフサイクルを管理するライフサイクル管理部と、前記センサにより感知された周辺環境の認識によるセンシング信号の入力を受けて前記ロボット応用構成部に伝達し、前記ロボット応用構成部からの実行信号を前記知能型ロボットシステムのアクチュエータに伝達する運営体制とを含むことを特徴とする。
【０００９】
本発明の第２の態様によれば、ライフサイクル管理部によりロボットコンポーネントが実行されるロボットにおけるロボットコンポーネント管理方法は、前記ロボットコンポーネントのうち命令処理コンポーネントからロボット移動コンポーネントへ指定された移動目的地を伝達する過程と、前記ロボットコンポーネントのうちセンサ読取コンポーネントにより外部のセンシング信号を受信してセンサデータに変換する過程と、前記変換されたセンサデータを前記ロボットコンポーネントのうち障害物探知コンポーネントに伝達して前記変換されたセンサデータに基づいて障害物を感知したか否かを判断する過程と、前記障害物を感知したか否かの判断結果に応じてイベントを生成し、前記生成されたイベントを前記ロボット移動コンポーネントに伝達する過程と、前記ロボット移動コンポーネントに伝達される前記生成されたイベントと、前記移動目的地に対応する制御信号を前記ロボットのアクチュエータに伝達する過程とを含むことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、ロボットコンポーネントの開発が容易であるだけでなく、ロボットコンポーネントの再使用及びメンテナンスが容易であり、ロボット応用の開発時間を短縮させることができ、他のメーカーで開発されたロボットコンポーネントも容易に使用できるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態による知能型ロボットシステムにおけるロボットコンポーネントの管理装置に対するブロック構成図である。
【図２】図１に示すロボットコンポーネントの構成を例示する詳細図である。
【図３】図１に示すロボットコンポーネント間のポートの連結関係を例示する図である。
【図４】本発明の実施形態による知能型ロボットシステムにおけるロボットコンポーネント管理方法を例示する図である。
【発明を実施するための形態】
【００１２】
ロボットコンポーネントとは、再使用及び交替が可能なロボットソフトウェアモジュールであって、ロボット応用を容易に開発し、維持及び補修できるように標準化された形態の構造を有する。ロボットで実行される応用プログラムは、このようなロボットコンポーネントを組み合わせて作られる。規格に合うように開発されたロボットコンポーネントは後で他のロボット応用を開発する際に再使用が可能であるだけでなく、ロボット応用の開発時間を短縮させることができ、他のメーカーで開発されたロボットコンポーネントも容易に使用できるという長所がある。また、ロボットの開発のための標準化された方法を提供して並行的に実行される複雑なロボット応用を容易に開発できるようにする。
【００１３】
知能型ロボットシステムで実行されるロボット応用は、一般のパーソナルコンピュータで実行される応用とは異なる特徴を有するため、知能型ロボットシステムで実行されるロボット応用の特性に合うようにロボットコンポーネントが開発されなければ、他のロボット応用が開発される時に再使用が容易でなくなる。
【００１４】
知能型ロボットは、周辺環境を認識するための多様なセンサ（例えば、レーザ又は超音波を用いた障害物感知センサ、カメラを用いたビジョンセンサなど）と動きのための各種アクチュエータ（例えば、ロボットの移動のためのホイール、ロボットのアームを動かすためのモータなど）からなる。このような多くの装置を制御するために知能型ロボットはその内部に構成された複数のコンピュータノードを有している。また、これらのコンピュータノードは互いに独立して実行されるプログラムを有しており、シリアル或いはラン（ＬＡＮ）のようなネットワークを介して互いに情報をやりとりすることによって、ロボットを制御するようになる。
【００１５】
コンピュータノードに存在するプログラムは、実行要請がある時にのみ実行される伝統的なクライアント／サーバ方式とは異なり、コンピュータノードと連結されたセンサやアクチュエータを制御するために常に実行状態で存在するアクティブな特性を有する場合が多い。例えば、ロボットを指定された目標地点まで移動させる途中に前方に障害物が現れたとき、ロボットを停止させるロボット応用を作成すると仮定する。この場合、通常、ロボット応用はロボットに装着された障害物感知センサからデータを読み取るセンサ読取プログラム、センサ読取プログラムから伝達されたセンサデータに基づいて障害物の存否を判断する障害物感知プログラム、障害物の感知時にロボットを停止させ、そうでない場合にはロボットを続けて移動させるロボット移動プログラムのように３つのプログラムからなり得る。
【００１６】
センサ読取プログラムは周期的にセンサデータを読み取り、障害物感知プログラムにセンサデータを送り、障害物の存否を判断する機能をする。障害物感知プログラムは、センサ読取プログラムから送られたセンサデータを分析して障害物が感知されると、障害物感知イベントをロボット移動プログラムに伝達する機能をする。一方、ロボット移動プログラムは、ロボットを目標地点まで移動させながら、障害物感知プログラムから障害物感知イベントが伝達されると、ロボットの移動を停止させる機能をする。通常、３つのプログラムのうちセンサ読取プログラムは周期的にセンサでデータを読み取らなければならないので、周期的に常に実行されるアクティブプログラムであり、ロボット移動プログラムはやはりロボットのホイールに該当するホイールモータに続けて命令を伝達しなければならないので、常に実行されるアクティブプログラムである。また、障害物感知プログラムは、センサ読取プログラムからデータが伝達された場合にのみ実行されるパッシブプログラムといえる。障害物を感知する障害物感知プログラムとロボットを移動させるロボット移動プログラムは通常、一度プログラムされると、他のロボット応用の開発時によく再使用され得る。
【００１７】
このようなプログラムを標準化された形態のロボットコンポーネントとして開発すれば、再使用が容易であり、また他のメーカーで開発された同じ機能を担当する標準化された形態で開発されたロボットコンポーネントを容易に使用できるようになる。
【００１８】
前述したように、ロボットコンポーネントは常に実行されるアクティブロボットコンポーネント又は要請がある時にのみ実行されるパッシブロボットコンポーネントになることもできる。これらのロボットコンポーネントは、センサデータや障害物感知イベントのように互いにデータやイベントをやりとりできなければならない。そのために、ロボットコンポーネントは、初期化、開始、終了、一時停止、再開始、エラーの処理、削除などのようなライフサイクル（ｌｉｆｅ ｃｙｃｌｅ）関数を提供しなければならず、ロボットコンポーネントが他のロボットコンポーネントにデータやイベントを伝達できなければならない。また、伝統的なクライアント／サーバプログラム方式のように、ロボットコンポーネントは他のロボットコンポーネント内に含まれているメソッドを呼び出すことができなければならない。
【００１９】
通常、ロボットコンポーネントの開発時に主に用いる開発パターンは大きく２種類に分けられるが、１つ目の開発パターンはロボットコンポーネントで提供するメソッドを呼び出したり、ロボットコンポーネントの属性を判読又は変更する形態であり、２つ目の開発パターンはセンサデータを読み取り、読み取ったデータを処理した後、アクチュエータを駆動する典型的なアクティブロボットコンポーネントの場合のようにそれぞれ自身の作業を行いながら、必要時に互いにデータやイベントをやりとりする形態である。
【００２０】
本発明は、複雑なロボット応用を容易に開発し、応用プログラムの再使用を容易にするために、前述した２種類の形態のロボットコンポーネントの開発方式をいずれも支援する。
【００２１】
本発明の実施形態では、ロボットコンポーネント間のメソッドの呼び出しやデータ／イベントの交換がポートを介して行われ、メソッドの呼び出しのためのポートをメソッドポート（ｍｅｔｈｏｄ ｐｏｒｔ）とし、データの伝達のためのポートをデータポート（ｄａｔａ ｐｏｒｔ）とし、イベントを伝達するためのポートをイベントポート（ｅｖｅｎｔ ｐｏｒｔ）と称する。
【実施例】
【００２２】
本発明の利点及び特徴、そしてそれらを達成する方法は添付する図面と共に詳細に後述されている実施形態を参照すれば明らかになる。
【００２３】
図１は、本発明の一実施形態による知能型ロボットシステムにおけるロボットコンポーネントの管理装置のブロック構成図を示す。図１に示すように、本発明のロボットコンポーネントの管理装置は、ロボット応用管理部１００、ライフサイクル管理部２００、ロボット応用構成部３００、運営体制４００、センサ１０及びアクチュエータ２０を含む。
【００２４】
ロボット応用管理部１００は、グラフィックユーザインターフェースの場合もあり、ユーザの要請に応じてロボット応用構成部３００の全般的な動作、例えば実行の開始、終了、一時停止、再開始などの動作を管理する。また、ロボット応用管理部１００は、ロボット応用構成部３００の実行開始、終了、一時停止、再開始などの動作によるロボット応用構成部３００の状態情報と、ロボット応用構成部３００内のロボットコンポーネント３０２／１〜３０２／Ｎに関する状態情報をユーザに通知するモニタリング機能を提供する。
【００２５】
ロボット応用構成部３００は、多数のロボットコンポーネント３０２／１〜３０２／Ｎと、多数の有限状態機械（ＦＳＭ）処理部３０４／１〜３０４／Ｎを含む。有限状態機械処理部３０４／１〜３０４／Ｎは、ロボットコンポーネント３０２／１〜３０２／Ｎのそれぞれに割り当てられてロボットコンポーネント３０２／１〜３０２／Ｎの状態及び状態遷移を処理する役割を果たす。例えば、有限状態機械処理部３０４／１は、ロボットコンポーネント３０２／１に割り当てられており、ロボットコンポーネント３０２／１の状態及び状態遷移を処理する。
【００２６】
ライフサイクル管理部２００は、ロボット応用構成部３００の任意のロボットコンポーネント３０２／１〜３０２／Ｎの初期化、開始、終了、一時停止、一時停止後の再開始、エラーの処理、エラーの復旧、周期的実行、削除などのようなロボットコンポーネント３０２／１〜３０２／Ｎのライフサイクルを管理する。このようなライフサイクル管理部２００は、ロボットコンポーネント３０２／１〜３０２／Ｎのライフサイクルを変化させるとき、ロボットコンポーネント３０２／１〜３０２／Ｎにこのような事実を通知し、ロボットコンポーネント３０２／１〜３０２／Ｎが必要な作業を行えるようにする。例えば、ロボットコンポーネント３０２／１の実行開始時に割り当てられたメモリリソースはロボットコンポーネント３０２／１が終了するとき、ロボットコンポーネント３０２／１により解除される必要がある。そのために、ロボットコンポーネント３０２／１は、初期化、開始、終了、一時停止、再開始、エラーの処理、エラーの復旧、周期的実行、削除のようなライフサイクルが変化する度に処理すべき作業を記述したライフサイクルコールバック関数（図２で後述する）を具現する必要がある。したがって、ライフサイクル管理部２００は、ロボットコンポーネント３０２／１のライフサイクルが変更される度にロボットコンポーネント３０２／１のコールバック関数のうちライフサイクルの変更に該当する関数を呼び出してロボットコンポーネント３０２／１で必要な作業を行うようにする。
【００２７】
運営体制４００は、例えばウインドウズ（Ｗｉｎｄｏｗｓ（登録商標））やリナックス（Ｌｉｎｕｘ）のような運営体制を意味し、内部にデバイスドライバ４０２／１及びデバイスドライバ４０２／２を含む。デバイスドライバ４０２／１は、例えばセンサ１０からアナログ信号の入力を受けてロボット応用構成部３００のロボットコンポーネント３０２／１に伝達する入力デバイスのドライバであってもよく、デバイスドライバ４０２／２は、例えばロボットコンポーネント３０２／Ｎからの信号をアクチュエータ２０に伝達する出力デバイスのドライバであってもよい。
【００２８】
センサ１０は、知能型ロボットシステムの周辺環境の認識のために備えられ、例えばレーザ又は超音波を用いた障害物感知センサ、カメラを用いたビジョンセンサなどを含むこともできる。
【００２９】
アクチュエータ２０は、知能型ロボットシステムの動的な動きのために備えられる手段であって、例えばロボットシステムの移動のためのホイール、ロボットシステムのアームを動かすためのモータなどを含んでもよい。
【００３０】
このようなセンサ１０とアクチュエータ２０を制御するために知能型ロボットシステムの内部には図示していない複数のコンピュータノードが構成される。また、これらのコンピュータノードには互いに独立して実行されるプログラムが存在することがき、シリアル又はラン（ＬＡＮ）のようなネットワークを介して互いに情報をやりとりし、知能型ロボットシステムを制御できる。
【００３１】
図２は、図１に示されたロボットコンポーネント、例えばロボットコンポーネント３０２／１の構成を例示する図であって、ライフサイクルコールバック関数３０、データポート３２、イベントポート３４、メソッドポート３６を含む。
【００３２】
周期的にセンサ１０でデータを読み取る必要がある場合、ロボットコンポーネント３０２／１は周期的に実行される必要があり、このような周期的なロボットコンポーネント３０２／１の実行はライフサイクル管理部２００が処理する。
【００３３】
また、ロボットコンポーネント３０２／１が周期的に実行される必要がある場合、これをライフサイクル管理部２００に初期化時に通知し、ライフサイクル管理部２００はロボットコンポーネント３０２／１の「ｏｎＥｘｅｃｕｔｅ」関数を周期的に呼び出す。ロボットコンポーネント３０２／１のコールバック関数３０を説明すれば、以下の通りである。
-ｏｎＩｎｉｔ：ロボットコンポーネント３０２／１が初期化される時に呼び出されるコールバック関数、
-ｏｎＤｅｓｔｒｏｙ：ロボットコンポーネント３０２／１がメモリから除去される直前に呼び出されるコールバック関数、
-ｏｎＳｔａｒｔ：ロボットコンポーネント３０２／１が開始される時に呼び出されるコールバック関数、
-ｏｎＳｔｏｐ：ロボットコンポーネント３０２／１が終了する時に呼び出されるコールバック関数、
-ｏｎＳｕｓｐｅｎｄ：ロボットコンポーネント３０２／１が一時停止される時に呼び出されるコールバック関数、
-ｏｎＲｅｓｕｍｅ：ロボットコンポーネント３０２／１が再開始される時に呼び出されるコールバック関数、
-ｏｎＥｒｒｏｒ：ロボットコンポーネント３０２／１にエラーが発生した時に呼び出されるコールバック関数、
-ｏｎＲｅｃｏｖｅｒ：ロボットコンポーネント３０２／１がエラーから復旧される時に呼び出されるコールバック関数、
-ｏｎＥｘｅｃｕｔｅ：周期的に呼び出されるコールバック関数。
【００３４】
このようなロボットコンポーネント３０２／１は、ライフサイクルコールバック関数３０を有しているだけでなく、ロボットコンポーネント３０２／１が他のロボットコンポーネント、例えばロボットコンポーネント３０２／２にデータを伝達するためのデータポート３２、ロボットコンポーネント３０２／１が他のロボットコンポーネント３０２／２にイベントを伝達するためのイベントポート３４、伝達を受けたイベントによってロボットコンポーネント３０２／２に割り当てられた有限状態機械を処理する有限状態機械処理部３６、そしてロボットコンポーネント３０２／１が他のロボットコンポーネント３０２／２から提供する関数を呼び出すためのメソッドポート３８を有する。
【００３５】
データポート３２はロボットコンポーネントの間、例えばロボットコンポーネント３０２／１とロボットコンポーネント３０２／２間のデータを交換するためのポートであって、データを伝送しようとするロボットコンポーネント、例えばロボットコンポーネント３０２／１は出力データポートを、データを受信しようとするロボットコンポーネント、例えばロボットコンポーネント３０２／２は入力データポートを有していなければならず、互いにデータを送受信するデータポート３２は同じタイプのデータを有さなければならない。
【００３６】
そして、データポート３２は発行者／購読者（ｐｕｂｌｉｓｈｅｒ／ｓｕｂｓｃｒｉｂｅｒ）モデルを支援するため、１つの出力データポートから多数の入力データポートへのデータの送信が可能である。このとき、入力データポートは出力データポートから伝達されるデータを受信でき、その内部にはデータを格納するキュー（図示せず）が含まれ得る。このようなキューは、格納できるデータの最大の大きさを明示でき、最大の大きさ以上のデータが入力されると、キューにあるデータのうち任意のデータを除去した後、新たに入力されたデータがキューに格納される。キューの最大の大きさが１である場合、常に最近のデータのみを維持し、例えば、主に最近のセンサデータのみを必要とする場合に使用され得る。入力データポートに伝達されたデータは、ライフサイクル管理部２００が割り当てたスレッドにより入力データポート内のキューに格納され、後で周期的に実行される「ｏｎＥｘｅｃｕｔｅ」コールバック関数内で入力データポートに格納されたデータを処理できる。
【００３７】
イベントポート３４はロボットコンポーネント間、例えばロボットコンポーネント３０２／１とロボットコンポーネント３０２／２間のイベントを送受信するためのポートであって、イベントを伝送しようとするロボットコンポーネント、例えばロボットコンポーネント３０２／１は出力イベントポートを、イベントを受信しようとするロボットコンポーネント、例えばロボットコンポーネント３０２／２は入力イベントポートを有していなければならず、互いにイベントを送受信するイベントポート３４は同じタイプのイベントを処理しなければならない。イベントの伝達方式は、購読者／発行者方式であって、前述したデータポート３２と類似する。ただし、データポート３２は、伝達されたデータをキューに格納した後、後で処理する方式で動作するのに対し、イベントポート３４は、イベントが受信されると、受信されたイベントをキューに格納せずに、ライフサイクル管理部２００により割り当てられたスレッドにより即時に処理する方式で動作し、例えば、障害物の発見時に停止のような即時の処理が必要な場合に用いられる。
【００３８】
また、イベントポート３４に伝達されたイベントは、有限状態機械と連係されて処理され得る。有限状態機械は通常、ロボットプログラミング時によく用いられるプログラミング方式である。１つの有限状態機械は多様な状態で構成され、特定時点に１つの状態を有し、特定のイベントが入力されると、該当イベントに応じて有限状態機械の状態を変化させることができる。例えば、１つの有限状態機械が「目的地移動状態」と「障害物発見状態」とで構成されていると仮定すれば、ロボットを現在の位置から特定の目的地まで移動させる場合、最初は「目的地移動状態」にとどまりながら続けて目的地まで移動し、障害物発見イベントが伝達されると、「障害物発見状態」に変更された後、ロボットを停止させ、障害物無しイベントが伝達されると、再び「目的地移動状態」に復帰して目的地まで移動する場合がこれに該当し得る。前述した例でのように、イベントはデータとは異なり、即時に処理されなければならない場合に用いられ、そのため、データポート３２とは別途にイベントポート３４が必要である。
【００３９】
有限状態機械処理部３６は、ロボットコンポーネント３０２／１が有しているイベントポート３４に受信されたイベントに基づいて有限状態機械の状態を変える役割を果たす。
【００４０】
データポート３２及びイベントポート３４は、ノンブロッキング（ｎｏｎ-ｂｌｏｃｋｉｎｇ）呼び出し方式に従い、データポート３２やイベントポート３４を介してデータやイベントを伝達するロボットコンポーネント３０２／１はデータやイベントを伝達した後、その処理結果を待たずに直ぐ次の作業を行える。もし、ロボットコンポーネント３０２／１がデータやイベントを伝達した後に処理結果が返還されるまで待ち続けると、処理結果が返還されるまでの待機中に発生し得るより重要なデータやイベントを処理できなくなることもあるためである。このような理由により、データポート３２やイベントポート３４はノンブロッキング呼び出しのみを支援し、もしデータやイベントに対する処理結果が必要な場合にはデータやイベントを処理したロボットコンポーネント、例えばロボットコンポーネント３０２／１がデータやイベントを送ったロボットコンポーネント、例えばロボットコンポーネント３０２／２に処理結果をデータやイベント形式で再度送らなければならない。
【００４１】
メソッドポート３８を介してロボットコンポーネント３０２／１は他のロボットコンポーネント、例えばロボットコンポーネント３０２／２が提供する一連のメソッドを呼び出すことができる。メソッドを呼び出そうとするロボットコンポーネント、例えばロボットコンポーネント３０２／１は要求メソッドポートを、メソッドを提供しようとするロボットコンポーネント、例えばロボットコンポーネント３０２／２は提供メソッドポートを有していなければならず、要求メソッドポートと対応する提供メソッドポートは同じメソッドで構成されなければならない。
【００４２】
ロボットコンポーネント３０２／１がメソッドポート３８を介してメソッドを呼び出す場合、ロボットコンポーネント３０２／１はメソッドの実行が終了して結果値が返還されるまで待つブロッキング呼び出しと、結果値を待たずに、直ぐ返還するノンブロッキング呼び出しがいずれも可能であり、ノンブロッキング呼び出しの場合は返還値のないメソッドの呼び出しでのみ可能である。
【００４３】
要求メソッドポートを介して要請されるメソッドの呼び出しは、ライフサイクル管理部２００により割り当てられたスレッドにより即時に処理され、ブロッキング呼び出しの場合には、ライフサイクル管理部２００により要求メソッドポートを介してメソッドの呼び出しを行ったロボットコンポーネントにメソッドの呼び出し結果が返還される。
【００４４】
図３は、実施形態によるロボットコンポーネント間、例えばロボットコンポーネント３０２／１とロボットコンポーネント３０２／２間のポートの連結関係を例示的に示す図である。
【００４５】
ロボットコンポーネント３０２／１は、ロボットコンポーネント３０２／２にデータを伝達するための出力データポート３２ａと、ロボットコンポーネント３０２／２にイベントを伝達するための出力イベントポート３４ａと、ロボットコンポーネント３０２／２に提供するメソッドを呼び出すための要求メソッドポート３６ａとを含む。
【００４６】
ロボットコンポーネント３０２／２は、ロボットコンポーネント３０２／１から伝達されたデータを受信するための入力データポート３２ｂと、ロボットコンポーネント３０２／１から伝達されたイベントを受信するための入力イベントポート３４ｂと、ロボットコンポーネント３０２／１が呼び出すロボットコンポーネント３０２／２のメソッドの呼び出しを処理するための提供メソッドポート３６ｂとを含む。
【００４７】
出力データポート３２ａが送信するデータのタイプと、入力データポート３２ｂが受信するデータのタイプは同一でなければならず、出力イベントポート３４ａが送信するイベントのタイプと、入力イベントポート３４ｂが受信するイベントのタイプも同一でなければならない。同様に、要求メソッドポート３６ａが呼び出すメソッドシグネチャと、提供メソッドポート３６ｂが処理するメソッドシグネチャも同一でなければならない。
【００４８】
図４は、本実施形態による知能型ロボットシステムにおけるロボットコンポーネント管理方法を例示する図である。
【００４９】
図４のロボットコンポーネント管理方法において、これに限定されるものではないが、４つのロボットコンポーネント、即ち命令処理コンポーネント３０００／１、センサ読取コンポーネント３０００／２、障害物探知コンポーネント３０００／３、ロボット移動コンポーネント３０００／４がロボット応用構成部３００を構成する場合について例示的に限定し、４つのロボットコンポーネント３０００／１〜３０００／４は、ライフサイクル管理部２００により予め実行が開始したと仮定する。
【００５０】
図４に示すように、まず命令処理コンポーネント３０００／１は、知能型ロボットシステムのユーザが入力した移動目的地情報をロボット移動コンポーネント３０００／４にメソッドポートを介して伝達する（Ｓ４００）。
【００５１】
その後、センサ読取コンポーネント３０００／２は、センサ１０から感知されたアナログ信号を受信し、受信したアナログ信号をセンサデータに変換する（Ｓ４０２）。
【００５２】
そして、センサ読取コンポーネント３０００／２は、前述した変換されたセンサデータをデータポートを用いて障害物探知コンポーネント３０００／３に伝達する（Ｓ４０４）。
【００５３】
障害物探知コンポーネント３０００／３は、センサ読取コンポーネント３０００／２から伝達された変換センサデータに基づいて障害物を感知したか否かを判断し、障害物を感知したか否かの判断結果に応じて障害物感知イベント又は障害物無しイベントをイベントポートを用いてロボット移動コンポーネント３０００／４に伝達する（Ｓ４０６）。
【００５４】
これにより、ロボット移動コンポーネント３０００／４は、メソッドポートを介して命令処理コンポーネント３０００／１から伝達された目的地まで知能型ロボットシステムが移動するようにアクチュエータ２０に制御信号を伝達できる（Ｓ４０８）。このとき、ロボット移動コンポーネント３０００／４は、障害物探知コンポーネント３０００／３から障害物感知イベントが伝達される場合に知能型ロボットシステムの移動を停止させるための制御信号をアクチュエータ２０に伝達する。しかし、障害物探知コンポーネント３０００／３から障害物無しイベントが伝達される場合、ロボット移動コンポーネント３０００／４は知能型ロボットシステムが目的地に再び移動するようにするための制御信号をアクチュエータ２０に伝達する選択的な機能を行う。
【００５５】
図４に示すように、ロボット移動コンポーネント３０００／４内には１つの有限状態機械と、これを処理する有限状態機械処理部５００を含む。
【００５６】
ここで、有限状態機械は「目的地移動状態」と「障害物発見状態」とで構成されており、ロボットの現在の位置から命令処理コンポーネント３０００／１より伝達された目的地まで移動する場合、有限状態機械は知能型ロボットシステムが「目的地移動状態」にとどまりながら、続けて目的地まで移動できるようにする。そして、有限状態機械は障害物探知コンポーネント３０００／３から障害物発見イベントが伝達されると、「障害物発見状態」に変更された後、知能型ロボットシステムの速度を下げながら方向を変更させる。しかし、障害物探知コンポーネント３０００／３から障害物無しイベントが伝達されると、再び「目的地移動状態」に復帰してロボットシステムを目的地まで移動できるようにする。
【００５７】
前述した実施形態においてセンサ読取コンポーネント３０００／２、障害物探知コンポーネント３０００／３、ロボット移動コンポーネント３０００／４の入力、出力及びイベントポートが同一である場合、これらは他のロボット応用の開発時に再使用が可能である。また、ライフサイクルの管理、データの伝達、イベントの伝達、メソッドの呼び出し、周期的実行、有限状態機械の処理のような機能が前記ライフサイクル管理部２００で処理されるので、ロボットコンポーネントの開発が迅速、且つ、容易であり、エラーを最少化できる。従って、ロボット応用開発者はロボットコンポーネントが実行すべき作業のみを具現すればよい。
【００５８】
以上、添付する図面を参照して本発明の好適な実施形態を説明したが、本発明は斯かる実施形態に限定されるものではなく、特許請求の範囲の記載から把握される技術的範囲において種々の実施形態に変更可能である。
【図１】
2010105150.tif 000003
【図２】
2010105150.tif 000004
【図３】
2010105150.tif 000005
【図４】
2010105150.tif 000006