(57)【要約】  人型ロボットのための拡張可能なタスクエンジンフレームワークである。ロボット命令は、タスク３１０Ａ，３１０Ｂ，３１０Ｃ及びスキルとして格納される。タスク３１０Ａ，３１０Ｂ，３１０Ｃは、異なる構成を有する様々なロボットによって実行可能に設計されている。タスク３１０Ａ，３１０Ｂ，３１０Ｃは、ゼロ以上のスキルを参照可能である。スキルは、特定の構成のロボットのために設計可能である。タスクは、ロボット間で移送可能である。特定のロボットで実行される場合には、タスクは、そのロボットの能力を利用可能な一以上のスキルに対する呼び出しを実行する。【選択図】図３
2009509787.tif 000002
【特許請求の範囲】
【請求項１】
人型ロボットのための命令を格納する方法であって、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットを第一の電子媒体に格納するステップと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットを第二の電子媒体に格納するステップと、
を含むことを特徴とする方法。
【請求項２】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項２に記載の方法。
【請求項４】
前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項３に記載の方法。
【請求項５】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項４に記載の方法。
【請求項６】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項７】
前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットを第三の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項１に記載の方法。
【請求項８】
前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットを第四の電子媒体に格納するステップをさらに含む
ことを特徴とする請求項７に記載の方法。
【請求項９】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項８に記載の方法。
【請求項１０】
人型ロボットのための命令を実行する方法であって、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットを実行するステップと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットを実行するステップと、
を含むことを特徴とする方法。
【請求項１１】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項１２に記載の方法。
【請求項１４】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項１０に記載の方法。
【請求項１６】
前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットを実行するステップをさらに含む
ことを特徴とする請求項１０に記載の方法。
【請求項１７】
前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットを実行するステップをさらに含む
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項１７に記載の方法。
【請求項１９】
電子媒体を備えて人型ロボットを制御するロボット制御製品であって、
前記電子媒体は、
人型ロボットに第一のタスクを実行させる命令と、第二の命令セットへの参照を含む第一の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第一の命令セットと、
前記人型ロボットに第一のスキルを実行させる命令を備える前記第二の命令セットと、
を格納することを特徴とするロボット制御製品。
【請求項２０】
前記第二の命令セットは、第一の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項１９に記載のロボット制御製品。
【請求項２１】
前記第一の参照は、第三の命令セットへの参照をさらに含む
ことを特徴とする請求項２０に記載のロボット制御製品。
【請求項２２】
前記電子媒体は、前記人型ロボットに前記第一のスキルを実行させる命令を備える前記第三の命令セットをさらに格納する
ことを特徴とする請求項２１に記載のロボット制御製品。
【請求項２３】
前記第三の命令セットは、第二の構成の人型ロボットによって実行されるように設計されている
ことを特徴とする請求項２２に記載のロボット制御製品。
【請求項２４】
前記第一の命令セットは、第三の命令セットへの参照を含む第二の参照をさらに備えており、
前記電子媒体は、前記人型ロボットに第二のスキルを実行させる命令を備える前記第三の命令セットをさらに格納する
ことを特徴とする請求項１９に記載のロボット制御製品。
【請求項２５】
前記電子媒体は、前記人型ロボットにマクロタスクを実行させる命令と、前記第一の命令セットへの参照を含む第二の参照と、を備え、構成の異なる複数の人型ロボットによって実行可能な第三の命令セットをさらに格納する
ことを特徴とする請求項１９に記載のロボット制御製品。
【請求項２６】
前記電子媒体は、前記人型ロボットに第二のタスクを実行させる命令を備える第四の命令セットをさらに格納する
ことを特徴とする請求項２５に記載のロボット制御製品。
【請求項２７】
前記第三の命令セットは、前記第四の命令セットへの参照を含む第三の参照をさらに備える
ことを特徴とする請求項２６に記載のロボット制御製品。
【発明の詳細な説明】
【技術分野】
【０００１】
発明者は、エヌジー−ソウ−ヒング、ビクター及びドラムライト、エバンである。
【０００２】
本出願は、エヌジー−ソウ−ヒング、ビクター等によって２００５年９月２９日に出願された米国仮特許出願第６０／７２２，３４０号、及び、エヌジー−ソウ−ヒング、ビクター等によって２００６年９月２７日に出願された米国特許出願（番号未知）に基づいて優先権を主張するものであり、これらの文献は、参照により本明細書に一体的に組み込まれるものとする。
【０００３】
本出願は、ロボットの制御に関し、詳細には、人型ロボットに対する命令の構成及び実行に関する。
【背景技術】
【０００４】
従来、人型ロボットは、人型ロボットの特定の構成のためにカスタマイズされたロボット命令（コード）を用いて制御されていた。ロボットに特有のコードは、ロボット制御に対する自然発生的な初期アプローチであり、制限されたプログラムのセットがすばやく符号化され、初期段階でのコンセプトの証明及びデバッグ動作を支援することを可能としている。しかし、人型ロボット制御が成熟するにつれて、ロボットに特有のコードの排他的な信頼性は、頻繁に変更されるハードウェア設計を有する人型ロボットにおいてより洗練されたタスク行動を生成するという目標を妨げるおそれがある。従来のロボットからの既存のコードベースが新たなロボットに利用可能である場合、ロボットの性能が柔軟に拡張可能である場合、及び、第一のロボットによって学習された性能が第二のロボットに転送可能である場合には、人型ロボットはより効率的に開発可能である。
【０００５】
既存のコードベースを活用するため、人型ロボットの命令は、一のロボットから他のロボットへと容易に移植可能であることが望ましい。アプローチの一つとして、従来のロボットのために記述された命令に基づいて動作可能な新たな人型ロボットを設計することが挙げられる。しかし、このような下位互換性の要求は、ロボット設計者が旧式のレガシー命令、アーキテクチャに関する重大な制約の導入、及び、設計変更に対応する必要があるので、それ自身が人型ロボットの開発を妨げるおそれがある。
【０００６】
さらに、ロボットによる新たな性能の迅速な学習を促進するため、異なるロボットから取得された命令を新たなロボット上で実行する手法を有することが望ましい。アプローチの一つとして、ロボットに特有の学習済みの命令を新たなロボットに直接転送することが挙げられる。しかし、ロボットに特有の命令は、異なるハードウェア設計を有する新たなモデルのロボット上では上手く実行することができず、第一世代のロボットによって取得された性能を異なるハードウェア構成を有する第二世代のロボットに受け渡す第一世代のロボットの能力を、著しく制限する。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
それゆえ、命令の移植を可能とし学習済みの性能の一のロボットから他のロボットへの転送を支援する、人型ロボット命令のためのフレームワークが必要とされている。
【０００８】
本発明は、人型ロボットのための拡張可能なタスクエンジンフレームワークである。ロボット命令は、タスク及びスキルとして格納される。タスクは、異なる構成を有する様々なロボットによって実行可能に設計されている。タスクは、一以上のスキルを参照する。一実施形態において、スキルは、特定の構成のロボットのために設計可能である。タスクは、ロボット間で移送可能であるという利点を有する。特定のロボット上で実行される場合には、タスクは、そのロボットの能力を利用可能な一以上のスキルに対する呼び出しを実行する。一実施形態において、タスクは、ロボット非依存であり、スキルは、ロボット依存命令を含む。
【０００９】
一実施形態において、タスク及びスキルは、電子媒体に格納される。他の実施形態において、タスク及びスキルは、電子媒体から実行される。さらに他の実施形態において、電子媒体は、少なくとも一つのタスク及び少なくとも一つのスキルを格納している。電子媒体は、ロボット制御製品の一部として含有可能である。
【００１０】
さらなる実施形態において、ロボット命令は、マクロタスクとして格納される。マクロタスクは、一以上のタスク又はマクロタスクを参照する。マクロタスクは、異なる構成を有する様々なロボットによって実行可能に設計されている。マクロタスクは、電子媒体に格納可能であり、電子媒体から実行可能でもある。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の好ましい実施形態について、図面を参照して記述する。同一の参照符号は、同一又は機能的に同等な要素を示す。また、図面において、各参照符号の左端の数字は、当該参照符号が最初に用いられた図面に対応している。
【００１２】
本明細書における「一実施形態」又は「実施形態」という用語は、実施形態に関連して記述された特定の特徴、構造又は性質が本発明の実施形態の少なくとも一つに含まれることを意味する。本明細書の様々な場所における「一実施形態において」というフレーズの表現は、すべてが同一の実施形態に言及しているとは限らない。
【００１３】
以下の詳細な説明のいくつかの部分は、コンピュータメモリ内におけるデータビットの演算のアルゴリズム表現及び記号表現の用語で表現されている。これらのアルゴリズム記述及び表現は、データ処理分野の当業者によって他の当業者に作品の内容を最も効率的に伝えるために用いられる手段である。ここで、そして一般的にも、アルゴリズムは、所望の結果を導き出すステップ（命令）の自己無撞着なシーケンスであると考えられている。
ステップは、物理量の物理的操作を必要とする。大抵の場合、これらの量は、記録、伝送、結合、比較及びその他の操作が可能な電気信号、磁気信号又は光学信号の形態をとるが、これらに限定されない。主に共通利用のため、時として、これらの信号を、ビット、値、要素、記号、文字、用語、数字等として扱うと便利である。さらに、時として、物理量の物理的操作を必要とするステップの任意の配列を、一般性を損失することなく、モジュール又は符号化装置として扱うと便利である。
【００１４】
しかし、これらの全ての用語及び同様の用語は、好適な物理量に関連付けられるべきであり、これらの量に適用される単に便利なラベルであると思うべきである。特に他に述べられない限り、以下の議論から明らかなように、記述を通して、「処理」、「算出」、「計算」、「決定」、「表示」等のような用語を用いた議論は、コンピュータシステムの記憶装置、レジスタ、他の情報記憶装置、伝送装置又は表示装置内の物理（電子）量として表されるデータを操作及び伝送するコンピュータシステム又は同様の電子計算装置の動作及び処理に関して言及する。
【００１５】
本発明の任意の態様は、アルゴリズムの形態で本明細書に記述された処理ステップ及び命令を含む。本発明の処理ステップ及び命令は、ソフトウェア、ファームウェア又はハードウェアにおいて具現化可能であり、ソフトウェアにおいて具現化された場合には、様々なオペレーティングシステムによって用いられる異なるプラットフォームからダウンロードされて常駐及び動作可能であることに留意されたい。
【００１６】
また、本発明は、本明細書の動作を実行するための装置に関する。この装置は、特に所望の目的のために構成されていてもよく、コンピュータ内に記憶されたコンピュータプログラムにより選択的に作動又は再構成される汎用コンピュータを備えていてもよい。かかるコンピュータプログラムは、限定されないが、フロッピー（登録商標）ディスク、光学ディスク、ＣＤ−ＲＯＭ及び光磁気ディスクを含む各種ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード又は光カード、特定用途向け集積回路（ＡＳＩＣｓ）、電子的命令を格納するのに適し、コンピュータシステムバスにより互いに結合される各種メディア等のコンピュータ読み取り可能な記憶媒体に格納されている。
【００１７】
本明細書で提示されるアルゴリズム及び表示は、特定のコンピュータ又は他の装置に本質的に関連するものではない。様々な汎用システムが本明細書の教示に従うプログラムとともに用いられてもよく、より特化した装置を所望の方法ステップを実行するために構成すると便利であることもわかっている。これらの多様なシステムに必要な構造は、以下の記述から明らかになるであろう。さらに、本発明は、特定のプログラム言語に関して記述されているわけではない。多様なプログラム言語が本明細書で記述された本発明の教示を実行するために使用可能であり、以下の特定の言語に対する言及は、本発明の実施可能性及びベストモードの開示のために提供されていることは明らかである。
【００１８】
さらに、本明細書で用いられる言語は、主として読みやすさ及び説明を目的として選択されたものであり、本発明の構成要件を線引きし限定するために選択されたわけではない。したがって、本発明の開示は、添付の特許請求の範囲に記載された本発明の範囲を説明することを意図したものであり、限定することを意図したものではない。
【００１９】
一実施形態において、ロボット命令は、拡張可能なタスクエンジンフレームワークに格納される。電子媒体は、タスクのセットと、スキルのセットと、を格納している。タスクは、異なる構成を有する様々な人型ロボットによって実行可能な命令セットである。タスクは、ロボットのスキルを利用することによって実行される。スキルは、ロボットに特有のコマンドを用いて具現化可能である。タスク及びスキルは、コンピュータメモリ、ネットワークプロトコル又は任意の他の通信媒体を介して通信可能である。
【００２０】
タスクは、一般的に、タスクが再利用又は結合されることによってより複雑なタスクを形成することができ、有利には、新たな高粒度のタスクの開発を容易にするのに十分な低いレベルの粒度で定義される。他のタスクを参照して形成された高粒度のタスクは、「マクロタスク」と呼ばれることがある。タスク及びマクロタスクは、一の人型ロボットから他の人型ロボットに移植可能に設計されている。
【００２１】
本明細書の文脈において、命令のロボット移植性は、構成が異なる様々な人型ロボットが命令を実行する能力のことをいう。ロボット移植性は、命令が任意の人型ロボットによって実行可能であることを意味するとは限らない。一般的に、タスクによって用いられるスキルが特定の人型ロボットで利用可能である場合には、タスクは、特定の人型ロボットに移植可能である。様々なクラスの人型ロボットのための標準的なスキルセットが定義可能であり、ロボットの移植可能な命令は、命令が対象とするロボットのクラスに標準対応したロボットによって実行可能である。例えば、ロボットのクラスは、（少なくとも一つには）そのクラスのロボット上に実装されるスキルによって定義される。特定のクラスのロボットは、所定のスキルのセットのいずれかを実行することができる。ロボットの移植可能なタスクは、所定のセットからのスキルを用いることによって、任意の対応ロボット上で作動可能である。スキルの実装はロボット間で異なるが、スキルの結果は、理想的には標準化されており再現可能である。
【００２２】
人型ロボットのための命令をタスク及びスキルのフレームワーク内に格納することによって、多くの利点が提供される。例えば、人型ロボットプログラムの開発は、人型ロボットハードウェアの開発から分離可能である。タスクプログラマーは、ハードウェアに特有の実装の細部に関することよりも、むしろ新たなタスクの設計に重点的に取り組んでいる。さらに、タスクプログラマーは、物理的な人型ロボットに接することがなくても、人型ロボットのクラスに関する新たなプロシージャを実装することができる。バーチャルな人型ロボットの標準準拠シミュレーションは、タスクの機能を実証するために使用可能であり、物理的な人型ロボット上で実行された際にタスクがどのように動くのかをシミュレートすることができる。
【００２３】
また、人型ロボットのための命令をタスク及びスキルのフレームワーク内に格納することによって、一のロボットから他のロボットへのタスクの移植を促進することができる。
タスクは、ロボットに特有のコマンドを直接参照するのではなく標準的なスキルセットを参照しているので、第一の人型ロボットは、第二の人型ロボットによって置換可能であり、（第二の人型ロボットが好適なスキルセットを実装する場合には、）第二の人型ロボットは、以前に第一の人型ロボットで利用可能だったのと同様なタスクを実行することができる。また、新たなタスクは拡張可能で標準化されたフォーマットに格納可能であるので、タスクのフレームワークは、新たなタスクの習得を支援する。タスクの抽象化は、観測によって学習するのに有効な一般化を促進するという利点を有しており、自律人型ロボットの開発にとって重要な目標である。
【００２４】
図１は、本発明の一実施形態に係る、ロボット制御システムを説明する図である。ロボット制御装置１０４は、コマンドを送信するためにロボット１２２に接続されている。ロボット１２２は、ロボット制御装置１０４から受信したコマンドを実行することができるように構成されており、（位置、映像、フィードバック情報等といった）センサデータを送信するためにロボット制御装置１０４に接続されている。一実施形態において、ロボット１２２は、人型ロボットである。人型ロボットは、健常者と同様の身体構造を有する機械装置である。一般的に、人型ロボットは、頭を有する胴体と、２本の腕と、移動可能な下部構造と、を備えている。移動可能な下部構造は、２本の脚、車輪付き下部構造等といった異なる機構を用いて走行可能である。
【００２５】
説明のため、ロボット制御装置１０４は、ロボット１２２から分離されたものとして図示されている。一実施形態において、ロボット制御装置１０４は、ロボット１２２の構成として含まれることも可能である。他の実施形態において、ロボット制御装置１０４の要素及び機能は、ロボット１２２の内部のロボット制御装置とロボット１２２の外部のロボット制御装置との間に分配可能である。内部のロボット制御装置及び外部のロボット制御装置は、ロボット制御装置１０４に関して本明細書に記述された機能を協働して実行するように構成される。
【００２６】
任意事項として、入力装置１０２は、ロボット制御装置１０４に接続される。入力装置１０２は、ユーザのコマンドの入力を受けてロボット制御装置１０４に送信することができる。例えば、入力装置１０２は、キーボード、マウス、音声認識システム、ソフトウェアプログラム、ビデオカメラ等として具現化可能である。入力装置１０２は、ロボットが実行する目標すなわちタスクを選択するために使用可能である。
【００２７】
ロボット制御装置１０４は、プロセッサ１０６と、入力／出力（Ｉ／Ｏ）制御部１２０と、電子媒体１０８と、を備えている。Ｉ／Ｏ制御部１２０は、入力装置１０２、ロボット１２２及び／又はロボット制御装置１０４と接続しようとする任意の他装置と接続可能に構成されている。例えば、Ｉ／Ｏ制御部１２０は、ロボット１２２への命令の送信及びロボット１２２からのセンサデータの受信を管理するように構成可能である。
【００２８】
プロセッサ１０６は、電子媒体１０８に格納された命令等といった命令を実行することができる。プロセッサ１０６は、電子媒体１０８に格納された命令を実行することによってロボットコマンドを生成し、Ｉ／Ｏ制御部１２０を用いてロボット１２２に送信可能に構成されている。プロセッサ１０６によって実行された命令に従ってロボット１２２がロボットコマンドを実行する場合には、プロセッサ１０６が実際にはロボット１０６の外部にあったとしても、命令はロボット１０６によって実行されていると言える。
【００２９】
電子媒体１０８は、プロセッサ１０６のための命令を格納することができる。電子媒体１０８は、例えば、ハードディスク、ＲＡＭ、ＲＯＭ、光学ドライブ等として具現化可能である。電子媒体の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。説明のため、単一の電子媒体１０８が図示されている。一実施形態において、電子媒体１０８は、複数の電子媒体を備えることができる。例えば、電子媒体１０８の第一の部位がハードディスクを備え、電子媒体１０８の第二の部位がＲＡＭを備えることができる。
【００３０】
電子媒体１０８は、タスクエンジン１１０と、スキルモジュール１１６と、目標計画部１１２と、タスク選択部１１４と、知覚モデル１１８と、を格納している。本発明の一実施形態に係るタスクエンジン１１０は、図３を参照して本明細書に記述されている。スキルモジュール１１６は、インターフェースを呼び出す標準的な機能を含むプログラム機能（スキル）の集合である。スキルモジュール１１６内の機能は、一以上のロボットコマンドを用いてロボットスキルを具現化する。例えば、スキルモジュール１１６内の機能の呼び出しは、プロセッサ１０６上での機能の実行を含み、かかる実行によって、ロボット制御装置１０４は、ロボットコマンドのセットをロボット１２２に送信する。一実施形態において、スキルモジュール１１６は、関節角度をロボットの手足に適用するデバイスドライバとして具現化可能である。
【００３１】
目標計画部１１２は、ロボット１２２によって目標を達成するために完了されるべき一連のステップを決定することが可能なプログラムである。目標計画部１１２は、依存性を評価することによって、ユーザによって要請された目標を完了するために実行されるべきステップの順序を決定することができる。目標計画部１１２は、任意の数の人工知能及び／又は学習アルゴリズムを備えることによって、目標計画を促進する。
【００３２】
タスク選択部１１４は、ステップを達成するのに好適なタスクを決定することが可能なプログラムである。タスク選択部１１４は、目標計画部１１２からステップを受信し、タスクエンジン１１０内で入手可能な複数のタスクからタスクを選択することができる。タスク選択部１１４は、タスクエンジン１１０内において入手可能な複数のタスクを評価して好適なタスクを選択するためのアルゴリズムを備えることができる。
【００３３】
タスク選択部１１４及び目標計画部１１２は、タスクエンジン１１０内において入手可能なタスクを選択するために使用可能な構成要素の例として提供されたものである。一実施形態において、タスク選択部１１４は、目標計画部１１２からの入力なしに、タスクエンジン１１０内のタスクを直接選択する。他の実施形態において、タスクは、ユーザ入力に基づいて選択される。タスクを選択する方法の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【００３４】
知覚モデル１１８は、ロボット１２２から入力を受けたセンサデータを解釈することが可能なプログラムである。一実施形態において、知覚モデル１１８は、ロボット１２２の環境内に配置されたセンサから入力を受けたデータを解釈することができる。これらのセンサは、ロボットのボディ上に設けられていてもなくてもよい。知覚モデル１１８は、コマンドをロボット１２２に送信することによって、センサデータの収集を促進することもできる。一実施形態において、知覚モデル１１８は、タスクエンジン１１０によって呼び出し可能な機能のセットを備えている。第一の知覚モデル１１８内の機能は、第二の知覚モデル１１８内の機能を呼び出すのと同様の機能を用いて呼び出し可能である。知覚モデル１１８内の機能は、ロボット１２２及びその環境についての情報を戻す。一実施形態において、知覚モデル１１８は、デバイスドライバーとして具現化される。例えば、知覚モデル１１８は、カメラシステムからオブジェクト位置についての情報を取得するように構成されたデバイスドライバとして具現化可能である。
【００３５】
説明のため、ロボット制御装置１０４の構成要素は、単一装置内に図示されている。実際には、ロボット制御装置の機能及び要素は、任意の数の装置又はシステムにわたって分配可能である。例えば、ロボット制御装置１０４は、任意の数のコンピュータシステム内の任意の数のプロセッサ１０６を用いて具現化可能である。同様に、タスクエンジン１１０、スキルモジュール１１６等といった構成要素は、異なる電子媒体１０８に格納可能であり、異なるシステムに含有可能である。一実施形態において、例えば、第一のシステムがタスクエンジンと第一のプロセッサとを備え、第二のシステムがスキルモジュール１２６と第二のプロセッサとを備える。ロボット制御装置１０４の様々な構成は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【００３６】
図２は、本発明の一実施形態に係る、タスクエンジンを用いたロボットの制御を説明する図である。一実施形態において、目標計画部１１２は、例えば、ユーザ入力から、又は、計画的なルーチンの一部として、目標の入力を受け、その目標を達成するために実行されるべきステップの順序を決定する。タスク選択部１１４は、一以上のタスクを選択することによって、目標計画部１１２によって設定されたステップを達成する。他の実施形態において、タスクは、ユーザ入力に基づいて選択される。タスク選択の他の例は、当業者にとっては本発明の要旨を逸脱しない範囲で自明であろう。
【００３７】
タスクエンジン１１０は、タスクの選択の入力を受け、それによってロボット１２２にタスクを実行させる。本発明の一実施形態に係るタスクエンジン１１０は、図３を参照して本明細書に記述される。タスクエンジン１１０の具現化は、様々な目標計画スキーム及びタスク選択スキームと互換性を有することができる。タスクエンジン１１０は、一般的には、異なる目標計画部１１２又はタスク選択部１１４の設計及び試験の自由度を制限しないという利点を有する。タスクエンジン１１０は、新規な、すなわち試験的な目標計画手法及びタスク選択手法によって用いられることが好ましい。
【００３８】
タスク１１０を実行するために、タスクエンジン１１０は、スキルモジュール１１６及び知覚モデル１１８を用いてロボット１２２と相互に作用しあう。タスクエンジン１１０は、スキルモジュール１１６を呼び出すことによって、ロボット１２２に特定のスキルを実行させる。タスクエンジン１１０は、知覚モデル１１８を呼び出すことによって、ロボット１２２の環境についての情報を要請する。スキルモジュール１１６及び知覚モデル１１８が機能の標準的なセットをタスクエンジン１１０に提供するので、タスクエンジン１１０は、様々なスキルモジュール及び知覚モデルと相互作用可能であり、異なる構成を有する様々な人型ロボット１２２のために用いられる。スキルモジュール１１６及び知覚モデル１１８は、特定の人型ロボット１２２のために設計可能であり、ロボット移植可能なタスクエンジン１１０とロボットに特有の実施詳細との間に抽象化のレイヤーを提供するといった利点を有する。
【００３９】
特定のスキルの呼び出しの入力を受けると、スキルモジュール１１６は、ロボットコマンドをロボット１２２に送信する。スキルモジュール１１６は、ロボット１２２上でスキルを実行することが可能な命令を備えている。「腕を位置Ｘまで移動させる」というスキルを例に挙げると、スキルモジュール１１６は、ロボットに特有のコマンドを用いることによって、ロボット１２２に対する位置Ｘを決定し、ロボット１２２の腕を移動させ、ロボット１２２の腕の位置に関するフィードバックの入力を受け、ロボット１２２の腕が養成された位置にあるかを判定する。フィードバック及び制御のために用いられる手法はロボットごとに異なるので、スキルの具現化は、ロボットによって異なり得るが、スキルの実行結果は同一であり、ロボット１２２の腕が位置Ｘに移動する。スキルの他の例としては、軌道追跡、運動計画、軌道再スケーリング、順運動学及び逆運動学、所与のオブジェクトを把持するために必要な人型の手の構成を決定する方法等が挙げられる。スキルモジュール１１６がロボットによって異なり得るので、スキルモジュール１１６は、ロボット１２２上に具現化された特定の制御システム及びフィードバックシステムに好適なロボットコマンドを送信することができる。
【００４０】
知覚情報の要請の入力を受けると、知覚モデル１１８は、ロボット１２２の環境に関する情報を戻す。知覚モデル１１８は、ロボット１２２からセンサデータの入力を受け、仮説を生成する。知覚モデル１１８は、ロボットコマンドを送信することによって、ロボット１２２に特定のセンサデータを送信させ、ロボットにセンサのモードを変化させ、又は、データが収集可能となるようにロボットを移動させることもできる。ある環境において、知覚モデル１１８は、既に知覚モデル１１８内にある情報に基づいて知覚情報の要請に応答することができる。他の環境において、知覚情報の要請によって、知覚モデル１１８がロボットコマンドをロボット１２２に送信し、それによって情報の収集を促進し、知覚モデル１１８が要請に対して好適に応答することができるようになる。知覚モデル１１８がロボットによって異なり得るので、知覚モデル１１８は、ロボット１２２上で利用可能な特定のセンサのために設計可能である。例えば、距離計のアレイを有するロボットではなくデジタルカメラを有するロボットである場合には、異なる知覚モデル１１８を用いる方が有利である。知覚モデル１１８が標準的なインターフェースをタスクエンジン１１０に提供するので、タスクは、特定のセンサ構成を有するロボットに制限されることなく、知覚モデル１１８内で利用可能な情報を利用することができる。第一の知覚モデル１１８によって戻された結果が第二の知覚モデルによって戻された結果と異なってもよいが、これらの結果は、ロボット移植可能なタスクによって解釈及び利用可能なように、共通のフォーマットとなっている。
【００４１】
図３は、本発明の一実施形態に係る、タスクエンジンを説明する図である。タスクエンジン１１０は、条件３０２と、マクロタスク３０４（例えば、３０４Ａ，３０４Ｂ，３０４Ｃ，３０４Ｄ）と、動作３０６と、タスク３１０（例えば、３１０Ａ，３１０Ｂ，３１０Ｃ）と、を備えている。
【００４２】
一実施形態において、タスクエンジン１１０は、一以上の条件３０２を備える。条件３０２は、ロボット又は環境の状態のテストである。ロボット又は環境の状態によって、条件３０２は、真又は偽となり得る。タスク３１０は、一以上の条件３０２を参照しており、タスク３１０の制御フローは、条件３０２が真であるか偽であるかに依存する。条件３０２が任意の数のタスク３１０によって参照可能であるので、命令は、再利用可能であり、新たなタスクのコーディングが簡略化される。同様に、条件３０２は、任意の数のマクロタスク３０４によって参照可能である。条件３０２を参照するタスク３１０が実行されると、タスクエンジン１１０は、スキルモジュール１１６及び／又は知覚モデル１１８を呼び出すことによって、条件３０２が満たされているか否かを判定することができる。条件３０２の例としては、二つのオブジェクト間の距離のテスト、二つのオブジェクトの相対的な垂直位置のテスト、人型ロボットの姿勢のテスト、人型ロボットがオブジェクトを把持しているかについてのテスト、オブジェクトが把持可能かについてのテスト等が挙げられ、これらに限定されない。条件の他の例は、本発明の要旨を逸脱しない範囲で具現化可能である。
【００４３】
一実施形態において、タスクエンジン１１０は、一以上のマクロタスク３０４を備える。マクロタスクは、タスク３１０又は他のマクロタスク３０４を参照する命令のセットである。一実施形態において、マクロタスクは、ＸＭＬファイル等といった構造化されたフォーマットで電子媒体に格納されている。一実施形態において、マクロタスクは、当該マクロタスクの呼び出しに応答して読み出されるか読み込まれる。本発明の一実施形態に係る、マクロタスクを実行する方法は、図４を参照して本明細書に記述される。
【００４４】
一実施形態おいて、マクロタスク３０４は、メッセージ駆動機械として実行される。メッセージ駆動機械は、タスクの順次実行及び並列実行をともに可能とする状態機械として具現化可能である。一般的には、複数の状態が同時にアクティブとなり得る。また、メッセージ駆動機械は、メッセージを送受信することによって、他のメッセージ駆動機械と相互作用することができる。タスクは、他のタスクからのメッセージに基づいて、実行又は終了される。また、メッセージ駆動機械内の制御フローは、前提条件又はインコンディションによって制御可能である。前提条件は、マクロタスク３０４を開始する前に満たされるべき条件３０２である。インコンディションは、マクロタスクを続行するために満たされるべき条件３０２である。前提条件及びインコンディションを受けてマクロタスクを実行することは、ロボット１２２のリソースのコンフリクトを避け、マクロタスク３０４の動作の成功を保証するといった点で有益である。
【００４５】
マクロタスク３０４は、その柔軟性及び拡張性の点で好ましい。マクロタスク３０４は、タスクエンジン１１０がロボット上で他のマクロタスク３０４を実行している間に、取得、読み込み及び実行可能である。さらに、マクロタスク３０４は、他のマクロタスク３０４を参照することができる。タスクエンジン１１０が参照されたマクロタスク３０４を備えていない場合には、タスクエンジン１１０は、参照されたマクロタスク３０４をリアルタイムで取得及び読み込み可能である。マクロタスク３０４は、例えば、マクロタスクのライブラリから取得可能である。設計者が既存のマクロタスクを参照可能であるので、マクロタスク３０４を設計するプロセスは簡略化される。さらに、マクロタスク３０４は、技術的な実施詳細の多くがマクロタスク３０４から離れて抽象化されるのに十分な高レベルで仕事を特定することができ、設計者は、有効かつ効率的なマクロタスク３０４を自由に開発することができるようになる。マクロタスクの例としては、オブジェクトを持ち上げる、オブジェクトを置く、掃除機をかける、挨拶する等が挙げられ、これらに限定されない。
【００４６】
少なくともいくつかのマクロタスク３０４は、タスク３１０を参照する。一実施形態において、タスク３１０は、タスクモジュール３０８に格納されている。タスクモジュール３０８は、機能のライブラリである。一実施形態において、タスクモジュール３０８は、ＤＬＬ（Dynamically linked library）として具現化される。ＤＬＬにタスク３１０を格納することによって、タスク３１０はタスクエンジン１１０が作動している間に、好適に追加又は除去可能となる。
【００４７】
タスク３１０は、一以上のスキルを参照する命令のセットである。タスク３１０は、前提条件又はインコンディションに従って実行可能である。タスク３１０は、ロボットスキルを実行する（潜在的には無期限な）期間中に作動する。また、タスク３１０は、パラメータとともに呼び出し可能であり、ロボットの右手、左手又は一方の手を振るのに用いられる「手を振る」というタスクを可能とするといった利点を有する。また、「手を振る」というタスクは、例えば、所望の手を振る期間を特定するパラメータとともに呼び出し可能である。パラメータは、命令の再利用を促進し、タスク呼び出しに柔軟性を導入する。
【００４８】
タスク３１０は、少なくとも一つのスキルに対する参照を備えていてもよい。例えば、タスク３１０は、タスクの実行の一部として実行されるべきスキルの名前又は識別子を備えることができる。タスク３１０が実行されると、スキルは、スキルモジュール１１６から読み出されてロボット上で実行される。スキルモジュール１１６は、同様の基準によって識別される複数のスキルを備えている。例えば、スキルモジュール１１６は、共通の識別子を有する複数の軌道追跡スキルを備えることができる。例えば、様々な軌道追跡スキルが、異なるロボット構成のために設計可能である。
【００４９】
タスクの例としては、到達するためのプログラム、把持するためのプログラム、手を放すためのプログラム、姿勢をとるためのプログラム、ロボットを特定の位置まで移動させるためのプログラム等が挙げられるが、これらに限定されない。タスクの他の例は、本発明の要旨を逸脱しない範囲で具現化可能である。
【００５０】
動作３０６は、ロボットによって実行可能な、予め定義された動作ルーチンである。一実施形態において、実行のために選択された動作３０６は、スキルモジュール１１６に送信され、ロボットコマンドを生成することによって、ロボット１２２に動作３０６を実行させる。動作３０６は、ロボット間で移植可能であるが、一実施形態においては、その必要はない。動作３０６は、命令プログラマーがタスク３１０又はマクロタスク３０４によって提供されたロボット動作よりもきめ細かい詳細なレベルでロボット動作を特定することができるといった利点を有している。
【００５１】
図４は、本発明の一実施形態に係る、マクロタスクを実行する方法を説明する図である。一実施形態において、本方法は、タスクエンジン１１０によって実行される。
【００５２】
タスクエンジン１１０は、マクロタスクコマンドの入力を受ける（４０２）。例えば、タスクエンジン１１０は、ユーザから、タスク選択部１１４から、又は、他のマクロタスクの実行に基づいて、マクロタスクの選択の入力を受けることができる。一実施形態において、マクロタスクコマンドは、マクロタスクを実行するのに好適なパラメータを備えている。
【００５３】
タスクエンジン１１０は、マクロタスクが読み込まれているかを判定する（４０４）。タスクエンジン１１０がマクロタスクは読み込まれていないと判定した場合には、タスクエンジン１１０は、電子媒体からマクロタスクを読み出す（４０６）。例えば、タスクエンジン１１０は、マクロタスクライブラリからマクロタスクを読み出す（４０６）。本発明の一実施形態によると、マクロタスクの読み出し（４０６）としては、ＸＭＬファイルからのマクロタスクの取り込みが挙げられる。ＸＭＬファイルからマクロタスクを取り込むことによって、利用可能なマクロタスクのセットは、柔軟性及び拡張性を有することができる。
【００５４】
タスクエンジン１１０は、マクロタスクを実行する（４０８）。マクロタスクの実行（４０８）としては、マクロタスクによって参照された他のマクロタスク及び／又はタスクの実行が挙げられる。また、マクロタスクの実行（４０８）としては、条件を判定することによるマクロタスクの実行フローの制御、他のマクロタスクからのメッセージの送受信が挙げられる。マクロタスクの実行（４０８）の例は、図５及び図６を参照して本明細書に記述される。
【００５５】
タスクエンジン１１０は、４０２でマクロタスクコマンドの入力を受けた）構成に対して、マクロタスク完了メッセージを送信する（４１０）。例えば、タスクエンジン１１０は、他のマクロタスク、タスク選択部１１４又は他のユーザに対してマクロタスク完了メッセージを送信することができる（４１０）。マクロタスク完了メッセージの送信（４１０）は、マクロタスクの実行に依存する他の構成がマクロタスクの完了に基づいて行動することができようになるといった利点を有する。
【００５６】
図５は、本発明の一実施形態に係る、マクロタスクの第一の例を説明する図である。一実施形態において、マクロタスクの構成要素は、マクロタスクライブラリに格納されており、タスクエンジン１１０によって読み込まれる。図示された例において、マクロタスクは、「持ち上げて置く」というマクロタスクである。マクロタスクの目的は、オブジェクトを持ち上げて、それを異なる位置に置くことである。本例におけるマクロタスクのパラメータとしては、腕識別子、手識別子、オブジェクト識別子、目標位置等が挙げられる。
【００５７】
マクロタスクは、把持条件を評価する（５０２）。例えば、マクロタスクは、条件３０２の一つへの参照を備えることができる。条件３０２としては、手識別子パラメータによって特定された手が把持状態であるか非把持状態であるかに関するテストが挙げられる。
【００５８】
把持条件の結果は、マクロタスクの制御フローに影響する。把持条件は真である場合には、マクロタスクは、手放しタスク（５０４）を呼び出す。手放しタスク（５０４）の呼び出しは、手識別子等といった関連パラメータを備えることもできる。手放しタスク（５０４）は、ロボット１２２に特定された手を放させることが可能な好適なスキルを参照する。手放しタスク（５０４）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００５９】
手放しタスク（５０４）からのタスク実行メッセージの入力受け取りに応じて、又は、把持条件が偽である場合には、マクロタスクは、到達タスク（５０６）を呼び出す。到達タスク（５０６）の呼び出しは、手識別子、オブジェクトの位置等といった関連パラメータを備えることもできる。到達タスク（５０６）は、ロボット１２２に特定された手をオブジェクトの位置に到達させることができる好適なスキルを参照する。到達タスク（５０６）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００６０】
到達タスク（５０６）からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、把持タスク（５０８）を呼び出す。把持タスク（５０８）の呼び出しは、手識別子、オブジェクトの位置等といった関連パラメータを備えることもできる。把持タスク（５０８）は、ロボット１２２にオブジェクトを把持させることができる好適なスキルを参照する。把持タスク（５０８）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００６１】
把持タスク（５０８）からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、到達タスク（５１０）を呼び出す。到達タスク（５１０）は、到達タスク（５０６）との類似性に基づいて命令を再利用することができる。到達タスク（５１０）の呼び出しは、手識別子、目標位置等といった関連パラメータを備えることもできる。到達タスク（５１０）は、ロボットに特定された手を目標位置に到達させることができる好適なスキルを参照する。到達タスク（５１０）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００６２】
到達タスク（５１０）からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、手放しタスク（５１２）を呼び出す。手放しタスク（５１２）は、手放しタスク（５０４）との類似性に基づいて命令を再利用することができる。手放しタスク（５１２）の呼び出しは、手識別子等といった関連パラメータを備えることもできる。手放しタスク（５１２）は、ロボットに特定された手を放させることができる好適なスキルを参照する。手放しタスク（５１２）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。マクロタスクは、実行を完了し、マクロタスク完了メッセージを、マクロタスクを呼び出した構成に送信することができる。
【００６３】
図６は、本発明の一実施形態に係る、マクロタスクの第二の例を説明する図である。一実施形態において、マクロタスクの構成要素は、マクロタスクライブラリに格納されており、タスクエンジン１１０によって読み込まれる。図示された例において、マクロタスクは、「顔を向けて手を振る」というマクロタスクである。マクロタスクの目的は、部屋内のオブジェクトを識別して、それに向かって手を振ることである。
【００６４】
マクロタスクは、顔向けタスク（６０２）を呼び出す。顔向けタスク（６０２）は、ロボット１２２にオブジェクトを識別させてそれに顔を向けるように移動させることができる好適なスキル及び／又は知覚モデルを参照する。顔向けタスク（６０２）は、実行を継続し、目標達成メッセージを、呼び出しているマクロタスクに返信する。
【００６５】
顔向けタスク（６０２）からの目標達成メッセージの入力受け取りに応じて、マクロタスクは、手振り準備タスク（６０４）を呼び出す。手振り準備タスク（６０４）は、ロボットに手を振る動作を準備させることができる好適なスキルを参照する。例えば、ロボット１２２は、手を振る位置に手を伸ばすことができる。手振り準備タスク（６０４）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００６６】
手振り準備タスク（６０４）からのタスク実行メッセージの入力受け取りに応じて、マクロタスクは、顔向けタスク（６０２）を呼び出す。顔向けタスク（６０２）は、実行を継続し、目標達成メッセージを、呼び出しているマクロタスクに返信する。
【００６７】
顔向けタスク（６０２）からの目標達成メッセージの入力受け取りに応じて、マクロタスクは、手振りタスク（６０８）を呼び出す。手振りタスク（６０８）は、ロボット１２２に手振り動作を行わせることができる好適なスキルを参照する。一実施形態において、手振りタスク（６０８）は、所望の手振り期間等といった特定されたパラメータに応じてロボット１２２に手振り動作を行わせることができる好適なスキルを参照する。手振りタスク（６０８）は、タスク実行メッセージを、呼び出しているマクロタスクに返信する。
【００６８】
マクロタスクは、ループを繰り返し、顔向けタスク（６０２）及び手振りタスク（６０８）を同時に実行する。手振りタスク（６０２）は、例えば、顔向けタスク（６０２）からの目標達成メッセージに応答して、周期的に再開可能である。例えば、ユーザコマンドに応答するか、タイマの期限切れ後か、オブジェクトが発見できなかったか、によって顔向けタスク（６０２）が完了すると、手振りタスク（６０８）は終了し、タスク実行メッセージが、呼び出しているマクロタスクに返信される。マクロタスクは、実行を完了し、マクロタスク完了メッセージを、マクロタスクを呼び出した構成に送信することができる。
【００６９】
以上、好ましい実施形態及びいくつかの他の実施形態を参照して本発明を詳細に図示及び記述したが、本発明の精神及び範囲を逸脱しない範囲で、形態及び詳細における様々な変形が当業者によって実行可能であることが理解されるであろう。
【図面の簡単な説明】
【００７０】
【図１】本発明の一実施形態に係る、ロボット制御システムを示す図である。
【図２】本発明の一実施形態に係る、タスクエンジンを用いたロボット制御を示す図である。
【図３】本発明の一実施形態に係る、タスクエンジンを示す図である。
【図４】本発明の一実施形態に係る、マクロタスクを実行する方法を示す図である。
【図５】本発明の一実施形態に係る、マクロタスクの第一の例を示す図である。
【図６】本発明の一実施形態に係る、マクロタスクの第二の例を示す図である。
【図１】
2009509787.tif 000003
【図２】
2009509787.tif 000004
【図３】
2009509787.tif 000005
【図４】
2009509787.tif 000006
【図５】
2009509787.tif 000007
【図６】
2009509787.tif 000008