(57)【要約】ロボットは、基本タスクと、いくつかの実施形態では、物体および／または物体と関連付けられた場所とを表すデータ構造と併せて、物体および／または環境に関するセンサ入力に基づいて、物体を操作してもよい。データ構造は、ヒト訓練者による訓練の間、それぞれのプロトタイプをインスタンス化することによって作成されてもよい。一実施形態において、インスタンスは、付属肢の一般的な、空間的に規定されていない動きの観点から、タスクを定義する。
2015520040.tif 000002
【特許請求の範囲】
【請求項１】
物体を操作するように、ヒト訓練者との相互作用を介して訓練可能なロボットであって、前記ロボットは、
物体を操作するための少なくとも１つの付属肢と、
前記少なくとも１つの付属肢を動作させるためのコントローラと、
プロトタイプのライブラリを記憶するためのコンピュータメモリであって、前記プロトタイプのうちの少なくとも１つは、前記付属肢によって行われるタスクのタイプを定義し、前記タスクは、前記付属肢の移動または前記物体の操作のうちの少なくとも１つを含む、コンピュータメモリと、
前記ヒト訓練者から、前記タスクに関連する物理的入力を受信するための知覚システムと、
前記物理的入力に基づいて、少なくとも１つの属性を規定することによって、前記少なくとも１つのプロトタイプのインスタンスを作成するための訓練モジュールと、
前記コントローラへのコマンドを介して、前記プロトタイプのインスタンスを実行し、それによって、前記付属肢に前記タスクを行わせるためのタスク実行モジュールと
を備える、ロボット。
【請求項２】
前記インスタンスは、前記付属肢の一般的な、空間的に規定されていない動きの観点から、前記タスクを定義する、請求項１に記載のロボット。
【請求項３】
前記インスタンスは、前記物体またはその環境のうちの少なくとも１つに対する前記付属肢の動きの観点から、前記タスクを定義する、請求項２に記載のロボット。
【請求項４】
前記動きは、空間軌道を規定せずに、定義される、請求項２に記載のロボット。
【請求項５】
前記物理的入力は、機械的入力または視覚的入力のうちの少なくとも１つを含む、請求項１に記載のロボット。
【請求項６】
タスク関連フィードバックを前記訓練者に提供するために、前記訓練モジュールに応答する少なくとも１つの出力デバイスをさらに備える、請求項１に記載のロボット。
【請求項７】
前記フィードバックは、ロボットステータスのインディケーション、さらなる入力の要求、またはエラーアラートのうちの少なくとも１つを含む、請求項６に記載のロボット。
【請求項８】
前記フィードバックは、ロボットカメラビュー上にオーバーレイされたグラフィックを含む、請求項６に記載のロボット。
【請求項９】
前記知覚システムは、押下可能ボタン、ノブ、タッチ感応パッド、タッチ感応カフ、またはカメラのうちの少なくとも１つを備える、請求項１に記載のロボット。
【請求項１０】
前記プロトタイプのライブラリは、物体クラス、機器のタイプ、または場所のうちの少なくとも１つを定義するプロトタイプをさらに含む、請求項１に記載のロボット。
【請求項１１】
前記訓練モジュールは、前記クラスの構成子に関する視覚的入力に基づいて、前記物体クラスのインスタンスを作成する、請求項１０に記載のロボット。
【請求項１２】
前記操作の対象となる物体は、前記インスタンスによって参照される物体のクラスの構成子である、請求項１０に記載のロボット。
【請求項１３】
前記知覚システムは、前記物体またはその環境に関する物理的情報を受信するようにさらに構成されている、請求項１に記載のロボット。
【請求項１４】
前記コントローラは、物理的入力に応答して、ゼロ重力補償モードで動作するように構成されている、請求項１に記載のロボット。
【請求項１５】
ヒト訓練者との相互作用に基づくロボット学習の方法であって、前記方法は、
前記訓練者から、ロボットによって行われるタスクに関する物理的入力を受信することと、
前記入力に応答して、かつ前記入力に少なくとも部分的に基づいて、記憶されたプロトタイプのライブラリから前記タスクと関連付けられたプロトタイプを選択し、前記プロトタイプのインスタンスを作成してデータベース内に記憶することであって、前記インスタンスは、物体に対して行われるロボット移動またはロボット操作のうちの少なくとも１つを規定する、ことと
を含む、方法。
【請求項１６】
前記物理的入力に基づいて、前記インスタンスの少なくとも１つの属性を規定することをさらに含む、請求項１５に記載の方法。
【請求項１７】
前記インスタンスは、一般的な、空間的に規定されていない観点から前記タスクを定義する、請求項１５に記載の方法。
【請求項１８】
前記物理的入力は、機械的入力または視覚的入力のうちの少なくとも１つを含む、請求項１５に記載の方法。
【請求項１９】
前記物理的入力を受信することは、前記訓練者または物体のうちの少なくとも１つとの物理的接触を感知することを含む、請求項１５に記載の方法。
【請求項２０】
前記物理的入力を受信することは、ロボット付属肢が前記訓練者によって移動される場合に前記付属肢の位置を追跡することを含む、請求項１５に記載の方法。
【請求項２１】
前記物理的入力を受信することは、前記訓練者、前記物体、または環境のうちの少なくとも１つの画像を取得することを含む、請求項１５に記載の方法。
【請求項２２】
フィードバックを前記訓練者に提供することをさらに含む、請求項１５に記載の方法。
【請求項２３】
前記フィードバックは、前記ロボットのステータスを示すこと、前記訓練者からの追加の入力を要求すること、または前記訓練者にエラーをアラートすることのうちの少なくとも１つを含む、請求項２２に記載の方法。
【請求項２４】
前記フィードバックを提供することは、ロボットカメラビュー上にグラフィックをオーバーレイすることを含む、請求項２２に記載の方法。
【請求項２５】
前記フィードバックは、触覚フィードバックを含む、請求項２２に記載の方法。
【請求項２６】
前記入力に応答して、かつ前記入力に少なくとも部分的に基づいて、物体クラスを定義するプロトタイプを選択し、前記物体の表現をメモリ内に作成するように、前記プロトタイプをインスタンス化することをさらに含む、請求項２２に記載の方法。
【請求項２７】
物理的知覚に基づいて、環境内の物体を操作するためのロボットであって、前記ロボットは、
物体を操作するための少なくとも１つの付属肢と、
前記少なくとも１つの付属肢を動作させるためのコントローラと、
前記物体または前記環境のうちの少なくとも１つに関する物理的情報を少なくとも１つのセンサから受信するための知覚システムと、
複数のインスタンスを含むインスタンスデータベースであって、前記複数のインスタンスのうちの少なくともいくつかが、前記付属肢によって前記物体に対して行われるタスクを規定する、インスタンスデータベースと、
前記受信された情報に基づいて、前記インスタンスのうちの少なくとも１つを選択し、前記コントローラへのコマンドを介して、前記少なくとも１つの選択されたインスタンスを実行するためのタスク実行モジュールと
を備える、ロボット。
【請求項２８】
前記インスタンスのうちの少なくとも１つは、一般的な、空間的に規定されていない観点から、前記タスクを定義する、請求項２７に記載のロボット。
【請求項２９】
前記インスタンスのうちの少なくとも１つは、前記環境または前記物体のうちの少なくとも１つに対する前記付属肢の動きの観点から、前記タスクを規定する、請求項２８に記載のロボット。
【請求項３０】
前記動きは、空間軌道を規定しない一般的な観点から、定義される、請求項２８に記載のロボット。
【請求項３１】
前記インスタンスデータベースは、物体クラスを定義するインスタンス、機器のタイプを定義するインスタンス、または場所を定義するインスタンスのうちの少なくとも１つをさらに含む、請求項２７に記載のロボット。
【請求項３２】
前記少なくとも１つのタスク定義インスタンスは、前記物体クラス、前記機器のタイプ、または前記場所を定義する前記インスタンスのうちの少なくとも１つを参照する、請求項３１に記載のロボット。
【請求項３３】
前記少なくとも１つのインスタンスは、物体クラスを参照し、前記タスク実行モジュールは、前記知覚システムによる前記物体クラスに属する物体の検出に応じて、前記ロボット付属肢に、前記検出された物体に対して前記タスクを行わせるように構成されている、請求項２７に記載のロボット。
【請求項３４】
前記知覚システムは、少なくとも１つのカメラを含む、請求項２７に記載のロボット。
【請求項３５】
前記知覚システムは、コンピュータビジョンシステムを含む、請求項３４に記載のロボット。
【請求項３６】
前記知覚システムは、押下可能ボタン、ノブ、タッチ感応パッド、またはタッチ感応カフのうちの少なくとも１つを含む、請求項２７に記載のロボット。
【請求項３７】
前記タスク実行モジュールは、前記物理的情報に基づいて、前記少なくとも１つの選択されたインスタンスの属性を規定するように構成されている、請求項２７に記載のロボット。
【請求項３８】
環境内で物体を操作する、ロボットにより実装される方法であって、前記方法は、
前記物体または前記環境のうちの少なくとも１つに関するセンサ入力を受信することと、
（ｉ）前記センサ入力と、（ｉｉ）前記ロボットによって前記物体に対して行われるタスクを規定する複数のインスタンスを含むインスタンスデータベースとに基づいて、前記インスタンスのうちの少なくとも１つを選択し、ロボット付属肢に、前記少なくとも１つの選択されたインスタンスに従って前記物体を操作させるように、前記少なくとも１つの選択されたインスタンスを実行することと
を含む、方法。
【請求項３９】
前記インスタンスデータベースは、複数の物体クラスのインスタンスをさらに含み、各物体クラスは、前記タスクのインスタンスのうちの少なくとも１つと関連付けられている、請求項３８に記載の方法。
【請求項４０】
前記入力に基づいて、前記物体が属する前記物体クラスを識別することをさらに含み、前記実行するステップは、前記物体クラスと関連付けられたタスクインスタンスに従って行われる、請求項３９に記載の方法。
【請求項４１】
前記センサ入力を受信することは、前記物体または前記環境のうちの少なくとも１つの画像を取得することを含む、請求項３８に記載の方法。
【請求項４２】
前記センサ入力を受信することは、前記環境内の物体との物理的接触を検出することを含む、請求項３８に記載の方法。
【請求項４３】
前記センサ入力に基づいて、前記少なくとも１つの選択されたインスタンスの属性を規定することをさらに含む、請求項３８に記載の方法。
【請求項４４】
前記少なくとも１つの選択されたインスタンスを実行することは、前記インスタンスと関連付けられた挙動をインスタンス化することを含む、請求項３８に記載の方法。
【請求項４５】
前記挙動は、複数のスレッドを含み、前記複数のスレッドは、それと関連付けられた一式の条件を有し、前記少なくとも１つの選択されたインスタンスを実行することは、前記条件の充足に関して前記スレッドを監視することを含む、請求項４４に記載の方法。
【請求項４６】
前記条件の充足は、スレッド間の遷移をトリガする、請求項４５に記載の方法。
【請求項４７】
前記タスクの実行は、前記ロボットと前記ロボット自体または前記環境内の物体との衝突を防止する少なくとも１つの挙動を作動させることを含む、請求項３８に記載の方法。
【請求項４８】
物理的知覚に基づいて、環境内の物体を操作するためのロボットであって、前記ロボットは、
物体を操作するための少なくとも１つの付属肢と、
前記少なくとも１つの付属肢を動作させるためのコントローラと、
前記物体および前記環境に関する物理的情報を少なくとも１つのセンサから受信するための知覚システムと、
複数のインスタンスを備えるインスタンスデータベースであって、前記複数のインスタンスのうちの少なくともいくつかが、前記付属肢によって前記物体に対して行われるタスクを規定し、各タスクは、物体および前記物体に対して行われるアクションを規定し、各タスクは、一般的な、空間的に規定されていない観点から、定義される、インスタンスデータベースと、
前記知覚システムに応答して、前記ロボットに、前記コントローラへのコマンドを介して前記タスクを実行させるためのタスク実行モジュールと
を備える、ロボット。
【請求項４９】
前記タスク実行モジュールは、オンザフライで、前記物理的情報に基づいて、前記ロボットと関連付けられた座標系内に前記タスクに対応する軌道を生成する、請求項４８に記載のロボット。
【請求項５０】
前記タスク実行モジュールは、継続的に前記物体を監視し、それに基づいて、軌道座標を計算することなく前記ロボットの付属肢を前記物体に向かって移動させる、請求項４８に記載のロボット。
【請求項５１】
前記タスク実行モジュールは、前記監視された物体に基づいて前記タスク実行モジュールによって決定される、前記移動と関連付けられた事前条件が充足される限り、前記物体に向かう前記ロボットの付属肢の移動を継続させる、請求項５０に記載のロボット。
【請求項５２】
前記事前条件は、前記付属肢と前記物体との間の物理的接触がないことを含む、請求項５１に記載のロボット。
【請求項５３】
前記知覚システムは、前記物体の画像を取得するための少なくとも１つのカメラを含む、請求項４８に記載のロボット。
【請求項５４】
前記知覚システムは、コンピュータビジョンシステムをさらに含む、請求項５３に記載のロボット。
【請求項５５】
前記知覚システムは、少なくとも１つのタッチ感応検出器を含む、請求項４８に記載のロボット。
【請求項５６】
環境内の物体を操作するための、ロボットにより実装される方法であって、前記方法は、
前記物体または前記環境のうちの少なくとも１つに関するセンサ入力を受信することと、
（ｉ）前記センサ入力と、（ｉｉ）一般的な、空間的に規定されていない観点から、前記ロボットによって前記物体に対して行われるタスクを規定する複数のインスタンスを含むインスタンスデータベースとに基づいて、ロボット付属肢に、前記タスクのインスタンスに従って前記物体を操作させるように、前記タスクのインスタンスのうちの少なくとも１つを実行することと
を含む、方法。
【請求項５７】
前記タスクのインスタンスを実行することは、オンザフライで、前記センサ入力に基づいて、前記ロボットと関連付けられた座標系内に前記タスクのインスタンスに対応する軌道を生成することを含む、請求項５６に記載の方法。
【請求項５８】
前記タスクのインスタンスを実行することは、前記物体を継続的に監視し、それに基づいて、軌道座標を計算することなく前記ロボット付属肢を前記物体に向かって移動させることを含む、請求項５６に記載の方法。
【請求項５９】
前記タスクのインスタンスを実行することは、前記タスクのインスタンスと関連付けられた事前条件が充足されるかどうかを決定し、充足される場合、前記物体に向かう移動を継続することを含む、請求項５８に記載の方法。
【請求項６０】
前記事前条件は、前記付属肢と前記物体との間の物理的接触がないことを含む、請求項５９に記載の方法。
【請求項６１】
前記センサ入力を受信することは、前記物体の画像を取得することを含む、請求項５６に記載の方法。
【請求項６２】
前記少なくとも１つのインスタンスを実行することは、前記インスタンスと関連付けられた挙動をインスタンス化することを含む、請求項５６に記載の方法。
【請求項６３】
前記挙動は、複数のプロセッサ実行可能なスレッドを含み、前記複数のプロセッサ実行可能なスレッドは、それと関連付けられた一式の条件を有し、前記少なくとも１つの選択されたインスタンスを実行することは、前記条件の充足に関して前記スレッドを監視することを含む、請求項６２に記載の方法。
【請求項６４】
前記条件の充足は、スレッド間の遷移をトリガする、請求項６３に記載の方法。
【請求項６５】
前記ロボットと前記ロボット自体または前記環境内の物体との衝突を防止する少なくとも１つの挙動を実行することをさらに含む、請求項５６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本発明は、米国特許出願第１３／６２１，６５７号、第１３／６２１，７０６号、第１３／６２１，７０８号、第１３／６２１，６５８号、第１３／６２１，６４８号、第１３／６２１，６８７号、第１３／６２１，５１７号、第１３／６２１，５１９号、および第１３／６２１，５６１号（すべて２０１２年９月１７日出願）、ならびに、米国仮特許出願第６１／６６２，６４６号（２０１２年）６月２１日出願）および第６１／６７６，５８６号（２０１２年７月２７日出願）に基づく優先権およびそれらの利益を主張し、それらの全体を参照によって本明細書中に組み込む。
【０００２】
（発明の分野）
本発明は、概して、ロボット動作および訓練に関する。より具体的には、種々の実施形態は、自律的態様でタスクの実施を容易にするための、産業用ロボットによるタスク関連情報の取得、編成、および使用に関する。
【背景技術】
【０００３】
（発明の背景）
産業用ロボットは、物理的物体の移動および操作を伴う、種々のタスクを行う。典型的な産業用ロボットは、例えば、ロボットが、特定の場所において物体を取り上げ、それらを目的場所に移送し、特定の座標に従ってそれらを置き、それによって、例えば、それらを積み重ね、または目的場所に存在する段ボールの箱に入れることを可能にする把持部を装備する１つ以上のアームを有してもよい。
【０００４】
既存の産業用ロボットのためのコントローラは、典型的には、ロボットアーム（単数または複数）の正確な位置および軌道を規定する言語でプログラムされる。プログラムされたタスクの実行中、ロボットアームは、正確に規定された軌道を辿って、正確に規定された新しい位置にその最遠位リンクと関連付けられた基準座標を移動させる。既存の産業用ロボットの成功は、制約された環境におけるロボットの動作によるものであり、ロボットの作業空間を構築するプロセスに通常関わる、ロボットをプログラミングする人物が、高い信頼度を伴って、常時、作業空間内に存在する物体およびそれが位置する場所を予測することを可能にする。その結果、特定の軌道を介して、ロボットアーム上の基準点を特定の座標に移動させ、次いで、ロボットの把持部を開閉する（または、吸引把持部を適用または解放する）ことは、ロボットの所望の特定のタスクを達成する実世界アクションにつながる。
【０００５】
６次元ベクトルは、最遠位リンクの向きとともに、３次元空間内の基準点を一意に規定するために使用されることができる。したがって、ロボットアーム自体が、６自由度またはそれよりも小さい自由度を有する場合、そのベクトルは、ロボットの全関節に対する設定を一意に決定する。ロボットアームが、６自由度よりも大きい自由度を有する場合、アームの所望の姿勢のさらなる仕様が、いかなる曖昧性も除去するために要求される。
【０００６】
産業用ロボットのための最近のプログラミングシステムは、プログラマが、成功度にばらつきがある６次元ベクトルに関わることを回避する入力層を有する。あるアプローチでは、軌道の終点が、アームを所望の姿勢および位置に物理的に移動させ、次いで、ロボットにその位置を記録させることによって設定される。アームを移動させるための種々の方法が、実際は、使用される。最も一般的方法は、ティーチング段階の間のみロボットコントローラに差し込まれる外部ティーチングペンダント、すなわち、ハンドヘルド制御端末を利用する。ペンダントは、通常、ＬＣＤ画面と、ジョイスティックまたは類似操向デバイスと、１つ以上のボタンと、時として、フルキーボードとを含み、集合的に、ユーザが、ロボットを制御および移動させることを可能にする。別の技法は、ロボットアームの最遠位リンクにロードセルを取り付け、ユーザに、ロードセルに印加される力に応答するモードにアームを切り替えさせることを伴う。本アプローチでは、ユーザは、ロボットを手で所望の位置に誘導し、ことによると、ティーチングペンダントを用いて調節し、次いで、コマンドを与えることにより、位置を記録する。コマンドは、例えば、ペンダント上のボタンまたは発話を介して、与えられてもよい。
【０００７】
使用される入力方法にかかわらず、従来の産業用ロボットは、ロボットに対する座標系内のベクトル化された移動に対してプログラムされる。いくつかのプログラミングシステムは、外部センサからの入力が外部位置を識別することを可能にするが、これらもまた、ロボットが、その基準点を所望の場所に移動させるために、ロボットの座標系に変換される。変換は、外部センサに対するロボットの場所および向きの知識に依拠する。産業用ロボットに対する典型的な位置精度要件は、サブミリメートル範囲内である。その結果、ロボットまたは外部センサのいずれかが移動させられる場合、世界内の物体に対してわずかな距離にすぎない場合であっても、ロボットは、その基準点を世界内の誤った場所に移動させ、したがって、そのタスクを失敗する。
【０００８】
さらに、既存のロボットは、外部センサ入力を使用することにより、例えば、操作される物体あるいは箱またはコンベヤベルト等の機器を検出し得るが、そのような入力は、単に、次のタスクのためのゲート信号として使用される。外部物体とのロボットの相互作用自体も、座標および軌道の観点から慎重にプログラムされなければならず、その世界がプログラマによって予期される通りに順序付けられる場合のみ、ロボットは、正常に、すなわち、衝突も誤配置もなく、そのタスクを実施する。例えば、ロボットに、例えば、３×４グリッドにおいて物体を段ボール箱に入れさせるために、プログラマは、物体が入れられる箱の中の場所に対応する１２セットの座標を規定する必要がある。さらに、ロボット自体も握持された物体も箱の側面に衝突しないことを確実にするために、プログラマは、１２カ所が充填される順序ならびに接近方向および軌道（中心に置かれる物体とは対照的に、箱の境界に対して置かれる物体の場合、異なる場合がある）を規定する必要がある。当然ながら、ロボットは、狭いサイズ範囲内に物体を詰めることのみが可能となる。物体が、プログラマが仮定したものより大きい、またはそれと異なる形状である場合、プロセスは、再び、ロボットのアクションが非常に制約されてしまうため、失敗する。
【０００９】
同様に、コンベヤベルトから物体を取り上げるようにロボットをプログラミングするとき、プログラマは、コンベヤベルトの制御された予測可能動作に依拠する。典型的には、コンベヤに取着されたブレークビームセンサ等の外部センサが、ロボットが、コンベヤ上の物体を検出することを可能にする。ビームが遮断されるといつも、コンベヤとともに移動する所望のタイプの物体が、遮断の原因であると仮定される。コンベヤの速さは、取り上げ場所に対する座標および遮断時から測定された時間遅延の形態でロボットプログラムに暗示的にコード化される。明示的速度ベクトルもまた含まれ、把持部がアクティブ化されると、ロボット把持部がコンベヤベルト上の物体と同一の速度で移動することを可能にしてもよい。コンベヤ位置および速度に関する仮定が正しい限り、これらの仕様は、ロボットが動いているコンベヤから所望の物体を取り上げることを保証し、そうでなければ、ロボットがタスクレベル知識を保有していないため、失敗する。
【００１０】
ロボット制御プログラムは、通常、エラー条件に対処する制御論理を含む。概して、ロボットの挙動を統制する、座標レベルの特定性により、エラーの場合の応答選択肢は、限定される。例えば、ロボットは、特定のプログラムされたタスクの根底にある必須仮定が犯され、または世界がその予期される状態から別様に逸脱すると、単に、動作を停止し、恐らく、エラーアラームを発し得る。
【００１１】
故に、その周囲に対してより柔軟に応答し、デフォルト仮定からのより大きな逸脱を許容し、好ましくは、直感的相互作用に基づく複合タスクの実行のために使用および構成され得るロボットの必要性がある。
【発明の概要】
【課題を解決するための手段】
【００１２】
（発明の概要）
本発明は、物理的物体の操作および移動を含む種々のタスクを行うことが可能なロボット、ならびにそのようなロボットをプログラミングおよび／または訓練する方法に関する。タスクの実行は、概して、ロボットのその環境の知覚に基づく。故に、種々の実施形態では、ロボットは、操作される物体ならびにそのタスクに付随する機械類または機器の特定の部品（例えば、コンベヤベルトまたは収納箱等）を検出、識別、および特定することを可能にする１つ以上のカメラまたは他のセンサを装備する。一般に、そのような物体の検出および識別は、それらと関連付けられた１つ以上のタスクの実施をトリガし、その後の視覚的入力または他の感覚入力の継続は、実行のモードおよび態様を通知する。例えば、特定の目的地に移動される物体が識別されると、ロボットは、任意の障害物を検出してそれらとの衝突を回避するように、ロボットのカメラのうちの１つに、ロボットの経路を監視するように命令してもよい。供給されたタスクまたは定義されたタスク、または訓練によって洗練されたタスクは、ロボット内に記憶されてもよい。
【００１３】
本発明の種々の側面および実施形態によると、ロボットは、概して（つまり、非排他的に）、通常の意味において、すなわち、ハードコードされた命令を用いて、プログラムされない。代わりに、ヒトとの直接相互作用を介して訓練されてもよい。ヒト訓練者は、例えば、ロボットおよび／またはその付属肢のいずれかを所望の場所に誘導し、物体に対して付属肢を調節すること、ボタンを押下することにより付属肢を開閉すること等によって、物体を操作する方法を示してもよい。そのような機械的入力は、画面と、例えば、キーボード、マウス、またはタッチパッド等の通常入力デバイスとを介したユーザ相互作用を用いて補われ、既に記憶されたタスクを規定または洗練してもよい。例えば、ロボットは、その視野に対応する画像を画面上に表示し、ユーザが、画面上でそれらを指すことによって（例えば、マウスまたはタッチ感応画面を使用して）、ロボットに物体を示すことを可能にする。操作される物体が識別されると、ロボットは、可能性として考えられる操作のリストを表示してもよく、そのリストはそれぞれ、事前に記憶されたタスクに対応し、そのリストから、ユーザは、所望の１つをクリックすることによって選択してもよい。加えて、ロボットの動きと関連付けられた最大速さ等のタスクと関連付けられた特定のパラメータが、例えば、キーボードを介してテキストフォーマット内に入力されてもよい。重要なこととして、多くの実施形態では、ロボットとその訓練者との間の相互作用は、訓練者からの特殊な技術的専門知識を殆どまたは全く要求しないように構築される。
【００１４】
ロボットの訓練の結果、種々のタスクを表すデータ構造が、ロボットの制御システムと関連付けられたメモリ内に作成および記憶されてもよい。一般に、これらの表現は、ロボット付属肢（単数または複数）の空間座標および軌道の観点から、タスクを定義するものではなく、または少なくとも完全に定義するものではなく、代わりに、環境内の物体に対する一般的な、空間的に規定されていない動きに対応する。したがって、特定のタスクの実行の間、そのときにロボットの周囲ならびにその中の物体および機器に関する情報を知覚すると、ロボットは、ロボットの周囲ならびにその中の物体および機器に関する情報を用いて、そのタスクの表現を補う。ロボットの環境をこのように考慮することによって、訓練段階において、環境に関する精密な仮定を行う必要性を排除し、本質的に、そのタスクを実施し、自動的にエラーに対処し、変化した状況を利用するためのさらなる柔軟性をロボットに提供する。さらに、個別の一式の状況によってトリガされる個々のタスクに訓練を集中させることは、訓練者が、より複雑なプロシージャを構成するタスクが典型的に実行される必要がある逐次的な順序にかかわらず、これらのタスクを任意の順序で教示することを可能にする。逆に言えば、ロボットは、その環境のその知覚に基づいて、タスクを選択または提案してもよい。例えば、特定のタイプの物体の検出は、ロボットに、その物体と関連付けられたタスクをレビューさせ、追加の知覚された物体に基づいて、これらの可能性をさらに絞り込ませてもよい。例えば、空のコンベヤベルトと組み合わせた箱物体の検出は、箱を取り上げ、コンベヤベルト上に移動させることを伴う、既に記憶されたタスクの試行的選択をトリガしてもよい。
【００１５】
種々の実施形態では、ロボット訓練およびそのタスクのロボットによる実施における本柔軟性は、２層データ構造によって促進される。第１の層は、基本タスクまたは複合タスク（複合タスクは、概して、「取り上げる」、「移動させる」、または「置く」等の基本タスクまたは初歩的タスクのひと続きである）、ならびに物体、場所、機器、および／またはタスクに関連する他の一般的なカテゴリのハードコードされたプロトタイプを含む。各プロトタイプは、それぞれのカテゴリまたはクラスの特定の構成子を完全に定義するために要求される情報を規定する。典型的には、プロトタイプは、クラスの種々の属性に対応して関連付けられたパラメータ値を有する「フィールド」または「スロット」のリストの形態をとる。第２の層は、概して、デフォルト仮定、訓練時のその環境のロボットの知覚、および訓練者からの直接入力の組み合わせに基づいて、フィールドの少なくともいくつかに書き込むことによって、訓練段階の間に作成されるプロトタイプのインスタンスを含む。本段階の間、空のままのスロットは、ロボットの知覚に基づいて、実行時に充填されてもよい。インスタンスは、典型的には、絶対座標の観点からはタスクも場所も定義せず、あるいは完全には定義しないが、環境内の物体およびそのパラメータを参照して、タスクまたは場所を定義する。いくつかのプロトタイプのインスタンスは、他のプロトタイプのインスタンスを参照してもよい。例えば、タスクのインスタンスは、操作される物体のクラスまたはその目的のために使用される機器のタイプを規定してもよく、物体クラスおよび／または機器自体は、クラス特有インスタンス内または機器特有インスタンス内に定義される。
【００１６】
一般的なプロトタイプおよびこれらのプロトタイプの特定のインスタンスにおけるタスクおよび他のカテゴリの２層表現は、ロボットが、一連の特定性に従って、ハードコードされた命令を介して制御される程度の調整を容易にし、いずれの欠けている細目も、訓練および／または実行の間に充填させる。さらに、基本タスクから多くの移動および操作を伴う複合タスクまで及ぶ複雑性の可変レベルでロボットタスクを定義することを可能にする。いくつかの用途の場合、例えば、ロボットが定着型である、環境の予測される状態が狭い範囲内にある、またはサブタスクを実行する特定の順序が要求される場合、複合タスクを直接ロボットにプログラミングし、訓練段階を最小限のカスタマイズに縮小することによって、制約が課され得る。他の用途の場合、インスタンス化されると、より複雑なタスクのための構築ブロックとしての役割を果たす、基本プロトタイプのより抽象的定義を要求する、訓練および／または実行段階における最大限の柔軟性が、望ましくあり得る。
【００１７】
故に、第１の側面では、本発明は、物体を操作するように、ヒト訓練者との相互作用を介して訓練可能なロボットを提供する。種々の実施形態では、ロボットは、物体を操作するための１つ以上の付属肢と、付属肢（単数または複数）を動作させるためのコントローラとを含む。これらの実施形態はさらに、プロトタイプのライブラリを記憶するためのコンピュータメモリであって、プロトタイプのうちの少なくとも１つが、付属肢によって物体に対して行われるタスクのタイプを定義する、コンピュータメモリと、ヒト訓練者からタスクに関連する物理的入力（例えば、機械的または視覚的入力）を受信するための知覚システムと、物理的入力に基づいて、少なくとも１つの属性を規定することによって、タスクプロトタイプのインスタンスを作成するための訓練モジュールと、コントローラへのコマンドを介して、インスタンスを実行し、それによって、付属肢にタスクを行わせるためのタスク実行モジュールとを含む。タスクは、概して、付属肢の移動および／または物体の操作を伴う。本明細書では、用語「操作」とは、ロボット（例えば、把持部または他のエンドエフェクタ）と物体との間の物理的接触を伴うロボット運動を指し、物体に対する任意の機械的動作、例えば、握持、移動、持ち上げ、衝打等を含意する。操作は、物体への構造変化を伴ってもよく、またはそうでなくてもよい。インスタンスは、付属肢の一般的な、空間的に規定されていない動きの観点から、例えば、空間軌道を規定せずに定義される動きの観点から、あるいは物体および／またはその環境に対する付属肢の動きの観点から、タスクを定義してもよい。
【００１８】
知覚システムは、１つ以上の押下可能ボタン、ノブ、タッチ感応パッド、タッチ感応カフ、および／またはカメラ（または、他の視覚的センサ）を含んでもよく、物体またはその環境に関する物理的情報を受信するように構成されてもよい。ロボットコントローラは、物理的入力（例えば、カフに触れること）に応答して、ゼロ重力補償モードで動作するように構成されてもよい。いくつかの実施形態では、ロボットはさらに、タスク関連フィードバックを訓練者に提供するために、ユーザインターフェースシステムに応答する１つ以上の出力デバイスを含む。そのようなフィードバックは、例えば、ロボットステータスのインディケーション、さらなる入力の要求、またはエラーアラートを含んでもよく、ロボットカメラビュー上にオーバーレイされるグラフィックの形態をとってもよい。プロトタイプのライブラリは、物体クラス、機器のタイプ、または場所を定義するプロトタイプを含んでもよい。いくつかの実施形態では、訓練モジュールは、クラスの構成子に関する視覚的入力に基づいて、物体クラスのインスタンスを作成する。操作の対象となる物体は、インスタンスによって参照される物体のクラスの構成子であってもよい。
【００１９】
別の側面では、本発明は、ヒト訓練者との相互作用に基づくロボット学習の方法を対象とする。種々の実施形態では、本方法は、訓練者から、ロボットによって行われるタスクに関する物理的入力を受信することと、入力に応答して、かつ入力に少なくとも部分的に基づいて、記憶されたプロトタイプのライブラリからタスクと関連付けられたプロトタイプを選択することとを伴う。プロトタイプのインスタンスは、作成され、データベース内に記憶される。インスタンスは、物体に対して行われるロボット移動またはロボット操作を規定し、一般的な、空間的に規定されていない観点から、タスクを定義してもよい。本方法は、物理的入力に基づいて、インスタンスの１つ以上の属性を規定することをさらに含んでもよい。
【００２０】
物理的入力は、機械的入力および／または視覚的入力であってもよく、または機械的入力および／または視覚的入力を含んでもよい。例えば、いくつかの実施形態では、物理的入力を受信することは、訓練者および／または物体との物理的接触を感知すること、訓練者、物体、または環境の１つ以上の画像を取得すること、および／または付属肢が訓練者によって移動される場合にロボット付属肢の位置を追跡することを伴う。入力に応答して、かつ入力に少なくとも部分的に基づいて、物体クラスを定義するプロトタイプは、物体の表現をメモリ内に作成するように、選択されてインスタンス化されてもよい。本方法は、例えば、ロボットのステータスを示すこと、訓練者からの追加の入力を要求すること、および／または訓練者にエラーをアラートすることによって、フィードバックを訓練者に提供することをさらに含んでもよい。フィードバックは、ロボットカメラビュー上にオーバーレイされるグラフィックの形態または触覚フィードバックの形態で提供されてもよい。
【００２１】
第３の側面では、物理的知覚に基づいて、環境内の物体を操作するためのロボットが、提供される。種々の実施形態では、ロボットは、物体を操作するための１つ以上の付属肢と、付属肢（単数または複数）を動作させるためのコントローラと、１つ以上のセンサから物体および／または環境に関する物理的情報を受信するための知覚システムと、複数のインスタンスを含むインスタンスデータベースであって、複数のインスタンスのうちの少なくともいくつかが、付属肢によって物体に対して行われるタスクを規定する、インスタンスデータベースと、受信された情報に基づいて、インスタンスのうちの１つ以上を選択するためのタスク実行モジュールとを含む。必要に応じて、選択されたインスタンスの属性が、物理的情報に基づいて、規定されてもよい。タスク実行モジュールは、コントローラへのコマンドを介して、選択されたインスタンス（単数または複数）を実行する。再び、インスタンスは、の一般的な、空間的に規定されていない観点から（例えば、環境または物体に対する付属肢の動きの観点から）、および／または空間軌道を規定せずに、タスクを定義してもよい。
【００２２】
インスタンスデータベースはさらに、１つ以上の物体クラス、機器のタイプ、または場所を定義する１つ以上のインスタンスを含んでもよい。タスク定義インスタンスは、他のインスタンス（すなわち、物体クラス、機器、または場所インスタンス）のいずれかを参照してもよい。一実施形態では、タスク定義インスタンスは、物体クラスを参照し、タスク実行モジュールは、知覚システムによる物体クラスに属する物体の検出に応じて、ロボット付属肢に、検出された物体に対してタスクを行わせるように構成される。知覚システムは、例えば、コンピュータビジョンシステムと併せて、１つ以上のカメラを含んでもよい。さらに、知覚システムは、１つ以上の押下可能ボタン、ノブ、タッチ感応パッド、またはタッチ感応カフ等の機械的入力デバイスを含んでもよい。
【００２３】
さらなる側面では、環境内で物体を操作する、ロボットにより実装される方法が、提供される。本方法は、物体および／または環境に関するセンサ入力を受信すること（例えば、物体および／または環境の１つ以上の画像を取得すること、または環境内の物体との物理的接触を検出すること）と、センサ入力、および、ロボットによって物体に対して行われるタスクを規定するインスタンスのデータベースに基づいて、インスタンスのうちの少なくとも１つを選択することと、必要に応じて、選択されたインスタンス（単数または複数）の１つ以上の属性を規定し、ロボット付属肢に、選択されたインスタンス（単数または複数）に従って物体を操作させるように、選択されたインスタンス（単数または複数）を実行することとを伴う。インスタンス（単数または複数）を実行することは、インスタンスと関連付けられた挙動をインスタンス化することを伴ってもよい。挙動は、複数のスレッドを含んでもよく、複数のインスタンスは、それと関連付けられた一式の条件を有し、インスタンスを実行することは、スレッド間の遷移をトリガし得る条件の充足に関してスレッドを監視することを伴ってもよい。タスク実行はまた、ロボットとロボット自体または環境内の物体との衝突を防止する１つ以上の挙動を作動させることを伴ってもよい。インスタンスデータベースは、タスク定義インスタンスに加え、種々の物体クラスのインスタンスを含んでもよく、各物体クラスは、タスクインスタンスのうちの少なくとも１つと関連付けられる。入力に基づいて、物体が属する物体クラスが、識別されてもよく、実行するステップが、次いで、物体クラスと関連付けられたタスクインスタンスに従って行われてもよい。
【００２４】
さらに別の側面では、本発明は、物理的知覚に基づいて、環境内の物体を操作するためのロボットに関する。種々の実施形態では、ロボットは、物体を操作するための１つ以上の付属肢と、付属肢（単数または複数）を動作させるためのコントローラと、少なくとも１つのセンサ（例えば、カメラおよびコンピュータビジョンシステムおよび／または１つ以上のタッチ感応検出器）から物体および環境に関する物理的情報を受信するための知覚システムと、複数のインスタンスを有するインスタンスデータベースであって、複数のインスタンスのうちの少なくともいくつかが、付属肢によって物体に対して行われるタスクを規定し、各タスクが、物体および物体に対して行われるアクションを規定し、一般的な、空間的に規定されていない観点から定義される、インスタンスデータベースと、知覚システムに応答して、コントローラへのコマンドを介してタスクを実行するためのタスク実行モジュールとを含む。
【００２５】
いくつかの実施形態では、タスク実行モジュールは、オンザフライで、物理的情報に基づいて、ロボットと関連付けられた座標系内にタスクに対応する軌道を生成する。他の実施形態では、タスク実行モジュールは、継続的に物体を監視し、それに基づいて、軌道座標を計算することなくロボット付属肢を物体に向かって移動させる。物体に向かう移動は、監視された物体に基づいてタスク実行モジュールによって決定される、移動と関連付けられた事前条件が充足される限り、継続してもよい。事前条件は、例えば、付属肢と物体との間の物理的接触がないことであってもよく、またはそれを含んでもよい。
【００２６】
別の側面では、環境内の物体を操作するための方法は、物体および／または環境に関するセンサ入力を受信すること（例えば、物体の画像を取得することによる）を含む。種々の実施形態では、（ｉ）センサ入力と、（ｉｉ）（ロボットによって物体に対して行われる）タスクを規定する複数のインスタンスを含むインスタンスデータベースとに基づいて、一般的な、空間的に規定されていない観点から、タスクインスタンスのうちの少なくとも１つが、ロボット付属肢に、タスクインスタンスに従って物体を操作させるように実行される。タスクインスタンスを実行することは、ロボットと関連付けられた座標系内のオンザフライ軌道を生成することを伴ってもよい。代替として、継続的に物体を監視することと、それに基づいて、軌道座標を計算することなくロボット付属肢を物体に向かって移動させることとを伴ってもよい。例えば、タスク実行は、タスクと関連付けられた事前条件（例えば、付属肢と物体との間の物理的接触がないこと）が充足されるかどうか決定し、充足される場合、物体に向かう移動を継続することを含んでもよい。
【００２７】
いくつかの実施形態では、タスクインスタンスを実行することは、インスタンスと関連付けられた挙動をインスタンス化することを含む。挙動は、関連付けられた一式の条件を伴う複数のスレッドを含んでもよい。スレッドは、スレッド間の遷移をトリガし得る条件の充足に関して監視されてもよい。本方法はさらに、ロボットとロボット自体または環境内の物体との衝突を防止する挙動を作動させることを伴ってもよい。
【図面の簡単な説明】
【００２８】
前述は、特に、図面と関連して検討されるとき、以下の発明の詳細な説明からより容易に理解される。
【図１】図１は、種々の実施形態による、システムを図示するブロック図である。
【図２Ａ】図２Ａおよび図２Ｂは、種々の実施形態による、ロボットの斜視図である。
【図２Ｂ】図２Ａおよび図２Ｂは、種々の実施形態による、ロボットの斜視図である。
【図２Ｃ】図２Ｃは、種々の実施形態による、ロボットの計算および制御機能性の実装を図示するブロック図である。
【図３】図３は、種々の実施形態による、プロトタイプライブラリを図式的に図示する。
【図４】図４は、種々の実施形態による、プロトタイプに対応するデータ構造を描写する。
【図５】図５は、種々の実施形態による、プロトタイプとインスタンスとの間の関係を図示する。
【図６】図６は、種々の実施形態による、訓練およびタスク実行方法を図示するフローチャートである。
【図７】図７は、種々の実施形態による、データ構造のインスタンスとロボット挙動との間の関係を図式的に図示する。
【発明を実施するための形態】
【００２９】
（詳細な説明）
１．システム概要
図１は、本明細書の種々の実施形態による、ロボットを訓練および動作させるための例示的制御システム１００のアーキテクチャを図示する。本システムは、ハードウェアおよび／またはソフトウェア内に実装されるいくつかの機能的構成要素（角の尖ったボックスとして描写される）と、いくつかのデータ構造（角の丸いボックスとし描写される）とを含む。機能的構成要素は、概して、並列に動作し、相互およびデータ構造と通信する（但し、自己動作モジュールとして描写される、ソフトウェア内に実装される種々の機能的構成要素は、最終的には、プロセッサによって実行される）。図１は、矢印を用いて通信経路を示す。破線矢印は矢印の方向に流動する情報を示し、両方向破線矢印は、双方向情報流を示し、実線矢印は、制御コマンドが矢印の方向にパスされることを示す。
【００３０】
ロボットがその環境に作用することを可能にするために、システム１００は、知覚システム（または、サブシステム）１０２を含み、それは、典型的には、環境の画像を取得するための１つ以上のカメラと、画像を処理および解釈するために好適にプログラムされた計算機器（例えば、ソフトウェアモジュール（その命令が汎用プロセッサによって実行される））とを含む。カメラは、典型的には、可視スペクトルにおいて動作するが、いくつかの実施形態は、代替として、または加えて、赤外線カメラまたは電磁スペクトル内の他の周波数範囲を検出するカメラを利用してもよい。いくつかの実施形態では、１つ以上のステレオカメラ、またはより一般的には、奥行感知カメラシステム（例えば、ＫＩＮＥＣＴカメラ）が、使用されてもよい。集合的に、カメラ（または、他の光学センサ）および画像−処理機器は、コンピュータビジョンシステムを形成する。知覚システム１０２はまた、当技術分野において周知のような、例えば、温度センサ、圧力センサ、湿度センサ、タッチパッド、触覚センサ、位置および向きセンサ（例えば、ＧＰＳまたはジャイロ磁気センサ）、速度センサおよび／または加速度計、電気センサ、および／または磁気センサ等の付加的センサを含んでもよい。さらに、システム１００自体に統合されたセンサに加え、システム１００は、外部および第三者センサならびにセンサシステムから信号を受信するためのインターフェース１０４を含んでもよい。本インターフェース１０４は、ロボットが配備される環境内で利用可能な能力でロボットの内部感知能力を補うことを容易にする。
【００３１】
システム１００はさらに、ロボット位置、運動学、力学、および力を監視および変更する、ロボットコントローラ１０６と、ロボットコントローラ１０６と通信し、そこからコマンドを受け取る１つ以上の関節レベルコントローラ１０８とを含み、関節レベルコントローラ１０８は、ロボットコントローラ１０６によって命令される通りに、ロボットおよび／またはその可動部品（概して、付属肢（単数または複数）およびエンドエフェクタ（単数または複数）を含み、さらに、例えば、カメラ（単数または複数）または他のセンサも含み得る）を移動させるために、個々のモータおよびアクチュエータを駆動させる。ロボットコントローラ１０６は、知覚システム１０２と情報を交換してもよい。例えば、コントローラ１０６がロボット付属肢またはエンドエフェクタを移動させると、付属肢に統合されたカメラは、動きを監視することにより、フィードバックをコントローラ１０６に提供してもよい。逆に言えば、コントローラ１０６によって知覚システム１０２に提供される情報は、視覚的タスクの実行を補助し得る。ロボットカメラが、例えば、物体を追跡するタスクが課される場合、予期された物体場所に対するカメラの場所に関するコントローラ１０６からの情報は、カメラが画像内の物体の概算サイズを予測することを可能にし、カメラが物体を検索する必要があるその視野内の領域のサイズを限定することを可能にしてもよい。継続的に情報を交換することによって、コントローラ１０６および知覚システム１０２は、例えば、コンベヤベルトから物体を取り上げるために、視覚的および機械的の両方で物体を追跡する際、相互に補助し得る。
【００３２】
システム１００の中心には、ロボットが有用作業を行うようにロボットの挙動を管理するタスク実行モジュール１１０と、ユーザがロボットを訓練することを可能にし、また、ロボットの通常動作の間、ロボットの意図および状態に関する合図を人々に提供する訓練モジュール１１２とがある。ロボットとユーザとの間の相互作用は、概して、知覚システム１０２の構成要素を介して、および／または、例えば、キーボード、マウス、またはタッチスクリーン等の従来のユーザインターフェースデバイスを介して、生じる。故に、タスク実行モジュール１１０および訓練モジュール１１２は、知覚システム１０２から情報を受信し、知覚システム１０２に制御コマンドを送信するように構成される。さらに、モジュール１１０、１１２は両方とも、ロボットコントローラ１０６と情報を交換し、ロボットコントローラ１０６にコマンドを提供し、コントローラによるサブタスクの実施を命令する。タスク実行モジュール１１０および訓練モジュール１１２は、概して、相互または任意の他の構成要素から制御コマンドを受信しない。むしろ、それらは、システム１００全体のための制御源である。例えば、知覚システム１０２から受信された情報（例えば、新しい物体の検出）に応答して、訓練モジュール１１２またはタスク実行モジュール１１０は、コントローラ１０６へのコマンドを介して、新しいアクションまたは基本タスクを開始してもよい。対照的に、基本タスクの実行の間、コントローラ１０６は、最初に、モジュール１１０、１１２の一方を通して情報をパスする必要なく、直接、知覚システム１０２によって誘導されてもよい。
【００３３】
タスク実行モジュール１１０および訓練モジュール１１２は、一式の共有表現によってともに結び付けられ、一式の共有表現を通して相互作用する。２つのモジュールを定義する命令は、これらの共有表現のユーザ操作を可能にし、これは、タスク、物体、および／または場所（ならびに、可能性として、他のカテゴリ）のプロトタイプをインスタンス化し、インスタンスのデータベース１１４をもたらすことによって、ロボット訓練の間に作成される。プロトタイプ自体は、典型的には、プロトタイプライブラリ１１６内に編成される。いくつかの実施形態では、タスク実行モジュール１１０および訓練モジュール１１２は、訓練およびタスク実行機能性の両方を提供する１つのモジュールに統合される。これは、両モジュールによって使用される機能の重複を回避する。
【００３４】
システム１００はまた、タスク実行モジュール１１０および訓練モジュール１１２が、人物と適切に相互作用すること（例えば、特定の人物が権限ユーザであるかどうか識別し、任意の人物がロボットの動作ゾーンに進入すると、移動に関して安全上の制約を課すことを含んでもよい）を確実にすることに関連するデータを含む１つ以上のユーザモデル１１８を含んでもよい。ユーザモデルは、知覚システムからのデータ（例えば、ユーザの顔のカメラ画像）によって通知されてもよく、タスク実行モジュール１１０および訓練モジュール１１２と情報を双方向に交換する。全てのこれらのデータ構造、すなわち、プロトタイプライブラリ、インスタンスデータベース、およびユーザモデル（単数または複数）は、概して、メモリ内に（例えば、大容量記憶装置内に恒久的に、かつロボット動作の間、メモリパーティション内に）記憶され、システム１００によって維持される。
【００３５】
２．ロボット設計
図２は、一実施形態による、ロボット２００を示す。ロボット２００は、２つのアーム２０２を有し、それぞれ、好適な（かつ従来の）回転関節２０４によって提供される７自由度を有する。各関節２０４は、望ましくは、直列弾性アクチュエータを採用し、ロボットがそこに印加される外部力（例えば、予期しない衝突から生じる力等）を感知することを可能にする。各アームの端部に装着されるのは、ロボットが、物体を握持すること、持ち上げること、および移動させることを可能にする、並列顎把持部２０６である。ロボット２００はまた、ユーザにロボットの状態を通知する役割を果たす画面２０８およびステータスライトを伴うヘッドを有する。ヘッドおよび画面２０８は、垂直軸を中心として回転することができ、画面２０８に平行に走る水平軸を中心として頷くことができる。
【００３６】
さらに、ロボット２００は、５つのカメラを含む。ロボット２００は、ロボット２００が取り上げようとしている物体を「見て」、その把持部２０６を適宜調節することができるように、その２つの手首のそれぞれに１つのカメラ２０９を有する。さらに、その胸部に並んだ２つのカメラ２１０を有し、作業空間の広角視野を提供し、ロボット２００が、操作される機器または物体を視覚的に検出することを可能にする。最後に、ロボット２００は、画面２０８の上方に、環境内の人々を検出するために外向きに向けられたカメラ２１１を有する。ロボット２００はまた、各手首にレンジセンサと、そのヘッドにソナーセンサのリングとを含んでもよく、それらは、環境内を移動する物体を検出するために使用される。２０１２年４月２６日に出願され、参照することによって本明細書に組み込まれる、同時係属中の出願第１３／４５６，９１５号を参照されたい。
【００３７】
視覚的かつ／または聴覚的に物体を検出するためのこれらのセンサに加え、ロボット２００は、人（例えば、訓練者）との機械的相互作用を促進するいくつかのタッチ感応センサおよび機械的特徴をそのアーム２０２および本体上に含んでもよい。例えば、各手首に、ロボットは、タッチされる度に、ロボットアームを「ゼロ重力補償」モードに切り替えるカフ２１２を有し、ゼロ重力補償モードは、ユーザが、訓練目的のために、場所から場所にアームを容易に移動させることを可能にする。本モードでは、ロボットコントローラ１０６は、アームが最低可能構成まで落下しない（代わりに、宇宙内に存在するかのうようにアクションする）ように重力を補償しながら、各関節に低摩擦軸受を伴う一式のリンクのようにアクションするようにロボットアームを動作させる。重力補償を達成するために、コントローラ１０６は、ロボットの質量分布の詳細モデルに基づいて、ロボットの瞬時運動学的構成を考慮し、トルクを各関節に印加し、重力に対抗する。アームは、手首カフ２１２が訓練者によって保持される限り、単に、その慣性によって妨げられるわずかな力にさえ応答して、自由に移動する。手首カフ２１２上には、例えば、異なる点（例えば、多角形の頂点）においてボタンの一方をクリックすることによって領域を区画するため、物体の正しい視覚的選択を確認するため、または把持部を手動で開閉させるために、訓練プロセスにおいて使用されることができる２つのボタン２１４がある。
【００３８】
さらに、ロボット２００は、ノブおよびボタンの４つの同じセット２１４（各セットは、集合的に、「ナビゲータ」と呼ばれる）をそのアーム、胸部、および背中に含む。ナビゲータ２１４は、ユーザが、画面２０８上に表示される情報に応答し（例えば、メニューアイテムを選択することによって、訓練モードと実行モードとの間を切り替える）、デジタル回転式ノブを介して、数（例えば、物体が箱の中に詰められるべき行列の数を示すため）またはテキスト（例えば、パスワードまたは物体名およびタスク名）を入力する。ロボット２００はさらに、その肩に２つのタッチパッド２１６を含み、ロボット２００の背後からやって来た人が、ロボット２００をタップし、それによって、ロボットを訓練するときにその人が立つことを意図するロボット２００の側を示すことを可能にする。これらの視覚的センサ、ソナーセンサ、およびタッチベースのセンサは、限定ではなく、代表であり、全て、ロボットの知覚システム１０２の一部である。
【００３９】
前述のロボット２００は、当然ながら、本発明による多くの可能性として考えられるロボット実施形態のうちの１つにすぎない。種々の構成要素および特徴は、当業者に容易に明白になる態様で修正されることができる。例えば、ロボットは、概して、任意の数のアーム（または、より一般的には、付属肢）を有してもよく、各アームは、任意の数の自由度を有してもよい。アームのリンクは、１自由度を伴う回転関節（例えば、ヒンジ関節等）によって継合される必要はなく、例えば、２回転自由度を提供する玉継ぎ手関節、または並進運動を促進するレールシステムを含んでもよい。さらに、物体の周囲で閉鎖するフィンガを伴う把持部の代わりに、ロボットは、吸引把持部、または、物体を保持する他の手段を含んでもよい。代替として、または加えて、ロボットは、他のタイプのエンドエフェクタ、例えば、ツール（ドリル、のこぎり等）または測定デバイス（例えば、スケール、ゲージ等）を有してもよい。ロボットはまた、脚部、車輪、または全体としてその本体を移動させる類似手段を含んでもよい。さらに、付加的および／または異なるタイプのセンサが、ロボットの本体および付属肢の種々の場所に設置されてもよい。同様に、画面２０８およびステータスライトは、異なる場所に置かれてもよく、あるいは情報をユーザに通信するための異なる構成要素と交換またはそれによって補われてもよい。例えば、ロボットは、オーディオ通信のために、スピーカおよび／またはマイクロホンを含んでもよい。
【００４０】
制御システム１００およびその種々の構成要素は、ロボットに統合され得、またはロボットと通信する別個の制御機器内に（少なくとも部分的に）保たれてもよい。例えば、いくつかの実施形態では、タスク実行モジュール１１０および訓練モジュール１１２は、汎用コンピュータのメモリ内に（例えば、使用中にシステムメモリ、典型的には、ランダムアクセスメモリ（ＲＡＭ）内に、および／または長期記憶のために、ハードドライブ、ＣＤ−ＲＯＭ、または他の不揮発性記憶媒体上に）記憶されるソフトウェア内に実装され、コンピュータのプロセッサによって実行される。ユーザプロトタイプライブラリ１１６、インスタンスデータベース１１４、およびユーザモデル１１８は、同様に、不揮発性メモリ内に長期記憶され、使用中に、システムメモリにロードされてもよい。モジュールは、限定ではないが、高水準言語（例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ａｄａ、Ｂａｓｉｃ、Ｃｏｂｒａ、Ｆｏｒｔｒａｎ、Ｊａｖａ（登録商標）、Ｌｉｓｐ、Ｐｅｒｌ、Ｐｙｔｈｏｎ、Ｒｕｂｙ、またはＯｂｊｅｃｔ  Ｐａｓｃａｌ）あるいは低水準アセンブリ言語を含む任意の好適なプログラミング言語でプログラムされてもよい。ロボットとコンピュータとの間の通信は、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＷＬＡＮ、８０２．１１プロトコル、Ｅｔｈｅｒｎｅｔ（登録商標）ネットワーク、あるいは任意の他の有線または無線接続を介して、確立されてもよい。代替として、ロボットのサイズが許容する場合、コンピュータまたはコンピュータ端末は、ロボット内に内蔵されてもよい。
【００４１】
さらに、汎用コンピュータを使用する代わりに、制御システムは、限定ではないが、特殊目的コンピュータ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールド−プログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、またはプログラマブルゲートアレイ（ＰＧＡ）を含む、種々の他の処理デバイスのいずれかを採用してもよい。そのようなデバイスは、同様に、ロボットの本体、ヘッド、または付属肢内あるいはその上に装着されてもよく、もしくはケーブルまたは無線信号を介してロボットと通信する別個の制御機器内に含まれてもよい。種々の実施形態では、複数の異なる処理デバイスの組み合わせが、使用される。さらに、いくつかの実施形態では、全体的制御機能性は、ロボットに物理的に統合された構成要素と、ロボットと通信する外部構成要素との間に分散される。例えば、ロボットコントローラ１０６および関節レベルコントローラ１０８、ならびに、カメラ画像または他の信号を取得する（可能性として、基本画像／信号処理ステップを行う）ためのハードウェアは、ロボット内に位置してもよい一方、高水準データ構造および処理機能性は、遠隔に位置する機器内に提供されてもよい。
【００４２】
図２Ｃは、ブロック図形態における例示的制御システムを図示する。システムは、関節レベルコントローラ１０８としての役割を果たす、いくつかのＡＲＭプロセッサ（ＡＲＭ  Ｈｏｌｄｉｎｇｓ（Ｃａｍｂｒｉｄｇｅ，  ＵＫ）によって開発された縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ）を含む。タスク実行モジュール１１０および訓練モジュール１１２ならびに画像処理機器および関連視覚アルゴリズムを含む、全ての他の計算機能性は、中央処理ユニット（ＣＰＵ）２５２（例えば、クアッドコアＩｎｔｅｌプロセッサ）と、システムメモリ２５４と、不揮発性大容量記憶デバイス（１つ以上のハードディスクおよび／または光学記憶ユニット等）とを含む、ロボット内に埋め込まれた汎用コンピュータ２５０上に実装される。コンピュータ２５０はさらに、双方向システムバス２５６を含み、それを経由して、ＣＰＵ２５２、メモリ２５４、および記憶デバイス２５６が、相互に、および、画面２０８、知覚システム１０２のハードウェア構成要素（例えば、カメラ２０９、２１０、２１１、ナビゲータ２１４、手首カフ２１２）、外部センサ１０４、および／または従来の入力デバイス（例えば、キーボードまたはマウス）等の内部または外部入力／出力デバイス、ならびにＡＲＭプロセッサ１０８と通信する。
【００４３】
システムメモリ２５４は、ＣＰＵ２５２の動作および他のハードウェア構成要素との相互作用を制御する、モジュール群として概念的に図示された命令を含む。オペレーティングシステム２６０（例えば、Ｇｅｎｔｏｏ  Ｌｉｎｕｘ（登録商標））は、メモリ割り当て、ファイル管理、および大容量記憶デバイス２５６の動作等の低水準の基本システム機能の実行を命令する。より高い水準では、１つ以上のサービスアプリケーション２６２が、ロボットコントローラ１０６、タスク実行モジュール１１０、訓練モジュール１１２、および画像処理モジュールを統合する。プロトタイプライブラリ１１６、インスタンスデータベース１１４、およびユーザモデル１１８は、大容量記憶デバイス２５６上に、および／または動作中に、システムメモリ２５４内に記憶されてもよい。一実施形態では、ロボットコントローラ１０６は、１００ＨｚループでＣＰＵ２５２において作動する一方、視覚アルゴリズムならびに訓練モジュールおよび実行モジュールは、１０Ｈｚにより近いレートで作動する。関節レベルコントローラは、ＡＲＭプロセッサとして実装される場合、一実施形態では、約１０００Ｈｚで作動する。制御システム１００を実装するための種々の代替方法は、当業者に容易に明白となり、描写される例示的システムのように、過度の実験を伴わずに実装されることができる。
【００４４】
３．タスク表現および動作原理
種々の実施形態によるロボット制御システムは、基本ロボット動作（すなわち、ロボット移動または物体の操作）、ならびにこれらの動作と関連付けられた場所のタイプおよび物体、設備、または機器のクラスの観点から、メモリ内にタスクを表す。より具体的には、そのような基本動作および関連カテゴリのハードコードされたプロトタイプは、プロトタイプライブラリ１１６内に記憶され、タスク実行モジュール１１０によって使用されるプロトタイプのインスタンスの作成のためのテンプレートとしての役割を果たす。
【００４５】
図３は、プロトタイプの３つのクラス、すなわち、基本動作またはタスクのためのプロトタイプ３００、場所のプロトタイプ３０２、および視覚的に認識可能な物体のプロトタイプ３０４を含む例示的プロトタイプライブラリ１１６（または、「テンプレートライブラリ」）の構造を図示する。基本タスク３００は、いくつか挙げると、例えば、物体を握持する、取り上げる、または置く、穴を通して物体を挿入する、または（物体を保持する、または保持しない）ロボット付属肢を移動させるための動作を含んでもよい。場所のためのプロトタイプ３０２は、例えば、特定のタイプの物体の源または目的場所、物体が積み重ねられ得る場所、カートンまたは他の運搬装置内の部分の配列に対応する長方形アレイ、またはコンベヤベルトを含んでもよい。視覚的に識別可能な物体のためのプロトタイプ３０４は、操作される物体のクラス、および／または環境内で見出される特殊設備または機器（例えば、コンベヤベルト、段ボール箱、計量器、試験機械等）のクラスを含んでもよい。物体のいくつかのクラス（例えば、段ボール箱またはコンベヤベルト）は、それらと関連付けられた特殊な視覚的ルーチンを有してもよい一方、その他は、一般的な物体プロトタイプに属してもよい。ロボットは、認識するように視覚的に訓練される物体毎に物体プロトタイプをインスタンス化する。
【００４６】
基本タスク、場所、および物体は、本明細書で想定される多くのロボット用途のために有用なプロトタイプクラスであるが、プロトタイプの編成を種々のカテゴリに決して限定しない。種々の状況で使用され得る他のプロトタイプカテゴリとして、例えば、複合タスクプロトタイプ（基本タスクの順序を参照および規定し得る、または複合タスクを構成する動きを直接規定し得る）、機器プロトタイプ（例えば、容器、輸送車両等）、ツールプロトタイプ（例えば、ドリル、のこぎり、やすり等）、または時間およびシーケンスプロトタイプ（例えば、特定のタスクの開始または終了と関連付けられたトリガ、より複合的なタスクを構成する基本タスクの特定の順序等）が挙げられる。一般に、各クラスまたはカテゴリ内のプロトタイプは、類似タイプの情報によって特徴付けられる。図３に示されるように、いくつかのエンティティは、２つ以上のカテゴリにおけるプロトタイプと関連付け得る。例えば、コンベヤベルトは、物体プロトタイプおよびそれと関連付けられた場所プロトタイプの両方を有してもよく、物体プロトタイプは、コンベヤベルトを認識するための特定の視覚的技法の仕様を要求し、場所プロトタイプは、その機能の仕様（例えば、物体の源または目的場所として）および／または空間座標内のその位置を要求する。いくつかのプロトタイプカテゴリのうちの１つに属するようなプロトタイプを利用する概念は、プログラミング段階の間（すなわち、プロトタイプライブラリが作成されるとき）、有用であり得、プロトタイプライブラリ１１６の構造内に反映されてもよいが、その必要はない。いくつかのライブラリは、プロトタイプの種々のカテゴリのためのサブライブラリを有するが、他のライブラリは、プロトタイプを１つの一般的メモリ位置内に無作為に記憶する。
【００４７】
図４は、プロトタイプ４００の一般的構造を図示する。プロトタイプ４００は、複数のスロット４０１から成るテンプレートデータ構造を提供し、それぞれ、スロットラベル４０２およびスロットフィラー４０４（または、スロットフィラーを受け取るための空のフィールド）を含む。プロトタイプ４００はさらに、スロット４０１を充填するために使用され得る方法４０６または一式の方法と各スロット４０１とを関連付ける。スロット充填方法４０６は、利用可能なプロシージャのプール４０８から選択される。
【００４８】
ロボットを訓練するプロセスは、プロトタイプをライブラリ１１６から選択し、それらをインスタンス化（すなわち、テンプレートに基づいて、「インスタンス」と呼ばれるデータ構造を構築）し、インスタンススロットに値を充填することを伴う。スロットが充填される態様は、プロトタイプのカテゴリによって変動してもよい。図４に示されるように、プロトタイプ４００は、いくつかのスロット４０１のためのデフォルトスロットフィラー４０４を含んでもよい。任意のそのようなデフォルトフィラーは、プロトタイプがインスタンス化されると、上書きコピーされる。付加的スロットが、特定のスロットと関連付けられた充填方法４０６のいずれかを使用して、ユーザ入力および／または適切な推測を通して充填される。いくつかの実施形態では、ユーザがスロットを充填すると、既に充填されたスロットに基づいて、さらなるスロットを状況に即して充填するためのスロット充填プロシージャが、利用可能となる。このように、スロット充填プロシージャ４０６は、特定のタスクに関してユーザからより学習されるにつれて、アクティブデフォルトおよび物体間またはカテゴリ間スロットデータを提供する。通常、ユーザは、オートフィル値がタスクに適切ではない場合、オートフィル値を手動で変更する能力を有する。一般に、スロット値が変更されると、プロトタイプと関連付けられたプロシージャは、再呼出され、他のスロット内の任意の従属フィラーに情報を伝搬する。したがって、プロトタイプは、概して、連続洗練プロセスによってインスタンス化される。
【００４９】
図５は、プロトタイプ５００と、対応するインスタンス５０２との間の関係を図示する。積み重ねにおける物体の配列を命令するプロトタイプ５００は、タスクの実行のために必要な全スロット（例えば、配列の場所、配列内の物体の最大数、配列のタイプ、および配列される物体のタイプ）を含み、いくつかのスロットのためのデフォルトフィラー（例えば、配列が積み重ねであることのインディケーションおよび積み重ねられる物体の最大数としての２５）を含む。さらに、プロトタイプ５００は、種々の充填プロシージャとスロットを関連付ける。プロトタイプ５００のインスタンス５０２では、デフォルトフィラーが、既知のまたは観察された情報に基づいて、採用され、あるいは修正され、付加的スロットが、ロボットが訓練されまたはタスクを開始する場合に、充填される。集合的に、スロットフィラーの値は、インスタンスの特性を決定する。スロットフィラーは、実際のデータ（例えば、積み重ね場所の座標）または他のプロトタイプのインスタンスへの参照であってもよい。例えば、積み重ねられる物体は、箱であってもよく、これはさらに、「箱」インスタンスにおいて規定される。別の例として、複合タスクのためのプロトタイプは、種々のサブタスクの仕様を要求してもよく、そのようなサブタスクのためのスロットは、基本タスクインスタンスへの参照で充填されてもよい。プロトタイプ間のオブジェクト指向関係は、容易に規定され、例えば、関係データベースまたはオブジェクト指向データベース内に維持される。
【００５０】
訓練の間、プロトタイプがインスタンス化される度に、一意のインスタンスが、作成される。一般に、所与のタスクは、同一のプロトタイプの複数のインスタンスを伴ってもよい。例えば、物体は、例えば、その重量に応じて、複数の場所に積み重ねられる必要があってもよく、これらの場所はそれぞれ、積み重ねプロトタイプ５００の別個のインスタンス５０２に対応する。インスタンスがプロトタイプから作成されるとすぐに、タスク実行モジュール１１０は、概して、インスタンス内のスロットのうちのいくつか未充填のままであっても、そのインスタンスを用いて動作可能である。未充填のスロットのうちの１つに関するデータが、後に、インスタンスに関わるタスクの実行の間に必要とされる場合、タスク実行モジュール１１０は、例えば、実行を中断し、スロットを充填するようにユーザからの入力を求めてもよい。いくつかのスロットは、タスクに応じて、充填される（または、デフォルト値がオーバーライドされる）必要がなくてもよい。
【００５１】
図６は、種々の実施形態による、プロトタイプおよびインスタンスの使用を要約するものである。一般に、訓練段階の間、インスタンス作成は、ロボットが、その知覚システム１０２を介して、および／または直接ユーザ入力を介して、情報を受信するとトリガされる（ステップ６００）。ロボットは、その情報を使用して、プロトタイプライブラリ１１６から好適なプロトタイプを選択し（ステップ６０２）、プロトタイプをインスタンス化した後またはインスタンス化している間（ステップ６０４）、インスタンス内のスロットのうちの１つ以上を充填する（ステップ６０６）。例えば、ロボット訓練者は、ロボットのカメラを物体に向け、ロボットに、最初に、物体の視覚的外観に基づいて、一般的な「物体」プロトタイプのインスタンスを作成させ、次に、物体プロトタイプと関連付けられた基本タスクのリストを表示させてもよい。訓練者による、基本タスクのうちの１つの選択に基づいて、そのタスクのプロトタイプが、その後、インスタンス化される。ユーザは、物体に対する基本タスクのロボットの実行を誘導し得、それによって、タスクインスタンスのスロットを充填するための値を提供してもよい。このように作成されるインスタンスは、インスタンスデータベース１１４内に記憶される。訓練者は、随時、訓練を終了し、タスク実行システムが、規定されたインスタンスを用いて動作することを可能にすることができる。後に、ユーザは、ロボットからのさらなる情報の要求に応答して、または自発的に、訓練を再開することができる。
【００５２】
十分なインスタンスが作成され、十分に多くのスロットが充填されると、ロボットは、タスク実行モードで動作し、これらのインスタンスを解釈実行してもよい。本モードでは、ロボットは、概して、特定のタスクをトリガする、ユーザまたは知覚システム１０２からの入力の受信を待機する（ステップ６１０）。入力に基づいて、ロボットは、１つ以上のインスタンス（例えば、ロボットが検出する物体のインスタンス、物体と関連付けられた基本タスクのインスタンス、およびタスクが行われる場所のインスタンス）を選択し（ステップ６１２）、必要に応じて、インスタンス（単数または複数）内の空のフィールドを充填する（ステップ６１４）。タスクは、次いで、インスタンス（単数または複数）に従って実行される（６１６）。基本タスク（例えば、「持ち上げる」または「置く」等）は、特に、以下により詳細に説明されるように、個別の基本タスクインスタンスによって規定されるパラメータ、事前条件、および事後条件を伴うルールとして動作する。（非基本）タスクは、実行モードにおいて状況に即して作動する、ルールの集合として内部に表される。訓練者は、概して、ルールの表現または詳細にさらされることはなく、その存在を認識する必要さえない。
【００５３】
故に、６次元座標の観点から一連の動きを教示されるのではなく、種々の実施形態によるロボットは、一連のルールが教示される。実行段階の間、これらのルールを実際の動きに変換することを可能にするために、ロボットは、常時、その本体、ヘッド、アーム、および任意の他の作動要素の場所および向きの３次元自己モデルを維持する。典型的には、これは、特定性（例えば、方向）のタスクに適切なレベルで、データベース関連要素および場所として実装される。ロボットがそのタスクの実施の間に到達する必要がある場所は、視覚的に認識可能な外部物体およびデバイスの観点から、または環境内のものに取着された基準マーカーを参照することによって、ロボットに対する座標において規定されてもよい。
【００５４】
４．知覚、ユーザ相互作用、および訓練
本発明の種々の実施形態は、その環境内の物体および人々を視覚的に検出および／または識別するためのロボットの能力に依拠する。そのような視覚的検出は、それ自体が、ロボットが行うように訓練される必要があるタスクであってもよい。訓練は、概して、ヒト訓練者からの入力およびフィードバックと結合される、ロボットの環境の継続的知覚を伴う。例えば、ロボットに、特定の物体を視覚的に認識することを教示するために、訓練者は、最初に、ロボットのヘッドにおける画面２０８上に表示され得る物体がカメラビュー内に現れるように、ロボットのカメラのうちの１つの向きを定めてもよい。訓練者は、例えば、マウスまたはタッチスクリーンを使用して、カメラビュー内の物体を指してもよい。代替として、ロボットのコンピュータビジョンシステムは、１つ以上のルールに基づいて、着目物体の識別を試みてもよい。例えば、システムは、デフォルトによって、カメラビューの中心における物体または画像の前景における物体を選択してもよい。前景および背景は、例えば、ステレオカメラまたは別個の奥行センサを用いて、得られた奥行情報に基づいて、区別されてもよく、あるいは、２つの異なるが重複するカメラビューから導出されてもよい。訓練者入力は、ロボットの自動物体選択を確認または拒否するために使用されてもよい。着目物体がロボットに示されると、コンピュータビジョンシステムは、画像内の物体の輪郭を生成し得、それによって、物体に属すると見なされる全画素を識別してもよい。本画素群は、例えば、輝度、色、または奥行情報に基づいて、識別されてもよい。好適なアルゴリズムは、当業者に公知であり、とりわけ、エッジ検出アルゴリズムが挙げられる。ユーザは、再び、ロボットのコンピュータビジョンシステムが物体の輪郭を正しく描いているかどうかを示すフィードバックを提供し、必要に応じて、補正させてもよい（例えば、カメラの向きを再び定めることによって）。
【００５５】
次に、訓練モジュール１１２は、識別された物体のインスタンスを作成する。いくつかの物体の場合、インスタンスは、同一の（または、同一の種類の）物体の後続認識を容易にする視覚モデル（データ構造および関連付けられたアルゴリズムを含む）の仕様を要求する、一般的な「物体」プロトタイプから作成される物体の視覚的外観のオンザフライ表現である。例えば、物体の画像は、後に取得された画像との相関ベースのマッチングのためのテンプレートとして、インスタンス内に記憶されてもよい。代替として、特定の形状が、物体の輪郭に適合させられ、そのパラメータ値が、後の比較のために、テンプレートパラメータからの許容可能な逸脱のための閾値とともに、インスタンスに記憶されてもよい。これらおよび他の視覚モデルならびに技法の詳細は、コンピュータビジョンの当業者に公知であり、過度の実験を伴わずに、本発明の実施形態に実装されることができる。一般に、異なる視覚モデルは、異なるタイプの物体に多かれ少なかれ好適であり得る。故に、訓練者は、ロボットが認識するように訓練されている物体のための好適なモデルを選択してもよく、または代替として、ロボットは、異なるモデルを試し、例えば、ユーザフィードバックに基づいて決定されるように、最良の認識性能をもたらすものを選択してもよい。使用される視覚モデルにかかわらず、訓練されたロボットのコンピュータビジョンシステムは、個々の物体と、同一の外観を有する物体のクラスの構成子とを区別しない。
【００５６】
いくつかのタイプの物体の場合、ロボットは、そのプロトタイプライブラリ１１６内に記憶される特殊プロトタイプを有し得、関連付けられた特殊視覚−知覚アルゴリズムを利用してもよい。例えば、コンベヤベルトは、ベルト上の物体またはベルト自体の反復的かつ継続的な動きに基づいて、認識されてもよく、段ボール箱は、その平坦表面、長方形形状、および段ボールの配色等に基づいて、識別されてもよい。類似視覚検出アルゴリズムが、物体の種々の他の特定のクラスのために使用されてもよい。どのアルゴリズムが、任意の所与の時間に、そのそれぞれの範囲内の物体を検出するために作動するかは、ロボットの現在のタスクまたはその環境の特性評価に依存してもよい。例えば、ロボットは、そのタスクが、物体を箱の中に入れることも箱を積み重ねることも伴わない限り、段ボール箱に関してその環境を視覚的に検索する必要がなくてもよい。
【００５７】
物体の検出および識別に加え、ロボットの知覚システムはまた、訓練および／またはタスク実行の間に要求される情報を提供するユーザを含む、人々を検出および／または識別する役割を果たす。種々の実施形態では、ロボットは、例えば、顔検出および／またはソナーを通した動き検出を使用して、人々に関してその環境を継続的にスキャンする。さらに、その制御論理は、そのボタン、タッチパネル、ノブ、または手首カフのいずれかがアクティブ化されると、ある人がそのようなアクティブ化に関与すると仮定する。その人の場所は、ロボットの自己モデルにおけるアクティブ化された制御部の場所から推定されてもよい。訓練の間、ロボットは、本情報を使用して、その画面２０８をその人に向け、その人がロボットの作業空間内を移動する場合に、その人を追従してもよい。実行モードでは、人々の場所に関する情報が、例えば、衝突を回避するために、すなわち、安全動作を確実にするために使用される。さらに、単に、人の存在を検出することに加え、コンピュータビジョンシステムは、例えば、顔テンプレートマッチングに基づいて、特定のユーザを識別してもよい。本能力は、セキュリティのために、すなわち、権限ユーザのみがロボットの制御システムにアクセスすることを確実にするため、および／またはアクセス特権をそのユーザに与えるために使用されてもよい。さらに、それは、特定のユーザとの以前の相互作用に基づいて、ユーザ−ロボット相互作用を調節するために使用されてもよい。例えば、複数の人物が、複数のセッションにわたって、ロボットの訓練に関わる場合、ロボットは、ある特定のユーザとのセッションにおいて、そのユーザが以前の訓練セッションにおいて中断した場所に基づいて、次の訓練目的を示唆してもよい。
【００５８】
一般に、ユーザ−ロボット相互作用は、双方向情報フローを伴う。ユーザは、種々の実施形態では、例えば、機械的に（例えば、ロボットのアームを物理的に移動させること、ロボットの肩をタップすること、またはロボットの手首を掴むことによって）または視覚的に（例えば、カメラのうちの１つの視野内に立つこと、手を振ること、物体を指すこと等によって）ヒト相互作用を模倣する態様で、入力をロボットに提供してもよい。加えて、または代替として、ユーザは、ロボットの本体および付属肢上の特殊ロボット制御部を操作すること（例えば、ボタンを押下すること、ノブを回すこと等）によって、ロボットを制御し、かつ／または従来のユーザ入力デバイス（マウスおよびキーボード等）を介して、情報および命令を入力してもよい。さらに、いくつかの実施形態では、ロボットは、音声コマンドを処理することを可能にする、マイクロホンおよび音声認識ソフトウェアを含む。しかしながら、ロボットに示されるユーザ入力は、所望の物体が識別および分析されるまで、すなわち、既存のプロトタイプと比較され、マッチングまたは一般的なプロトタイプに基づいてインスタンス化されるまで、訓練モジュールによって認識され、知覚システム１０２を誘導するために使用される。ユーザ入力はさらに、以下に説明されるように、物体属性を規定するために採用される。
【００５９】
逆に言えば、ロボットは、その画面２０８および／またはステータスライトを介して、ユーザにその内部状態を通知し、かつ／または入力を要求してもよい。画面２０８は、テキスト、ウィンドウ、アイコン等を有する従来のグラフィカルユーザインターフェース、および代替として、または同時に、直感的態様で情報を伝達するロボット生成グラフィック（例えば、物体の輪郭）が必要に応じてオーバーレイされた１つ以上のカメラビューを表示してもよい。いくつかの実施形態では、ロボットはまた、機械的に情報を伝達するようにも構成される。例えば、ユーザが、ロボットのアームを移動させる場合に、ロボットは、触覚フィードバックを提供し、ユーザに、例えば、ロボットの別の部品または外部物体との衝突が差し迫っていることを警告してもよい。さらに、ユーザ経験を向上させるために、ロボットは、いくつかの実施形態では、ヒト様挙動に従事することによって、そのステータスを通信する。例えば、ロボットが、タスクの実行の間、さらなる入力を要求する不測の状況に遭遇すると、ロボットは、そのヘッドを動かし、その画面２０８上に当惑した表情の顔を表示してもよい。
【００６０】
特定のタスクのためにロボットを訓練する状況では、ユーザ入力が、概して、（タスク、物体、場所等の）インスタンスを作成してインスタンス内のスロットを充填するために使用される。訓練モジュール１１２は、知覚システム１０２を介したユーザアクションの観察に基づいて、いくつかのスロットを充填し、明示的ユーザ入力に基づいて、いくつかのスロットを充填してもよい。例えば、ロボットに、物体を取り上げることを教示するために、訓練者は、画面２０８上に表示されるドロップダウンメニューまたはリストから基本動作「取り上げる」のためのプロトタイプを選択し、次いで、ロボットアームを物体の上方に持って来てもよい。ロボットの視覚システムは、次いで、物体を検出し、それの輪郭を描く。ユーザが、例えば、手首カフ上の指定されたボタンを押下することによって、物体の正しい選択を承認する場合、訓練モジュール１１２は、物体の外観の好適な表現を用いて、一般的な物体プロトタイプの新しいインスタンスを設定する。さらに、訓練モジュール１１２は、新しい物体インスタンスを使用して、取り上げられる物体を示す「取り上げ」インスタンスのスロットを充填する。また、デフォルトによって、物体がロボットに示される場所である取り上げ場所のインスタンスを設定する。作成されたばかりの物体インスタンスは、場所インスタンスのスロットを充填し、そのスロットは、その場所で見出され得る物体を示し、場所インスタンスは、物体を取り上げるべき場所を規定する「取り上げ」インスタンス内のスロットを充填する。訓練者は、次いで、ロボットに、その視覚的外観に対して物体を把持する方法を示す。本プロセスは、訓練者によるロボット把持部および／またはフィンガの操作および手動調節を伴ってもよい。例えば、訓練者は、ロボットのフィンガの向きを物体に対して定め、ボタンを押下し、フィンガを開閉させてもよい。代替として、ロボットは、それ自体を調節し、例えば、従来のユーザインターフェースを介してユーザによって提供されるフィードバックを考慮してもよい。例えば、ロボットは、物体のカメラビュー上に「仮想把持部」を表示し得、ユーザが、画面を横断して仮想把持部をドラッグすることを可能にしてもよい。ロボットは、次いで、物体のカメラビューに対する仮想把持部の場所に基づいて、その現実の把持部を調節する。
【００６１】
いくつかの実施形態では、訓練者は、訓練プロセスにおける特定のステップに利用可能な異なる相互作用間の選択肢を与えられてもよい。例えば、タスクまたはサブタスクが行われる場所（取り上げ場所または目的場所あるいは物体の特性を測定するための試験ジグ等）を示すために、ユーザは、画面上の場所を指すか、または代替として、ロボットアームをその場所に移動させるかのいずれかを行ってもよい。アームを移動させるために、ユーザは、ロボットの手首の一方のカフによってロボットを握持し、それによって、ゼロ重力補償モードにロボットアームを切り替えてもよく、ゼロ重力補償モードにおいて、ロボットコントローラは、ロボットアームがゼロ重力質量を有するようにみせかけ、人がカフによってロボットアームを引っ張ることに応答して、容易に移動させるように試みる。いくつかの実施形態では、ユーザはまた、アームが６自由度よりも大きい自由度を有する場合、そのリンクのいずれかを押下することによって、アームを再構成することができる。別の実施例として、ロボットに、例えば、段ボール箱のアレイに内に物体を配列する方法を教示するために、ユーザは、動きを通して、ロボットを物理的に誘導し得、または、例えば、物体のグラフィック表現を画面上の仮想段ボール箱の中にドラッグすることによって、所望の配列を視覚的に伝達してもよい。これらの例から理解されるように、異なるタイプの相互作用は、異なるタスクに対して好ましくあり得る（例えば、より便利であり、より正確である等）。ロボット−ユーザ相互作用の詳細にかかわらず、訓練者は、ロボット付属肢の座標および軌道を規定するのではなく、世界における物体、補助機器、および場所のレベルでロボットと関わる。言い換えると、訓練は、特定のタスクインスタンス以外に有用性を有していない特定の空間パラメータではなく、可変環境および物体に適用される、タスク−レベルルールの適用および作成を伴う。さらに、訓練者は、通常、実施される逐次的な順序でサブタスクを教示する必要はなく、むしろ、ロボットに特定の状況においてとるべきアクションを示し、プロトタイプと関連付けられたルールの作成をもたらす。
【００６２】
訓練の間に採用されるものに類似するユーザ相互作用はまた、例えば、ロボットがさらなる命令を待機するためにプロセスを停止するとき、またはユーザが特定の場合に実行の態様を修正することを所望するとき、ロボットのタスクの実行の間に生じてもよい。ユーザによって提供されるフィードバックは、訓練モジュール１１２によって、タスクと関連付けられたルールの調節または修正に変換される。さらに、ロボットの知覚システム１０２は、概して、実行段階中、訓練中と同一の態様で動作し、物体、人々、機械的力等を検出する。知覚システム１０２は、視覚的および機械的感覚（タッチおよび機械的力を含む）に重点を置いて、本明細書に説明されたが、特定の用途の場合、知覚システム１０２はまた、他のタイプの物理的入力（温度、電場、および磁場等）のために知覚能力を提供してもよく、そのような入力は、インスタンスの作成およびタスクの実行において採用されてもよい。
【００６３】
５．ロボット挙動およびタスク実行
ロボットアクションは、概して、有用作業の実施および訓練の両方の間、タスク実行モジュール１１０によって制御される。典型的には、タスク実行モジュール１１０は、多くの挙動を並行して作動させる。本文脈では、用語「挙動」は、「挙動ベースのロボットシステム」を参照して使用され、概して、特定のロボット機能（例えば、センサの入力を監視することまたは画像を処理すること等）に関連するプロセッサ実行可能命令の集合を示し、それは、アクティブ化されると、継続的に、またはある状況においてのみ動作し得る。一般に、挙動は、タスクよりも基本的であり、実際、タスクは、複数の挙動の相互作用によって実施され、複数の挙動のいくつかは、継続的に作動し、いくつかは、動作するためのその事前条件が、先の挙動の結果として有効になると、トリガされる。複数の挙動は、メッセージ（例えば、データまたは命令）を相互に送信することによって相互作用することができる。典型的には、各挙動は、オブジェクト指向構成において、自律的プロセスとして実行され、それに割り当てられたローカルメモリを有する。
【００６４】
一般に、挙動は、特定の入力を受け取り、計算および内部状態変化の結果、特定の出力を提供するように適応される。入力は、例えば、センサ（例えば、知覚システム１０２のセンサまたは外部センサ１０４）、挙動によってアクセスされるデータ構造、または他の挙動からパスされるパラメータを通して提供されてもよい。出力は、例えば、アクティブ化または非アクティブ化のためのセンサを選択する信号、または、ロボットコントローラ１０６が特定の基本動作を実行することの要求を含む。例えば、挙動は、インスタンスによって参照される物体の感知された場所と併せて、基本タスクインスタンスを処理し得、オンザフライで、ロボットがタスクを完了するために横断し得る軌道を計算してもよい。開始および終了座標を用いて完全な軌道を計算する代替として、ロボットは、所望の動きの方向を決定し、次いで、終了条件に合致するまで、付属肢をその方向に移動させてもよい。例えば、物体を把持するタスクを行うために、ロボットは、把持部が物体に接触するまで、またはロボットのハンドの掌が物体の上部に決して触れるべきではない状況では、ハンドが降下されるときにフィンガが物体の両側に来るように、握持される物体が着座する表面の上方のある固定高さにハンドが来るまで、そのハンドおよび把持部を垂直方向に移動させてもよい。いくつかの実施形態では、タスク実行システムは、現在の位置、目標位置、および視覚システムからの着信情報に基づいて、軌道を動的に計算および再計算する。
【００６５】
特定の実施形態では、各挙動は、実行目的のために、タスク実行モジュール１１０内のスレッド化モジュール内で並行して作動する１つ以上の「スレッド」に編成される。本明細書では、「スレッド」は、有限状態機械（すなわち、有限数の状態とともに、状態間の遷移をトリガする条件）を定義する、一連のコンピュータコードである。典型的には、スレッドは、（多くの場合、複合の）一式の条件に一致する入力条件を待機し、次いで、ロボットを制御するか、またはメッセージを送信するかのいずれかにおいて、アクションを開始する。時として、数千ものスレッドが、ロボットが行うように訓練された特定のタスクを実施するために同時に作動する。
【００６６】
種々の実施形態では、ロボット挙動はそれぞれ、挙動の２つの一般的カテゴリ、すなわち、常時、タスクから独立してバックグラウンドで作動する内蔵挙動と、インスタンス化される基本タスクおよび場所に結合される挙動インスタンスとのうちの１つに属する。内蔵挙動は、例えば、人々ならびにロボットに安全性を提供し得、適切な場合に訓練モジュール１１２を呼び出し得、異常条件の検出に応じて、またはルーチン保守目的のために、診断を開始し得る。それらは、全ての特定のタスクと並行して動作する一般的な挙動である。その存在のため、ユーザは、ロボット訓練にエラーハンドリングプロシージャを含む必要はない。産業用ロボットのための従来の制御システムは、対照的に、通常、潜在的エラーが、特定のタスクと関連付けられたプログラムコード内で対処されることを要求する。
【００６７】
特定の実施形態では、タスク実行モジュール１１０は、自己衝突防止挙動を継続的に作動させ、ロボットのアーム（または、より一般的なには、付属肢）が、相互またはロボットの他の部品と衝突することを防止する。本挙動は、入力として、ロボットの自己モデルを使用する。ユーザが、ゼロ重力補償モードにおいて、そのカフを保持してアームを動かすと、自己衝突防止挙動は、アーム上のロボット生成力をゼロから増加させ、ロボットの別の部品との衝突をもたらし得る、ユーザによって印加されるいかなる力にも対抗する。抵抗性のロボット生成力は、ユーザ誘導アームまたはその一部が、ロボットの別の部品またはアームの別の部分に近づくにつれて増加する。抵抗力は、２つの役割を果たす。第１に、ユーザが衝突を生じさせるために、ユーザは、ロボットが生成することが可能な力を上回る力を印加する必要があるため、抵抗力は、ユーザが衝突を生じさせることを不可能またはほぼ不可能にする。第２に、抵抗力は、ユーザ触覚フィードバックを与え、ユーザが誤ったことを行なっていることを暗示的に信号伝達する。自己衝突防止挙動はまた、タスク実行モジュール１１０が特定のタスク（例えば、物体を移動または操作する）を実施しようとするときはいつでも、アクティブであり、アームを移動させるコマンドを与え、潜在的に、例えば、第２のアームとの衝突を生じさせる心配がある他の挙動の必要性を排除する。自己衝突防止挙動は、アームが衝突せず、必要に応じて、第１のアームの動きを進めさせる前に、第２のアームが退くことを待機し、さらに要求挙動に対して要求される待機期間を信号伝達し、それによって、第１のアームが、所望に応じて、その間に別のタスクを実行することができることを確実にする。
【００６８】
特定の実施形態では、タスク実行システム１１０が作動しているときに常時アクティブである第２の挙動は、衝突検出挙動であり、これは、アームが外部物体（または、人）と予期せずに衝突する場合を検出する。例えば、ロボットの作業空間を通って移動する人または作業空間内に移動される物体との予期しない衝突が、生じ得る。衝突検出を促進するために、ロボットアームの関節は、いくつかの実施形態では、それぞれの関節における力を測定することが可能な直列弾性アクチュエータを含む。さらに、タスク実行モジュール１１０は、各アームの順運動学もでるおよび順動力学モデルを維持し得、モジュール１１０が、ロボットの動きのためのコマンドに基づいて、各関節において測定されるはずである力のプロファイルを予測することを可能にしてもよい。測定された力が、これらの予測から有意に逸脱すると、衝突検出挙動は、予期しない障害物との衝突を推測する。全ての動きを直ちに停止し、短時間待機し、次いで、衝突をもたらす動きを以前よりゆっくりと再開することにより、障害物が除去されたかどうか決定する。予期しない衝突がもはや生じない場合、タスク実行モジュール１１０がそのタスクの実施を継続することを可能にする。一方、物体が規定された最大数の待機期間後に消失しない場合、衝突検出挙動は、タスク実行モジュール１１０をシャットダウンし、再開するためのユーザ命令を待機する。
【００６９】
さらに、内蔵挙動は、知覚システム１０２内で作動する視覚アルゴリズムを調和させる。それらは、ロボットが認識するように訓練された物体の視覚的説明をコンピュータビジョンシステムにパスし、物体のいずれかがエンドエフェクタの下方にあるかどうか確認するために、エンドエフェクタが移動していないとき、ロボットの手首上のカメラと関連付けられた検出アルゴリズムをアクティブ化する。それらはまた、胸部カメラ上の視覚アルゴリズムをアクティブ化することにより、手首カメラを用いて調査され得る任意の変化に関して環境を監視してもよい。他の挙動は、間近のタスクが段ボール箱またはコンベヤ等の物体に関わるとき、そのような特殊物体を探すための視覚アルゴリズムへの要求を調和させる。コンピュータビジョンは、計算コストが高いため、視覚挙動は、典型的には、状況および現在の必要性に基づいて、種々のアルゴリズムに計算時間を割り当てることにより、ロボットの制御システムの全ての他のモジュールのために十分な計算容量を残す優先方式を採用する。物体が認識されると、ロボットに対する、世界における物体の場所が、典型的には、それらに関して把握する必要があるタスク実行モジュール内の全ての他の挙動（再び、典型的には、オブジェクト指向方式で自律的に実行する）にブロードキャストされる。挙動間のメッセージを介した情報のそのような自動伝搬は、種々の実施形態によるロボットが、タスク実行の詳細をロボット自体および／またはタスクに関連する物体の変化する位置に適応させることを可能にする際、重要な要因である。いくつかの実施形態では、関連物体が、ロボットの座標系内で継続的に追跡され、インスタンス化された基本タスクが、現在の物体場所を使用することにより、ロボット付属肢（単数または複数）のための軌道をオンザフライで生成することを可能にする。
【００７０】
一般に、ロボット制御システムは、常時、アクティブである、多くの他の内蔵挙動を含んでもよい。例えば、ユーザモデルが近傍の人の存在を報告すると、ロボットが、安全な様式で作用し、例えば、内蔵照明を制御することによって、ロボットのための良好な作業条件を維持し、および／またはロボットを較正する、および／または較正を維持することを確実にするために、専用挙動が、使用されてもよい。異なる実施形態は、そのそれぞれの用途の要件に応じて、異なる内蔵挙動を利用してもよい。
【００７１】
挙動の第２のカテゴリは、インスタンス化された基本タスク、場所、および／または他のタイプのインスタンスに対応するインスタンス化された挙動を含む。同様に、訓練段階の間、ロボットアクションを統制する内蔵挙動も、含まれてもよい。いくつかの挙動は、訓練中およびタスク実行中の両方で使用される。例えば、エンドエフェクタ内に装着されたカメラのビュー内の中心に物体を置くように、エンドエフェクタを移動させるための挙動は、訓練の間、物体のインスタンスを作成し、かつ後のタスク実行の間、物体を認識し、かつ／または、物体を把持するために使用されることができる。そのような両用挙動は、訓練モジュール１１２およびタスク実行モジュール１１０の両方内にプログラムされてもよく、または１つの融合モジュール内に提供されてもよい。挙動自体は、挙動プロトタイプまたはテンプレートのインスタンスである。テンプレートは、プロトタイプライブラリ１１６内に記憶され、そのインスタンス化は、インスタンスデータベース１１４内に記憶されてもよい。しかしながら、訓練モジュール１１２は、一般に、挙動と相互作用しないため、タスク実行モジュール１１０の一部として、挙動テンプレートおよびインスタンス化された挙動を記憶することが好ましくあり得る。
【００７２】
図７は、物体を移動させるための基本タスクインスタンス７００の例における、挙動と、挙動と関連付けられたインスタンスとの間の関係を図示する。インスタンス７００と関連付けられた挙動７０２（記録として、関連付けられたスロット／属性とともに、図１に示されるインスタンスデータベース１１４内に記憶される）は、タスク実行およびエラーハンドリングを統制する複数のスレッド７０３を含む。例えば、あるスレッド（タスク実行モジュール１１０によって概念上実行されるが、実際には、システムプロセッサによって実行される）は、ロボットの把持部の状態を監視し、把持部が、実際に、物体を保持することを確実にしてもよく、別のスレッドは、第１のスレッドからの信号に応じて、動きを開始してもよい。各スレッド７０３は、インスタンス７００内の全スロットへのアクセスを有する。本アクセスは、挙動７０２とインスタンス７００とを関連付けるものである。スレッド７０３はさらに、共有メモリ７０４へのアクセスを有する。例えば、他の挙動またはセンサからの着信メッセージ７０６は、共有メモリ７０４内に置かれることができ、共有メモリ７０４内に記憶されたデータは、発信メッセージ７０８にコピーされることができる。
【００７３】
場所に関してインスタンス化された挙動は、概して、個別の場所に存在する物体を追跡する。例えば、出力積み重ねと関連付けられた挙動は、物体が置かれる場所として積み重ねを参照する、適切な「荷置き」挙動インスタンスからのメッセージを監視することによって、積み重ねられた物体の数のカウンタを維持してもよい。訓練の間、システムが、積み重ねが１０個の物体の高さを超えるべきではないことを教示されたと仮定する。次いで、９個またはそれより少ないアイテムが積み重ねられると、インスタンス化された積み重ね挙動は、インスタンス化された荷置き挙動に、作用を行う準備ができた（すなわち、別の物体がその上に積み重ねられてもよい）ことを通信する。荷置き挙動が、動作が正常に完了したことを信号伝達すると、積み重ね挙動は、そのカウントを更新する。積み重ね上に１０個のアイテムが存在すると、いっぱいであることを荷置き挙動に知らせ、それによって、荷置き挙動のさらなる動作をブロックする。しかしながら、積み重ね挙動は、視覚システムから新しい入力を受け取り、物体の数が変化したことのメッセージを受信する場合、そのカウントをリセットする。このように、ロボットは、自動的に、タスク実行と人とを調和させることができる。規定された最大数に達するまで、物体を積み重ね、次いで、物体が、人等のロボット以外のあるエンティティによって除去されるまで、積み重ねを停止し、物体が除去された時点で、ロボットは、積み重ねを再開する。類似挙動が使用されることにより、例えば、箱の中に詰められる物体の数を監視し、箱が完全に詰められるまで、物体を箱の中に入れ、ヒトが、例えば、自ら、物体を箱の中に入れるか、または箱から物体を除去することによって干渉すると、アクションを調節し得る。
【００７４】
複数の場所において積み重ねが作成され得る（または、箱が詰められる）シナリオでは、インスタンス化された荷置き挙動は、それらの場所のリストにアクセスし、ロボットが、１つの積み重ねがいっぱいになると、他の場所のうちの１つに物体を積み重ね続けることを可能にしてもよい。どの積み重ねが除去移動されるかに応じて、ロボットは、単に、挙動間で送信されるメッセージに基づいて、そのアクションを適応させ、物体を置いている場所を変更してもよい。さらに、複数の異なる種類の物体が、例えば、コンベヤベルト上で利用可能である場合、ロボットは、自動的にその挙動を調整することにより、利用可能であり、かついっぱいになっていない積み重ね（または、箱）を有するいずれの物体にも状況に即して作業してもよい。したがって、タスク実行の間の状況は、精密な動作順序を指示し得る。ロボットを訓練する人は、動作順序を規定することも、実行の間の順序を明示的に決定するルールを作成することも必要ない（但し、訓練者は、ロボットが実行する挙動を自由に修正する）。むしろ、インスタンス化された基本タスクおよび場所は、それらと関連付けられた挙動とともに、メッセージを相互に送信することによって、目の前の状況に知的に応答するようになる。
【００７５】
タスク実行モジュール１１０内の種々の挙動がどのように協働するかのさらなる例証のために、物体を取り上げて置く基本タスクのためのインスタンス化された挙動間の以下の相互作用を検討する。ロボットが、特定のタイプの物体、例えば（参照を容易にするために）、小型装置を認識するように訓練されたと仮定する。さらに、訓練者が、最初に、ロボットに特定の場所を示し、物体をその場所に置くように教示し、次いで、ロボットにコンベヤベルトを示し、そこで検出する任意の小型装置を取り上げるように教示したと仮定する。種々の実施形態では、本シナリオは、インスタンス化された取り上げ挙動および荷置き挙動をもたらし、それぞれ、いくつかの充填されたスロットを伴う、関連したインスタンス化されたデータ構造を有し、他の挙動ならびに感覚システムからメッセージを受信する。言い換えると、訓練段階互作用は、関連付けられたスロット値の改変を通して、ルールレベル変更を特定のロボット挙動にもたらす。
【００７６】
挙動のスレッドは、個別の事前条件および事後条件を伴うルールとして挙動を作用させるように、タスク実行モジュールの一部としてプログラムされてもよい。例えば、取り上げ挙動のための事前条件は、ロボットのハンドまたは把持部が空であること、訓練時点でのコンベヤのおおよその場所（インスタンス化されたデータ構造のスロット内に記憶されている場所）の上方にあること、および小型装置（小型装置自体が、データ構造のスロット内に規定されている）がコンベヤ上で利用可能であることを含む。全３つの事前条件に合致すると、取り上げ挙動は、視覚システム（知覚システム１０２の一部である）とロボットコントローラ１０６との間の結合された物体追跡動作を開始する。これらの２つのシステム構成要素が、（例えば、ロボットのハンドのカメラによって提供されるビューにおいて）物体が追跡されていることを報告すると、取り上げ挙動は、ロボットコントローラに、ロボットのハンドを下向きに移動させ、そのフィンガを物体の周囲で閉鎖させる。挙動が、追跡が喪失されたことのメッセージを受信する場合、いつでも、挙動のクリーンアップスレッドが、ハンドをコンベヤ上方の適切な高さに戻し、別の物体が通過するのを待機する。
【００７７】
ロボットコントローラが、何かがフィンガ間に握持されていることを報告すると（例えば、フィンガ間の距離または設定閾値を超える力の測定に基づいて）、取り上げ挙動は、ハンドが小型装置を保持しているとメッセージを送信する（「小型装置」が、取り上げインスタンスに規定された物体のタイプであったため）。荷置き挙動による本メッセージの受信は、その挙動の事前条件のうちの２つを満たし、ロボットのハンドが物体を保持していることと、物体が小型装置であることが分かる。したがって、荷置き挙動の事前条件の充足は、ハンドの中の物体の直接知覚に基づいてではなく、（入念に書き込まれた）取り上げ挙動の状態から推測され、取り上げ挙動は、その事前条件下で正常に動作している場合、小型装置がロボットのハンドの中にあると仮定し、その旨のメッセージを送信する。荷置き挙動のための事前条件が充足されたままであることを確実にするために、ロボットコントローラは、フィンガ間隔のステータスを荷置き挙動に継続的に送信する。したがって、荷置き場所に到達する前に、ロボットが、物体を偶発的に落下させる場合、または人がやって来て、物体をロボットのハンドから取り除く場合、事前条件のうちの１つは、もはや充足されず、荷置き挙動は、その結果、存在していない小型装置を目的場所に積み重ねようとしない。一方、目的地（関連付けられたデータ構造インスタンス内に記憶される）に到達するとき、事前条件が依然として充足される場合、荷置き挙動は、ロボットをアクティブ化し、ロボットに小型装置を規定された場所に置かせる。このように、タスク実行モジュール１１０は、訓練の間、異なる順序でこれらの動作が教示されても、最初に、それらを取り上げ、次いで、それらを置くことによって、小型装置を移動させることができる。例えば、物体の計量および分類を伴うタスク等のより複雑なタスクは、同様に、後にタスクの適切な実行に影響を及ぼさずに、任意の順序で教示され得るより多くのステップを含んでもよい。
【００７８】
種々の実施形態におけるタスク実行の柔軟性を例証する別の例は、その左アームで小型装置をコンベヤベルトから取り上げ、その右アームの届く範囲内にそれらを置き、次いで、右アームで小型装置を取り上げ、それらを箱の中に入れるように訓練されたロボットを伴う。本タスクの実施の間、人が、右アームが小型装置を取り上げる場所に物体を置く場合、ロボットは、物体を小型装置として視覚的に識別することができる限り、その物体を同様に詰める。このように、ロボットは、状況に即してその環境に応答可能である。
【００７９】
故に、本発明の種々の実施形態は、物体の移動および操作等のタスクを行うために、ロボットを訓練および動作させる際に高度の柔軟性を提供する。ロボットがタスクの全ての個々の構成要素またはそれに関連するアイテム（例えば、要求されるロボットの動きに対応する基本タスク、操作される物体等）を教示されると、ロボットは、自律的に動作することができる。そのアクションは、操作するように訓練された物体を認めるとトリガされる。ロボットが、コンピュータビジョンを使用して、ロボットアームおよびハンドを物体の正確な場所に移動させるため、概して、ロボットおよび物体の位置が変動する世界で動作可能である。さらに、ロボットは、ロボットが認識する物体にのみ作用するため、そのタスクに関係ない物体と、相互作用するように訓練された物体とを区別することによって、物体が絶えず行き来している雑然とした環境でも動作可能である。ロボットはまた、その動作を環境内の物体のパラメータに合わせることができる。例えば、そのタスクが、コンベヤベルトから物体を取り上げることを伴うとき、ロボットは、可動ベルト上の物体を視覚的に追跡し、コンベヤベルトの速さ、その向き、および動作している方向からさえ独立して、物体を正確に握持する。
【００８０】
さらに、ロボットは、特定の状況に応答するように訓練されているため、動作の特定のシーケンスに盲目的に追従する必要はない。ロボットは、外部センサ１０４を介して、その周囲の世界を継続的に感知し、インスタンス化された挙動と関連付けられた事前条件および事後条件の評価に基づいて、適宜、アクションを適応させる。例えば、人が間に入り、ロボットの把持部から物体を除去する場合、ロボットは、その変化を感知し、物体が存在する場合でも、移動を継続しない。代わりに、例えば、握持するための新しい物体を見つけることが予期される場所に移動させることによって、空の把持部に条件付けられたタスクの一部に戻る。本明細書によるシステムおよび方法は、当然ながら、ロボットのタスクの実行をこのように制約することを所望する場合、必ずしも、特定の動作順序を規定することを除外するわけではない。いくつかの実施形態では、ユーザは、個々の基本タスクを教示するときにシーケンスを順守することによって、または基本タスクが訓練の間任意の順序で教示される場合にユーザインターフェースを介して順序を直接入力することによって（例えば、画面上に表示される基本タスクの番号付リストを調節することによって）のいずれかによって、訓練の間、基本タスクのシーケンスを規定する機会を有する。代替として、複合タスクを構成するステップの順序は、複合タスクのプロトタイプにハードコードされてもよい。
【００８１】
ロボット制御システムはまた、内蔵エラーチェック、ならびに、多くの可能性として考えられる検出可能エラーから回復するためのプログラムされた方法を有し、訓練者がロボットにエラー条件に対処する方法を示す必要性を排除する。訓練者が、訓練における特定のエラーハンドリングプロシージャ（ある状況下で行うことを所望し得る）を含まない限り、ロボットは、そのデフォルトを使用し、安全に動作し続け、かつエラーから回復することが可能である。
【００８２】
本明細書で採用される用語および表現は、限定ではなく、説明の用語および表現として使用され、そのような用語および表現の使用において、図示および説明される特徴またはその一部の任意の均等物の除外を意図するものではない。加えて、本発明の特定の実施形態が説明されたが、本明細書に開示される概念を組み込む他の実施形態も、本発明の精神および範囲から逸脱することなく、使用されてもよいことは、当業者に明白となる。特に、本発明の実施形態は、本明細書に説明される特徴の全てを含むことも、利点の全てを有することも必要はない。むしろ、特徴および利点の任意のサブセットまたは組み合わせを保有してもよい。故に、説明される実施形態は、あらゆる観点において、制限ではなく、例証にすぎないものと見なされるものとする。
【図１】
2015520040.tif 000003
【図２Ａ】
2015520040.tif 000004
【図２Ｂ】
2015520040.tif 000005
【図２Ｃ】
2015520040.tif 000006
【図３】
2015520040.tif 000007
【図４】
2015520040.tif 000008
【図５】
2015520040.tif 000009
【図６】
2015520040.tif 000010
【図７】
2015520040.tif 000011
【国際調査報告】
2015520040.tif 000012
2015520040.tif 000013
2015520040.tif 000014
2015520040.tif 000015
2015520040.tif 000016