説明

人型ロボットのための拡張可能なタスクエンジンフレームワーク

人型ロボットのための拡張可能なタスクエンジンフレームワークである。ロボット命令は、タスク310A,310B,310C及びスキルとして格納される。タスク310A,310B,310Cは、異なる構成を有する様々なロボットによって実行可能に設計されている。タスク310A,310B,310Cは、ゼロ以上のスキルを参照可能である。スキルは、特定の構成のロボットのために設計可能である。タスクは、ロボット間で移送可能である。特定のロボットで実行される場合には、タスクは、そのロボットの能力を利用可能な一以上のスキルに対する呼び出しを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
発明者は、エヌジー−ソウ−ヒング、ビクター及びドラムライト、エバンである。
【0002】
本出願は、エヌジー−ソウ−ヒング、ビクター等によって2005年9月29日に出願された米国仮特許出願第60/722,340号、及び、エヌジー−ソウ−ヒング、ビクター等によって2006年9月27日に出願された米国特許出願(番号未知)に基づいて優先権を主張するものであり、これらの文献は、参照により本明細書に一体的に組み込まれるものとする。
【0003】
本出願は、ロボットの制御に関し、詳細には、人型ロボットに対する命令の構成及び実行に関する。
【背景技術】
【0004】
従来、人型ロボットは、人型ロボットの特定の構成のためにカスタマイズされたロボット命令(コード)を用いて制御されていた。ロボットに特有のコードは、ロボット制御に対する自然発生的な初期アプローチであり、制限されたプログラムのセットがすばやく符号化され、初期段階でのコンセプトの証明及びデバッグ動作を支援することを可能としている。しかし、人型ロボット制御が成熟するにつれて、ロボットに特有のコードの排他的な信頼性は、頻繁に変更されるハードウェア設計を有する人型ロボットにおいてより洗練されたタスク行動を生成するという目標を妨げるおそれがある。従来のロボットからの既存のコードベースが新たなロボットに利用可能である場合、ロボットの性能が柔軟に拡張可能である場合、及び、第一のロボットによって学習された性能が第二のロボットに転送可能である場合には、人型ロボットはより効率的に開発可能である。
【0005】
既存のコードベースを活用するため、人型ロボットの命令は、一のロボットから他のロボットへと容易に移植可能であることが望ましい。アプローチの一つとして、従来のロボットのために記述された命令に基づいて動作可能な新たな人型ロボットを設計することが挙げられる。しかし、このような下位互換性の要求は、ロボット設計者が旧式のレガシー命令、アーキテクチャに関する重大な制約の導入、及び、設計変更に対応する必要があるので、それ自身が人型ロボットの開発を妨げるおそれがある。
【0006】
さらに、ロボットによる新たな性能の迅速な学習を促進するため、異なるロボットから取得された命令を新たなロボット上で実行する手法を有することが望ましい。アプローチの一つとして、ロボットに特有の学習済みの命令を新たなロボットに直接転送することが挙げられる。しかし、ロボットに特有の命令は、異なるハードウェア設計を有する新たなモデルのロボット上では上手く実行することができず、第一世代のロボットによって取得された性能を異なるハードウェア構成を有する第二世代のロボットに受け渡す第一世代のロボットの能力を、著しく制限する。
【発明の開示】
【発明が解決しようとする課題】
【0007】
それゆえ、命令の移植を可能とし学習済みの性能の一のロボットから他のロボットへの転送を支援する、人型ロボット命令のためのフレームワークが必要とされている。
【0008】
本発明は、人型ロボットのための拡張可能なタスクエンジンフレームワークである。ロボット命令は、タスク及びスキルとして格納される。タスクは、異なる構成を有する様々なロボットによって実行可能に設計されている。タスクは、一以上のスキルを参照する。一実施形態において、スキルは、特定の構成のロボットのために設計可能である。タスクは、ロボット間で移送可能であるという利点を有する。特定のロボット上で実行される場合には、タスクは、そのロボットの能力を利用可能な一以上のスキルに対する呼び出しを実行する。一実施形態において、タスクは、ロボット非依存であり、スキルは、ロボット依存命令を含む。
【0009】
一実施形態において、タスク及びスキルは、電子媒体に格納される。他の実施形態において、タスク及びスキルは、電子媒体から実行される。さらに他の実施形態において、電子媒体は、少なくとも一つのタスク及び少なくとも一つのスキルを格納している。電子媒体は、ロボット制御製品の一部として含有可能である。
【0010】
さらなる実施形態において、ロボット命令は、マクロタスクとして格納される。マクロタスクは、一以上のタスク又はマクロタスクを参照する。マクロタスクは、異なる構成を有する様々なロボットによって実行可能に設計されている。マクロタスクは、電子媒体に格納可能であり、電子媒体から実行可能でもある。
【発明を実施するための最良の形態】
【0011】
以下、本発明の好ましい実施形態について、図面を参照して記述する。同一の参照符号は、同一又は機能的に同等な要素を示す。また、図面において、各参照符号の左端の数字は、当該参照符号が最初に用いられた図面に対応している。
【0012】
本明細書における「一実施形態」又は「実施形態」という用語は、実施形態に関連して記述された特定の特徴、構造又は性質が本発明の実施形態の少なくとも一つに含まれることを意味する。本明細書の様々な場所における「一実施形態において」というフレーズの表現は、すべてが同一の実施形態に言及しているとは限らない。
【0013】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内におけるデータビットの演算のアルゴリズム表現及び記号表現の用語で表現されている。これらのアルゴリズム記述及び表現は、データ処理分野の当業者によって他の当業者に作品の内容を最も効率的に伝えるために用いられる手段である。ここで、そして一般的にも、アルゴリズムは、所望の結果を導き出すステップ(命令)の自己無撞着なシーケンスであると考えられている。
ステップは、物理量の物理的操作を必要とする。大抵の場合、これらの量は、記録、伝送、結合、比較及びその他の操作が可能な電気信号、磁気信号又は光学信号の形態をとるが、これらに限定されない。主に共通利用のため、時として、これらの信号を、ビット、値、要素、記号、文字、用語、数字等として扱うと便利である。さらに、時として、物理量の物理的操作を必要とするステップの任意の配列を、一般性を損失することなく、モジュール又は符号化装置として扱うと便利である。
【0014】
しかし、これらの全ての用語及び同様の用語は、好適な物理量に関連付けられるべきであり、これらの量に適用される単に便利なラベルであると思うべきである。特に他に述べられない限り、以下の議論から明らかなように、記述を通して、「処理」、「算出」、「計算」、「決定」、「表示」等のような用語を用いた議論は、コンピュータシステムの記憶装置、レジスタ、他の情報記憶装置、伝送装置又は表示装置内の物理(電子)量として表されるデータを操作及び伝送するコンピュータシステム又は同様の電子計算装置の動作及び処理に関して言及する。
【0015】
本発明の任意の態様は、アルゴリズムの形態で本明細書に記述された処理ステップ及び命令を含む。本発明の処理ステップ及び命令は、ソフトウェア、ファームウェア又はハードウェアにおいて具現化可能であり、ソフトウェアにおいて具現化された場合には、様々なオペレーティングシステムによって用いられる異なるプラットフォームからダウンロードされて常駐及び動作可能であることに留意されたい。
【0016】
また、本発明は、本明細書の動作を実行するための装置に関する。この装置は、特に所望の目的のために構成されていてもよく、コンピュータ内に記憶されたコンピュータプログラムにより選択的に作動又は再構成される汎用コンピュータを備えていてもよい。かかるコンピュータプログラムは、限定されないが、フロッピー(登録商標)ディスク、光学ディスク、CD−ROM及び光磁気ディスクを含む各種ディスク、ROM、RAM、EPROM、EEPROM、磁気カード又は光カード、特定用途向け集積回路(ASICs)、電子的命令を格納するのに適し、コンピュータシステムバスにより互いに結合される各種メディア等のコンピュータ読み取り可能な記憶媒体に格納されている。
【0017】
本明細書で提示されるアルゴリズム及び表示は、特定のコンピュータ又は他の装置に本質的に関連するものではない。様々な汎用システムが本明細書の教示に従うプログラムとともに用いられてもよく、より特化した装置を所望の方法ステップを実行するために構成すると便利であることもわかっている。これらの多様なシステムに必要な構造は、以下の記述から明らかになるであろう。さらに、本発明は、特定のプログラム言語に関して記述されているわけではない。多様なプログラム言語が本明細書で記述された本発明の教示を実行するために使用可能であり、以下の特定の言語に対する言及は、本発明の実施可能性及びベストモードの開示のために提供されていることは明らかである。
【0018】
さらに、本明細書で用いられる言語は、主として読みやすさ及び説明を目的として選択されたものであり、本発明の構成要件を線引きし限定するために選択されたわけではない。したがって、本発明の開示は、添付の特許請求の範囲に記載された本発明の範囲を説明することを意図したものであり、限定することを意図したものではない。
【0019】
一実施形態において、ロボット命令は、拡張可能なタスクエンジンフレームワークに格納される。電子媒体は、タスクのセットと、スキルのセットと、を格納している。タスクは、異なる構成を有する様々な人型ロボットによって実行可能な命令セットである。タスクは、ロボットのスキルを利用することによって実行される。スキルは、ロボットに特有のコマンドを用いて具現化可能である。タスク及びスキルは、コンピュータメモリ、ネットワークプロトコル又は任意の他の通信媒体を介して通信可能である。
【0020】
タスクは、一般的に、タスクが再利用又は結合されることによってより複雑なタスクを形成することができ、有利には、新たな高粒度のタスクの開発を容易にするのに十分な低いレベルの粒度で定義される。他のタスクを参照して形成された高粒度のタスクは、「マクロタスク」と呼ばれることがある。タスク及びマクロタスクは、一の人型ロボットから他の人型ロボットに移植可能に設計されている。
【0021】
本明細書の文脈において、命令のロボット移植性は、構成が異なる様々な人型ロボットが命令を実行する能力のことをいう。ロボット移植性は、命令が任意の人型ロボットによって実行可能であることを意味するとは限らない。一般的に、タスクによって用いられるスキルが特定の人型ロボットで利用可能である場合には、タスクは、特定の人型ロボットに移植可能である。様々なクラスの人型ロボットのための標準的なスキルセットが定義可能であり、ロボットの移植可能な命令は、命令が対象とするロボットのクラスに標準対応したロボットによって実行可能である。例えば、ロボットのクラスは、(少なくとも一つには)そのクラスのロボット上に実装されるスキルによって定義される。特定のクラスのロボットは、所定のスキルのセットのいずれかを実行することができる。ロボットの移植可能なタスクは、所定のセットからのスキルを用いることによって、任意の対応ロボット上で作動可能である。スキルの実装はロボット間で異なるが、スキルの結果は、理想的には標準化されており再現可能である。
【0022】
人型ロボットのための命令をタスク及びスキルのフレームワーク内に格納することによって、多くの利点が提供される。例えば、人型ロボットプログラムの開発は、人型ロボットハードウェアの開発から分離可能である。タスクプログラマーは、ハードウェアに特有の実装の細部に関することよりも、むしろ新たなタスクの設計に重点的に取り組んでいる。さらに、タスクプログラマーは、物理的な人型ロボットに接することがなくても、人型ロボットのクラスに関する新たなプロシージャを実装することができる。バーチャルな人型ロボットの標準準拠シミュレーションは、タスクの機能を実証するために使用可能であり、物理的な人型ロボット上で実行された際にタスクがどのように動くのかをシミュレートすることができる。
【0023】
また、人型ロボットのための命令をタスク及びスキルのフレームワーク内に格納することによって、一のロボットから他のロボットへのタスクの移植を促進することができる。
タスクは、ロボットに特有のコマンドを直接参照するのではなく標準的なスキルセットを参照しているので、第一の人型ロボットは、第二の人型ロボットによって置換可能であり、(第二の人型ロボットが好適なスキルセットを実装する場合には、)第二の人型ロボットは、以前に第一の人型ロボットで利用可能だったのと同様なタスクを実行することができる。また、新たなタスクは拡張可能で標準化されたフォーマットに格納可能であるので、タスクのフレームワークは、新たなタスクの習得を支援する。タスクの抽象化は、観測によって学習するのに有効な一般化を促進するという利点を有しており、自律人型ロボットの開発にとって重要な目標である。
【0024】
図1は、本発明の一実施形態に係る、ロボット制御システムを説明する図である。ロボット制御装置104は、コマンドを送信するためにロボット122に接続されている。ロボット122は、ロボット制御装置104から受信したコマンドを実行することができるように構成されており、(位置、映像、フィードバック情報等といった)センサデータを送信するためにロボット制御装置104に接続されている。一実施形態において、ロボット122は、人型ロボットである。人型ロボットは、健常者と同様の身体構造を有する機械装置である。一般的に、人型ロボットは、頭を有する胴体と、2本の腕と、移動可能な下部構造と、を備えている。移動可能な下部構造は、2本の脚、車輪付き下部構造等といった異なる機構を用いて走行可能である。
【0025】
説明のため、ロボット制御装置104は、ロボット122から分離されたものとして図示されている。一実施形態において、ロボット制御装置104は、ロボット122の構成として含まれることも可能である。他の実施形態において、ロボット制御装置104の要素及び機能は、ロボット122の内部のロボット制御装置とロボット122の外部のロボット制御装置との間に分配可能である。内部のロボット制御装置及び外部のロボット制御装置は、ロボット制御装置104に関して本明細書に記述された機能を協働して実行するように構成される。
【0026】
任意事項として、入力装置102は、ロボット制御装置104に接続される。入力装置102は、ユーザのコマンドの入力を受けてロボット制御装置104に送信することができる。例えば、入力装置102は、キーボード、マウス、音声認識システム、ソフトウェアプログラム、ビデオカメラ等として具現化可能である。入力装置102は、ロボットが実行する目標すなわちタスクを選択するために使用可能である。
【0027】
ロボット制御装置104は、プロセッサ106と、入力/出力(I/O)制御部120と、電子媒体108と、を備えている。I/O制御部120は、入力装置102、ロボット122及び/又はロボット制御装置104と接続しようとする任意の他装置と接続可能に構成されている。例えば、I/O制御部120は、ロボット122への命令の送信及びロボット122からのセンサデータの受信を管理するように構成可能である。
【0028】
プロセッサ106は、電子媒体108に格納された命令等といった命令を実行することができる。プロセッサ106は、電子媒体108に格納された命令を実行することによってロボットコマンドを生成し、I/O制御部120を用いてロボット122に送信可能に構成されている。プロセッサ106によって実行された命令に従ってロボット122がロボットコマンドを実行する場合には、プロセッサ106が実際にはロボット106の外部にあったとしても、命令はロボット106によって実行されていると言える。
【0029】
電子媒体108は、プロセッサ106のための命令を格納することができる。電子媒体108は、例えば、ハードディスク、RAM、ROM、光学ドライブ等として具現化可能である。電子媒体の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。説明のため、単一の電子媒体108が図示されている。一実施形態において、電子媒体108は、複数の電子媒体を備えることができる。例えば、電子媒体108の第一の部位がハードディスクを備え、電子媒体108の第二の部位がRAMを備えることができる。
【0030】
電子媒体108は、タスクエンジン110と、スキルモジュール116と、目標計画部112と、タスク選択部114と、知覚モデル118と、を格納している。本発明の一実施形態に係るタスクエンジン110は、図3を参照して本明細書に記述されている。スキルモジュール116は、インターフェースを呼び出す標準的な機能を含むプログラム機能(スキル)の集合である。スキルモジュール116内の機能は、一以上のロボットコマンドを用いてロボットスキルを具現化する。例えば、スキルモジュール116内の機能の呼び出しは、プロセッサ106上での機能の実行を含み、かかる実行によって、ロボット制御装置104は、ロボットコマンドのセットをロボット122に送信する。一実施形態において、スキルモジュール116は、関節角度をロボットの手足に適用するデバイスドライバとして具現化可能である。
【0031】
目標計画部112は、ロボット122によって目標を達成するために完了されるべき一連のステップを決定することが可能なプログラムである。目標計画部112は、依存性を評価することによって、ユーザによって要請された目標を完了するために実行されるべきステップの順序を決定することができる。目標計画部112は、任意の数の人工知能及び/又は学習アルゴリズムを備えることによって、目標計画を促進する。
【0032】
タスク選択部114は、ステップを達成するのに好適なタスクを決定することが可能なプログラムである。タスク選択部114は、目標計画部112からステップを受信し、タスクエンジン110内で入手可能な複数のタスクからタスクを選択することができる。タスク選択部114は、タスクエンジン110内において入手可能な複数のタスクを評価して好適なタスクを選択するためのアルゴリズムを備えることができる。
【0033】
タスク選択部114及び目標計画部112は、タスクエンジン110内において入手可能なタスクを選択するために使用可能な構成要素の例として提供されたものである。一実施形態において、タスク選択部114は、目標計画部112からの入力なしに、タスクエンジン110内のタスクを直接選択する。他の実施形態において、タスクは、ユーザ入力に基づいて選択される。タスクを選択する方法の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【0034】
知覚モデル118は、ロボット122から入力を受けたセンサデータを解釈することが可能なプログラムである。一実施形態において、知覚モデル118は、ロボット122の環境内に配置されたセンサから入力を受けたデータを解釈することができる。これらのセンサは、ロボットのボディ上に設けられていてもなくてもよい。知覚モデル118は、コマンドをロボット122に送信することによって、センサデータの収集を促進することもできる。一実施形態において、知覚モデル118は、タスクエンジン110によって呼び出し可能な機能のセットを備えている。第一の知覚モデル118内の機能は、第二の知覚モデル118内の機能を呼び出すのと同様の機能を用いて呼び出し可能である。知覚モデル118内の機能は、ロボット122及びその環境についての情報を戻す。一実施形態において、知覚モデル118は、デバイスドライバーとして具現化される。例えば、知覚モデル118は、カメラシステムからオブジェクト位置についての情報を取得するように構成されたデバイスドライバとして具現化可能である。
【0035】
説明のため、ロボット制御装置104の構成要素は、単一装置内に図示されている。実際には、ロボット制御装置の機能及び要素は、任意の数の装置又はシステムにわたって分配可能である。例えば、ロボット制御装置104は、任意の数のコンピュータシステム内の任意の数のプロセッサ106を用いて具現化可能である。同様に、タスクエンジン110、スキルモジュール116等といった構成要素は、異なる電子媒体108に格納可能であり、異なるシステムに含有可能である。一実施形態において、例えば、第一のシステムがタスクエンジンと第一のプロセッサとを備え、第二のシステムがスキルモジュール126と第二のプロセッサとを備える。ロボット制御装置104の様々な構成は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【0036】
図2は、本発明の一実施形態に係る、タスクエンジンを用いたロボットの制御を説明する図である。一実施形態において、目標計画部112は、例えば、ユーザ入力から、又は、計画的なルーチンの一部として、目標の入力を受け、その目標を達成するために実行されるべきステップの順序を決定する。タスク選択部114は、一以上のタスクを選択することによって、目標計画部112によって設定されたステップを達成する。他の実施形態において、タスクは、ユーザ入力に基づいて選択される。タスク選択の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【0037】
タスクエンジン110は、タスクの選択の入力を受け、それによってロボット122にタスクを実行させる。本発明の一実施形態に係るタスクエンジン110は、図3を参照して本明細書に記述される。タスクエンジン110の具現化は、様々な目標計画スキーム及びタスク選択スキームと互換性を有することができる。タスクエンジン110は、一般的には、異なる目標計画部112又はタスク選択部114の設計及び試験の自由度を制限しないという利点を有する。タスクエンジン110は、新規な、すなわち試験的な目標計画手法及びタスク選択手法によって用いられることが好ましい。
【0038】
タスク110を実行するために、タスクエンジン110は、スキルモジュール116及び知覚モデル118を用いてロボット122と相互に作用しあう。タスクエンジン110は、スキルモジュール116を呼び出すことによって、ロボット122に特定のスキルを実行させる。タスクエンジン110は、知覚モデル118を呼び出すことによって、ロボット122の環境についての情報を要請する。スキルモジュール116及び知覚モデル118が機能の標準的なセットをタスクエンジン110に提供するので、タスクエンジン110は、様々なスキルモジュール及び知覚モデルと相互作用可能であり、異なる構成を有する様々な人型ロボット122のために用いられる。スキルモジュール116及び知覚モデル118は、特定の人型ロボット122のために設計可能であり、ロボット移植可能なタスクエンジン110とロボットに特有の実施詳細との間に抽象化のレイヤーを提供するといった利点を有する。
【0039】
特定のスキルの呼び出しの入力を受けると、スキルモジュール116は、ロボットコマンドをロボット122に送信する。スキルモジュール116は、ロボット122上でスキルを実行することが可能な命令を備えている。「腕を位置Xまで移動させる」というスキルを例に挙げると、スキルモジュール116は、ロボットに特有のコマンドを用いることによって、ロボット122に対する位置Xを決定し、ロボット122の腕を移動させ、ロボット122の腕の位置に関するフィードバックの入力を受け、ロボット122の腕が養成された位置にあるかを判定する。フィードバック及び制御のために用いられる手法はロボットごとに異なるので、スキルの具現化は、ロボットによって異なり得るが、スキルの実行結果は同一であり、ロボット122の腕が位置Xに移動する。スキルの他の例としては、軌道追跡、運動計画、軌道再スケーリング、順運動学及び逆運動学、所与のオブジェクトを把持するために必要な人型の手の構成を決定する方法等が挙げられる。スキルモジュール116がロボットによって異なり得るので、スキルモジュール116は、ロボット122上に具現化された特定の制御システム及びフィードバックシステムに好適なロボットコマンドを送信することができる。
【0040】
知覚情報の要請の入力を受けると、知覚モデル118は、ロボット122の環境に関する情報を戻す。知覚モデル118は、ロボット122からセンサデータの入力を受け、仮説を生成する。知覚モデル118は、ロボットコマンドを送信することによって、ロボット122に特定のセンサデータを送信させ、ロボットにセンサのモードを変化させ、又は、データが収集可能となるようにロボットを移動させることもできる。ある環境において、知覚モデル118は、既に知覚モデル118内にある情報に基づいて知覚情報の要請に応答することができる。他の環境において、知覚情報の要請によって、知覚モデル118がロボットコマンドをロボット122に送信し、それによって情報の収集を促進し、知覚モデル118が要請に対して好適に応答することができるようになる。知覚モデル118がロボットによって異なり得るので、知覚モデル118は、ロボット122上で利用可能な特定のセンサのために設計可能である。例えば、距離計のアレイを有するロボットではなくデジタルカメラを有するロボットである場合には、異なる知覚モデル118を用いる方が有利である。知覚モデル118が標準的なインターフェースをタスクエンジン110に提供するので、タスクは、特定のセンサ構成を有するロボットに制限されることなく、知覚モデル118内で利用可能な情報を利用することができる。第一の知覚モデル118によって戻された結果が第二の知覚モデルによって戻された結果と異なってもよいが、これらの結果は、ロボット移植可能なタスクによって解釈及び利用可能なように、共通のフォーマットとなっている。
【0041】
図3は、本発明の一実施形態に係る、タスクエンジンを説明する図である。タスクエンジン110は、条件302と、マクロタスク304(例えば、304A,304B,304C,304D)と、動作306と、タスク310(例えば、310A,310B,310C)と、を備えている。
【0042】
一実施形態において、タスクエンジン110は、一以上の条件302を備える。条件302は、ロボット又は環境の状態のテストである。ロボット又は環境の状態によって、条件302は、真又は偽となり得る。タスク310は、一以上の条件302を参照しており、タスク310の制御フローは、条件302が真であるか偽であるかに依存する。条件302が任意の数のタスク310によって参照可能であるので、命令は、再利用可能であり、新たなタスクのコーディングが簡略化される。同様に、条件302は、任意の数のマクロタスク304によって参照可能である。条件302を参照するタスク310が実行されると、タスクエンジン110は、スキルモジュール116及び/又は知覚モデル118を呼び出すことによって、条件302が満たされているか否かを判定することができる。条件302の例としては、二つのオブジェクト間の距離のテスト、二つのオブジェクトの相対的な垂直位置のテスト、人型ロボットの姿勢のテスト、人型ロボットがオブジェクトを把持しているかについてのテスト、オブジェクトが把持可能かについてのテスト等が挙げられ、これらに限定されない。条件の他の例は、本発明の要旨を逸脱しない範囲で具現化可能である。
【0043】
一実施形態において、タスクエンジン110は、一以上のマクロタスク304を備える。マクロタスクは、タスク310又は他のマクロタスク304を参照する命令のセットである。一実施形態において、マクロタスクは、XMLファイル等といった構造化されたフォーマットで電子媒体に格納されている。一実施形態において、マクロタスクは、当該マクロタスクの呼び出しに応答して読み出されるか読み込まれる。本発明の一実施形態に係る、マクロタスクを実行する方法は、図4を参照して本明細書に記述される。
【0044】
一実施形態おいて、マクロタスク304は、メッセージ駆動機械として実行される。メッセージ駆動機械は、タスクの順次実行及び並列実行をともに可能とする状態機械として具現化可能である。一般的には、複数の状態が同時にアクティブとなり得る。また、メッセージ駆動機械は、メッセージを送受信することによって、他のメッセージ駆動機械と相互作用することができる。タスクは、他のタスクからのメッセージに基づいて、実行又は終了される。また、メッセージ駆動機械内の制御フローは、前提条件又はインコンディションによって制御可能である。前提条件は、マクロタスク304を開始する前に満たされるべき条件302である。インコンディションは、マクロタスクを続行するために満たされるべき条件302である。前提条件及びインコンディションを受けてマクロタスクを実行することは、ロボット122のリソースのコンフリクトを避け、マクロタスク304の動作の成功を保証するといった点で有益である。
【0045】
マクロタスク304は、その柔軟性及び拡張性の点で好ましい。マクロタスク304は、タスクエンジン110がロボット上で他のマクロタスク304を実行している間に、取得、読み込み及び実行可能である。さらに、マクロタスク304は、他のマクロタスク304を参照することができる。タスクエンジン110が参照されたマクロタスク304を備えていない場合には、タスクエンジン110は、参照されたマクロタスク304をリアルタイムで取得及び読み込み可能である。マクロタスク304は、例えば、マクロタスクのライブラリから取得可能である。設計者が既存のマクロタスクを参照可能であるので、マクロタスク304を設計するプロセスは簡略化される。さらに、マクロタスク304は、技術的な実施詳細の多くがマクロタスク304から離れて抽象化されるのに十分な高レベルで仕事を特定することができ、設計者は、有効かつ効率的なマクロタスク304を自由に開発することができるようになる。マクロタスクの例としては、オブジェクトを持ち上げる、オブジェクトを置く、掃除機をかける、挨拶する等が挙げられ、これらに限定されない。
【0046】
少なくともいくつかのマクロタスク304は、タスク310を参照する。一実施形態において、タスク310は、タスクモジュール308に格納されている。タスクモジュール308は、機能のライブラリである。一実施形態において、タスクモジュール308は、DLL(Dynamically linked library)として具現化される。DLLにタスク310を格納することによって、タスク310はタスクエンジン110が作動している間に、好適に追加又は除去可能となる。
【0047】
タスク310は、一以上のスキルを参照する命令のセットである。タスク310は、前提条件又はインコンディションに従って実行可能である。タスク310は、ロボットスキルを実行する(潜在的には無期限な)期間中に作動する。また、タスク310は、パラメータとともに呼び出し可能であり、ロボットの右手、左手又は一方の手を振るのに用いられる「手を振る」というタスクを可能とするといった利点を有する。また、「手を振る」というタスクは、例えば、所望の手を振る期間を特定するパラメータとともに呼び出し可能である。パラメータは、命令の再利用を促進し、タスク呼び出しに柔軟性を導入する。
【0048】
タスク310は、少なくとも一つのスキルに対する参照を備えていてもよい。例えば、タスク310は、タスクの実行の一部として実行されるべきスキルの名前又は識別子を備えることができる。タスク310が実行されると、スキルは、スキルモジュール116から読み出されてロボット上で実行される。スキルモジュール116は、同様の基準によって識別される複数のスキルを備えている。例えば、スキルモジュール116は、共通の識別子を有する複数の軌道追跡スキルを備えることができる。例えば、様々な軌道追跡スキルが、異なるロボット構成のために設計可能である。
【0049】
タスクの例としては、到達するためのプログラム、把持するためのプログラム、手を放すためのプログラム、姿勢をとるためのプログラム、ロボットを特定の位置まで移動させるためのプログラム等が挙げられるが、これらに限定されない。タスクの他の例は、本発明の要旨を逸脱しない範囲で具現化可能である。
【0050】
動作306は、ロボットによって実行可能な、予め定義された動作ルーチンである。一実施形態において、実行のために選択された動作306は、スキルモジュール116に送信され、ロボットコマンドを生成することによって、ロボット122に動作306を実行させる。動作306は、ロボット間で移植可能であるが、一実施形態においては、その必要はない。動作306は、命令プログラマーがタスク310又はマクロタスク304によって提供されたロボット動作よりもきめ細かい詳細なレベルでロボット動作を特定することができるといった利点を有している。
【0051】
図4は、本発明の一実施形態に係る、マクロタスクを実行する方法を説明する図である。一実施形態において、本方法は、タスクエンジン110によって実行される。
【0052】
タスクエンジン110は、マクロタスクコマンドの入力を受ける(402)。例えば、タスクエンジン110は、ユーザから、タスク選択部114から、又は、他のマクロタスクの実行に基づいて、マクロタスクの選択の入力を受けることができる。一実施形態において、マクロタスクコマンドは、マクロタスクを実行するのに好適なパラメータを備えている。
【0053】
タスクエンジン110は、マクロタスクが読み込まれているかを判定する(404)。タスクエンジン110がマクロタスクは読み込まれていないと判定した場合には、タスクエンジン110は、電子媒体からマクロタスクを読み出す(406)。例えば、タスクエンジン110は、マクロタスクライブラリからマクロタスクを読み出す(406)。本発明の一実施形態によると、マクロタスクの読み出し(406)としては、XMLファイルからのマクロタスクの取り込みが挙げられる。XMLファイルからマクロタスクを取り込むことによって、利用可能なマクロタスクのセットは、柔軟性及び拡張性を有することができる。
【0054】
タスクエンジン110は、マクロタスクを実行する(408)。マクロタスクの実行(408)としては、マクロタスクによって参照された他のマクロタスク及び/又はタスクの実行が挙げられる。また、マクロタスクの実行(408)としては、条件を判定することによるマクロタスクの実行フローの制御、他のマクロタスクからのメッセージの送受信が挙げられる。マクロタスクの実行(408)の例は、図5及び図6を参照して本明細書に記述される。
【0055】
タスクエンジン110は、402でマクロタスクコマンドの入力を受けた)構成に対して、マクロタスク完了メッセージを送信する(410)。例えば、タスクエンジン110は、他のマクロタスク、タスク選択部114又は他のユーザに対してマクロタスク完了メッセージを送信することができる(410)。マクロタスク完了メッセージの送信(410)は、マクロタスクの実行に依存する他の構成がマクロタスクの完了に基づいて行動することができようになるといった利点を有する。
【0056】
図5は、本発明の一実施形態に係る、マクロタスクの第一の例を説明する図である。一実施形態において、マクロタスクの構成要素は、マクロタスクライブラリに格納されており、タスクエンジン110によって読み込まれる。図示された例において、マクロタスクは、「持ち上げて置く」というマクロタスクである。マクロタスクの目的は、オブジェクトを持ち上げて、それを異なる位置に置くことである。本例におけるマクロタスクのパラメータとしては、腕識別子、手識別子、オブジェクト識別子、目標位置等が挙げられる。
【0057】
マクロタスクは、把持条件を評価する(502)。例えば、マクロタスクは、条件302の一つへの参照を備えることができる。条件302としては、手識別子パラメータによって特定された手が把持状態であるか非把持状態であるかに関するテストが挙げられる。
【0058】
把持条件の結果は、マクロタスクの制御フローに影響する。把持条件は真である場合には、マクロタスクは、手放しタスク(504)を呼び出す。手放しタスク(504)の呼び出しは、手識別子等といった関連パラメータを備えることもできる。手放しタスク(504)は、ロボット122に特定された手を放させることが可能な好適なスキルを参照する。手放しタスク(504)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0059】
手放しタスク(504)からのタスク実行メッセージの入力受け取りに応じて、又は、把持条件が偽である場合には、マクロタスクは、到達タスク(506)を呼び出す。到達タスク(506)の呼び出しは、手識別子、オブジェクトの位置等といった関連パラメータを備えることもできる。到達タスク(506)は、ロボット122に特定された手をオブジェクトの位置に到達させることができる好適なスキルを参照する。到達タスク(506)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0060】
到達タスク(506)からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、把持タスク(508)を呼び出す。把持タスク(508)の呼び出しは、手識別子、オブジェクトの位置等といった関連パラメータを備えることもできる。把持タスク(508)は、ロボット122にオブジェクトを把持させることができる好適なスキルを参照する。把持タスク(508)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0061】
把持タスク(508)からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、到達タスク(510)を呼び出す。到達タスク(510)は、到達タスク(506)との類似性に基づいて命令を再利用することができる。到達タスク(510)の呼び出しは、手識別子、目標位置等といった関連パラメータを備えることもできる。到達タスク(510)は、ロボットに特定された手を目標位置に到達させることができる好適なスキルを参照する。到達タスク(510)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0062】
到達タスク(510)からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、手放しタスク(512)を呼び出す。手放しタスク(512)は、手放しタスク(504)との類似性に基づいて命令を再利用することができる。手放しタスク(512)の呼び出しは、手識別子等といった関連パラメータを備えることもできる。手放しタスク(512)は、ロボットに特定された手を放させることができる好適なスキルを参照する。手放しタスク(512)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。マクロタスクは、実行を完了し、マクロタスク完了メッセージを、マクロタスクを呼び出した構成に送信することができる。
【0063】
図6は、本発明の一実施形態に係る、マクロタスクの第二の例を説明する図である。一実施形態において、マクロタスクの構成要素は、マクロタスクライブラリに格納されており、タスクエンジン110によって読み込まれる。図示された例において、マクロタスクは、「顔を向けて手を振る」というマクロタスクである。マクロタスクの目的は、部屋内のオブジェクトを識別して、それに向かって手を振ることである。
【0064】
マクロタスクは、顔向けタスク(602)を呼び出す。顔向けタスク(602)は、ロボット122にオブジェクトを識別させてそれに顔を向けるように移動させることができる好適なスキル及び/又は知覚モデルを参照する。顔向けタスク(602)は、実行を継続し、目標達成メッセージを、呼び出しているマクロタスクに返信する。
【0065】
顔向けタスク(602)からの目標達成メッセージの入力受け取りに応じて、マクロタスクは、手振り準備タスク(604)を呼び出す。手振り準備タスク(604)は、ロボットに手を振る動作を準備させることができる好適なスキルを参照する。例えば、ロボット122は、手を振る位置に手を伸ばすことができる。手振り準備タスク(604)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0066】
手振り準備タスク(604)からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、顔向けタスク(602)を呼び出す。顔向けタスク(602)は、実行を継続し、目標達成メッセージを、呼び出しているマクロタスクに返信する。
【0067】
顔向けタスク(602)からの目標達成メッセージの入力受け取りに応じて、マクロタスクは、手振りタスク(608)を呼び出す。手振りタスク(608)は、ロボット122に手振り動作を行わせることができる好適なスキルを参照する。一実施形態において、手振りタスク(608)は、所望の手振り期間等といった特定されたパラメータに応じてロボット122に手振り動作を行わせることができる好適なスキルを参照する。手振りタスク(608)は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【0068】
マクロタスクは、ループを繰り返し、顔向けタスク(602)及び手振りタスク(608)を同時に実行する。手振りタスク(602)は、例えば、顔向けタスク(602)からの目標達成メッセージに応答して、周期的に再開可能である。例えば、ユーザコマンドに応答するか、タイマの期限切れ後か、オブジェクトが発見できなかったか、によって顔向けタスク(602)が完了すると、手振りタスク(608)は終了し、タスク実行メッセージが、呼び出しているマクロタスクに返信される。マクロタスクは、実行を完了し、マクロタスク完了メッセージを、マクロタスクを呼び出した構成に送信することができる。
【0069】
以上、好ましい実施形態及びいくつかの他の実施形態を参照して本発明を詳細に図示及び記述したが、本発明の精神及び範囲を逸脱しない範囲で、形態及び詳細における様々な変形が当業者によって実行可能であることが理解されるであろう。
【図面の簡単な説明】
【0070】
【図1】本発明の一実施形態に係る、ロボット制御システムを示す図である。
【図2】本発明の一実施形態に係る、タスクエンジンを用いたロボット制御を示す図である。
【図3】本発明の一実施形態に係る、タスクエンジンを示す図である。
【図4】本発明の一実施形態に係る、マクロタスクを実行する方法を示す図である。
【図5】本発明の一実施形態に係る、マクロタスクの第一の例を示す図である。
【図6】本発明の一実施形態に係る、マクロタスクの第二の例を示す図である。

【特許請求の範囲】
【請求項1】
人型ロボットのための命令を格納する方法であって、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットを第一の電子媒体に格納するステップと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットを第二の電子媒体に格納するステップと、
を含むことを特徴とする方法。
【請求項2】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項4に記載の方法。
【請求項6】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項7】
前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項1に記載の方法。
【請求項8】
前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットを第四の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項7に記載の方法。
【請求項9】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項8に記載の方法。
【請求項10】
人型ロボットのための命令を実行する方法であって、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットを実行するステップと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットを実行するステップと、
を含むことを特徴とする方法。
【請求項11】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項10に記載の方法。
【請求項12】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項11に記載の方法。
【請求項13】
前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項12に記載の方法。
【請求項14】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項13に記載の方法。
【請求項15】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項10に記載の方法。
【請求項16】
前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項10に記載の方法。
【請求項17】
前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットを実行するステップをさらに含む
ことを特徴とする請求項16に記載の方法。
【請求項18】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項17に記載の方法。
【請求項19】
電子媒体を備えて人型ロボットを制御するロボット制御製品であって、
前記電子媒体は、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットと、
を格納することを特徴とするロボット制御製品。
【請求項20】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項19に記載のロボット制御製品。
【請求項21】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項20に記載のロボット制御製品。
【請求項22】
前記電子媒体は、前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットをさらに格納する
ことを特徴とする請求項21に記載のロボット制御製品。
【請求項23】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項22に記載のロボット制御製品。
【請求項24】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記電子媒体は、前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットをさらに格納する
ことを特徴とする請求項19に記載のロボット制御製品。
【請求項25】
前記電子媒体は、前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットをさらに格納する
ことを特徴とする請求項19に記載のロボット制御製品。
【請求項26】
前記電子媒体は、前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットをさらに格納する
ことを特徴とする請求項25に記載のロボット制御製品。
【請求項27】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項26に記載のロボット制御製品。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2009−509787(P2009−509787A)
【公表日】平成21年3月12日(2009.3.12)
【国際特許分類】
【出願番号】特願2008−533718(P2008−533718)
【出願日】平成18年9月29日(2006.9.29)
【国際出願番号】PCT/US2006/038235
【国際公開番号】WO2007/041390
【国際公開日】平成19年4月12日(2007.4.12)
【出願人】(000005326)本田技研工業株式会社 (23,863)
【Fターム(参考)】