(57)【特許請求の範囲】
【請求項１】
１つ以上のプロセッサによって実装される方法であって、
ロボットに対する現在のモデルへの入力としてセンサデータを適用することであって、前記センサデータが、前記ロボットの１つ以上のセンサに基づいて生成される、前記センサデータを適用することと、
前記センサデータに基づいて前記現在のモデルの上で出力を生成することと、
前記生成された出力に基づいて、前記ロボットの環境内のオブジェクトに向けられたロボットアクションに対する１つ以上のパラメータを判定することであって、前記１つ以上のパラメータが、前記オブジェクトの分類を示す、前記１つ以上のパラメータを判定することと、
前記１つ以上のパラメータに基づいた前記ロボットによる前記ロボットアクションの実行中または実行後に、前記ロボットアクションを修正するユーザインターフェース入力を受信することと、
前記ロボットアクションに対する前記１つ以上のパラメータに基づいて、および、前記ロボットに対する、前記現在のモデルとは異なる１つ以上の追加のモデルを用いて判定された１つ以上の追加のパラメータに基づいて前記ロボットアクションの実行を開始することと、
前記ロボットアクションを修正する前記ユーザインターフェース入力を受信することに応じて、
前記ロボットアクションに関連するセンサデータの複数のインスタンスを含む修正インスタンスを生成することと、
ネットワークインターフェースを介して、１つ以上のリモートコンピューティングデバイスに前記修正インスタンスを送信することと、
前記修正インスタンスを送信することに続いて、前記現在のモデルの改訂されたバージョンを受信することであって、前記現在のモデルの前記改訂されたバージョンが、
前記修正インスタンスと、
追加のロボットからの追加の修正インスタンスであって、前記追加のロボットのそれぞれによって実行される追加のロボットアクションに関連する追加のセンサデータの複数のインスタンスに基づく前記追加の修正インスタンスと、に基づいてトレーニングされる、前記現在のモデルの改訂されたバージョンを受信することと、
前記現在のモデルの前記改訂されたバージョンを受信することに応じて、前記ロボットの追加のロボットアクションに対する追加のパラメータを判定する際に、前記現在のモデルの代わりに前記現在のモデルの前記改訂されたバージョンを使用することと、
を含む、方法。
【請求項２】
前記修正インスタンスに含まれる前記センサデータの前記複数のインスタンスが、視覚センサデータの複数のインスタンスを含み、前記修正インスタンスを生成することが、
１回目に第１の姿勢から第１のインスタンスが前記オブジェクトを捕捉することを判定することに基づいて、前記修正インスタンスにおいて、前記視覚センサデータの前記第１のインスタンスを含むことと、
２回目に第２の姿勢から第２のインスタンスが前記オブジェクトを捕捉することを判定することに基づいて、前記修正インスタンスにおいて、前記視覚センサデータの前記第２のインスタンスを含むことと、を含む、請求項１に記載の方法。
【請求項３】
前記修正インスタンスを生成することが、
前記複数のインスタンスが前記オブジェクトの識別子を含むことを判定することに基づいて、前記視覚センサデータの前記複数のインスタンスが、前記ロボットアクションに関連していると判定することを含む、請求項２に記載の方法。
【請求項４】
前記視覚センサデータの前記複数のインスタンスが、前記ロボットアクションに対する前記１つ以上のパラメータを判定する際に、前記現在のモデルに適用される前記センサデータに含まれている、請求項２に記載の方法。
【請求項５】
前記修正インスタンスを生成することが、前記ユーザインターフェース入力に基づくとともに前記オブジェクトに対する代替分類を特定する修正情報をさらに含むように、前記修正インスタンスを生成することを含む、請求項１に記載の方法。
【請求項６】
前記修正インスタンスを生成することが、
前記ロボットアクションに対する前記１つ以上のパラメータを判定する際に使用されている前記現在のモデルに基づく前記現在のモデルの指標をさらに含むように、前記修正インスタンスを生成することを含む、請求項１に記載の方法。
【請求項７】
前記修正インスタンスを生成することが、
前記ロボットアクションに対する前記１つ以上のパラメータをさらに含むように、前記修正インスタンスを生成することを含む、請求項１に記載の方法。
【請求項８】
前記ユーザインターフェース入力が、自然言語入力である、請求項１に記載の方法。
【請求項９】
ロボットであって、
センサと、
前記ロボットの現在のモデルおよび命令を格納するメモリと、
前記メモリに格納された前記命令を実行する１つ以上のプロセッサと、
を含み、前記１つ以上のプロセッサが実行する方法が、
前記ロボットに対する前記現在のモデルへの入力としてセンサデータを適用することであって、前記センサデータが、前記ロボットの前記センサに基づいて生成される、前記センサデータを適用することと、
前記センサデータに基づいて前記現在のモデルの上で出力を生成することと、
前記生成された出力に基づいて、前記ロボットの環境内のオブジェクトに向けられたロボットアクションに対する１つ以上のパラメータを判定することであって、前記１つ以上のパラメータが、前記オブジェクトの分類を示す、前記１つ以上のパラメータを判定することと、
前記１つ以上のパラメータに基づいた前記ロボットによる前記ロボットアクションの実行中または実行後に、前記ロボットアクションを修正するユーザインターフェース入力を受信することと、
前記ロボットアクションに対する前記１つ以上のパラメータに基づいて、および、前記ロボットに対する、前記現在のモデルとは異なる１つ以上の追加のモデルを用いて判定された１つ以上の追加のパラメータに基づいて前記ロボットアクションの実行を開始することと、
前記ロボットアクションを修正する前記ユーザインターフェース入力を受信することに応じて、
前記ロボットアクションに関連するセンサデータの複数のインスタンスを含む修正インスタンスを生成することと、
ネットワークインターフェースを介して、１つ以上のリモートコンピューティングデバイスに前記修正インスタンスを送信することと、
前記修正インスタンスを送信することに続いて、前記現在のモデルの改訂されたバージョンを受信することであって、前記現在のモデルの前記改訂されたバージョンが、
前記修正インスタンスと、
追加のロボットからの追加の修正インスタンスであって、前記追加のロボットのそれぞれによって実行される追加のロボットアクションに関連する追加のセンサデータの複数のインスタンスに基づく前記追加の修正インスタンスと、に基づいてトレーニングされる、前記現在のモデルの改訂されたバージョンを受信することと、
前記現在のモデルの前記改訂されたバージョンを受信することに応じて、前記ロボットの追加のロボットアクションに対する追加のパラメータを判定する際に、前記現在のモデルの代わりに前記現在のモデルの前記改訂されたバージョンを使用することと、
を含む、ロボット。
【請求項１０】
前記修正インスタンスに含まれる前記センサデータの前記複数のインスタンスが、視覚センサデータの複数のインスタンスを含み、前記修正インスタンスを生成することが、
１回目に第１の姿勢から第１のインスタンスが前記オブジェクトを捕捉することを判定することに基づいて、前記修正インスタンスにおいて、前記視覚センサデータの前記第１のインスタンスを含むことと、
２回目に第２の姿勢から第２のインスタンスが前記オブジェクトを捕捉することを判定することに基づいて、前記修正インスタンスにおいて、前記視覚センサデータの前記第２のインスタンスを含むことと、を含む、請求項９に記載のロボット。
【請求項１１】
前記修正インスタンスを生成することが、
前記複数のインスタンスが前記オブジェクトの識別子を含むことを判定することに基づいて、前記視覚センサデータの前記複数のインスタンスが、前記ロボットアクションに関連していると判定することを含む、請求項１０に記載のロボット。
【請求項１２】
前記視覚センサデータの前記複数のインスタンスが、前記ロボットアクションに対する前記１つ以上のパラメータを判定する際に、前記現在のモデルに適用される前記センサデータに含まれている、請求項１０に記載のロボット。
【請求項１３】
前記修正インスタンスを生成することが、前記ユーザインターフェース入力に基づくとともに前記オブジェクトに対する代替分類を特定する修正情報をさらに含むように、前記修正インスタンスを生成することを含む、請求項９に記載のロボット。
【請求項１４】
前記修正インスタンスを生成することが、
前記ロボットアクションに対する前記１つ以上のパラメータを判定する際に使用されている前記現在のモデルに基づく前記現在のモデルの指標をさらに含むように、前記修正インスタンスを生成することを含む、請求項９に記載のロボット。
【請求項１５】
前記修正インスタンスを生成することが、
前記ロボットアクションに対する前記１つ以上のパラメータをさらに含むように、前記修正インスタンスを生成することを含む、請求項９に記載のロボット。
【請求項１６】
前記ユーザインターフェース入力が、自然言語入力である、請求項９に記載のロボット。
【発明の詳細な説明】
【背景技術】
【０００１】
購入して使用するロボットは、様々なアクションを実行することができる可能性がある。しかしながら、状況によっては、ロボットが依然としていくつかのアクションを不正確に実行する、および／またはいくつかのアクションを実行することができない場合がある。そのような発生は、アクションを実行する際にロボットが利用するモデル（複数可）の精度および／または堅牢性の欠如、ロボットが動作する様々なおよび／または動的な環境などのような様々な要因に起因する可能性がある。さらに、アクションの不正確な実行のうちの多くの発生に対して、ロボット自体が不正確な実行を認識することができない場合がある。例えば、ロボットの制御プロセスは、実際には実行が不正確であるにもかかわらず、アクションが正確に実行されたとみなす場合がある。
【発明の概要】
【０００２】
本開示は、ロボットアクションへの人間の修正を判定および利用するための方法、装置、およびコンピュータ可読媒体（一時的および非一時的）を対象とする。いくつかの実装形態では、ロボットによって実行されるアクションの人間の修正の判定に応じて、ロボットの１つ以上のセンサによって捕捉され、修正されたアクションに関連するセンサデータを含む修正インスタンスが生成される。これらの実装形態のいくつかでは、修正インスタンスは、人間の修正に基づく（および正確なパラメータ（複数可）を示す）アクションおよび／または修正情報を実行する際に利用された判定された不正確なパラメータ（複数可）をさらに含む。修正インスタンスは、アクションの実行に利用される不正確なパラメータ（複数可）の判定に使用されるモデルに対応するニューラルネットワークモデル（複数可）などの、１つ以上のモデル（複数可）のトレーニングのためのトレーニング例（複数可）を生成するために利用することができる。様々な実装形態において、モデル（複数可）のトレーニングは複数のロボットから受信した修正インスタンスに基づいている。修正インスタンスを生成および提供する複数のロボットは、異なる地理的場所および／または環境に物理的に位置付けすることができ、および／または互いに異なることができる（例えば、ハードウェア的におよび／またはソフトウェア的に異なる）。
【０００３】
モデルの改訂されたバージョンが生成されると、複数のロボットからの修正インスタンスに基づくトレーニングを通じて、その後、モデルの改訂されたバージョンを複数のロボットの１つ以上によって利用することができる。例えば、複数のロボットのうちの１つは、修正インスタンスのうちの１つがそのロボットによって生成されたときに利用されていた以前の対応するバージョンの代わりに、改訂されたバージョンを利用し得る。例えば、改訂されたバージョンをそのロボットに送信することができ、そのロボットは以前の局所的に保存されたバージョンを改訂されたバージョンと置き換えることができる。また、例えば、改訂されたバージョンは、様々なタスクを実行する際にロボットが利用する「クラウドベース」システムまたは他のリモートシステムの以前のバージョンを置き換えることができる。
【０００４】
いくつかの実装形態では、ロボットの「局所的実行」は、追加的または代替的に、ロボットによって実行されるアクションの人間の修正の判定に応じて変更され得る。例えば、人間の修正をアクションの実行中に受信することができ、ロボットは実行中にアクションを変更することができる。また、例えば、人間の修正の判定に応じて、１つ以上の「下流」アクションを改変および／または生成することができる。追加の例として、不正確に判定されたパラメータは、正確なパラメータで置き換えることができ、正確なパラメータは、人間の修正に基づいて判定される。さらに別の例として、ロボットによって利用される１つ以上の局所的ニューラルネットワークモデルおよび／または他の局所的モデルを、人間の修正に基づいて直接適合させることができる。
【０００５】
いくつかの実装形態では、ロボットアクションの人間の修正を判定することは、アクションの実行（すなわち、アクションの実行前、実行中、または実行後）に関連して受信されたユーザインターフェース入力に基づいている。ユーザインターフェース入力は、ロボットの１つ以上センサ（例えば、ロボットのマイクロフォン、人間のタッチおよび／またはロボットの人間の操作を判定するために利用することができるセンサ（複数可））を介して、および／またはロボットとは分離されているが、ロボットと通信しているクライアントデバイス（例えば、タブレットまたはスマートフォンを介して受信される音声またはタイプされたユーザインターフェース入力）を介して受信することができる。
【０００６】
ユーザインターフェース入力が修正を示すと判定することは、ユーザインターフェース入力自体の分析に基づくことができ、任意選択的に実行されているアクションのパラメータ（複数可）に基づくことができる。例えば、それは、修正（例えば、「いいえ」、「停止」、「ではない」）を示すユーザインターフェース入力内の１つ以上の用語または他の合図に基づくことができる。また、例えば、それは、追加的または代替的に、アクションの実行に利用されているパラメータ（複数可）へのユーザインターフェース入力に基づいて判定されたパラメータ（複数可）の比較に基づくことができる。例えば、ユーザインターフェース入力は、オブジェクトの分類が「帽子」であることを示し、一方、アクションは、オブジェクトに対して「ボウル」の不正確に判定された分類に基づいて実行されている、という矛盾を判定するために「帽子」と「ボウル」の比較を用いる。ユーザインターフェース入力が自然言語入力（例えば、音声入力または自由形式のタイプ入力）である場合、自然言語処理（ＮＬＰ）システムおよび／または他の構成要素を、そのようなユーザインターフェース入力が修正であると判定するのに任意選択的に利用し得る。
【０００７】
本明細書に開示される実装形態の一例として、ロボットが食器洗い機から食器をおろすタスクを実行していると仮定する。そうする場合、パラメータモジュール（複数可）は、ロボットの視覚センサ（例えば、単眼カメラ、ステレオカメラ、レーザスキャナ）からの視覚センサデータをニューラルネットワークモデル（複数可）に適用して、姿勢（位置と向き）および食器洗い機内のオブジェクトに対する分類を判定することができる。パラメータモジュールおよび／またはニューラルネットワークモデルは、ロボットに対して局所的であることができ、またはロボットとネットワーク通信するリモートコンピューティングデバイス（複数可）にあることもできる。ロボットが食器洗い機内の各オブジェクトを回収しているときに、ロボットは、判定された分類を示すユーザインターフェース出力を生成することができる。例えば、ロボットがプレートとして分類されたオブジェクトを回収しているときに、「プレートをつかんで片付ける」という可聴出力を（例えば、ロボットのスピーカを介して）提供することができる。さらに、ロボットがプレートとして分類されたオブジェクトを回収していて、「プレートをつかんで片付ける」という可聴出力を提供した後、ユーザが「それはプレートではなく、ボウルだ」と話していると仮定する。
【０００８】
音声出力はロボットのマイクロフォンで受信され、分析され（例えば、ＮＬＰシステムからの出力を利用して）、「プレート」分類が正確でなく、「ボウル」分類が代わりに正確な分類であることを示すことを判定することができる。「プレート」分類が不正確であると判定することに応じて、ロボットは修正インスタンスを生成して、修正インスタンスをリモートコンピューティングデバイスに送信することができる。修正インスタンスは、不正確に分類されたオブジェクトを捕捉し、視覚センサの複数の姿勢から不正確に分類されたオブジェクトをまとめて捕捉する、視覚センサデータの複数のインスタンスを含むように生成することができる。例えば、複数のインスタンスは、最近のセンサデータの「ログ」からのインスタンスを含むことができる。修正インスタンスは、任意選択的に、視覚センサデータ内のオブジェクトの判定を可能にするため、不正確に分類されたオブジェクトの識別子（例えば、オブジェクト検出中にオブジェクトに割り当てられた識別子）、不正確に判定された分類（「プレート」）の指標、および／または人間が示した正確な分類（「ボウル」）の指標、をさらに含むことができる。
【０００９】
リモートコンピューティングデバイスは、修正インスタンス、ならびに複数の追加のロボットからの修正インスタンスを利用して、オブジェクトを不正確に分類する際に利用されたモデルに対応するニューラルネットワークモデルのトレーニングのための（例えば、同じニューラルネットワークモデルの別のバージョンのさらなるトレーニングのための）トレーニング例を生成することができる。例えば、第１のトレーニング例は、修正インスタンスの視覚センサデータの第１のインスタンスに基づくトレーニング例入力、ならびに分類が「プレート」ではないことを示す、および／または分類が「ボウル」であることを示すトレーニング例の出力を含むことができる。トレーニング後、改訂されたニューラルネットワークモデル（修正インスタンスベースのトレーニングに基づいて改訂された）を提供して、オブジェクトを不正確に分類したニューラルネットワークモデルを置き換えることができる。
【００１０】
様々な実装形態において、本明細書で説明されるようなトレーニング例を生成するために修正インスタンスを利用することは、いわゆる「ハードネガティブ」トレーニング例の生成を可能にする。すなわち、トレーニング例は、トレーニング対象のニューラルネットワークモデルに基づいてなされた根底にある不正確な判定の結果である修正インスタンスに基づいて生成されるために、ハードネガティブである。言い換えると、実際には実行が不正確であるにもかかわらず、それらは、ロボットが正確なアクションとみなすものを実行するためにロボットによって利用された収集センサデータに基づいている。
【００１１】
いくつかの実装形態では、ロボットの「局所的実行」は、「プレート」分類が不正確であると判定することに応じて、および／または「ボウル」分類が正確であると判定することに応じて、追加的または代替的に変更され得る。一例として、ロボットは、判定（複数可）に基づいて（食器洗い機からの回収後）オブジェクトを配置するために以前に判定された場所を変更することができる。例えば、ロボットは、不正確な分類に基づいて、オブジェクトの場所を第１の「プレート」場所に配置することを計画している場合があり、オブジェクトが代わりに「ボウル」分類を持っているとの判定に基づいて、配置を別個の第２の「ボウル」場所へ調整してもよい。
【００１２】
実装形態の例が、それらの実装形態の一部の概要を提供する目的で、前の段落で提供されている。しかしながら、本明細書で説明される様々な実装形態は、１つ以上の点で提供された例とは異なることを理解されたい。
【００１３】
いくつかの実装形態では、ロボットの現在のモデルへの入力としてセンサデータを適用することを含む方法が提供され得る。センサデータは、ロボットの１つ以上のセンサに基づいて生成される。本方法は、センサデータに基づいて現在のモデルの上で出力を生成することと、生成された出力に基づいて、ロボットアクションに対する１つ以上のパラメータを判定することと、１つ以上のパラメータに基づいたロボットによるロボットアクションの実行中または実行後に、ロボットアクションを修正するユーザインターフェース入力を受信することと、をさらに含む。本方法は、ロボットアクションを修正するユーザインターフェース入力の受信に応答して修正インスタンスを生成することと、ネットワークインターフェースを介して、１つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することと、をさらに含む。修正インスタンスには、ロボットアクションに関連するセンサデータの複数のインスタンスが含まれる。本方法は、修正インスタンスの送信に続いて、現在のモデルの改訂されたバージョンを受信することをさらに含む。現在のモデルの受信した改訂されたバージョンは、修正インスタンスと追加のロボットからの追加修正インスタンスとに基づいてトレーニングされる。本方法は、現在のモデルの改訂されたバージョンの受信に応答して、ロボットの追加のロボットアクションに対する追加のパラメータを判定する際に現在のモデルの代わりに現在のモデルの改訂されたバージョンを使用することをさらに含む。
【００１４】
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの１つ以上を任意選択的に含み得る。
【００１５】
いくつかの実装形態では、修正インスタンスに含まれるセンサデータの複数のインスタンスは、１回目に第１の姿勢からオブジェクトを捕捉する視覚センサデータの第１のインスタンス、および２回目に第２の姿勢からオブジェクトを捕捉する視覚センサデータの第２のインスタンスを含む、視覚センサデータの複数のインスタンスを含む。これらの実装形態のいくつかのバージョンでは、修正インスタンスを生成することは、ロボットアクションへの複数のインスタンスの時間的近接度に基づいて、視覚センサデータの複数のインスタンスがロボットアクションに関連していると判定することを含む。これらの実装形態のいくつかの追加または代替バージョンでは、視覚センサデータの複数のインスタンスが、ロボットアクションに対する１つ以上のパラメータを判定する際に現在のニューラルネットワークモデルに適用されるセンサデータに含まれる。
【００１６】
いくつかの実装形態では、修正インスタンスを生成することは、ユーザインターフェース入力に基づく修正情報をさらに含むように修正インスタンスを生成することを含む。
【００１７】
いくつかの実装形態では、修正インスタンスを生成することは、ロボットアクションに対する１つ以上のパラメータを判定する際に使用される現在のモデルに基づく現在のモデルの指標をさらに含むように、修正インスタンスを生成することを含む。
【００１８】
いくつかの実装形態では、修正インスタンスを生成することは、ロボットアクションに対する１つ以上のパラメータをさらに含むように、修正インスタンスを生成することを含む。
【００１９】
いくつかの実装形態では、ユーザインターフェース入力は自然言語入力である。
【００２０】
いくつかの実装形態では、オブジェクトに向けられたアクションを実行するために、ロボットの運動中にユーザインターフェース入力を受信することと、ユーザインターフェース入力がオブジェクトに向けられたアクションへの修正を示していると判定することと、を含む方法が提供され得る。本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて修正インスタンスを生成することをさらに含む。生成された修正インスタンスは、各々がオブジェクトを捕捉する視覚センサデータの複数のインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。生成された修正インスタンスに含まれる視覚センサデータの複数のインスタンスは、１回目に第１の姿勢からオブジェクトを捕捉する第１のインスタンス、および２回目に第２の姿勢からオブジェクトを捕捉する第２のインスタンスを含む。本方法は、ネットワークインターフェースを介して、１つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することをさらに含む。１つ以上のリモートコンピューティングデバイスは、修正インスタンスを使用して、モデルをトレーニングするための複数のトレーニング例を生成する。
【００２１】
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの１つ以上を任意選択的に含み得る。
【００２２】
いくつかの実装形態では、モデルはニューラルネットワークモデルであり、本方法は、複数のトレーニング例、および追加のロボットからの追加の修正インスタンスからの追加のトレーニング例に基づいてニューラルネットワークモデルがトレーニングされた後、ネットワークインターフェースを介して、ニューラルネットワークモデルを受信することをさらに含む。
【００２３】
いくつかの実装形態では、修正インスタンスは、ユーザインターフェース入力に基づく修正情報をさらに含む。
【００２４】
いくつかの実装形態では、本方法は、ロボットにとって局所的な局所的モデルに基づいてオブジェクトの予測された分類を判定することをさらに含む。これらの実装形態のいくつかでは、ロボットによって実行されるアクションは、予測された分類に基づいて実行され、修正インスタンスを生成することは、オブジェクトの予測された分類をさらに含むように修正インスタンスを生成することを含む。
【００２５】
いくつかの実装形態では、本方法は、複数のトレーニング例を生成することをさらに含む。それらの実装形態のいくつかでは、複数のトレーニング例を生成することは、予測された分類が正確な分類ではないことを示すトレーニング例出力を含む否定的なトレーニング例を生成することを含む。
【００２６】
いくつかの実装形態では、本方法は、初期ユーザインターフェース入力を受信することと、初期ユーザインターフェース入力がオブジェクトを示すと判定することと、ロボット制御コマンドを生成して、初期ユーザインターフェース入力がオブジェクトを示すと判定することに応じて、オブジェクトに向けられたアクションを実行することと、をさらに含む。これらの実装形態のいくつかでは、修正インスタンスは、初期ユーザインターフェース入力に基づく修正情報をさらに含む。
【００２７】
いくつかの実装形態では、本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて、オブジェクトに向けられたアクションの実行を変更することをさらに含む。
【００２８】
いくつかの実装形態では、本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて、ユーザインターフェース入力に基づいて、オブジェクトに関連付けられた局所的に保存されたパラメータを調整することをさらに含む。
【００２９】
いくつかの実装形態では、ロボットの環境内のオブジェクトの分類を判定することと、ユーザによって提供された初期ユーザインターフェース入力を受信することと、初期ユーザインターフェース入力がオブジェクトの分類に適合すると判定することと、を含む方法が提供され得る。本方法は、初期ユーザインターフェース入力がオブジェクトの分類に適合すると判定することに応じて、制御コマンドをロボットの１つ以上のアクチュエータに提供して、オブジェクトに向けられたアクションを実行することをさらに含む。本方法は、オブジェクトに向けられたアクションの実行中に追加のユーザインターフェース入力を受信することと、追加のユーザインターフェース入力が、オブジェクトの判定された分類に適合しない相反するオブジェクトの分類を示すと判定することと、をさらに含む。本方法は、追加のユーザインターフェース入力が相反するオブジェクトの分類を示すと判定することに応じて、修正インスタンスを生成することをさらに含む。本方法は、ネットワークインターフェースを介して、１つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することをさらに含み、１つ以上のリモートコンピューティングデバイスは、修正インスタンスを使用してモデルをトレーニングするための少なくとも１つのトレーニング例を生成する。
【００３０】
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの１つ以上を任意選択的に含み得る。
【００３１】
いくつかの実装形態では、修正インスタンスは、オブジェクトを捕捉する視覚センサデータの少なくとも１つのインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。
【００３２】
いくつかの実装形態では、修正インスタンスは、各々がオブジェクトを捕捉する視覚センサデータの複数のインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。
【００３３】
他の実装形態は、上記の方法のうちの１つ以上などの方法を実行するためにプロセッサによって実行可能な命令を保存する非一時的コンピュータ可読記憶媒体を含み得る。さらに他の実装形態は、メモリおよびメモリに保存された命令を実施するように動作可能な１つ以上のプロセッサを含むシステム（例えば、ロボットおよび／または１つ以上の他の構成要素）を含んで、単独でまたは集合的に、上記の方法のうちの１つ以上などの方法を実行する１つ以上のモジュールまたはエンジンを実装し得る。
【００３４】
本明細書でより詳細に説明される前述の概念および追加の概念のすべての組み合わせは、本明細書で開示される主題の一部として企図されていることを理解されたい。例えば、本開示の最後に示される特許請求される主題のすべての組み合わせは、本明細書に開示される主題の一部であると企図されている。
【図面の簡単な説明】
【００３５】
【図１】本明細書で開示される実装形態が実装され得る例示的な環境を図示する。
【図２Ａ】ロボットアクションへの修正を提供する例を図示する。
【図２Ｂ】ロボットアクションへの修正を提供する例を図示する。
【図２Ｃ】ロボットアクションへの修正を提供する例を図示する。
【図３】本明細書で開示される実装形態による例示的な方法を図示するフローチャートである。
【図４】本明細書で開示される実装形態による、別の例示的な方法を図示するフローチャートである。
【図５】本明細書で開示される実装形態による、さらなる別の例示的な方法を図示するフローチャートである。
【図６】修正インスタンスに基づいてトレーニング例を生成し、トレーニング例を使用してニューラルネットワークモデルをトレーニングする一例を図示する。
【図７】ロボットの例示的なアーキテクチャを概略的に示す。
【図８】コンピュータシステムの例示的なアーキテクチャを概略的に示す。
【発明を実施するための形態】
【００３６】
図１は、本明細書で開示される実装形態が実装され得る例示的な環境を図示する。例示の環境は、ロボット１９０を含む。図１には特定のロボット１９０が図示されているが、静止した「ロボットアーム」、人型のロボット、動物型のロボット、１つ以上の車輪を介して移動する他のロボット（例えば、他の自己バランスロボット、非自己バランスロボット）、無人航空機（「ＵＡＶ」）、などを含む、追加および／または代替のロボットが利用されてもよい。
【００３７】
ロボット１９０は、対応する把持エンドエフェクタ１９６ａおよび１９６ｂを備えたロボットアーム１９４ａおよび１９４ｂを含み、これらは各々、２つの対向する作動可能部材を有するグリッパの形態をとる。ロボット１９０はまた、ロボット１９０の歩行運動のためにその対向する側に設けられた車輪１９７ａおよび１９７ｂを有する基部１９３を含む。基部１９３は、例えば、対応する車輪１９７ａおよび１９７ｂを駆動して、ロボット１９０の運動の所望の方向、速度、および／または加速を達成するための１つ以上のモータを含み得る。
【００３８】
ロボット１９０は、視覚センサ１９９も含む。視覚センサ１９９は、例えば、ステレオグラフィックカメラ、モノグラフィックカメラ、または３Ｄレーザスキャナであってもよい。いくつかの実装形態では、ステレオグラフィックカメラは、各々異なる視座にある２つ以上のセンサ（例えば、電荷結合素子（ＣＣＤ））を含む。所与のインスタンスで２つのセンサによって生成されたセンサデータに基づいて、３次元（「３Ｄ」）ポイントクラウドデータである視覚センサデータが所与のインスタンスに対して生成され得、３Ｄポイントクラウドの３Ｄポイントの各々は、対応するオブジェクトの表面の３Ｄ座標を定義する。いくつかの他の実装形態では、ステレオグラフィックカメラは、２つの異なる視座からセンサデータを効果的に捕捉するために利用される単一のセンサと１つ以上のミラーのみを含み得る。モノグラフィックカメラは、単一のセンサを含むことができ、２次元（「２Ｄ」）視覚センサデータを捕捉する。３Ｄレーザスキャナは、光を放射する１つ以上のレーザと、放射された光の反射に関連する視覚センサデータを生成する１つ以上のセンサとを含む。３Ｄレーザスキャナから生成された視覚センサデータは、３Ｄポイントクラウドデータであり得る。３Ｄレーザスキャナは、例えば、飛行時間型３Ｄレーザスキャナまたは三角測量ベースの３Ｄレーザスキャナであってもよく、位置感応検出器（ＰＳＤ）または他の光学位置センサを含んでもよい。
【００３９】
本明細書で説明されるように、ロボット１９０は、少なくとも一部の時間で自律的に動作し、様々なアクションの実行においてそのアクチュエータを制御し得る。例えば、様々なアクションを実行する際に、ロボット１９０の１つ以上のプロセッサは、車輪１９７ａおよび／もしくは１９７ｂ、ロボットアーム１９４ａおよび／もしくは１９４ｂ、ならびに／またはエンドエフェクタ１９６ａおよび／もしくは１９６ｂに関連付けられたアクチュエータに制御コマンドを提供し得る。
【００４０】
また、図１に図示されているのは、ロボット１９０による様々なアクションの実行の際に、ロボット１９０によって実行される様々なアクションに対する人間の修正を判定する際に、および／またはこれらの様々なアクションに対する人間の修正を判定することに応じて修正インスタンスを生成および送信する際に、利用される様々な構成要素１０３である。
【００４１】
構成要素１０３は、図１ではロボット１９０とは別個に図示されているが、接続要素１０２は、これらの構成要素１０３を、ロボット１９０上に実装することができること、および／またはロボット１９０と（例えば、ローカルエリアネットワークおよび／またはワイドエリアネットワークを介して）ネットワーク通信できることを示す。例えば、いくつかの実装形態では、構成要素１０３のうちの１つ以上（例えば、すべて）が、ロボット１９０に対し局所的なハードウェアによって実装される。例えば、アクションシステム１２０、修正インスタンスエンジン１３０、および／またはロボットデータエンジン１３５は、ロボット１９０の１つ以上のプロセッサによって実装されてもよい。また、例えば、ニューラルネットワークモデル１５０Ａ、ニューラルネットワークモデル１５０Ｎ、および／または生成されたロボットデータデータベース１５２は、ロボット１９０の１つ以上のハードドライブまたは他のコンピュータ可読媒体に保存されてもよい。別の例として、いくつかの実装形態では、構成要素１０３のうちの１つ以上が、ロボット１９０から離れた１つ以上のコンピューティングデバイス上に実装される。例えば、パラメータモジュール１２１Ａ〜Ｎおよび／またはニューラルネットワークモデル１５０Ａ〜Ｎのうちの１つ以上が、高性能コンピューティングデバイスのリモートクラスタによって「クラウドで」実装されてもよく、ロボット１９０および／または他のロボット（例えば、追加のロボット１９２）のパラメータ判定を処理してもよい。さらに別の例として、パラメータモジュール１２１Ａ〜Ｎおよび／またはニューラルネットワークモデル１５０Ａ〜Ｎのうちの１つ以上が、ロボット１９０とは別個であるが地理的にロボットに近位（例えば、同じ建物内）の１つ以上のコンピューティングデバイスによって実装されてもよい。
【００４２】
構成要素１０３は、ロボット１９０のロボットセンサによって生成されたロボットセンサデータおよび／またはロボット１９０の構成要素によって生成された他のデータを処理するロボットデータエンジン１３５を含む。例えば、ロボットデータエンジン１３５は、ロボットの様々なセンサからロボットセンサデータを受信し、ロボットセンサデータにタイムスタンプを付け、タイムスタンプ付きロボットセンサデータをアクションシステム１２０に提供してもよい。ロボットセンサデータは、例えば、視覚センサ１９９からの視覚センサデータ、ロボットのアクチュエータの位置センサからの位置センサデータ、ロボットの加速度計（複数可））からの加速度計データ、などを含み得る。ロボットデータエンジン１３５は、生成されたロボットデータデータベース１５２内に、ロボットセンサデータの少なくとも一部のログをさらに保存してもよい。例えば、ロボットデータエンジン１３５は、空間、時間、および／または他の要因に基づいてバッファからデータをクリアして、「最近の」センサデータのバッファを保存してもよい。ロボットデータエンジン１３５は、生成されたロボットデータデータベース１５２内に、アクションシステム１２０によって判定されたパラメータおよび／または他の特徴、ロボット１９０のアクチュエータに提供された制御コマンド、等、などのロボット１９０によって生成された様々な他のデータをさらに保存してもよい。
【００４３】
アクションシステム１２０は、様々なロボットアクションを実行する際に、ロボットデータエンジン１３５によって提供されるロボットセンサデータを使用する。アクションは、オブジェクトのピックアップ、オブジェクトの「ピッキングおよび配置」、または場所へのナビゲーションおよび／もしくは食器洗い機からの食器おろしなどの比較的より複雑なアクションの収集、定義されたエリアからすべての「おもちゃ」のピックアップ、テーブルからすべてのオブジェクトをクリア、テーブルから特定のタイプ（複数可）のオブジェクトのみをクリア、建物の複数の部屋から特定のタイプのオブジェクトの回収、等、などのアクションを含み得る。アクションシステム１２０は、様々な合図に応じてロボットアクションを実行し得る。例えば、アクションシステム１２０は、人間によって提供されるユーザインターフェース入力に応じていくつかのロボットアクションを実行することができる（例えば、音声入力に応じて「オンデマンド」タスクを実行する）。他の例として、アクションシステム１２０は、スケジュール（例えば、毎週平日の朝）に基づいて、および／または環境条件（例えば、「乱雑」なときにエリアからアイテムを取り除く）に基づいて、いくつかのアクションを追加的または代替的に提供し得る。
【００４４】
アクションシステム１２０は、アクションの実行において様々なモジュールを利用することができ、その例が図１に図示されている。アクションシステム１２０のパラメータモジュール１２１Ａ〜Ｎは、アクションを実施する方法を判定する際に計画モジュール１２２によって使用される様々なパラメータを判定する。例えば、パラメータモジュール１２１Ａ〜Ｎは、ロボット１９０の環境でのオブジェクトの姿勢および／または部類を示すパラメータ、ロボット１９０の環境でオブジェクトを把持する方法を示すパラメータ（例えば、把持エンドエフェクタ１９６ａおよび／または１９６ｂの把持姿勢を示すパラメータ）、ロボット１９０の環境でのオブジェクトの重量、材料、および／または他の物理的特性を示すパラメータ、等を判定することができる。計画モジュール１２２は、アクションを実施する方法を判定する際にそのようなパラメータを利用することができる。例えば、テーブルをクリアする際に、計画モジュール１２２は、判定されたオブジェクトの姿勢および／または分類を使用して、「テーブル上」にあるオブジェクトを判定することができ、把持パラメータを利用して、テーブルからオブジェクトを取り除く際にオブジェクトを把持する方法を判定することができる。
【００４５】
コマンドモジュール１２３は、ロボット１９０のアクチュエータに提供する制御コマンドを生成し、計画モジュール１２２によって判定されたアクションを実現する。例えば、計画モジュール１２２は、アクションを実行するための経路および他のより高いレベルの運動を生成するより高いレベルのプランナであることができ、コマンドモジュール１２３は、リアルタイム制御コマンドを生成し、ロボット１９０のアクチュエータに提供してこれらのより高いレベルの運動を実現するリアルタイムモジュールとすることができる。
【００４６】
２つのパラメータモジュール１２１Ａおよび１２１Ｎが図１に示されており、対応するパラメータを生成する際に、各々が対応するニューラルネットワークモデル１５０Ａ、１５０Ｎを利用する。パラメータモジュール１２１Ａと１２１Ｎとの間の省略記号によって示されるように、追加のパラメータモジュールが提供され得ることを理解されたい。さらに、これらの追加のパラメータモジュールの１つ以上は、ニューラルネットワークモデル１５０Ａと１５０Ｎの間の省略記号によって示されるように、対応するニューラルネットワークモデルを任意選択的に利用し得る。パラメータモジュール１２１Ａおよび１２１Ｎの各々は、対応するニューラルネットワークモデル１５０Ａおよび１５０Ｎを使用して、アクションシステム１２０による利用のための１つ以上のパラメータを生成する。
【００４７】
一例として、パラメータモジュール１２１Ａは、ニューラルネットワークモデル１５０Ａを利用して、オブジェクト認識を効果的に実行することができる。例えば、パラメータモジュール１２１Ａは、視覚センサデータ（ロボットデータエンジン１３５により提供された）のインスタンスをニューラルネットワークモデル１５０Ａへの入力として適用し、入力に基づいてモデル１５０Ａの上で、視覚センサデータのそのインスタンスによって捕捉された１つ以上のオブジェクトの姿勢（複数可）を示す出力を生成することができる。これは、視覚センサデータの複数のインスタンスの各々に対して繰り返し実行され、パラメータモジュール１２１Ａがロボット環境内の複数のオブジェクトの各々の姿勢を判定することを可能にし、パラメータモジュール１２１Ａがロボットの環境内のオブジェクトの最新の時空間「目録」を維持することを効果的に可能にする。
【００４８】
別の例として、パラメータモジュール１２１Ｎは、パラメータモジュール１２１Ａによって認識されたオブジェクトのオブジェクト分類を効果的に実行することができる。例えば、オブジェクトの分類を判定するために、パラメータモジュール１２１Ｎは、視覚センサデータ、およびオブジェクトの姿勢（パラメータモジュール１２１Ａによって判定された）をニューラルネットワークモデル１５０Ｎへの入力として適用することができ、そして、入力に基づいてモデル１５０Ａの上で、オブジェクトの可能性のある分類（複数可）を示す出力を生成する。これを複数のオブジェクトの各々に対して実行して、複数のオブジェクトの各々の分類を判定し得る。いくつかの実装形態では、パラメータモジュール１２１Ｎは、分類の異なるグループを判定するように各々トレーニングされた、複数のニューラルネットワークモデルを任意選択的に利用し得る。
【００４９】
ニューラルネットワークモデルおよびパラメータモジュールの特定の例が前の段落で提供されているが、追加および／または代替のニューラルネットワークモデルおよび／またはパラメータモジュールが提供され得ることを理解されたい。例えば、追加のパラメータモジュールが、視覚センサデータおよび／または他のデータ（例えば、他のパラメータモジュール（複数可）のパラメータ（複数可））を、対応するトレーニングされたニューラルネットワークモデルへの入力として適用して、入力に基づいてモデルの上で、視覚センサデータによって捕捉されたオブジェクトを把持する方法を示す把持パラメータを生成してもよい。別の例として、パラメータモジュールは、単一のニューラルネットワークモデルを利用してオブジェクト認識とオブジェクト分類の両方を実行し得る。
【００５０】
アクションシステム１２０はまた、ＵＩ出力モジュール１２５を含む。ＵＩ出力モジュール１２５は、ユーザインターフェース出力を生成して、ロボット１９０によるアクションの実行中に提供することができる。提供されるユーザインターフェース出力は、アクションの実行を促進するロボット１９０の運動に加えて、パラメータモジュール１２１Ａ〜Ｎによって判定される１つ以上のパラメータの知覚可能な指標を提供する。例えば、ユーザインターフェース出力は、ロボット１９０のスピーカを介して提供される可聴出力であってもよく、可聴出力は、ロボット１９０によって作用される（または作用されることになる）オブジェクトの判定されたパラメータを「話す」。例えば、ロボット１９０が、パラメータモジュール１２１Ａ〜Ｎのうちの１つによって「プレート」として分類されたオブジェクトをピックアップしているとき、ロボット１９０は、「プレートをピックアップしている」という可聴出力を生成し得る。他の実装形態では、ＵＩ出力モジュール１２５は、視覚的および／または他の非可聴ユーザインターフェース出力を追加的または代替的に提供してもよい。オブジェクトの判定されたパラメータを示すユーザインターフェース出力を提供することは、ロボット１９０の環境での人間によるその知覚を可能にする。ユーザインターフェース出力の知覚は、それが不正確である場合、人間が認識することを可能にし、もしそうであれば、本明細書で説明するような修正を提供する。
【００５１】
アクションシステム１２０はまた、ユーザインターフェース入力を受信するＵＩ入力モジュール１２４を含む。例えば、ＵＩ入力モジュール１２４は、ロボット１９０のマイクロフォンを介して提供される音声ユーザインターフェース入力、またはＵＩ入力モジュール１２４と通信するクライアントデバイス１０６によって提供されるユーザインターフェース入力を受信することができる。いくつかの実装形態では、ロボット１９０の任意のマイクロフォンに関連付けられたハードウェアは、話し言葉の「ホットワード」（例えが、「ロボットさん」）、ハードウェアボタンの選択（例えば、ロボットをオン）、仮想ボタンの選択（例えば、クライアントデバイス１０６上に提示された）、等のような特定の先行入力に応じて人間の修正を「能動的に聞いている」だけの場合がある。
【００５２】
クライアントデバイス１０６によって提供されるユーザインターフェース入力は、クライアントデバイス１０６の入力デバイス（複数可）（例えば、クライアントデバイス１０６のマイクロフォンおよび／または仮想あるいはハードウェアキーボード）とのユーザ対話に応答して提供され、任意選択的にクライアントデバイス１０６および／または他の構成要素によって前処理されてもよい（例えば、音声入力をテキスト入力に変換することによって前処理される）。いくつかの実装形態では、ＵＩ入力モジュール１２４は、受信したユーザインターフェース入力に基づいてアクションシステム１２０によって使用するための１つ以上のパラメータを生成することができる。例えば、「テーブルをクリア」という受信したユーザインターフェース入力に対して、ＵＩ入力モジュール１２４は、入力を処理して、ロボット１９０の環境内の「テーブル」オブジェクト上にあるすべてのオブジェクトを取り除くために、ロボット１９０によって実行されるべきアクションを示すパラメータを判定することができる。ＵＩ入力モジュール１２４によって判定された任意のパラメータは、計画モジュール１２２に提供することができる。ＵＩ入力モジュール１２４は、受信したユーザインターフェース入力からパラメータを判定する際に、ＮＬＰシステム１３３および／または１つ以上の他の構成要素と対話することができる。
【００５３】
ＵＩ入力モジュール１２４は、追加的または代替的に、修正インスタンスエンジン１３０と連携して働くことができる。修正インスタンスエンジン１３０は、受信したユーザインターフェース入力がロボットアクションへの修正を示すかどうかを判定する。そうである場合、修正インスタンスエンジン１３０は、対応する修正インスタンスを生成して、修正インスタンスをネットワーク１０１を介して、収集エンジン１４０に送信する。この様態において、様々な実装形態において、修正インスタンスエンジン１３０は、受信したユーザインターフェース入力がロボットアクションへの修正を示すときにのみ修正インスタンスを送信し得る。
【００５４】
修正インスタンスエンジン１３０は、受信したユーザインターフェース入力がロボットアクションへの修正を示すことを判定する際に様々な手法を利用することができる。いくつかの実装形態では、受信したユーザインターフェース入力が自然言語入力（例えば、ロボット１９０のマイクロフォンを介して受信された、あるいはクライアントデバイス１０６を介して受信された）である場合、修正インスタンスエンジン１３０は、自然言語入力の意味論的および／または他の自然言語処理に基づいてそれが修正を示すと判定することができる。修正インスタンスエンジン１３０は、任意選択的に、自然言語入力の処理においてＮＬＰシステム１３３または他の外部リソース（複数可）と（例えば、インターネットまたは他のネットワーク（複数可）を介して）対話し得る。ＮＬＰシステム１３３は、自然言語入力を処理して、自然言語入力の様々な注釈を提供することができる。例えば、ＮＬＰシステム１３３は、センチメント注釈（例えば、センチメント分類子を使用して）、エンティティ注釈（含まれるエンティティを一般的および／または具体的に注釈する）、自然言語入力の完全な意味解釈を提供する注釈、等を提供することができる。
【００５５】
いくつかの実装形態では、修正インスタンスエンジン１３０は、入力と、アクションの実行においてアクションシステム１２０によって使用されるパラメータとの比較に基づいて、ユーザインターフェース入力がアクションに対する修正を示すと判定する。例えば、「それはボウルです」という自然言語入力が受信され、一方、ロボット１９０は、パラメータモジュール１２１Ｎが「カップ」であると判定した環境オブジェクトと相互作用していると仮定する。修正インスタンスエンジン１３０は、自然言語入力によって示された「ボウル」分類とパラメータモジュール１２１Ｎによって判定された「カップ」分類との間の矛盾に基づいて、ユーザインターフェース入力がアクションに対する修正を示すと判定し得る。本明細書で説明されるように、いくつかの実装形態では、ＵＩ出力モジュール１２５が、環境オブジェクトとの相互作用中に可聴または他のユーザインターフェース出力を提供してもよく、「それはボウルです」というユーザインターフェース入力を提供するように人間を促してもよい。
【００５６】
いくつかの実装形態では、修正インスタンスエンジン１３０は、自然言語ユーザインターフェース入力ではない使用インターフェース入力に基づいてロボットアクションへの修正を判定する。例えば、ユーザインターフェース入力は、ユーザがロボット１９０の「エラー」ボタンを作動させること、ユーザがロボット１９０を「つかむ」こと（例えば、「外部」タッチ感知センサおよび／または力トルクまたは他の「内部」センサ（複数可）に基づいて検知されて）、ユーザがクライアントデバイス１０６を介してグラフィカルユーザインターフェースと対話すること（例えば、ユーザがロボット１９０の状態を監視し、概しておよび／または具体的にエラーを報告することを可能にするインターフェース）に基づくことができる。
【００５７】
修正の判定に応じて修正インスタンスエンジン１３０によって生成された修正インスタンスは、ロボットの１つ以上のセンサによって捕捉され、修正されたアクションに関連する、センサデータを含むことができる。例えば、修正インスタンスは、視覚センサデータ、ロボット位置センサデータ、ならびに／または修正発生の発生時および／もしくは発生前の他のデータ（例えば、過去Ｘ秒間のデータ）を含むことができる。また、例えば、修正インスタンスエンジン１３０は、不正確なアクションの焦点であるオブジェクト（複数可）を捕捉するインスタンスの判定に基づいて、修正インスタンス内に視覚センサデータのインスタンスを含むことができる。いくつかの実装形態では、修正インスタンスは、アクションの実行に利用された判定されたパラメータ（複数可）、不正確なアクションをもたらした、利用されたニューラルネットワークモデル（複数可）の指標、人間の修正に基づく修正情報、等をさらに含む。
【００５８】
いくつかの実装形態では、修正インスタンスエンジン１３０は、追加的または代替的に、ロボット１９０によって実行されるアクションの人間の修正を判定することに応じて、ロボット１９０の「局所的実行」を変更するようにアクションシステム１２０の修正モジュール１２６と相互作用する。例えば、修正モジュール１２６は、人間の修正に基づいて不正確に判定されたパラメータを変更して、計画モジュール１２２による後続のアクションの変更のために変更されたパラメータを計画モジュール１２２に提供することができる。例えば、パラメータが所与のオブジェクトを「ボウル」として示しているが、ユーザインターフェース入力が所与のオブジェクトが実際に「帽子」であることを示している場合、修正モジュール１２６は、そのオブジェクトに対する「ボウル」分類を「帽子」分類で置き換え、帽子分類を計画モジュール１２２に提供することができる。計画モジュール１２２は、変更された分類に基づいて実行されている現在のアクション（複数可）を変更し得、および／または下流のアクション（複数可）において変更された分類を利用し得る（例えば、計画モジュールが、「帽子を持ってくる」コマンドに正確に応答できることを可能にする）。
【００５９】
収集エンジン１４０は、ネットワーク１０１（例えば、インターネット）を介して、修正インスタンスエンジン１３０から修正インスタンスを受信する。収集エンジン１４０は、ネットワーク１０１を介して、追加のロボット１９２から修正インスタンスを受信することもできる。追加のロボット１９２は様々な地理的位置にあることができ、追加のロボット１９２は任意選択的にロボット１９０と異なってもよい（例えば、それらは４つの車輪を有する型式などの異なる「型式」であってもよい）。追加のロボット１９２によって提供される修正インスタンスは、ロボットアクションの人間の修正に応じて生成されるものも含むことができる。収集エンジン１４０は、例えば、コンピューティングデバイスのクラスタによって実装することができる。
【００６０】
収集エンジン１４０は、修正インスタンスを利用して、修正インスタンスに対応するニューラルネットワークモデルのトレーニング用のトレーニング例を生成する。一例として、特定のオブジェクトを捕捉する視覚センサデータの複数のインスタンス、特定のオブジェクトが「ボウル」として不正確に分類されたことの指標、および分類が「帽子」に修正されたこと（人間の修正を介して）の指標、を含む修正インスタンスが受信されると仮定する。そのような一例では、収集エンジン１４０は、各々が、視覚センサデータの対応するインスタンスに基づくトレーニング例入力、および「ボウル」が正確な分類ではないこと、および／または「帽子」が正確な分類であることを示すトレーニング例出力、を含むトレーニング例を生成することができる。
【００６１】
収集エンジン１４０は、生成されたトレーニング例をトレーニングエンジン１４５に提供する。トレーニングエンジン１４５は、トレーニング例を利用して、１つ以上の対応するニューラルネットワークモデルをトレーニングし、対応する改訂されたニューラルネットワークモデル１５１Ａ〜Ｎを生成する。一例として、収集エンジン１４０が、ニューラルネットワークモデル１５０Ｎの１つ以上のインスタンスによるオブジェクトの不正確な分類に対する人間の修正に基づいて生成された多数のトレーニング例を提供すると仮定する。そのような一例では、トレーニングエンジン１４５は、ニューラルネットワークモデル１５０Ｎ（またはニューラルネットワークモデル１５０Ｎに類似する別のモデル）をさらにトレーニングして、改訂されたニューラルネットワークモデル１５１Ｎを生成し得る。例えば、トレーニングエンジン１４５は、トレーニング例のトレーニング例入力をニューラルネットワークモデル１５０Ｎに適用することができ、トレーニング例出力と、トレーニング例入力の適用に基づいて生成された実際の出力とに基づいてエラーを判定し、そして、ニューラルネットワークモデル１５０Ｎを通じてエラーを逆伝播して、ニューラルネットワークモデル１５０Ｎを更新する。バッチトレーニングが、任意選択的に利用されてもよい。
【００６２】
大量のトレーニング例の適用を通して、トレーニングエンジン１４５は、改訂されたニューラルネットワークモデル１５１Ｎを生成する。次いで、ニューラルネットワークモデル１５０Ｎの代わりに利用するために、改訂されたニューラルネットワークモデル１５１Ｎを提供することができる。加えて、そのような改訂されたニューラルネットワークモデル１５１Ｎは、その後生成されるトレーニング例に基づいて、将来さらに改訂され、改訂されたニューラルネットワークモデル１５１Ｎのさらなる改訂されたバージョンを生成することができ、それはその後、初期の改訂されたニューラルネットワークモデル１５１Ｎの代わりに利用するために提供することができる。この様態において、多様な環境にあるロボット１９０および１９２からの修正インスタンスに基づくトレーニング例を使用して、改良されたニューラルネットワークモデルを繰り返しトレーニングして提供し得る。したがって、時間の経過とともに、ロボット１９０および１９２によって利用されるニューラルネットワークモデルは繰り返し更新され、その都度、多様な修正インスタンスから生成されたトレーニング例に基づいてさらにトレーニングされる。トレーニングエンジン１４５は、例えば、コンピューティングデバイスのクラスタによって実装することができる。
【００６３】
ここで図２Ａ〜図８を参照すると、図１の例示的な環境の様々な構成要素の追加の説明が提供されている。
【００６４】
最初に図２Ａ〜図２Ｃに目を向けると、ロボットアクションへの修正を提供するいくつかの例が提供されている。図２Ａ〜図２Ｃは、ロボット１９０および／または他のロボット（複数可）が動作し得る例示的な環境の様々な状態を示す。図２Ａは、最初の時点のテーブル２５０を図示する。最初の時点で、４つのオブジェクト２５２Ａ〜Ｄがテーブル２５０の頂部上に配置されている。
【００６５】
図２Ｂは、図２Ａの最初の時点で、ユーザが「テーブルから皿をクリアする」というユーザインターフェース入力１０３Ｂ１を提供した一例を図示している。それに応じて、ロボット１９０（図２Ｂに示さず）は、テーブル２５０から、「皿」として分類したオブジェクトを除去し始め得る。例えば、（ニューラルネットワークモデル１５０Ｎの上で生成された出力に基づいて）パラメータモジュール１２１Ｎによって「皿」として分類された任意のオブジェクトの除去を開始することができる。例えば、図２Ｂは、ロボット１９０がテーブルからオブジェクト２５２Ｄをつかんで除去しているときの環境を図示しており、それは「皿」として不正確に分類されている。ロボット１９０がオブジェクト２５２Ｄと相互作用している間、ユーザは「帽子ではない」というさらなるユーザインターフェース入力１０３Ｂ２を提供している。
【００６６】
修正インスタンスエンジン１３０は、さらなるユーザインターフェース入力１０３Ｂ２がオブジェクト２５２Ｄ上で実行されているアクションに対する修正を示していることを判定することができる。例えば、修正インスタンスエンジン１３０は、ユーザインターフェース入力１０３Ｂ２によって示される「帽子」分類が、不正確に判定された「皿」分類と相反すると判定することができる。それに応じて、修正インスタンスエンジン１３０は、オブジェクト２５２Ｄを捕捉する視覚センサデータの複数のインスタンスを含む修正インスタンスを生成することができる。例えば、アクションシステム１２０は、一意の識別子に基づいて様々な視覚センサデータインスタンス内のオブジェクト２５２Ｄを「追跡」し、一意の識別子を利用して、修正インスタンスに含むための視覚センサデータの複数のインスタンスを判定し得る。例えば、視覚センサデータのインスタンスは、それらのインスタンスに含まれるオブジェクトの一意の識別子（複数可）によってインデックス付けされ、「帽子」の一意の識別子は、そのような一意の識別子でインデックス付けされたインスタンスを識別するために利用され得る。修正インスタンスは、任意選択的に、他のセンサデータ、不正確に判定された分類の指標、正確な分類の指標、および／または不正確な分類を判定するために利用されるロボットのニューラルネットワークモデル（複数可）の指標、を追加で含むことができる。
【００６７】
図２Ｃは、図２Ａの最初の時点で、ユーザが（図２Ｂのユーザインターフェース入力１０３Ｂ１を提供する代わりに）「テーブルをクリアする」のユーザインターフェース入力１０３Ｃ１を提供した一例を図示する。それに応じて、ロボット１９０（図２Ｂには示されず）は、識別されたすべてのオブジェクトをテーブル２５０から除去することができる。例えば、（ニューラルネットワークモデル１５０Ａの上で生成された出力に基づいて）パラメータモジュール１２１Ａによって判定されたその姿勢に基づいて、任意の検出されたオブジェクトを除去することができる。
【００６８】
図２Ｃは、ロボット１９０が識別したすべてのオブジェクトの除去を完了したときの環境を図示している。しかしながら、オブジェクト２５２Ｂが、ロボット１９０によってテーブル２５０とは別のオブジェクトとして認識されていないため、テーブル２５０上に残っている。ユーザは、「フォークを忘れた」というさらなるユーザインターフェース入力１０３Ｃ２を提供する。状況によっては、ユーザは、識別したすべてのオブジェクトの除去を完了したことを示すためにロボット１９０によって提供された可聴ユーザインターフェース出力（例えば、「完了しました」、「チャイム」）に応答して、さらなるユーザインターフェース入力１０３Ｃ２を提供し得る。
【００６９】
修正インスタンスエンジン１３０は、実行されているアクションに対する修正を示すさらなるユーザインターフェース入力１０３Ｃ２を判定することができる。例えば、修正インスタンスエンジン１３０は、ユーザインターフェース入力１０３Ｃ２が、テーブル２５０上に存在するオブジェクトが認識されなかったことを示すと判定することができる。それに応じて、修正インスタンスエンジン１３０は、テーブル２５０を捕捉する視覚センサデータの複数のインスタンスを含む修正インスタンスを生成することができる。いくつかの実装形態では、認識されていないオブジェクトがどこに位置しているかを示すさらなるユーザインターフェース入力を提供するように、（例えば、ロボット１９０のスピーカを介して、および／またはクライアントデバイス１０６を介して）ユーザを促してもよい。例えば、ユーザは、クライアントデバイス１０６を介してテーブル２５０の画像（捕捉された視覚センサデータのインスタンス）を用いて提示され、クライアントデバイス１０６を介してオブジェクトを識別するように促されてもよい（例えば、その上を「タップ」、その周りに境界ボックスを描く、等）。また、例えば、ユーザは、認識されていないオブジェクトに近づき、「指し示す」ように促される場合があり、視覚センサ１９９は、ユーザがオブジェクトで「指し示している」視覚センサデータインスタンスを捕捉することができる。そのようなさらなるユーザインターフェース入力はまた、任意選択的に他のセンサデータと一緒に、オブジェクト、および／または他のデータを認識するのに失敗したロボットのニューラルネットワークモデル（複数可）の指標を修正インスタンス内に提供されてもよい。
【００７０】
ここで図３を参照して、様々な実装形態による例示的な方法３００が説明されている。便宜上、フローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および／またはロボットと通信する１つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法３００の動作は特定の順序で示されているが、これは限定することを意味するものではない。１つ以上の動作は、順序を変更、省略、または追加されてもよい。
【００７１】
ブロック３５２で、システムは、適用されたロボットセンサデータに基づいて現在のニューラルネットワークモデルの上で出力を生成する。作業例として、システムは、視覚センサデータおよび／または他のロボットセンサデータを、オブジェクトを把持するための把持パラメータを予測するようにトレーニングされた現在のニューラルネットワークモデルに適用することができる。システムは、適用されたデータに基づいて把持パラメータを示すモデルの上で出力をさらに生成することができる。例えば、出力は、オブジェクトを把持するためのエンドエフェクタの姿勢を示すことができる。
【００７２】
ブロック３５４で、システムは、ブロック３５２の生成された出力に基づいてパラメータ（複数可）を判定する。作業例を続けて、システムは、ブロック３５２で生成された出力に基づいて、オブジェクトを把持するためのエンドエフェクタの姿勢を判定することができる。様々な実装形態において、システムは、ブロック３５２の複数のインスタンスに基づいて生成された出力の複数のインスタンスに基づいて、ブロック３５４でパラメータ（複数可）を判定することができ、ブロック３５２の各インスタンスはセンサデータの異なるインスタンスを適用していることに留意されたい。また、様々な実装形態において、システムは、ブロック３５２のものに加えて他のニューラルネットワークモデル（複数可）の上で生成された追加の出力に基づいて判定されたパラメータ（複数可）に基づいて、ブロック３５４でパラメータ（複数可）を判定することができることに留意されたい。
【００７３】
ブロック３５６で、システムは、ブロック３５４で生成されたパラメータ（複数可）に基づいてロボットアクションを実行する。作業例を続けて、システムは、判定された把持パラメータを用いて、オブジェクトの把持のすべてまたは一部を実行することができる。
【００７４】
ブロック３５６は、サブブロック３５６Ａおよび３５６Ｂを含む。ブロック３５６Ａで、システムはアクションの完了を監視する。システムが、アクションは完了していると判定する場合、システムはブロック３５８に進み、次のアクションの実行を開始する。
【００７５】
ブロック３５６Ｂで、システムは修正ユーザインターフェース入力の受信を監視する。システムは、アクションの実行前、実行中、または実行後（例えば、少なくとも閾値期間後）に、修正ユーザインターフェース入力の受信を監視することができる。修正ＵＩ入力が受信されると、システムはブロック３６０に進む。
【００７６】
作業例を続けて、システムがオブジェクトを把持し、まだオブジェクトを把持している間に、「そのようではない」というユーザインターフェース入力が受信されると仮定する。そのような一例では、システムは、「そのようではない」が修正ユーザインターフェース入力であると判定し、ブロック３６０に進むことができる。多くのシナリオにおいて、システムの観点から、アクションの実行が正確である場合でも、システムはブロック３５６Ｂで修正ＵＩ入力を受信することを留意されたい。言い換えれば、修正ユーザインターフェース入力がない場合、システムはアクションの実行の不正確な性質を自己認識しない。
【００７７】
ブロック３６０で、システムは、修正ユーザインターフェース入力の受信に基づいて局所的実行を変更する。例えば、システムは、ユーザインターフェース入力が修正入力であると判定することに基づいて、および／または修正入力の１つ以上の修正詳細（例えば、入力の修正詳細および／またはサブブロック３６０Ａのさらなる修正詳細）に基づいて、局所的実行を変更することができる。作業例を続けて、システムは、オブジェクトをその元の位置に「配置」し、把持をやめてもよい。
【００７８】
いくつかの実装形態では、ブロック３６０は、サブブロック３６０Ａを含み、ここでは、システムはさらなる修正詳細を要求および受信する。作業例を続けて、システムは「ピックアップする正しい方法を教えてもらえますか？」というユーザインターフェース出力を提供し得る。それに応じて、ユーザは、ロボットを物理的に操作することによって、正確な把持を運動感覚的に教えることができる。例えば、システムはロボットを低機械インピーダンスの、「重力補償」モード、にさせることができ、その間、ユーザはロボットを物理的に操作して正確な把持を実証することができる。そのような場合、システムは、センサデータを記録して、オブジェクトに対する正確な把持パラメータを判定し、現在のアクションおよび／またはオブジェクトが把持される将来のアクションのためにそれらの正確な把持パラメータを利用することができる。さらに、正確な把持パラメータは、ブロック３６２で生成された修正インスタンスに追加的または代替的に含まれ得る。
【００７９】
ブロック３６２で、システムは修正インスタンスを生成する。修正インスタンスは、視覚センサデータおよび／または修正に関連する他のセンサデータを含むことができる。例えば、システムは、アクションの焦点であるオブジェクト（複数可）などを捕捉することに基づいて、修正の時間的近接度の閾値内にあることに基づく視覚センサデータを含むことができる。いくつかの実装形態では、システムはまた、ブロック３５４で判定されたパラメータ（複数可）、ブロック３５６Ｂで受信された修正ユーザインターフェース入力、および／またはブロック３６０Ａで受信されたさらなる修正詳細に基づく修正情報、および／または他のデータ、を修正インスタンス内に任意選択的に含むことができる。
【００８０】
作業例を続けて、システムは、複数の姿勢でオブジェクトをまとめて捕捉する視覚センサデータの複数のインスタンスを含む、および、不正確な把持パラメータおよび／または人間が実証した把持パラメータ（ブロック３６０Ａで判定されたものがあれば）を含む、修正インスタンスを提供することができる。
【００８１】
ブロック３６４で、システムは、ブロック３６２で生成された修正インスタンスを送信する。例えば、システムは、１つ以上のネットワークを介して、リモートコンピューティングデバイスに修正インスタンスを送信することができる。
【００８２】
ブロック３６６で、システムは、修正インスタンスに基づいてトレーニングされる更新されたニューラルネットワークモデルを利用する。例えば、将来のタスクのためのパラメータを判定する際に、システムは、ブロック３５２で利用されるニューラルネットワークモデルの代わりに更新ニューラルネットワークモデルを利用することができる。いくつかの実装形態では、更新されたニューラルネットワークモデルは、修正インスタンスに基づいて生成されたトレーニング例（複数可）に基づいて、および、複数の追加ロボットからの他の修正インスタンスに基づいて生成された他のトレーニング例に基づいて、トレーニングされる。多くの実装形態において、ブロック３６４とブロック３６６との間に時間遅延（例えば、時間、日、週）があり得ることを理解されたい。その間、システムは、他のアクションを実行する際に「前の」ニューラルネットワークモデルを利用し続けてもよい。
【００８３】
作業例を続けて、ブロック３６４で送信された修正インスタンスを利用して、各々が、修正インスタンスの視覚センサデータの対応するインスタンスに基づくトレーニング例入力、および、人間が実証した把持パラメータおよび／または不正確な把持パラメータに基づくトレーニング例出力を含む、トレーニング例を生成することができる。
【００８４】
ここで図４を参照して、様々な実装形態による別の例示的な方法４００が説明されている。方法４００は、図３の方法３００の特定の実装形態を例示していることに留意されたい。
【００８５】
便宜上、図４のフローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および／またはロボットと通信する１つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法４００の動作は特定の順序で示されているが、これは限定することを意味するものではない。１つ以上の動作は、順序を変更、省略、または追加されてもよい。
【００８６】
ブロック４５２で、システムは、１つ以上のニューラルネットワークモデルへのセンサデータの適用に基づいて、ロボット環境内のオブジェクトを検出および追跡する。例えば、システムは、オブジェクトを捕捉する視覚センサデータのインスタンスの１つ以上のニューラルネットワークモデルへの適用に基づいて、オブジェクトの姿勢（および対応するタイムスタンプ）を繰り返し判定することができる。
【００８７】
ブロック４５２は、任意選択的にブロック４５２Ａを含み、システムは、１つ以上のニューラルネットワークモデルおよび／または追加のニューラルネットワークモデルに基づいてオブジェクトの分類をさらに判定する。
【００８８】
ブロック４５４で、システムは、オブジェクトに向けられたロボットアクションを実行する。例えば、システムは、オブジェクトを把持する、さもなければ接触する、オブジェクトをよりよく見る、等において、ロボットの１つ以上の構成要素をオブジェクトのより近くに、および／またはオブジェクトと接触するように動かすことができる。
【００８９】
ブロック４５４は、任意選択的にブロック４５４Ａおよび／または４５４Ｂを含む。
【００９０】
ブロック４５４Ａで、システムは、オブジェクトの分類を示すユーザインターフェース入力に応じてロボットアクションを実行する。例えば、システムは、ブロック４５２Ａで判定されたオブジェクトに対する分類を示す受信されたユーザインターフェースに基づいて、オブジェクトに向けられたアクションを実行することができる。作業例として、「リモートコントロールを見つけて」というユーザインターフェース入力に応答して、システムは、「リモートコントロール」分類があると判定されたオブジェクトに向けられたアクションを実行することができる。
【００９１】
ブロック４５４Ｂで、システムは、ブロック４５４Ｂで判定されたオブジェクトに対する分類を示すユーザインターフェース出力を提供する。例えば、ロボットアクションの実行前および／または実行中に、システムは「リモートコントロールをピックアップしている」というオーディオ出力を提供することができる。
【００９２】
ブロック４５６で、システムは、受信したユーザインターフェース入力が、オブジェクトに向けられたロボットアクションの修正を示すと判定する。作業例を続けて、システムが「リモートコントロール」とみなしたものをピックアップするロボットアクションを実行する際に、システムが「電話ではない」というユーザインターフェース入力を受信することができる。システムは、「ではない」の存在に基づいて、および／または「電話」と「リモートコントロール」との間の矛盾の判断に基づいて、受信したユーザインターフェース入力が修正を示すと判定する。
【００９３】
ブロック４５８で、システムは、修正ユーザインターフェース入力の受信に基づいて局所的実行を変更する。例えば、システムは、ユーザインターフェース入力が修正入力であると判定することに基づいて、および／または修正入力の１つ以上の修正詳細（例えば、入力の修正詳細および／またはサブブロック４５８Ａのさらなる修正詳細）に基づいて、局所的実行を変更することができる。作業例を続けて、システムは、オブジェクトをその元の位置に「配置」し、把持をやめてもよい。別の例として、および作業例を続けて、システムは、オブジェクトの分類を「リモートコントロール」から「電話」に変更し、変更した分類を１つ以上の下流のアクションで利用してもよい（例えば、「電話をピックアップする」リクエストに即座に正確に応答することを可能にする）。
【００９４】
いくつかの実装形態では、ブロック４５８は、システムがさらなる修正詳細を要求および受信するサブブロック４５８Ａを含む。例えば、ブロック４５６の受信したユーザインターフェース入力が、「いいえ、それではない」（および「電話」を識別しなかった）場合、システムは「不正確にピックアップしたものを教えてもらえますか？」というユーザインターフェース出力を提供してもよい。これに応じて、ユーザは、「電話」というさらなる音声入力を提供することができる。そのような一例では、システムは、オブジェクトに対する分類を「リモートコントロール」から「電話」に変更し、現在のアクションおよび／または将来のアクションに正確な「電話」分類を利用することができる。さらに、正確な「電話」分類は、ブロック４６０で生成された修正インスタンスに追加的または代替的に含まれ得る。
【００９５】
ブロック４６０で、システムは、オブジェクトを捕捉している視覚センサデータの複数のインスタンスを含む修正インスタンスを生成する。例えば、システムは、オブジェクトを検出、および／またはオブジェクトの分類を判定するために、以前にブロック４５２で利用されていたことに基づく視覚センサデータを含むことができる。また、例えば、システムは、時空間モデルが、オブジェクトがそのエリアに存在したことを示す間のときに、環境のエリアを捕捉することに基づく視覚センサデータインスタンスを含むことができる。
【００９６】
いくつかの実装形態では、ブロック４６０は、サブブロック４６０Ａおよび／または４６０Ｂを含む。ブロック４６０Ａで、システムは、修正インスタンスにおけるオブジェクトの判定された分類を含む。すなわち、ブロック４５２Ａで不正確に判定された、判定された分類である。ブロック４６０Ｂで、システムは、修正インスタンス内に修正情報を含む。修正情報は、例えば、ブロック４５４Ｂまたはブロック４５８Ａで提供された人間が提供した分類の指標を含むことができる。追加および／または代替データが、システムによって修正インスタンス内に任意選択的に含まれてもよい。
【００９７】
ブロック４６２で、システムは、ブロック４６０で生成された修正インスタンスを送信する。例えば、システムは、１つ以上のネットワークを介して、リモートコンピューティングデバイスに修正インスタンスを送信することができる。
【００９８】
ブロック４６４で、システムは、修正インスタンスに基づいてトレーニングされる更新されたニューラルネットワークモデルを利用する。例えば、将来のタスクのためのパラメータを判定する際に、システムは、ブロック４５２および／またはブロック４５２Ａで利用されるニューラルネットワークモデル（複数可）の代わりに更新ニューラルネットワークモデルを利用することができる。いくつかの実装形態では、更新されたニューラルネットワークモデルは、修正インスタンスに基づいて生成されたトレーニング例（複数可）に基づいて、および、複数の追加ロボットからの他の修正インスタンスからの他のトレーニング例に基づいて、トレーニングされる。多くの実装形態において、ブロック４６２とブロック４６４との間に時間遅延（例えば、時間、日、週）があり得ることを理解されたい。その間、システムは、他のアクションを実行する際に「前の」ニューラルネットワークモデルを利用し続けてもよい。
【００９９】
ここで図５を参照して、様々な実装形態によるさらに別の例示的な方法５００が説明されている。便宜上、フローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および／またはロボットと通信する１つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法５００の動作は特定の順序で示されているが、これは限定することを意味するものではない。１つ以上の動作は、順序を変更、省略、または追加されてもよい。
【０１００】
図５の方法５００は、ブロック３６４（図３）および／またはブロック４６２（図４）で提供された修正インスタンスなどの修正インスタンスに基づいて、ニューラルネットワークモデルの改訂されたバージョンを生成する一例を図示している。
【０１０１】
ブロック５５２で、システムは、複数のロボットから修正インスタンスを受信する。いくつかの実装形態では、受信した修正インスタンスはすべて、同じ所与のニューラルネットワークモデルに適用可能である。例えば、受信した修正インスタンスはすべて、オブジェクトの分類に利用されるニューラルネットワークモデルに適用可能であり得る。
【０１０２】
いくつかの他の実装形態では、ブロック５５２で受信された修正インスタンスは、様々なニューラルネットワークモデルにまとめて適用可能であり得る。例えば、いくつかの修正インスタンスは、「分類」ニューラルネットワークモデルに適用可能であり得、他の修正インスタンスは、「把持」ニューラルネットワークモデル、等に適用可能であり得る。それらの実装形態のいくつかでは、ブロック５５２は、システムが所与のニューラルネットワークモデルに適用可能な修正インスタンスを判定する、サブブロック５５２Ａを含む。言い換えれば、ブロック５５２Ａで、システムは、様々なニューラルネットワークモデルに適用可能な修正インスタンスのグループから、所与のニューラルネットワークモデルに適用可能なサブグループを判定し得る。ブロック５５２Ａで、システムは、修正インスタンスの内容の分析に基づいて、修正インスタンスを判定することができる。例えば、システムは、所与のニューラルネットワークモデル（または、対応するバージョン）を明示的に示す修正インスタンスに基づいて、そのような修正インスタンスを判定することができる。また、例えば、システムは、所与のモデルを示すそのような修正インスタンスに含まれる修正情報に基づいて、追加的または代替的にそのような修正インスタンスを判定することができる。
【０１０３】
ブロック５５４で、システムは、所与のニューラルネットワークモデルに対する修正インスタンスを選択する。
【０１０４】
ブロック５５６で、システムは、選択された修正インスタンスに基づいて１つ以上のトレーニング例を生成および保存する。
【０１０５】
ブロック５５８で、システムは、所与のニューラルネットワークモデルに対して追加の修正インスタンスが利用可能かどうかを判定する。そうである場合、システムはブロック５５４に進み、追加の修正インスタンスを選択し、その後、ブロック５５６に再び進み、選択された追加の修正インスタンスに基づいて追加のトレーニング例（複数可）を生成および保存する。これは、繰り返し実行されてもよく、任意選択的にブロック５６０と並行して実行されてもよい（後述）。
【０１０６】
ブロック５６０で、システムは、ブロック５５６の繰り返しを介して生成されたトレーニング例に基づいてトレーニングすることにより、所与のニューラルネットワークモデルの改訂されたバージョンを生成する。例えば、システムは、ブロック５５２の修正インスタンスを提供したロボットによって利用された所与のニューラルネットワークモデルの同じバージョン、同じモデルの異なるバージョン、または異なる（しかし、機能的に類似した）モデル、で開始することができる。いくつかの実装形態では、システムは、１つ以上の基準が満たされるまでトレーニングによって改訂されたバージョンを生成する。基準は、例えば、すべての「現在の」トレーニング例の使用、利用されているトレーニング例の少なくとも閾値量、達成されているトレーニングの少なくとも閾値期間、等を含むことができる。
【０１０７】
ブロック５６２で、システムは、所与のニューラルネットワークモデルの代わりに使用するための所与のニューラルネットワークモデルの改訂されたバージョンを提供する。
【０１０８】
図６は、修正インスタンス６８０に基づいてトレーニング例６８０Ａ〜６８０Ｎを生成し、トレーニング例を使用してニューラルネットワークモデルをトレーニングして改訂されたニューラルネットワークモデル１５１Ｇを生成する一例を図示する。
【０１０９】
図６の修正インスタンス６８０の実装形態は、不正確に判定されたオブジェクトの分類の人間の修正に基づいている。修正インスタンス６８０は、センサデータインスタンス６８５Ａ〜Ｎを含む。インスタンス６８５Ａ〜Ｎの各センサデータインスタンスは、対応する時間に対するセンサデータ（例えば、視覚センサデータ、位置センサデータ）を含む。
【０１１０】
修正インスタンス６８０はまた、不正確な分類指標６８１、正確な分類指標６８２、オブジェクトＩＤ６８３、およびニューラルネットワークＩＤ６８４を含む。不正確な分類指標６８１は、対応するニューラルネットワークモデルを使用して、対応するパラメータモジュールによって不正確に判定されたオブジェクトのオブジェクト分類を示すことができる。正確な分類指標６８２は、人間の修正に基づいて判定することができる修正情報の一例である。例えば、正確な分類指標６８２は、人間の修正の自然言語ユーザインターフェース入力に基づくことができ、不正確に分類されたオブジェクトの正確な分類を示す。オブジェクトＩＤ６８３は、オブジェクトを識別する。例えば、オブジェクトＩＤ６８３は、オブジェクトの姿勢（複数可）および／またはオブジェクトの別の一意の識別子であり得る。ニューラルネットワークＩＤ６８４は、オブジェクトの不正確な分類を判定する際に利用されたニューラルネットワークを示す。
【０１１１】
収集エンジン１４０は、修正インスタンス６８０を利用して、複数のトレーニング例６８０Ａ〜６８０Ｎを生成する。トレーニング例６８０Ａは、修正インスタンス６８０のセンサデータインスタンス６８５Ａに基づく入力を含む。例えば、センサデータインスタンス６８５Ａは、視覚センサデータがオブジェクトを含むとの判定に基づいて（例えば、オブジェクトＩＤ６８３によって示された姿勢を捕捉するという判定に基づいて）選択された視覚センサデータインスタンスを含むことができる。他の実装形態では、オブジェクトを捕捉する視覚センサデータインスタンスのみが修正インスタンス６８０に提供される（トレーニング例入力の生成に利用される視覚センサデータがオブジェクトを含むことを保証するための収集エンジンの必要性を取り除く）。トレーニング例６８０Ａはまた、不正確な分類指標６８１および／または正確な分類指標６８２に基づくトレーニング例出力を含む。例えば、トレーニング例出力は、不正確な分類指標６８１は、センサデータインスタンス６８５Ａ内のオブジェクトの正確な分類ではないこと、および、正確な分類指標６８２は、センサデータインスタンス６８５Ａ内のオブジェクトの正確な分類であること、の一方または両方を示すことができる。
【０１１２】
トレーニング例６８０Ｎは、修正インスタンス６８０のセンサデータインスタンス６８５Ｎに基づく入力を含む。例えば、センサデータインスタンス６８５Ｎは、センサデータインスタンス６８５Ａのものとは異なる視覚センサデータインスタンスを含むことができる。例えば、オブジェクトを捕捉することもできるが、異なる姿勢から捕捉することもできる（すなわち、視覚センサが、捕捉中にオブジェクトに対して異なる姿勢）。トレーニング例６８０Ｎはまた、不正確な分類指標６８１および／または正確な分類指標６８２に基づくトレーニング例出力を含む。例えば、トレーニング例の出力は、不正確な分類指標６８１は、センサデータインスタンス６８５Ｎ内のオブジェクトの正確な分類ではないこと、および、正確な分類指標６８２は、センサデータインスタンス６８５Ｎ内のオブジェクトの正確な分類であること、の一方または両方を示すことができる。追加のトレーニング例は、トレーニング例６８０Ａと６８０Ｎとの間の省略記号で示されているように、修正インスタンス６８０に基づいて生成することができる。
【０１１３】
トレーニングエンジン１４５は、トレーニング例６８０Ａ〜６８０Ｎ、および他のロボットからの修正インスタンスに基づいて生成された任意選択的に追加のトレーニング例を使用して、ニューラルネットワークＩＤ６８４に対応するニューラルネットワークモデルをトレーニングする。そのようなトレーニングを通して、改訂されたニューラルネットワークモデル１５１Ｇが生成され、ニューラルネットワークＩＤ６８４のニューラルネットワークモデルの代わりに使用するために提供することができる。
【０１１４】
図７は、ロボット７００の例示的なアーキテクチャを概略的に示す。図１のロボット１９０および／または追加のロボット１９２は、図７の例示的なアーキテクチャの１つ以上の構成要素を実装し得る。ロボット７００は、ロボット制御システム７６０、１つ以上の動作構成要素７０４ａ〜７０４ｎ、および１つ以上のセンサ７０８ａ〜７０８ｍを含む。センサ７０８ａ〜７０８ｍは、例えば、視覚センサ（例えば、カメラ（複数可）、３Ｄスキャナ）、光センサ、圧力センサ、圧力波センサ（例えば、マイクロフォン）、近接センサ、加速度計、ジャイロスコープ、温度計、気圧計、などを含み得る。センサ７０８ａ〜７０８ｍはロボット７００と一体化されているように示されているが、これは限定することを意味するものではない。いくつかの実装形態では、センサ７０８ａ〜７０８ｍは、例えばスタンドアロンユニットとして、ロボット７００の外部に配置されてもよい。
【０１１５】
動作構成要素７０４ａ〜７０４ｎは、例えば、１つ以上のエンドエフェクタ（例えば、把持エンドエフェクタ）および／またはロボットの１つ以上の構成要素の動きを実現するための１つ以上のサーボモータまたは他のアクチュエータを含み得る。例えば、ロボット７００は、複数の自由度を有してもよく、アクチュエータの各々は、制御コマンドに応答して１つ以上の自由度内でロボット７００の作動を制御してもよい。本明細書で使用する、アクチュエータという用語は、アクチュエータに関連付けられ得、かつ受信した制御コマンドを、アクチュエータを駆動するための１つ以上の信号に変換する、任意のドライバ（複数可）に加えて、動きを作り出す機械的または電気的デバイス（例えば、モータ）を包含する  。したがって、制御コマンドをアクチュエータに提供することは、制御コマンドを電気的または機械的デバイスを駆動して所望の運動を作り出すための適切な信号に変換するドライバに制御コマンドを提供することを含み得る。
【０１１６】
制御システム７０２は、ＣＰＵ、ＧＰＵ、および／またはロボット７００の他のコントローラ（複数可）などの１つ以上のプロセッサに実装され得る。いくつかの実装形態では、ロボット７００は、制御システム７０２のすべてまたは態様を含み得る「ブレインボックス」を備え得る。例えば、ブレインボックスは、データのリアルタイムバーストを動作構成要素７０４ａ〜ｎに提供し得、リアルタイムバーストの各々は、とりわけ、動作構成要７０４ａ〜ｎの１つ以上の各々に対する動きのパラメータ（もしあれば）を指令する１つ以上の制御コマンドのセットを備える。
【０１１７】
制御システム７０２は、ロボット７００の一体部分として図７に図示されているが、いくつかの実装形態では、制御システム７０２のすべてまたは態様は、ロボット７００とは別個であるが通信している構成要素に実装されてもよい。例えば、制御システム７０２のすべてまたは態様は、コンピューティングデバイス８１０などの、ロボット７００と有線および／または無線通信する１つ以上のコンピューティングデバイス上に実装されてもよい。
【０１１８】
いくつかの実装形態では、制御システム７０２は、図１の構成要素１０３のうちの１つ以上を機能的に実装および／またはそれらとインターフェースする。例えば、制御システム７０２は、計画モジュール１２２、コマンドモジュール１２３、ＵＩ入力モジュール１２４、ＵＩ出力モジュール１２５、修正モジュール１２６、修正インスタンスエンジン１３０、および／またはロボットデータエンジン１３５を実装してもよい。また、例えば、制御システム７０２は、パラメータモジュール１２１Ａ〜Ｎおよび／またはＮＬＰシステム１３３と（例えば、ネットワークインターフェース７１５を介して）インターフェースしてもよい。追加的または代替的に、制御システム７０２は、パラメータモジュール１２１Ａ〜Ｎのうちの１つ以上を実装してもよく、任意選択的にニューラルネットワークモデル１５０Ａ〜Ｎのうちの１つ以上を局所的に保存してもよい。
【０１１９】
図８は、本明細書で説明する手法の１つ以上の態様を実行するために任意選択的に利用し得る例示的なコンピューティングデバイス８１０のブロック図である。コンピューティングデバイス８１０は、典型的には、バスサブシステム８１２を介していくつかの周辺デバイスと通信する少なくとも１つのプロセッサ８１４を含む。これらの周辺機器は、例えば、メモリサブシステム８２５およびファイル記憶サブシステム８２６を含む記憶サブシステム８２４、ユーザインターフェース出力デバイス８２０、ユーザインターフェース入力デバイス８２２、およびネットワークインターフェースサブシステム８１６を含み得る。入力および出力デバイスは、ユーザがコンピューティングデバイス８１０と対話するのを可能にする。ネットワークインターフェースサブシステム８１６は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
【０１２０】
ユーザインターフェース入力デバイス８２２は、キーボード、マウス、トラックボール、タッチパッド、またはグラフィックタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および／または他のタイプの入力デバイスを含み得る。概して、「入力デバイス」という用語の使用は、すべての可能なタイプのデバイス、およびコンピューティングデバイス８１０または通信ネットワークに情報を入力する方法を含むことを意図している。
【０１２１】
ユーザインターフェース出力デバイス８２０は、ディスプレイサブシステム、プリンタ、ファックスマシーン、またはオーディオ出力デバイスなどの非視覚ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）などのフラットパネルデバイス、投射型デバイス、または可視画像を作成するためのなんらかの他のメカニズムを含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスを介してなど非視覚ディスプレイも提供し得る。概して、「出力デバイス」という用語の使用は、すべての可能なタイプのデバイス、およびコンピューティングデバイス８１０からユーザへ、あるいは別のマシンまたはコンピューティングデバイスへ情報を出力する方法を含むことを意図している。
【０１２２】
記憶サブシステム８２４は、本明細書で説明されるモジュールの一部またはすべての機能を提供するプログラミングおよびデータ構造体を保存する。例えば、記憶サブシステム８２４は、本明細書で説明される方法の選択された態様を実行するためのロジックを含み得る。
【０１２３】
これらのソフトウェアモジュールは概して、単独で、または他のプロセッサと組み合わせて、プロセッサ８１４によって実行される。記憶サブシステム８２４において使用されるメモリ８２５は、プログラム実行中に命令およびデータを記憶するためのメインランダムアクセスメモリ（ＲＡＭ）８３０、および固定命令が記憶される読み出し専用メモリ（ＲＯＭ）８３２を含むいくつかのメモリを含むことができる。ファイル記憶サブシステム８２６は、プログラムおよびデータファイルの永続的な保存を提供することができ、ハードディスクドライブ、フロッピーディスクドライブとともに関連するリムーバブルメディア、ＣＤ−ＲＯＭドライブ、光学ドライブ、またはリムーバブルメディアカートリッジを含み得る。特定の実装形態の機能を実装するモジュールは、記憶サブシステム８２４内のファイル記憶サブシステム８２６によって保存されてもよく、またはプロセッサ（複数可）８１４によってアクセス可能な他のマシンに保存されてもよい。
【０１２４】
バスサブシステム８１２は、コンピューティングデバイス８１０の様々な構成要素およびサブシステムを意図したとおりに互いに通信させるためのメカニズムを提供する。バスサブシステム８１２は単一のバスとして概略的に示されているが、バスサブシステムの代替の実装形態は複数のバスを使用してもよい。
【０１２５】
コンピューティングデバイス８１０は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムまたはコンピューティングデバイスを含む様々なタイプのものであることができる。コンピュータおよびネットワークの絶えず変化する性質のため、図８に示されるコンピューティングデバイス８１０の説明は、いくつかの実装形態を例示するための具体的な例としてのみ意図されている。図８に示されるコンピューティングデバイスよりも多いまたは少ない構成要素を有する、コンピューティングデバイス８１０の多くの他の構成が可能である。
【０１２６】
本明細書ではいくつかの実装形態を記載および図示してきたが、機能を実行し、および／または結果を得るための様々な他の手段および／または構造、および／または本明細書で記載された１つ以上の利点が利用されてもよく、そのような変形および／または改変の各々は、本明細書で記載された実装形態の範囲内であるとみなされる。より一般的には、本明細書で記載されるすべてのパラメータ、寸法、材料、および構成は、例示であることを意図し、実際のパラメータ、寸法、材料、および／または構成は、本教示が使用される具体的な用途または応用に依存する。当業者は、型どおりの実験だけを使用して、本明細書に記載された具体的な実装形態に対する多くの等価物を認識するか、確かめることができるであろう。したがって、前述の実装形態は例としてのみ提示されており、添付の特許請求の範囲およびその等価物の範囲内で、具体的に記載および特許請求されている以外の方法で実装形態が実施され得ることを理解されたい。本開示の実施形態は、本明細書に記載の各個々の特徴、システム、物品、材料、キット、および／または方法を対象とする。加えて、そのような特徴、システム、物品、材料、キット、および／または方法が相互に矛盾しない場合、２つ以上のそのような特徴、システム、物品、材料、キット、および／または方法の任意の組み合わせが、本開示の範囲内に含まれる。
【図１】
0006980042.tif 000002
【図２Ａ】
0006980042.tif 000003
【図２Ｂ】
0006980042.tif 000004
【図２Ｃ】
0006980042.tif 000005
【図３】
0006980042.tif 000006
【図４】
0006980042.tif 000007
【図５】
0006980042.tif 000008
【図６】
0006980042.tif 000009
【図７】
0006980042.tif 000010
【図８】
0006980042.tif 000011