複数の独立する課題を備える協働作業課題を実行するためのロボットシステムであって、前記ロボットシステムは、複数のロボットジョイントを有し、前記ロボットジョイントの各々は、前記協働作業課題の実行中に独立に制御可能であり、前記ロボットシステムはさらに、前記協働作業課題の実行中に前記ロボットジョイントの運動を制御するコントローラを有し、前記コントローラは、自動的に、前記ロボットジョイントを課題に特化したサブシステムにグループ化し、課題実行分岐部に到達した際に複数の独立した課題を課題に特化したサブシステムに割り当て、前記課題実行分岐部に到達した後に、課題に特化したサブシステムの、課題に特化したそれぞれのサブシステムによる独立した実行を調整する、ロボットシステム。請求項1に記載のロボットシステムであって、前記コントローラはランタイムエンジンを含み、前記ランタイムエンジンは、前記協働作業課題に実行中に、課題に特化したロボットサブシステムのロボットジョイントに関する運動を調整するように構成される、ロボットシステム。請求項1に記載のロボットシステムであって、前記ロボットシステムは少なくとも42の自由度を備える、ロボットシステム。請求項1に記載のロボットシステムであって、さらに、複数のロボットを有し、前記複数のロボットジョイントは、前記複数のロボットの間に分配され、前記複数のロボットは協働して前記協働作業課題を実行する、ロボットシステム。請求項1に記載のロボットシステムであって、さらに、前記コントローラにアクセスするための視覚的プログラムエディタを有し、前記視覚的プログラムエディタは、複数の独立するサブ課題の分岐シーケンスを構成するためにユーザーにインターフェースを提供する、ロボットシステム。請求項1に記載のロボットシステムであって、前記ランタイムエンジンは、非同期実行管理モジュールを含み、前記非同期実行管理モジュールは、前記ロボットジョイントを任意に課題に特化したロボットサブシステムにグループ化し、前記非同期実行管理モジュールは、前記協働作業課題の実行中に、前記ロボットジョイントを介して前記ロボットの非同期の運動を調整する、ロボットシステム。請求項1に記載のロボットシステムであって、複数の独立する作業課題の少なくともいくつかは、異なるロボットジョイントにより別個に実行可能である、ロボットシステム。請求項7に記載のロボットシステムであって、さらに複数のロボットを有し、複数の独立する課題の少なくともいくつかは、前記複数のロボットの異なるロボットにより実行可能である、ロボットシステム。請求項7に記載のロボットシステムであって、さらに、スケジューリングモジュールと、データベースシステムと、を有し、前記スケジューリングモジュールは、複数の独立する課題の与えられた1つを他の複数の独立する課題から独立して完成させ、前記データベースシステムからのシステムデータおよび共有されるイベント情報を用いて、前記複数の独立する課題の実行を同期させる、ロボットシステム。請求項9に記載のロボットシステムであって、前記スケジューリングモジュールは、ラウンドロビンスケジューリングスキームを使用して、複数の独立する課題の共有される実行時間を強制する、ロボットシステム。請求項1に記載のロボットシステムであって、前記コントローラは、複数の独立する課題の1つを、他の複数の独立する課題の実行に干渉することなく自動的に一時停止および再開するように動作することができる、ロボットシステム。複数の独立して制御可能なロボットジョイントを備えるロボットシステムを用いて、複数の独立するサブ課題を備える協働作業課題を実行するための方法であって、前記方法は、前記ロボットジョイントを自動的に課題に特化したサブシステムにグループ化するステップと、課題実行分岐部に到達した際に、複数の独立するサブ課題を課題に特化したサブシステムに割り当てるステップと、課題実行分岐部に到達した後に、それぞれの課題に特化したサブシステムによる複数の独立するサブ課題の独立した実行を調整するステップと、を有する方法。請求項12に記載の方法であって、前記ロボットシステムは少なくとも42の自由度を備える、方法。請求項12に記載の方法であって、前記ロボットジョイントは、協働作業課題を一緒に実行する複数の異なるロボットの間で分配され、前記ロボットジョイントをグループ化するステップは、複数のロボットの各々からのロボットジョイントをグループ化するステップを含む、方法。請求項12に記載の方法であって、さらに、ランタイムエンジンを使用して、課題実行分岐部において、前記協働作業課題の前記複数の独立するサブ課題を自動的に分岐させるステップ、を有する、方法。請求項15に記載の方法であって、前記ロボットシステムは、視覚的プログラムエディタを含み、前記方法はさらに、前記視覚的プログラムエディタを用いて前記ランタイムエンジン内の分岐シーケンスを設定するステップを有する、方法。請求項12に記載の方法であって、前記ロボットシステムは、スケジューリングモジュールと、システムデータおよび共有されるイベント情報を提供するデータベースシステムとを有し、前記複数の独立するサブ課題の独立した実行を調整するステップは、前記システムデータおよび前記共有されるイベント情報を用いて互いに対して独立に複数の独立するサブ課題を同期させて完了させるために前記スケジューリングモジュールを使用するステップを含む、方法。請求項17に記載の方法であって、さらに、ラウンドロビンスケジューリングスキームを使用するスケジューリングモジュールを介して、複数の独立するサブ課題の共有される実行時間を強制するステップを有する、方法。0004複数のロボットが共有される作業空間内で使用される場合、シリアルハンドシェイキングプロトコルを用いてロボットの運動を自動的に調整するために、単一のコントローラを使用することができる。当業界で理解されているように、シリアルハンドシェイキングは、チャネルでの通信を適正に開始する前に、2つのロボットまたは他のネットワーク化された装置の間で確立される、任意の通信チャネルまたはリンクの必要なパラメータを動的に設定する。シリアルハンドシェイキングプロトコルは、ロボットシステム内のDOFの数が増加すると、効率を低下させ得る。0005そこで、ロボットシステムおよびロボットシステムのための制御方法が開示される。本方法は、1つ以上の高次の自由度DOFのロボットの運動を調整するように構成されるコントローラにより実行することができるアルゴリズムとして実施化することができる。高次のDOFとの語は、本明細書において、従来の6自由度より高い自由度を備えるロボットを指し、ある実施形態においては、作業課題を協働して実行するために同一のロボットシステム内で使用される1つのロボットまたは複数のロボットについてのDOFであるかどうかに関わらず、42DOFまたはそれ以上である。0006高DOFロボットは、本稿では、少なくとも42DOFを備える器用な人間型ロボットとして実施化される。そのようなロボットは、人間のようなレベルの器用さが必要となる新しい航空宇宙用途および工業用途において有利に採用することができる。高DOFレベルは、非同期のおよび調和したジョイント運動、自動化された作業分岐、およびロボットシステムで使用されるロボットの様々なマニピュレータによる作業の独立した実行を必要とする。この能力は、本明細書に開示されるロボットシステムおよび制御方法により提供される。0007特に、ロボットシステムは、複数の独立するサブ課題を備える協働作業課題を実行するために動作可能である。ここで用いられる協働作業課題とは、1つ以上のロボットジョイントにより実行される作業課題を指し、いくつかの例においては、ロボットシステム内で使用される1つ以上のロボットの複数のジョイントにより実行される作業課題である。ロボットシステムはロボットおよびコントローラを含む。ロボットは、複数のロボットジョイントを備え、各ジョイントは、協働作業課題の実行中に独立して制御することができる。0008コントローラは、協働作業課題の実行中にロボットジョイントの運動を制御し、ロボットシステムの異なるジョイントを課題に特化したサブシステムとして自動的にグループ化することにより行う。コントローラは、課題実行分岐部に到達すると、複数の独立したサブ課題を様々なグループ化されたサブシステムに割り当て、課題実行分岐部に到達した後に、それぞれのサブシステムによるサブ課題の実行を調整する。複数の課題分岐部が存在することがあり、それぞれは複数の独立したサブ課題に導かれる。0009一実施形態におけるロボットシステムは、少なくとも42自由度を備える。1つ以上の追加的なロボットは、協働作業課題の実行において協働することができる。自動的にサブ課題を分岐させるのにランタイムエンジンを用いることができる。コントローラにアクセスするために視覚的なプログラムエディタを含めることができ、プログラムエディタは、ユーザーが様々なサブ課題の自動化された分岐のための分岐シーケンスを構成することができるようにする。視覚的なプログラムエディタおよびコントローラのプログラム言語は、1つ以上のロボットおよび/またはロボットシステムに命令を発することができる。0010ランタイムエンジンは、非同期実行管理asynchronousexecutionmanagementAEMモジュールを含むことができ、これは、ロボットジョイントを任意に課題に特化したサブシステムにグループ化する。AEMモジュールは、協働作業課題の実行に際してロボットジョイントの非同期運動を調整する。スケジューリングモジュール、およびシステムデータおよび共有されるイベント情報を提供するデータベースシステムをロボットシステムに含めることができ、スケジューリングモジュールは、複数の独立する課題が、互いに対して独立に完了することを可能にし、一方で、同時に、データベースシステムから提供されるシステムデータおよび共有されるイベントを用いて同期することを可能にする。0011また、複数の独立するサブ課題を備える協働作業課題を実行する方法が開示される。本方法は、ロボットジョイントを自動的に課題に特化したサブシステムにグループ化し、課題実行分岐部に到達したときに協働作業課題の複数の独立するサブ課題を課題に特化したサブシステムに割り当て、課題実行分岐部に到達した後に、それぞれの課題に特化したサブシステムよる複数の独立するサブ課題の独立する実行を調整する。0012本発明の上述の特徴および利点、および他の特徴および利点は、以下の発明を実施するための詳細な説明を添付図面とともに参照することで明らかになるであろう。0016図面に関して、複数の図面を通じて同様の参照符号は同一または類似の要素を示している。図1には、複数のロボットジョイントを備える器用なロボット11を含むロボットシステム10が示されている。これらは以下で説明される。ロボットの様々なジョイントの非同期の、調整された制御は、アルゴリズム100により提供され、これは図3を参照して以下で詳細に説明される。0017ロボット11は、図示のように人間のような外観を備えるように構成することができ、また、与えられる作業課題の複雑さに必要な程度に人間のようなレベルの器用さを備えるように構成できる。人間型ロボットおよび他の器用なロボットは、特に人間の使用のために設計された装置またはシステム、すなわち、物体30を適切に操作するために人間のようなレベルの器用さが必要な装置、に直接的な相互作用が必要とされる場面において使用することができる。ロボット11のような人間型ロボットの使用は、ロボットと人間のオペレータとの間に直接的な相互作用が必要とされる場面において好ましく、運動は人間の動きを模倣するようにプログラムすることができる。0018ロボット11は、力ベースの又はインピーダンスベースの制御フレームワークを介して動作する。本明細書において、力ベースおよびインピーダンスベースとの語は、ロボットの様々なロボットジョイントおよびマニピュレータを通じて移動および力を付与するために、力またはインピーダンスの命令およびフィードバック信号に応じてロボットを制御することを指す。ロボット11は、コントローラ12を使用して制御され、コントローラ12は、アルゴリズム100を実行して、制御信号50のセットをロボットに伝達する。制御信号は、以下で詳細に説明されるように、非同期のおよび調整されたロボットのジョイント運動制御を提供する。0019制御信号50は、力またはインピーダンスベースの動作命令および位置/力フィードバックのセットを含むことができる。すなわち、ロボット11のユーザーは、操作される質量、たとえば物体30、に対する望ましい剛性、減衰、および慣性特性を特定することができ、それにより、ロボットと周囲の環境との間の物理的相互作用に対するロバスト性を提供し、また、様々な操作課題に対する柔軟性を提供する。0020ロボット11は、複数の自由度DOFで自動化される課題を実行するように構成することができ、また、他の相互に影響する課題を実行するように構成することができ、またはたとえばクランプ、照明、リレーなどの他の統合されるシステム部品を制御するように構成することができる。可能な一実施形態によれば、ロボット11は、独立して、および相互依存して移動することができる複数のアクチュエータ駆動のロボットジョイントを備えることができ、これらのいくつかは、重なる運動の範囲を備える。ロボットジョイントは、肩ジョイントを含むことができ、この位置は、図1において矢印13で全体が示されている。また、肘ジョイント矢印15、手首ジョイント矢印17、首ジョイント矢印19、および腰ジョイント矢印21、および、各ロボットフィンガー14の間に位置決めされる様々なフィンガージョイント矢印23を含むことができる。0021図1を参照すると、各ロボットジョイントは1以上のDOFを備えることができる。たとえば、肩ジョイント矢印13および肘ジョイント矢印15のようなある柔軟なジョイントは、ピッチおよびロールの形態で少なくとも2DOFを備えることができる。同様に、首ジョイント矢印19は少なくとも3DOFを備えることができ、腰ジョイント矢印21および手首ジョイント矢印17は、1以上のDOFを備えることができる。課題の複雑さに応じて、ロボット11は、42以上のDOFで運動することができる。各ロボットジョイントは、1つ以上のアクチュエータを備えまたこれにより駆動され、アクチュエータは、たとえば、ジョイントモーター、線形アクチュエータ、回転アクチュエータなどである。0022ロボット11は、ヘッド16、トルソ18、ウェスト20、アーム22、ハンド24、フィンガ14、および対向する親指26のような人間のような要素を含むことができ、上述の様々なジョイントは、これらの要素内またはこれらの要素の間に配置される。人間のように、アーム22および他の要素は、ある範囲で重なる運動領域を備えることができる。ロボット11は、ロボットの具体的用途または意図する使用に応じて、脚部、トレッド、または他の移動可能なまたは固定のベースのような課題に好適な固定部またはベース図示せずを含むことができる。動力供給部28は、ロボット11に一体的に取り付けることができ、たとえば、トルソ18の背面に保持または装着される充電可能なバッテリパック、または他の好適なエネルギー供給部とすることができ、あるいは、ロボットの運動のために様々なジョイントに十分な電気的エネルギーを提供するために、テザリングを通して遠隔的に取り付けることができるものとしてもよい。0023コントローラ12は、ロボット11の正確な運動制御を提供し、物体30の操作に必要な精細なおよび大雑把な運動の制御を含み、物体30は、たとえば、1つ以上のハンド24のフィンガ14および親指26により把持することができる作業工具である。コントローラ12は、各ロボットジョイントおよび他の統合されたシステム部品を、他のジョイントおよびシステム部品から離れて、独立に制御することができ、また、比較的複雑な作業課題を実行するのに複数のジョイントの動作を完全に調整するために、多数のジョイントを相互依存するように制御することもできる。0024ロボットシステム10は、少なくとも1つの追加的な類似に構成された図1に破線で示されるロボット111を含むことができ、これは、ロボット11と同一の作業空間内で動作する。ロボット11、111は、図1に示されるように、物体30を協働して把持しまた移動させるような課題を実行するのに必要とされることがある。ロボット11、111のあるジョイントは、互いにある範囲で重なる運動領域を備えることができ、また、同一のロボットの他のジョイントの運動範囲を重なる運動領域を備えることもできる。それゆえ、ロボットシステム10内で使用される各ロボットは、同期して、また調整された方法で複数の動作を実行することができなくてはならない。この機能は、アルゴリズム100およびランタイムエンジン42の構成により提供され、これらは以下で図2とともに説明される。0025コントローラ12は、1つ以上のディジタルコンピュータまたはデータ処理装置を備えるサーバまたはホストマシンとして実施化することができ、それぞれは、1つ以上のマイクロプロセッサまたは中央処理装置CPU、読み取り専用メモリROM、ランダムアクセスメモリRAM、電気的に消去可能なプログラム可能な読み取り専用メモリEEPROM、高速クロック、アナログ-ディジタルA/D回路、ディジタル-アナログD/A回路、任意の必要な入力/出力I/O回路および装置、信号調整機器およびバッファ機器などを含む。0026コントローラ12内にあるまたはコントローラにより容易にアクセス可能な個別の制御アルゴリズムは、ROMまたは他の好適なメモリ内に記憶することができ、また、それぞれの制御機能を提供するために自動的に実行される。視覚的なプログラムエディタ80または他の好適なユーザーインターフェースをコントローラ12のプログラム言語にアクセスするために使用することができ、また、以下に説明されるよう、調整された非同期課題完了のためにシーケンスを分岐させるように構成するために使用することができる。0027ロボットシステム10は、コントローラ12を介してロボット11および/またはロボット111と通信するデータベースシステム40を含むことができる。データベースシステム40は、プログラム言語、共有イベント情報、課題実行に必要な様々な通信プロトコル、および課題の必要な完了条件のために、十分なレベルのデータ容量を提供する単一の大きなデータベースまたは分散型データベースとして実施することができる。データベースシステム40は、ランタイムエンジン42と通信し、これは、ジョイントが協働作業課題の実行のために指定され且つ駆動されたときに、ロボットシステム10内の様々なロボットジョイントの非同期運動を調整するために、非同期実行管理asynchronousexecutionmanagement、AEMモジュール60を使用する。0028図2を参照すると、図1のコントローラ12は、ランタイムエンジン42のAEMモジュール60を使用し、ロボットシステム10の様々なジョイントを任意に課題に特化したサブシステムにグループ化する。たとえば、ロボット11が右に向き、物体30を見下し、両ハンド24で物体を把持する場合に、ネックジョイント19および両アーム22のジョイントは、特定の操作のために駆動することができる。これらの課題に特化したサブシステムは、今度は、AEMモジュールを介して較正されたシーケンス構造に結び付けられ、これは、任意の駆動ジョイントの運動を自動的に調整し、複雑な課題なまたは協働作業課題の完了を可能にする。ランタイムエンジン42は、より大きなロボット課題シーケンスの内部にある共存する実行パスのためのソフトウェア機構を提供するために構成することができる。0029図2は、独立したサブ課題51の単純化したシリーズの例を提供し、複数の課題実行分岐部52、53、54を備える。分岐部52は実行中であることを示し、この状態は影なしとして図2に示されている。同様に分岐部53、54は影付きで示され、将来において、いくつかのポイントで実行されることを示している。各分岐は、複数の独立したサブ課題を備えることができ、たとえば、複数の独立するサブ課題61、62、63、64を備える分岐部52が示されている。各サブ課題は、協働的に実行することができ、すなわち、同一のロボットの異なるジョイントにより実行され、および/またはロボットシステム10内の複数の異なるロボットのジョイントにより実行される。0030また、AEMモジュール60は、スケジューリングモジュール70を備えることができ、これは、複数の独立するサブ課題61、62、63、64がそれぞれ独立して完了されることを可能にし、一方、同時に、たとえば図1に示されるデータベースシステム40を介してアクセスされるデータおよびイベントなどのシステムデータおよび共有イベントを通じて課題を同期させる。ランタイムエンジン42による使用のための分岐機構は、コントローラ12のプログラム言語にシームレスに統合され図1参照、また、視覚的なプログラムエディタ80を通じてユーザーが設定可能である。0031マルチタスク実行分岐部は、ランタイムエンジン42内のAEMモジュール60により制御することができる。一実施形態におけるスケジューリングモジュール70は、たとえばラウンドロビンスケジューリングスキームroundrobinschedulingschemeを用いることで、様々な課題の共有される実行時間を強制することができる。各課題実行分岐部は、自身の状態およびフィードバックを維持し、またそれゆえ、コントローラ12により独立した実行が可能である。さらに、各課題分岐部は、ランタイムエンジン42を使用するコントローラ12により、他の分岐部の実行に干渉することなく一時停止および再開することができる。各分岐部は、データベースシステム40へのアクセス、必要なプログラミングおよび共有されるイベント情報へのアクセスを維持し、また、他の分岐部およびロボットハードウェアからのデータおよびイベントに自由に相互作用できる。0032図3を参照すると、アルゴリズム100は、図1に示されるロボットシステムの様々なジョイントの非同期の制御を提供するために、図1のコントローラ12により実行される。アルゴリズム100はステップ102で開始し、ここで、与えられた協働課題のための必要な制御ノードがコントローラ12内に設定される。たとえば、ノードは、視覚的なプログラミングエディタ80を介してユーザーにより選択することができ、たとえば、視覚的なプログラムエディタ80を介してユーザーがノードを選択することができ、たとえば、割り当てられた課題の達成に用いられる与えられた作業道具のために影響を受けるノードのタッチスクリーン入力により選択できる。説明のための明瞭さのために、比較的単純な作業課題が本明細書では説明され、これは、命令のシーケンスの実行を必要とし、または、物体30を把持するために図1のロボット11の両アーム22を移動させるのに好適なサブプログラムを必要とする。0033ノードが設定された後、ステップ104は、サブ課題、たとえば1つのアーム22の移動の実行を開始する。ステップ104により開始されるサブ課題は、自身の課題シーケンスを通じて独立に進行し、アルゴリズム100はステップ106に進む。ステップ106は、図1のロボット11の他のアーム22の移動、または、同一または他のロボットの他の要素の移動のような他のサブ課題の実行を開始する。ステップ104と同様に、ステップ106は、任意の数の課題ステップを備えることができ、これらはステップ106で制御されるアーム22により独立に実行されなければならない。課題実行分岐部は、ステップ104とステップ106との間に存在する。0034ステップ108において、コントローラ12は、ランタイムエンジン42を使用し、ステップ104およびステップ106のサブ課題が完了したかどうかを決定する。完了していなければ、ステップ104および/またはステップ106は、ステップ104、106の両方が完了するまで繰り返される。アルゴリズム100は、両方のサブ課題が完了したとき終了する。各サブ課題100は、複数のサブ課題などを備えることができ、簡潔さのために1つのサブ課題が説明される。0035説明の明瞭さのために、1つの課題実行分岐部だけが図3に関して説明される。しかし、図1のランタイムエンジン42は、与えられた協働課題または課題のシーケンスを完了するのに必要な多くの分岐部を割り当て、また調整することができる。すなわち、図1のロボット11、111は、人間のように、複数の同時発生の課題を非同期に実行するように設計される。ランタイムエンジン42は、複数の同時発生的な課題の実行を管理することにより、コントローラ12に関連してまたはその一部として、この制御要求を管理する。ランタイムエンジン42は、任意のポイントにおいて分岐される課題実行のための機構を提供し、たとえば、図3の単純化した実施形態においてステップ104を開始した後に較正された間隔でステップ106を開始し、任意の数のコンピュータ使用のノードに割り当てられる独立の実行パスを形成する。0036また、図1のランタイムエンジン42は、分離された分岐部が、共有される実行パスに沿って継続する前に、たとえば図3のステップ108において、なめらかに再統合されることを可能にする。同一または異なるロボット11および/または111の制御ノードは、1つ以上のアーム22またはヘッド16のようなサブシステムを形成するためにグループ化されることができ、これは、互いに対して独立に命令、制御することができる。さらに、上述の方法によるランタイムエンジン42の使用は、様々な分岐部の間のリソースの衝突解決のための手段を提供する。換言すれば、ロボット11のヘッドサブシステムは、ロボット111の右アームサブシステムとペアにすることができ、この機能はコントローラ12のプログラム言語において実装され、また、図1の視覚的なプログラムエディタ80または、他の好適なユーザーインターフェースを使用してユーザーが容易にアクセス可能である。0037本発明を実行する最良の形態が詳細に説明されたが、本発明の技術分野に精通している当業者は、添付の特許請求の範囲において本発明を実施するための様々な代替設計および実施形態を認識するであろう。