本開示は、ロボットアクションへの人間の修正を判定および利用するための方法、装置、およびコンピュータ可読媒体(一時的および非一時的)を対象とする。いくつかの実装形態では、ロボットによって実行されるアクションの人間の修正の判定に応じて、ロボットの1つ以上のセンサによって捕捉され、修正されたアクションに関連するセンサデータを含む修正インスタンスが生成される。これらの実装形態のいくつかでは、修正インスタンスは、人間の修正に基づく(および正確なパラメータ(複数可)を示す)アクションおよび/または修正情報を実行する際に利用された判定された不正確なパラメータ(複数可)をさらに含む。修正インスタンスは、アクションの実行に利用される不正確なパラメータ(複数可)の判定に使用されるモデルに対応するニューラルネットワークモデル(複数可)などの、1つ以上のモデル(複数可)のトレーニングのためのトレーニング例(複数可)を生成するために利用することができる。様々な実装形態において、モデル(複数可)のトレーニングは複数のロボットから受信した修正インスタンスに基づいている。修正インスタンスを生成および提供する複数のロボットは、異なる地理的場所および/または環境に物理的に位置付けすることができ、および/または互いに異なることができる(例えば、ハードウェア的におよび/またはソフトウェア的に異なる)。
モデルの改訂されたバージョンが生成されると、複数のロボットからの修正インスタンスに基づくトレーニングを通じて、その後、モデルの改訂されたバージョンを複数のロボットの1つ以上によって利用することができる。例えば、複数のロボットのうちの1つは、修正インスタンスのうちの1つがそのロボットによって生成されたときに利用されていた以前の対応するバージョンの代わりに、改訂されたバージョンを利用し得る。例えば、改訂されたバージョンをそのロボットに送信することができ、そのロボットは以前の局所的に保存されたバージョンを改訂されたバージョンと置き換えることができる。また、例えば、改訂されたバージョンは、様々なタスクを実行する際にロボットが利用する「クラウドベース」システムまたは他のリモートシステムの以前のバージョンを置き換えることができる。
いくつかの実装形態では、ロボットの「局所的実行」は、追加的または代替的に、ロボットによって実行されるアクションの人間の修正の判定に応じて変更され得る。例えば、人間の修正をアクションの実行中に受信することができ、ロボットは実行中にアクションを変更することができる。また、例えば、人間の修正の判定に応じて、1つ以上の「下流」アクションを改変および/または生成することができる。追加の例として、不正確に判定されたパラメータは、正確なパラメータで置き換えることができ、正確なパラメータは、人間の修正に基づいて判定される。さらに別の例として、ロボットによって利用される1つ以上の局所的ニューラルネットワークモデルおよび/または他の局所的モデルを、人間の修正に基づいて直接適合させることができる。
いくつかの実装形態では、ロボットアクションの人間の修正を判定することは、アクションの実行(すなわち、アクションの実行前、実行中、または実行後)に関連して受信されたユーザインターフェース入力に基づいている。ユーザインターフェース入力は、ロボットの1つ以上センサ(例えば、ロボットのマイクロフォン、人間のタッチおよび/またはロボットの人間の操作を判定するために利用することができるセンサ(複数可))を介して、および/またはロボットとは分離されているが、ロボットと通信しているクライアントデバイス(例えば、タブレットまたはスマートフォンを介して受信される音声またはタイプされたユーザインターフェース入力)を介して受信することができる。
ユーザインターフェース入力が修正を示すと判定することは、ユーザインターフェース入力自体の分析に基づくことができ、任意選択的に実行されているアクションのパラメータ(複数可)に基づくことができる。例えば、それは、修正(例えば、「いいえ」、「停止」、「ではない」)を示すユーザインターフェース入力内の1つ以上の用語または他の合図に基づくことができる。また、例えば、それは、追加的または代替的に、アクションの実行に利用されているパラメータ(複数可)へのユーザインターフェース入力に基づいて判定されたパラメータ(複数可)の比較に基づくことができる。例えば、ユーザインターフェース入力は、オブジェクトの分類が「帽子」であることを示し、一方、アクションは、オブジェクトに対して「ボウル」の不正確に判定された分類に基づいて実行されている、という矛盾を判定するために「帽子」と「ボウル」の比較を用いる。ユーザインターフェース入力が自然言語入力(例えば、音声入力または自由形式のタイプ入力)である場合、自然言語処理(NLP)システムおよび/または他の構成要素を、そのようなユーザインターフェース入力が修正であると判定するのに任意選択的に利用し得る。
本明細書に開示される実装形態の一例として、ロボットが食器洗い機から食器をおろすタスクを実行していると仮定する。そうする場合、パラメータモジュール(複数可)は、ロボットの視覚センサ(例えば、単眼カメラ、ステレオカメラ、レーザスキャナ)からの視覚センサデータをニューラルネットワークモデル(複数可)に適用して、姿勢(位置と向き)および食器洗い機内のオブジェクトに対する分類を判定することができる。パラメータモジュールおよび/またはニューラルネットワークモデルは、ロボットに対して局所的であることができ、またはロボットとネットワーク通信するリモートコンピューティングデバイス(複数可)にあることもできる。ロボットが食器洗い機内の各オブジェクトを回収しているときに、ロボットは、判定された分類を示すユーザインターフェース出力を生成することができる。例えば、ロボットがプレートとして分類されたオブジェクトを回収しているときに、「プレートをつかんで片付ける」という可聴出力を(例えば、ロボットのスピーカを介して)提供することができる。さらに、ロボットがプレートとして分類されたオブジェクトを回収していて、「プレートをつかんで片付ける」という可聴出力を提供した後、ユーザが「それはプレートではなく、ボウルだ」と話していると仮定する。
音声出力はロボットのマイクロフォンで受信され、分析され(例えば、NLPシステムからの出力を利用して)、「プレート」分類が正確でなく、「ボウル」分類が代わりに正確な分類であることを示すことを判定することができる。「プレート」分類が不正確であると判定することに応じて、ロボットは修正インスタンスを生成して、修正インスタンスをリモートコンピューティングデバイスに送信することができる。修正インスタンスは、不正確に分類されたオブジェクトを捕捉し、視覚センサの複数の姿勢から不正確に分類されたオブジェクトをまとめて捕捉する、視覚センサデータの複数のインスタンスを含むように生成することができる。例えば、複数のインスタンスは、最近のセンサデータの「ログ」からのインスタンスを含むことができる。修正インスタンスは、任意選択的に、視覚センサデータ内のオブジェクトの判定を可能にするため、不正確に分類されたオブジェクトの識別子(例えば、オブジェクト検出中にオブジェクトに割り当てられた識別子)、不正確に判定された分類(「プレート」)の指標、および/または人間が示した正確な分類(「ボウル」)の指標、をさらに含むことができる。
リモートコンピューティングデバイスは、修正インスタンス、ならびに複数の追加のロボットからの修正インスタンスを利用して、オブジェクトを不正確に分類する際に利用されたモデルに対応するニューラルネットワークモデルのトレーニングのための(例えば、同じニューラルネットワークモデルの別のバージョンのさらなるトレーニングのための)トレーニング例を生成することができる。例えば、第1のトレーニング例は、修正インスタンスの視覚センサデータの第1のインスタンスに基づくトレーニング例入力、ならびに分類が「プレート」ではないことを示す、および/または分類が「ボウル」であることを示すトレーニング例の出力を含むことができる。トレーニング後、改訂されたニューラルネットワークモデル(修正インスタンスベースのトレーニングに基づいて改訂された)を提供して、オブジェクトを不正確に分類したニューラルネットワークモデルを置き換えることができる。
様々な実装形態において、本明細書で説明されるようなトレーニング例を生成するために修正インスタンスを利用することは、いわゆる「ハードネガティブ」トレーニング例の生成を可能にする。すなわち、トレーニング例は、トレーニング対象のニューラルネットワークモデルに基づいてなされた根底にある不正確な判定の結果である修正インスタンスに基づいて生成されるために、ハードネガティブである。言い換えると、実際には実行が不正確であるにもかかわらず、それらは、ロボットが正確なアクションとみなすものを実行するためにロボットによって利用された収集センサデータに基づいている。
いくつかの実装形態では、ロボットの「局所的実行」は、「プレート」分類が不正確であると判定することに応じて、および/または「ボウル」分類が正確であると判定することに応じて、追加的または代替的に変更され得る。一例として、ロボットは、判定(複数可)に基づいて(食器洗い機からの回収後)オブジェクトを配置するために以前に判定された場所を変更することができる。例えば、ロボットは、不正確な分類に基づいて、オブジェクトの場所を第1の「プレート」場所に配置することを計画している場合があり、オブジェクトが代わりに「ボウル」分類を持っているとの判定に基づいて、配置を別個の第2の「ボウル」場所へ調整してもよい。
実装形態の例が、それらの実装形態の一部の概要を提供する目的で、前の段落で提供されている。しかしながら、本明細書で説明される様々な実装形態は、1つ以上の点で提供された例とは異なることを理解されたい。
いくつかの実装形態では、ロボットの現在のモデルへの入力としてセンサデータを適用することを含む方法が提供され得る。センサデータは、ロボットの1つ以上のセンサに基づいて生成される。本方法は、センサデータに基づいて現在のモデルの上で出力を生成することと、生成された出力に基づいて、ロボットアクションに対する1つ以上のパラメータを判定することと、1つ以上のパラメータに基づいたロボットによるロボットアクションの実行中または実行後に、ロボットアクションを修正するユーザインターフェース入力を受信することと、をさらに含む。本方法は、ロボットアクションを修正するユーザインターフェース入力の受信に応答して修正インスタンスを生成することと、ネットワークインターフェースを介して、1つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することと、をさらに含む。修正インスタンスには、ロボットアクションに関連するセンサデータの複数のインスタンスが含まれる。本方法は、修正インスタンスの送信に続いて、現在のモデルの改訂されたバージョンを受信することをさらに含む。現在のモデルの受信した改訂されたバージョンは、修正インスタンスと追加のロボットからの追加修正インスタンスとに基づいてトレーニングされる。本方法は、現在のモデルの改訂されたバージョンの受信に応答して、ロボットの追加のロボットアクションに対する追加のパラメータを判定する際に現在のモデルの代わりに現在のモデルの改訂されたバージョンを使用することをさらに含む。
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの1つ以上を任意選択的に含み得る。
いくつかの実装形態では、修正インスタンスに含まれるセンサデータの複数のインスタンスは、1回目に第1の姿勢からオブジェクトを捕捉する視覚センサデータの第1のインスタンス、および2回目に第2の姿勢からオブジェクトを捕捉する視覚センサデータの第2のインスタンスを含む、視覚センサデータの複数のインスタンスを含む。これらの実装形態のいくつかのバージョンでは、修正インスタンスを生成することは、ロボットアクションへの複数のインスタンスの時間的近接度に基づいて、視覚センサデータの複数のインスタンスがロボットアクションに関連していると判定することを含む。これらの実装形態のいくつかの追加または代替バージョンでは、視覚センサデータの複数のインスタンスが、ロボットアクションに対する1つ以上のパラメータを判定する際に現在のニューラルネットワークモデルに適用されるセンサデータに含まれる。
いくつかの実装形態では、修正インスタンスを生成することは、ユーザインターフェース入力に基づく修正情報をさらに含むように修正インスタンスを生成することを含む。
いくつかの実装形態では、修正インスタンスを生成することは、ロボットアクションに対する1つ以上のパラメータを判定する際に使用される現在のモデルに基づく現在のモデルの指標をさらに含むように、修正インスタンスを生成することを含む。
いくつかの実装形態では、修正インスタンスを生成することは、ロボットアクションに対する1つ以上のパラメータをさらに含むように、修正インスタンスを生成することを含む。
いくつかの実装形態では、ユーザインターフェース入力は自然言語入力である。
いくつかの実装形態では、オブジェクトに向けられたアクションを実行するために、ロボットの運動中にユーザインターフェース入力を受信することと、ユーザインターフェース入力がオブジェクトに向けられたアクションへの修正を示していると判定することと、を含む方法が提供され得る。本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて修正インスタンスを生成することをさらに含む。生成された修正インスタンスは、各々がオブジェクトを捕捉する視覚センサデータの複数のインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。生成された修正インスタンスに含まれる視覚センサデータの複数のインスタンスは、1回目に第1の姿勢からオブジェクトを捕捉する第1のインスタンス、および2回目に第2の姿勢からオブジェクトを捕捉する第2のインスタンスを含む。本方法は、ネットワークインターフェースを介して、1つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することをさらに含む。1つ以上のリモートコンピューティングデバイスは、修正インスタンスを使用して、モデルをトレーニングするための複数のトレーニング例を生成する。
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの1つ以上を任意選択的に含み得る。
いくつかの実装形態では、モデルはニューラルネットワークモデルであり、本方法は、複数のトレーニング例、および追加のロボットからの追加の修正インスタンスからの追加のトレーニング例に基づいてニューラルネットワークモデルがトレーニングされた後、ネットワークインターフェースを介して、ニューラルネットワークモデルを受信することをさらに含む。
いくつかの実装形態では、修正インスタンスは、ユーザインターフェース入力に基づく修正情報をさらに含む。
いくつかの実装形態では、本方法は、ロボットにとって局所的な局所的モデルに基づいてオブジェクトの予測された分類を判定することをさらに含む。これらの実装形態のいくつかでは、ロボットによって実行されるアクションは、予測された分類に基づいて実行され、修正インスタンスを生成することは、オブジェクトの予測された分類をさらに含むように修正インスタンスを生成することを含む。
いくつかの実装形態では、本方法は、複数のトレーニング例を生成することをさらに含む。それらの実装形態のいくつかでは、複数のトレーニング例を生成することは、予測された分類が正確な分類ではないことを示すトレーニング例出力を含む否定的なトレーニング例を生成することを含む。
いくつかの実装形態では、本方法は、初期ユーザインターフェース入力を受信することと、初期ユーザインターフェース入力がオブジェクトを示すと判定することと、ロボット制御コマンドを生成して、初期ユーザインターフェース入力がオブジェクトを示すと判定することに応じて、オブジェクトに向けられたアクションを実行することと、をさらに含む。これらの実装形態のいくつかでは、修正インスタンスは、初期ユーザインターフェース入力に基づく修正情報をさらに含む。
いくつかの実装形態では、本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて、オブジェクトに向けられたアクションの実行を変更することをさらに含む。
いくつかの実装形態では、本方法は、ユーザインターフェース入力が修正を示すと判定することに応じて、ユーザインターフェース入力に基づいて、オブジェクトに関連付けられた局所的に保存されたパラメータを調整することをさらに含む。
いくつかの実装形態では、ロボットの環境内のオブジェクトの分類を判定することと、ユーザによって提供された初期ユーザインターフェース入力を受信することと、初期ユーザインターフェース入力がオブジェクトの分類に適合すると判定することと、を含む方法が提供され得る。本方法は、初期ユーザインターフェース入力がオブジェクトの分類に適合すると判定することに応じて、制御コマンドをロボットの1つ以上のアクチュエータに提供して、オブジェクトに向けられたアクションを実行することをさらに含む。本方法は、オブジェクトに向けられたアクションの実行中に追加のユーザインターフェース入力を受信することと、追加のユーザインターフェース入力が、オブジェクトの判定された分類に適合しない相反するオブジェクトの分類を示すと判定することと、をさらに含む。本方法は、追加のユーザインターフェース入力が相反するオブジェクトの分類を示すと判定することに応じて、修正インスタンスを生成することをさらに含む。本方法は、ネットワークインターフェースを介して、1つ以上のリモートコンピューティングデバイスに修正インスタンスを送信することをさらに含み、1つ以上のリモートコンピューティングデバイスは、修正インスタンスを使用してモデルをトレーニングするための少なくとも1つのトレーニング例を生成する。
本明細書で開示される技術のこの方法および他の実装形態は各々、以下の特徴のうちの1つ以上を任意選択的に含み得る。
いくつかの実装形態では、修正インスタンスは、オブジェクトを捕捉する視覚センサデータの少なくとも1つのインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。
いくつかの実装形態では、修正インスタンスは、各々がオブジェクトを捕捉する視覚センサデータの複数のインスタンスを含む。視覚センサデータは、ロボットの視覚センサによって生成される。
他の実装形態は、上記の方法のうちの1つ以上などの方法を実行するためにプロセッサによって実行可能な命令を保存する非一時的コンピュータ可読記憶媒体を含み得る。さらに他の実装形態は、メモリおよびメモリに保存された命令を実施するように動作可能な1つ以上のプロセッサを含むシステム(例えば、ロボットおよび/または1つ以上の他の構成要素)を含んで、単独でまたは集合的に、上記の方法のうちの1つ以上などの方法を実行する1つ以上のモジュールまたはエンジンを実装し得る。
本明細書でより詳細に説明される前述の概念および追加の概念のすべての組み合わせは、本明細書で開示される主題の一部として企図されていることを理解されたい。例えば、本開示の最後に示される特許請求される主題のすべての組み合わせは、本明細書に開示される主題の一部であると企図されている。
図1は、本明細書で開示される実装形態が実装され得る例示的な環境を図示する。例示の環境は、ロボット190を含む。図1には特定のロボット190が図示されているが、静止した「ロボットアーム」、人型のロボット、動物型のロボット、1つ以上の車輪を介して移動する他のロボット(例えば、他の自己バランスロボット、非自己バランスロボット)、無人航空機(「UAV」)、などを含む、追加および/または代替のロボットが利用されてもよい。
ロボット190は、対応する把持エンドエフェクタ196aおよび196bを備えたロボットアーム194aおよび194bを含み、これらは各々、2つの対向する作動可能部材を有するグリッパの形態をとる。ロボット190はまた、ロボット190の歩行運動のためにその対向する側に設けられた車輪197aおよび197bを有する基部193を含む。基部193は、例えば、対応する車輪197aおよび197bを駆動して、ロボット190の運動の所望の方向、速度、および/または加速を達成するための1つ以上のモータを含み得る。
ロボット190は、視覚センサ199も含む。視覚センサ199は、例えば、ステレオグラフィックカメラ、モノグラフィックカメラ、または3Dレーザスキャナであってもよい。いくつかの実装形態では、ステレオグラフィックカメラは、各々異なる視座にある2つ以上のセンサ(例えば、電荷結合素子(CCD))を含む。所与のインスタンスで2つのセンサによって生成されたセンサデータに基づいて、3次元(「3D」)ポイントクラウドデータである視覚センサデータが所与のインスタンスに対して生成され得、3Dポイントクラウドの3Dポイントの各々は、対応するオブジェクトの表面の3D座標を定義する。いくつかの他の実装形態では、ステレオグラフィックカメラは、2つの異なる視座からセンサデータを効果的に捕捉するために利用される単一のセンサと1つ以上のミラーのみを含み得る。モノグラフィックカメラは、単一のセンサを含むことができ、2次元(「2D」)視覚センサデータを捕捉する。3Dレーザスキャナは、光を放射する1つ以上のレーザと、放射された光の反射に関連する視覚センサデータを生成する1つ以上のセンサとを含む。3Dレーザスキャナから生成された視覚センサデータは、3Dポイントクラウドデータであり得る。3Dレーザスキャナは、例えば、飛行時間型3Dレーザスキャナまたは三角測量ベースの3Dレーザスキャナであってもよく、位置感応検出器(PSD)または他の光学位置センサを含んでもよい。
本明細書で説明されるように、ロボット190は、少なくとも一部の時間で自律的に動作し、様々なアクションの実行においてそのアクチュエータを制御し得る。例えば、様々なアクションを実行する際に、ロボット190の1つ以上のプロセッサは、車輪197aおよび/もしくは197b、ロボットアーム194aおよび/もしくは194b、ならびに/またはエンドエフェクタ196aおよび/もしくは196bに関連付けられたアクチュエータに制御コマンドを提供し得る。
また、図1に図示されているのは、ロボット190による様々なアクションの実行の際に、ロボット190によって実行される様々なアクションに対する人間の修正を判定する際に、および/またはこれらの様々なアクションに対する人間の修正を判定することに応じて修正インスタンスを生成および送信する際に、利用される様々な構成要素103である。
構成要素103は、図1ではロボット190とは別個に図示されているが、接続要素102は、これらの構成要素103を、ロボット190上に実装することができること、および/またはロボット190と(例えば、ローカルエリアネットワークおよび/またはワイドエリアネットワークを介して)ネットワーク通信できることを示す。例えば、いくつかの実装形態では、構成要素103のうちの1つ以上(例えば、すべて)が、ロボット190に対し局所的なハードウェアによって実装される。例えば、アクションシステム120、修正インスタンスエンジン130、および/またはロボットデータエンジン135は、ロボット190の1つ以上のプロセッサによって実装されてもよい。また、例えば、ニューラルネットワークモデル150A、ニューラルネットワークモデル150N、および/または生成されたロボットデータデータベース152は、ロボット190の1つ以上のハードドライブまたは他のコンピュータ可読媒体に保存されてもよい。別の例として、いくつかの実装形態では、構成要素103のうちの1つ以上が、ロボット190から離れた1つ以上のコンピューティングデバイス上に実装される。例えば、パラメータモジュール121A~Nおよび/またはニューラルネットワークモデル150A~Nのうちの1つ以上が、高性能コンピューティングデバイスのリモートクラスタによって「クラウドで」実装されてもよく、ロボット190および/または他のロボット(例えば、追加のロボット192)のパラメータ判定を処理してもよい。さらに別の例として、パラメータモジュール121A~Nおよび/またはニューラルネットワークモデル150A~Nのうちの1つ以上が、ロボット190とは別個であるが地理的にロボットに近位(例えば、同じ建物内)の1つ以上のコンピューティングデバイスによって実装されてもよい。
構成要素103は、ロボット190のロボットセンサによって生成されたロボットセンサデータおよび/またはロボット190の構成要素によって生成された他のデータを処理するロボットデータエンジン135を含む。例えば、ロボットデータエンジン135は、ロボットの様々なセンサからロボットセンサデータを受信し、ロボットセンサデータにタイムスタンプを付け、タイムスタンプ付きロボットセンサデータをアクションシステム120に提供してもよい。ロボットセンサデータは、例えば、視覚センサ199からの視覚センサデータ、ロボットのアクチュエータの位置センサからの位置センサデータ、ロボットの加速度計(複数可))からの加速度計データ、などを含み得る。ロボットデータエンジン135は、生成されたロボットデータデータベース152内に、ロボットセンサデータの少なくとも一部のログをさらに保存してもよい。例えば、ロボットデータエンジン135は、空間、時間、および/または他の要因に基づいてバッファからデータをクリアして、「最近の」センサデータのバッファを保存してもよい。ロボットデータエンジン135は、生成されたロボットデータデータベース152内に、アクションシステム120によって判定されたパラメータおよび/または他の特徴、ロボット190のアクチュエータに提供された制御コマンド、等、などのロボット190によって生成された様々な他のデータをさらに保存してもよい。
アクションシステム120は、様々なロボットアクションを実行する際に、ロボットデータエンジン135によって提供されるロボットセンサデータを使用する。アクションは、オブジェクトのピックアップ、オブジェクトの「ピッキングおよび配置」、または場所へのナビゲーションおよび/もしくは食器洗い機からの食器おろしなどの比較的より複雑なアクションの収集、定義されたエリアからすべての「おもちゃ」のピックアップ、テーブルからすべてのオブジェクトをクリア、テーブルから特定のタイプ(複数可)のオブジェクトのみをクリア、建物の複数の部屋から特定のタイプのオブジェクトの回収、等、などのアクションを含み得る。アクションシステム120は、様々な合図に応じてロボットアクションを実行し得る。例えば、アクションシステム120は、人間によって提供されるユーザインターフェース入力に応じていくつかのロボットアクションを実行することができる(例えば、音声入力に応じて「オンデマンド」タスクを実行する)。他の例として、アクションシステム120は、スケジュール(例えば、毎週平日の朝)に基づいて、および/または環境条件(例えば、「乱雑」なときにエリアからアイテムを取り除く)に基づいて、いくつかのアクションを追加的または代替的に提供し得る。
アクションシステム120は、アクションの実行において様々なモジュールを利用することができ、その例が図1に図示されている。アクションシステム120のパラメータモジュール121A~Nは、アクションを実施する方法を判定する際に計画モジュール122によって使用される様々なパラメータを判定する。例えば、パラメータモジュール121A~Nは、ロボット190の環境でのオブジェクトの姿勢および/または部類を示すパラメータ、ロボット190の環境でオブジェクトを把持する方法を示すパラメータ(例えば、把持エンドエフェクタ196aおよび/または196bの把持姿勢を示すパラメータ)、ロボット190の環境でのオブジェクトの重量、材料、および/または他の物理的特性を示すパラメータ、等を判定することができる。計画モジュール122は、アクションを実施する方法を判定する際にそのようなパラメータを利用することができる。例えば、テーブルをクリアする際に、計画モジュール122は、判定されたオブジェクトの姿勢および/または分類を使用して、「テーブル上」にあるオブジェクトを判定することができ、把持パラメータを利用して、テーブルからオブジェクトを取り除く際にオブジェクトを把持する方法を判定することができる。
コマンドモジュール123は、ロボット190のアクチュエータに提供する制御コマンドを生成し、計画モジュール122によって判定されたアクションを実現する。例えば、計画モジュール122は、アクションを実行するための経路および他のより高いレベルの運動を生成するより高いレベルのプランナであることができ、コマンドモジュール123は、リアルタイム制御コマンドを生成し、ロボット190のアクチュエータに提供してこれらのより高いレベルの運動を実現するリアルタイムモジュールとすることができる。
2つのパラメータモジュール121Aおよび121Nが図1に示されており、対応するパラメータを生成する際に、各々が対応するニューラルネットワークモデル150A、150Nを利用する。パラメータモジュール121Aと121Nとの間の省略記号によって示されるように、追加のパラメータモジュールが提供され得ることを理解されたい。さらに、これらの追加のパラメータモジュールの1つ以上は、ニューラルネットワークモデル150Aと150Nの間の省略記号によって示されるように、対応するニューラルネットワークモデルを任意選択的に利用し得る。パラメータモジュール121Aおよび121Nの各々は、対応するニューラルネットワークモデル150Aおよび150Nを使用して、アクションシステム120による利用のための1つ以上のパラメータを生成する。
一例として、パラメータモジュール121Aは、ニューラルネットワークモデル150Aを利用して、オブジェクト認識を効果的に実行することができる。例えば、パラメータモジュール121Aは、視覚センサデータ(ロボットデータエンジン135により提供された)のインスタンスをニューラルネットワークモデル150Aへの入力として適用し、入力に基づいてモデル150Aの上で、視覚センサデータのそのインスタンスによって捕捉された1つ以上のオブジェクトの姿勢(複数可)を示す出力を生成することができる。これは、視覚センサデータの複数のインスタンスの各々に対して繰り返し実行され、パラメータモジュール121Aがロボット環境内の複数のオブジェクトの各々の姿勢を判定することを可能にし、パラメータモジュール121Aがロボットの環境内のオブジェクトの最新の時空間「目録」を維持することを効果的に可能にする。
別の例として、パラメータモジュール121Nは、パラメータモジュール121Aによって認識されたオブジェクトのオブジェクト分類を効果的に実行することができる。例えば、オブジェクトの分類を判定するために、パラメータモジュール121Nは、視覚センサデータ、およびオブジェクトの姿勢(パラメータモジュール121Aによって判定された)をニューラルネットワークモデル150Nへの入力として適用することができ、そして、入力に基づいてモデル150Aの上で、オブジェクトの可能性のある分類(複数可)を示す出力を生成する。これを複数のオブジェクトの各々に対して実行して、複数のオブジェクトの各々の分類を判定し得る。いくつかの実装形態では、パラメータモジュール121Nは、分類の異なるグループを判定するように各々トレーニングされた、複数のニューラルネットワークモデルを任意選択的に利用し得る。
ニューラルネットワークモデルおよびパラメータモジュールの特定の例が前の段落で提供されているが、追加および/または代替のニューラルネットワークモデルおよび/またはパラメータモジュールが提供され得ることを理解されたい。例えば、追加のパラメータモジュールが、視覚センサデータおよび/または他のデータ(例えば、他のパラメータモジュール(複数可)のパラメータ(複数可))を、対応するトレーニングされたニューラルネットワークモデルへの入力として適用して、入力に基づいてモデルの上で、視覚センサデータによって捕捉されたオブジェクトを把持する方法を示す把持パラメータを生成してもよい。別の例として、パラメータモジュールは、単一のニューラルネットワークモデルを利用してオブジェクト認識とオブジェクト分類の両方を実行し得る。
アクションシステム120はまた、UI出力モジュール125を含む。UI出力モジュール125は、ユーザインターフェース出力を生成して、ロボット190によるアクションの実行中に提供することができる。提供されるユーザインターフェース出力は、アクションの実行を促進するロボット190の運動に加えて、パラメータモジュール121A~Nによって判定される1つ以上のパラメータの知覚可能な指標を提供する。例えば、ユーザインターフェース出力は、ロボット190のスピーカを介して提供される可聴出力であってもよく、可聴出力は、ロボット190によって作用される(または作用されることになる)オブジェクトの判定されたパラメータを「話す」。例えば、ロボット190が、パラメータモジュール121A~Nのうちの1つによって「プレート」として分類されたオブジェクトをピックアップしているとき、ロボット190は、「プレートをピックアップしている」という可聴出力を生成し得る。他の実装形態では、UI出力モジュール125は、視覚的および/または他の非可聴ユーザインターフェース出力を追加的または代替的に提供してもよい。オブジェクトの判定されたパラメータを示すユーザインターフェース出力を提供することは、ロボット190の環境での人間によるその知覚を可能にする。ユーザインターフェース出力の知覚は、それが不正確である場合、人間が認識することを可能にし、もしそうであれば、本明細書で説明するような修正を提供する。
アクションシステム120はまた、ユーザインターフェース入力を受信するUI入力モジュール124を含む。例えば、UI入力モジュール124は、ロボット190のマイクロフォンを介して提供される音声ユーザインターフェース入力、またはUI入力モジュール124と通信するクライアントデバイス106によって提供されるユーザインターフェース入力を受信することができる。いくつかの実装形態では、ロボット190の任意のマイクロフォンに関連付けられたハードウェアは、話し言葉の「ホットワード」(例えが、「ロボットさん」)、ハードウェアボタンの選択(例えば、ロボットをオン)、仮想ボタンの選択(例えば、クライアントデバイス106上に提示された)、等のような特定の先行入力に応じて人間の修正を「能動的に聞いている」だけの場合がある。
クライアントデバイス106によって提供されるユーザインターフェース入力は、クライアントデバイス106の入力デバイス(複数可)(例えば、クライアントデバイス106のマイクロフォンおよび/または仮想あるいはハードウェアキーボード)とのユーザ対話に応答して提供され、任意選択的にクライアントデバイス106および/または他の構成要素によって前処理されてもよい(例えば、音声入力をテキスト入力に変換することによって前処理される)。いくつかの実装形態では、UI入力モジュール124は、受信したユーザインターフェース入力に基づいてアクションシステム120によって使用するための1つ以上のパラメータを生成することができる。例えば、「テーブルをクリア」という受信したユーザインターフェース入力に対して、UI入力モジュール124は、入力を処理して、ロボット190の環境内の「テーブル」オブジェクト上にあるすべてのオブジェクトを取り除くために、ロボット190によって実行されるべきアクションを示すパラメータを判定することができる。UI入力モジュール124によって判定された任意のパラメータは、計画モジュール122に提供することができる。UI入力モジュール124は、受信したユーザインターフェース入力からパラメータを判定する際に、NLPシステム133および/または1つ以上の他の構成要素と対話することができる。
UI入力モジュール124は、追加的または代替的に、修正インスタンスエンジン130と連携して働くことができる。修正インスタンスエンジン130は、受信したユーザインターフェース入力がロボットアクションへの修正を示すかどうかを判定する。そうである場合、修正インスタンスエンジン130は、対応する修正インスタンスを生成して、修正インスタンスをネットワーク101を介して、収集エンジン140に送信する。この様態において、様々な実装形態において、修正インスタンスエンジン130は、受信したユーザインターフェース入力がロボットアクションへの修正を示すときにのみ修正インスタンスを送信し得る。
修正インスタンスエンジン130は、受信したユーザインターフェース入力がロボットアクションへの修正を示すことを判定する際に様々な手法を利用することができる。いくつかの実装形態では、受信したユーザインターフェース入力が自然言語入力(例えば、ロボット190のマイクロフォンを介して受信された、あるいはクライアントデバイス106を介して受信された)である場合、修正インスタンスエンジン130は、自然言語入力の意味論的および/または他の自然言語処理に基づいてそれが修正を示すと判定することができる。修正インスタンスエンジン130は、任意選択的に、自然言語入力の処理においてNLPシステム133または他の外部リソース(複数可)と(例えば、インターネットまたは他のネットワーク(複数可)を介して)対話し得る。NLPシステム133は、自然言語入力を処理して、自然言語入力の様々な注釈を提供することができる。例えば、NLPシステム133は、センチメント注釈(例えば、センチメント分類子を使用して)、エンティティ注釈(含まれるエンティティを一般的および/または具体的に注釈する)、自然言語入力の完全な意味解釈を提供する注釈、等を提供することができる。
いくつかの実装形態では、修正インスタンスエンジン130は、入力と、アクションの実行においてアクションシステム120によって使用されるパラメータとの比較に基づいて、ユーザインターフェース入力がアクションに対する修正を示すと判定する。例えば、「それはボウルです」という自然言語入力が受信され、一方、ロボット190は、パラメータモジュール121Nが「カップ」であると判定した環境オブジェクトと相互作用していると仮定する。修正インスタンスエンジン130は、自然言語入力によって示された「ボウル」分類とパラメータモジュール121Nによって判定された「カップ」分類との間の矛盾に基づいて、ユーザインターフェース入力がアクションに対する修正を示すと判定し得る。本明細書で説明されるように、いくつかの実装形態では、UI出力モジュール125が、環境オブジェクトとの相互作用中に可聴または他のユーザインターフェース出力を提供してもよく、「それはボウルです」というユーザインターフェース入力を提供するように人間を促してもよい。
いくつかの実装形態では、修正インスタンスエンジン130は、自然言語ユーザインターフェース入力ではない使用インターフェース入力に基づいてロボットアクションへの修正を判定する。例えば、ユーザインターフェース入力は、ユーザがロボット190の「エラー」ボタンを作動させること、ユーザがロボット190を「つかむ」こと(例えば、「外部」タッチ感知センサおよび/または力トルクまたは他の「内部」センサ(複数可)に基づいて検知されて)、ユーザがクライアントデバイス106を介してグラフィカルユーザインターフェースと対話すること(例えば、ユーザがロボット190の状態を監視し、概しておよび/または具体的にエラーを報告することを可能にするインターフェース)に基づくことができる。
修正の判定に応じて修正インスタンスエンジン130によって生成された修正インスタンスは、ロボットの1つ以上のセンサによって捕捉され、修正されたアクションに関連する、センサデータを含むことができる。例えば、修正インスタンスは、視覚センサデータ、ロボット位置センサデータ、ならびに/または修正発生の発生時および/もしくは発生前の他のデータ(例えば、過去X秒間のデータ)を含むことができる。また、例えば、修正インスタンスエンジン130は、不正確なアクションの焦点であるオブジェクト(複数可)を捕捉するインスタンスの判定に基づいて、修正インスタンス内に視覚センサデータのインスタンスを含むことができる。いくつかの実装形態では、修正インスタンスは、アクションの実行に利用された判定されたパラメータ(複数可)、不正確なアクションをもたらした、利用されたニューラルネットワークモデル(複数可)の指標、人間の修正に基づく修正情報、等をさらに含む。
いくつかの実装形態では、修正インスタンスエンジン130は、追加的または代替的に、ロボット190によって実行されるアクションの人間の修正を判定することに応じて、ロボット190の「局所的実行」を変更するようにアクションシステム120の修正モジュール126と相互作用する。例えば、修正モジュール126は、人間の修正に基づいて不正確に判定されたパラメータを変更して、計画モジュール122による後続のアクションの変更のために変更されたパラメータを計画モジュール122に提供することができる。例えば、パラメータが所与のオブジェクトを「ボウル」として示しているが、ユーザインターフェース入力が所与のオブジェクトが実際に「帽子」であることを示している場合、修正モジュール126は、そのオブジェクトに対する「ボウル」分類を「帽子」分類で置き換え、帽子分類を計画モジュール122に提供することができる。計画モジュール122は、変更された分類に基づいて実行されている現在のアクション(複数可)を変更し得、および/または下流のアクション(複数可)において変更された分類を利用し得る(例えば、計画モジュールが、「帽子を持ってくる」コマンドに正確に応答できることを可能にする)。
収集エンジン140は、ネットワーク101(例えば、インターネット)を介して、修正インスタンスエンジン130から修正インスタンスを受信する。収集エンジン140は、ネットワーク101を介して、追加のロボット192から修正インスタンスを受信することもできる。追加のロボット192は様々な地理的位置にあることができ、追加のロボット192は任意選択的にロボット190と異なってもよい(例えば、それらは4つの車輪を有する型式などの異なる「型式」であってもよい)。追加のロボット192によって提供される修正インスタンスは、ロボットアクションの人間の修正に応じて生成されるものも含むことができる。収集エンジン140は、例えば、コンピューティングデバイスのクラスタによって実装することができる。
収集エンジン140は、修正インスタンスを利用して、修正インスタンスに対応するニューラルネットワークモデルのトレーニング用のトレーニング例を生成する。一例として、特定のオブジェクトを捕捉する視覚センサデータの複数のインスタンス、特定のオブジェクトが「ボウル」として不正確に分類されたことの指標、および分類が「帽子」に修正されたこと(人間の修正を介して)の指標、を含む修正インスタンスが受信されると仮定する。そのような一例では、収集エンジン140は、各々が、視覚センサデータの対応するインスタンスに基づくトレーニング例入力、および「ボウル」が正確な分類ではないこと、および/または「帽子」が正確な分類であることを示すトレーニング例出力、を含むトレーニング例を生成することができる。
収集エンジン140は、生成されたトレーニング例をトレーニングエンジン145に提供する。トレーニングエンジン145は、トレーニング例を利用して、1つ以上の対応するニューラルネットワークモデルをトレーニングし、対応する改訂されたニューラルネットワークモデル151A~Nを生成する。一例として、収集エンジン140が、ニューラルネットワークモデル150Nの1つ以上のインスタンスによるオブジェクトの不正確な分類に対する人間の修正に基づいて生成された多数のトレーニング例を提供すると仮定する。そのような一例では、トレーニングエンジン145は、ニューラルネットワークモデル150N(またはニューラルネットワークモデル150Nに類似する別のモデル)をさらにトレーニングして、改訂されたニューラルネットワークモデル151Nを生成し得る。例えば、トレーニングエンジン145は、トレーニング例のトレーニング例入力をニューラルネットワークモデル150Nに適用することができ、トレーニング例出力と、トレーニング例入力の適用に基づいて生成された実際の出力とに基づいてエラーを判定し、そして、ニューラルネットワークモデル150Nを通じてエラーを逆伝播して、ニューラルネットワークモデル150Nを更新する。バッチトレーニングが、任意選択的に利用されてもよい。
大量のトレーニング例の適用を通して、トレーニングエンジン145は、改訂されたニューラルネットワークモデル151Nを生成する。次いで、ニューラルネットワークモデル150Nの代わりに利用するために、改訂されたニューラルネットワークモデル151Nを提供することができる。加えて、そのような改訂されたニューラルネットワークモデル151Nは、その後生成されるトレーニング例に基づいて、将来さらに改訂され、改訂されたニューラルネットワークモデル151Nのさらなる改訂されたバージョンを生成することができ、それはその後、初期の改訂されたニューラルネットワークモデル151Nの代わりに利用するために提供することができる。この様態において、多様な環境にあるロボット190および192からの修正インスタンスに基づくトレーニング例を使用して、改良されたニューラルネットワークモデルを繰り返しトレーニングして提供し得る。したがって、時間の経過とともに、ロボット190および192によって利用されるニューラルネットワークモデルは繰り返し更新され、その都度、多様な修正インスタンスから生成されたトレーニング例に基づいてさらにトレーニングされる。トレーニングエンジン145は、例えば、コンピューティングデバイスのクラスタによって実装することができる。
ここで図2A~図8を参照すると、図1の例示的な環境の様々な構成要素の追加の説明が提供されている。
最初に図2A~図2Cに目を向けると、ロボットアクションへの修正を提供するいくつかの例が提供されている。図2A~図2Cは、ロボット190および/または他のロボット(複数可)が動作し得る例示的な環境の様々な状態を示す。図2Aは、最初の時点のテーブル250を図示する。最初の時点で、4つのオブジェクト252A~Dがテーブル250の頂部上に配置されている。
図2Bは、図2Aの最初の時点で、ユーザが「テーブルから皿をクリアする」というユーザインターフェース入力103B1を提供した一例を図示している。それに応じて、ロボット190(図2Bに示さず)は、テーブル250から、「皿」として分類したオブジェクトを除去し始め得る。例えば、(ニューラルネットワークモデル150Nの上で生成された出力に基づいて)パラメータモジュール121Nによって「皿」として分類された任意のオブジェクトの除去を開始することができる。例えば、図2Bは、ロボット190がテーブルからオブジェクト252Dをつかんで除去しているときの環境を図示しており、それは「皿」として不正確に分類されている。ロボット190がオブジェクト252Dと相互作用している間、ユーザは「帽子ではない」というさらなるユーザインターフェース入力103B2を提供している。
修正インスタンスエンジン130は、さらなるユーザインターフェース入力103B2がオブジェクト252D上で実行されているアクションに対する修正を示していることを判定することができる。例えば、修正インスタンスエンジン130は、ユーザインターフェース入力103B2によって示される「帽子」分類が、不正確に判定された「皿」分類と相反すると判定することができる。それに応じて、修正インスタンスエンジン130は、オブジェクト252Dを捕捉する視覚センサデータの複数のインスタンスを含む修正インスタンスを生成することができる。例えば、アクションシステム120は、一意の識別子に基づいて様々な視覚センサデータインスタンス内のオブジェクト252Dを「追跡」し、一意の識別子を利用して、修正インスタンスに含むための視覚センサデータの複数のインスタンスを判定し得る。例えば、視覚センサデータのインスタンスは、それらのインスタンスに含まれるオブジェクトの一意の識別子(複数可)によってインデックス付けされ、「帽子」の一意の識別子は、そのような一意の識別子でインデックス付けされたインスタンスを識別するために利用され得る。修正インスタンスは、任意選択的に、他のセンサデータ、不正確に判定された分類の指標、正確な分類の指標、および/または不正確な分類を判定するために利用されるロボットのニューラルネットワークモデル(複数可)の指標、を追加で含むことができる。
図2Cは、図2Aの最初の時点で、ユーザが(図2Bのユーザインターフェース入力103B1を提供する代わりに)「テーブルをクリアする」のユーザインターフェース入力103C1を提供した一例を図示する。それに応じて、ロボット190(図2Bには示されず)は、識別されたすべてのオブジェクトをテーブル250から除去することができる。例えば、(ニューラルネットワークモデル150Aの上で生成された出力に基づいて)パラメータモジュール121Aによって判定されたその姿勢に基づいて、任意の検出されたオブジェクトを除去することができる。
図2Cは、ロボット190が識別したすべてのオブジェクトの除去を完了したときの環境を図示している。しかしながら、オブジェクト252Bが、ロボット190によってテーブル250とは別のオブジェクトとして認識されていないため、テーブル250上に残っている。ユーザは、「フォークを忘れた」というさらなるユーザインターフェース入力103C2を提供する。状況によっては、ユーザは、識別したすべてのオブジェクトの除去を完了したことを示すためにロボット190によって提供された可聴ユーザインターフェース出力(例えば、「完了しました」、「チャイム」)に応答して、さらなるユーザインターフェース入力103C2を提供し得る。
修正インスタンスエンジン130は、実行されているアクションに対する修正を示すさらなるユーザインターフェース入力103C2を判定することができる。例えば、修正インスタンスエンジン130は、ユーザインターフェース入力103C2が、テーブル250上に存在するオブジェクトが認識されなかったことを示すと判定することができる。それに応じて、修正インスタンスエンジン130は、テーブル250を捕捉する視覚センサデータの複数のインスタンスを含む修正インスタンスを生成することができる。いくつかの実装形態では、認識されていないオブジェクトがどこに位置しているかを示すさらなるユーザインターフェース入力を提供するように、(例えば、ロボット190のスピーカを介して、および/またはクライアントデバイス106を介して)ユーザを促してもよい。例えば、ユーザは、クライアントデバイス106を介してテーブル250の画像(捕捉された視覚センサデータのインスタンス)を用いて提示され、クライアントデバイス106を介してオブジェクトを識別するように促されてもよい(例えば、その上を「タップ」、その周りに境界ボックスを描く、等)。また、例えば、ユーザは、認識されていないオブジェクトに近づき、「指し示す」ように促される場合があり、視覚センサ199は、ユーザがオブジェクトで「指し示している」視覚センサデータインスタンスを捕捉することができる。そのようなさらなるユーザインターフェース入力はまた、任意選択的に他のセンサデータと一緒に、オブジェクト、および/または他のデータを認識するのに失敗したロボットのニューラルネットワークモデル(複数可)の指標を修正インスタンス内に提供されてもよい。
ここで図3を参照して、様々な実装形態による例示的な方法300が説明されている。便宜上、フローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および/またはロボットと通信する1つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法300の動作は特定の順序で示されているが、これは限定することを意味するものではない。1つ以上の動作は、順序を変更、省略、または追加されてもよい。
ブロック352で、システムは、適用されたロボットセンサデータに基づいて現在のニューラルネットワークモデルの上で出力を生成する。作業例として、システムは、視覚センサデータおよび/または他のロボットセンサデータを、オブジェクトを把持するための把持パラメータを予測するようにトレーニングされた現在のニューラルネットワークモデルに適用することができる。システムは、適用されたデータに基づいて把持パラメータを示すモデルの上で出力をさらに生成することができる。例えば、出力は、オブジェクトを把持するためのエンドエフェクタの姿勢を示すことができる。
ブロック354で、システムは、ブロック352の生成された出力に基づいてパラメータ(複数可)を判定する。作業例を続けて、システムは、ブロック352で生成された出力に基づいて、オブジェクトを把持するためのエンドエフェクタの姿勢を判定することができる。様々な実装形態において、システムは、ブロック352の複数のインスタンスに基づいて生成された出力の複数のインスタンスに基づいて、ブロック354でパラメータ(複数可)を判定することができ、ブロック352の各インスタンスはセンサデータの異なるインスタンスを適用していることに留意されたい。また、様々な実装形態において、システムは、ブロック352のものに加えて他のニューラルネットワークモデル(複数可)の上で生成された追加の出力に基づいて判定されたパラメータ(複数可)に基づいて、ブロック354でパラメータ(複数可)を判定することができることに留意されたい。
ブロック356で、システムは、ブロック354で生成されたパラメータ(複数可)に基づいてロボットアクションを実行する。作業例を続けて、システムは、判定された把持パラメータを用いて、オブジェクトの把持のすべてまたは一部を実行することができる。
ブロック356は、サブブロック356Aおよび356Bを含む。ブロック356Aで、システムはアクションの完了を監視する。システムが、アクションは完了していると判定する場合、システムはブロック358に進み、次のアクションの実行を開始する。
ブロック356Bで、システムは修正ユーザインターフェース入力の受信を監視する。システムは、アクションの実行前、実行中、または実行後(例えば、少なくとも閾値期間後)に、修正ユーザインターフェース入力の受信を監視することができる。修正UI入力が受信されると、システムはブロック360に進む。
作業例を続けて、システムがオブジェクトを把持し、まだオブジェクトを把持している間に、「そのようではない」というユーザインターフェース入力が受信されると仮定する。そのような一例では、システムは、「そのようではない」が修正ユーザインターフェース入力であると判定し、ブロック360に進むことができる。多くのシナリオにおいて、システムの観点から、アクションの実行が正確である場合でも、システムはブロック356Bで修正UI入力を受信することを留意されたい。言い換えれば、修正ユーザインターフェース入力がない場合、システムはアクションの実行の不正確な性質を自己認識しない。
ブロック360で、システムは、修正ユーザインターフェース入力の受信に基づいて局所的実行を変更する。例えば、システムは、ユーザインターフェース入力が修正入力であると判定することに基づいて、および/または修正入力の1つ以上の修正詳細(例えば、入力の修正詳細および/またはサブブロック360Aのさらなる修正詳細)に基づいて、局所的実行を変更することができる。作業例を続けて、システムは、オブジェクトをその元の位置に「配置」し、把持をやめてもよい。
いくつかの実装形態では、ブロック360は、サブブロック360Aを含み、ここでは、システムはさらなる修正詳細を要求および受信する。作業例を続けて、システムは「ピックアップする正しい方法を教えてもらえますか?」というユーザインターフェース出力を提供し得る。それに応じて、ユーザは、ロボットを物理的に操作することによって、正確な把持を運動感覚的に教えることができる。例えば、システムはロボットを低機械インピーダンスの、「重力補償」モード、にさせることができ、その間、ユーザはロボットを物理的に操作して正確な把持を実証することができる。そのような場合、システムは、センサデータを記録して、オブジェクトに対する正確な把持パラメータを判定し、現在のアクションおよび/またはオブジェクトが把持される将来のアクションのためにそれらの正確な把持パラメータを利用することができる。さらに、正確な把持パラメータは、ブロック362で生成された修正インスタンスに追加的または代替的に含まれ得る。
ブロック362で、システムは修正インスタンスを生成する。修正インスタンスは、視覚センサデータおよび/または修正に関連する他のセンサデータを含むことができる。例えば、システムは、アクションの焦点であるオブジェクト(複数可)などを捕捉することに基づいて、修正の時間的近接度の閾値内にあることに基づく視覚センサデータを含むことができる。いくつかの実装形態では、システムはまた、ブロック354で判定されたパラメータ(複数可)、ブロック356Bで受信された修正ユーザインターフェース入力、および/またはブロック360Aで受信されたさらなる修正詳細に基づく修正情報、および/または他のデータ、を修正インスタンス内に任意選択的に含むことができる。
作業例を続けて、システムは、複数の姿勢でオブジェクトをまとめて捕捉する視覚センサデータの複数のインスタンスを含む、および、不正確な把持パラメータおよび/または人間が実証した把持パラメータ(ブロック360Aで判定されたものがあれば)を含む、修正インスタンスを提供することができる。
ブロック364で、システムは、ブロック362で生成された修正インスタンスを送信する。例えば、システムは、1つ以上のネットワークを介して、リモートコンピューティングデバイスに修正インスタンスを送信することができる。
ブロック366で、システムは、修正インスタンスに基づいてトレーニングされる更新されたニューラルネットワークモデルを利用する。例えば、将来のタスクのためのパラメータを判定する際に、システムは、ブロック352で利用されるニューラルネットワークモデルの代わりに更新ニューラルネットワークモデルを利用することができる。いくつかの実装形態では、更新されたニューラルネットワークモデルは、修正インスタンスに基づいて生成されたトレーニング例(複数可)に基づいて、および、複数の追加ロボットからの他の修正インスタンスに基づいて生成された他のトレーニング例に基づいて、トレーニングされる。多くの実装形態において、ブロック364とブロック366との間に時間遅延(例えば、時間、日、週)があり得ることを理解されたい。その間、システムは、他のアクションを実行する際に「前の」ニューラルネットワークモデルを利用し続けてもよい。
作業例を続けて、ブロック364で送信された修正インスタンスを利用して、各々が、修正インスタンスの視覚センサデータの対応するインスタンスに基づくトレーニング例入力、および、人間が実証した把持パラメータおよび/または不正確な把持パラメータに基づくトレーニング例出力を含む、トレーニング例を生成することができる。
ここで図4を参照して、様々な実装形態による別の例示的な方法400が説明されている。方法400は、図3の方法300の特定の実装形態を例示していることに留意されたい。
便宜上、図4のフローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および/またはロボットと通信する1つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法400の動作は特定の順序で示されているが、これは限定することを意味するものではない。1つ以上の動作は、順序を変更、省略、または追加されてもよい。
ブロック452で、システムは、1つ以上のニューラルネットワークモデルへのセンサデータの適用に基づいて、ロボット環境内のオブジェクトを検出および追跡する。例えば、システムは、オブジェクトを捕捉する視覚センサデータのインスタンスの1つ以上のニューラルネットワークモデルへの適用に基づいて、オブジェクトの姿勢(および対応するタイムスタンプ)を繰り返し判定することができる。
ブロック452は、任意選択的にブロック452Aを含み、システムは、1つ以上のニューラルネットワークモデルおよび/または追加のニューラルネットワークモデルに基づいてオブジェクトの分類をさらに判定する。
ブロック454で、システムは、オブジェクトに向けられたロボットアクションを実行する。例えば、システムは、オブジェクトを把持する、さもなければ接触する、オブジェクトをよりよく見る、等において、ロボットの1つ以上の構成要素をオブジェクトのより近くに、および/またはオブジェクトと接触するように動かすことができる。
ブロック454は、任意選択的にブロック454Aおよび/または454Bを含む。
ブロック454Aで、システムは、オブジェクトの分類を示すユーザインターフェース入力に応じてロボットアクションを実行する。例えば、システムは、ブロック452Aで判定されたオブジェクトに対する分類を示す受信されたユーザインターフェースに基づいて、オブジェクトに向けられたアクションを実行することができる。作業例として、「リモートコントロールを見つけて」というユーザインターフェース入力に応答して、システムは、「リモートコントロール」分類があると判定されたオブジェクトに向けられたアクションを実行することができる。
ブロック454Bで、システムは、ブロック454Bで判定されたオブジェクトに対する分類を示すユーザインターフェース出力を提供する。例えば、ロボットアクションの実行前および/または実行中に、システムは「リモートコントロールをピックアップしている」というオーディオ出力を提供することができる。
ブロック456で、システムは、受信したユーザインターフェース入力が、オブジェクトに向けられたロボットアクションの修正を示すと判定する。作業例を続けて、システムが「リモートコントロール」とみなしたものをピックアップするロボットアクションを実行する際に、システムが「電話ではない」というユーザインターフェース入力を受信することができる。システムは、「ではない」の存在に基づいて、および/または「電話」と「リモートコントロール」との間の矛盾の判断に基づいて、受信したユーザインターフェース入力が修正を示すと判定する。
ブロック458で、システムは、修正ユーザインターフェース入力の受信に基づいて局所的実行を変更する。例えば、システムは、ユーザインターフェース入力が修正入力であると判定することに基づいて、および/または修正入力の1つ以上の修正詳細(例えば、入力の修正詳細および/またはサブブロック458Aのさらなる修正詳細)に基づいて、局所的実行を変更することができる。作業例を続けて、システムは、オブジェクトをその元の位置に「配置」し、把持をやめてもよい。別の例として、および作業例を続けて、システムは、オブジェクトの分類を「リモートコントロール」から「電話」に変更し、変更した分類を1つ以上の下流のアクションで利用してもよい(例えば、「電話をピックアップする」リクエストに即座に正確に応答することを可能にする)。
いくつかの実装形態では、ブロック458は、システムがさらなる修正詳細を要求および受信するサブブロック458Aを含む。例えば、ブロック456の受信したユーザインターフェース入力が、「いいえ、それではない」(および「電話」を識別しなかった)場合、システムは「不正確にピックアップしたものを教えてもらえますか?」というユーザインターフェース出力を提供してもよい。これに応じて、ユーザは、「電話」というさらなる音声入力を提供することができる。そのような一例では、システムは、オブジェクトに対する分類を「リモートコントロール」から「電話」に変更し、現在のアクションおよび/または将来のアクションに正確な「電話」分類を利用することができる。さらに、正確な「電話」分類は、ブロック460で生成された修正インスタンスに追加的または代替的に含まれ得る。
ブロック460で、システムは、オブジェクトを捕捉している視覚センサデータの複数のインスタンスを含む修正インスタンスを生成する。例えば、システムは、オブジェクトを検出、および/またはオブジェクトの分類を判定するために、以前にブロック452で利用されていたことに基づく視覚センサデータを含むことができる。また、例えば、システムは、時空間モデルが、オブジェクトがそのエリアに存在したことを示す間のときに、環境のエリアを捕捉することに基づく視覚センサデータインスタンスを含むことができる。
いくつかの実装形態では、ブロック460は、サブブロック460Aおよび/または460Bを含む。ブロック460Aで、システムは、修正インスタンスにおけるオブジェクトの判定された分類を含む。すなわち、ブロック452Aで不正確に判定された、判定された分類である。ブロック460Bで、システムは、修正インスタンス内に修正情報を含む。修正情報は、例えば、ブロック454Bまたはブロック458Aで提供された人間が提供した分類の指標を含むことができる。追加および/または代替データが、システムによって修正インスタンス内に任意選択的に含まれてもよい。
ブロック462で、システムは、ブロック460で生成された修正インスタンスを送信する。例えば、システムは、1つ以上のネットワークを介して、リモートコンピューティングデバイスに修正インスタンスを送信することができる。
ブロック464で、システムは、修正インスタンスに基づいてトレーニングされる更新されたニューラルネットワークモデルを利用する。例えば、将来のタスクのためのパラメータを判定する際に、システムは、ブロック452および/またはブロック452Aで利用されるニューラルネットワークモデル(複数可)の代わりに更新ニューラルネットワークモデルを利用することができる。いくつかの実装形態では、更新されたニューラルネットワークモデルは、修正インスタンスに基づいて生成されたトレーニング例(複数可)に基づいて、および、複数の追加ロボットからの他の修正インスタンスからの他のトレーニング例に基づいて、トレーニングされる。多くの実装形態において、ブロック462とブロック464との間に時間遅延(例えば、時間、日、週)があり得ることを理解されたい。その間、システムは、他のアクションを実行する際に「前の」ニューラルネットワークモデルを利用し続けてもよい。
ここで図5を参照して、様々な実装形態によるさらに別の例示的な方法500が説明されている。便宜上、フローチャートの動作は、動作を実行するシステムを参照して説明されている。このシステムは、ロボットの、および/またはロボットと通信する1つ以上のコンピューティングデバイスの様々な構成要素を含み得る。さらに、方法500の動作は特定の順序で示されているが、これは限定することを意味するものではない。1つ以上の動作は、順序を変更、省略、または追加されてもよい。
図5の方法500は、ブロック364(図3)および/またはブロック462(図4)で提供された修正インスタンスなどの修正インスタンスに基づいて、ニューラルネットワークモデルの改訂されたバージョンを生成する一例を図示している。
ブロック552で、システムは、複数のロボットから修正インスタンスを受信する。いくつかの実装形態では、受信した修正インスタンスはすべて、同じ所与のニューラルネットワークモデルに適用可能である。例えば、受信した修正インスタンスはすべて、オブジェクトの分類に利用されるニューラルネットワークモデルに適用可能であり得る。
いくつかの他の実装形態では、ブロック552で受信された修正インスタンスは、様々なニューラルネットワークモデルにまとめて適用可能であり得る。例えば、いくつかの修正インスタンスは、「分類」ニューラルネットワークモデルに適用可能であり得、他の修正インスタンスは、「把持」ニューラルネットワークモデル、等に適用可能であり得る。それらの実装形態のいくつかでは、ブロック552は、システムが所与のニューラルネットワークモデルに適用可能な修正インスタンスを判定する、サブブロック552Aを含む。言い換えれば、ブロック552Aで、システムは、様々なニューラルネットワークモデルに適用可能な修正インスタンスのグループから、所与のニューラルネットワークモデルに適用可能なサブグループを判定し得る。ブロック552Aで、システムは、修正インスタンスの内容の分析に基づいて、修正インスタンスを判定することができる。例えば、システムは、所与のニューラルネットワークモデル(または、対応するバージョン)を明示的に示す修正インスタンスに基づいて、そのような修正インスタンスを判定することができる。また、例えば、システムは、所与のモデルを示すそのような修正インスタンスに含まれる修正情報に基づいて、追加的または代替的にそのような修正インスタンスを判定することができる。
ブロック554で、システムは、所与のニューラルネットワークモデルに対する修正インスタンスを選択する。
ブロック556で、システムは、選択された修正インスタンスに基づいて1つ以上のトレーニング例を生成および保存する。
ブロック558で、システムは、所与のニューラルネットワークモデルに対して追加の修正インスタンスが利用可能かどうかを判定する。そうである場合、システムはブロック554に進み、追加の修正インスタンスを選択し、その後、ブロック556に再び進み、選択された追加の修正インスタンスに基づいて追加のトレーニング例(複数可)を生成および保存する。これは、繰り返し実行されてもよく、任意選択的にブロック560と並行して実行されてもよい(後述)。
ブロック560で、システムは、ブロック556の繰り返しを介して生成されたトレーニング例に基づいてトレーニングすることにより、所与のニューラルネットワークモデルの改訂されたバージョンを生成する。例えば、システムは、ブロック552の修正インスタンスを提供したロボットによって利用された所与のニューラルネットワークモデルの同じバージョン、同じモデルの異なるバージョン、または異なる(しかし、機能的に類似した)モデル、で開始することができる。いくつかの実装形態では、システムは、1つ以上の基準が満たされるまでトレーニングによって改訂されたバージョンを生成する。基準は、例えば、すべての「現在の」トレーニング例の使用、利用されているトレーニング例の少なくとも閾値量、達成されているトレーニングの少なくとも閾値期間、等を含むことができる。
ブロック562で、システムは、所与のニューラルネットワークモデルの代わりに使用するための所与のニューラルネットワークモデルの改訂されたバージョンを提供する。
図6は、修正インスタンス680に基づいてトレーニング例680A~680Nを生成し、トレーニング例を使用してニューラルネットワークモデルをトレーニングして改訂されたニューラルネットワークモデル151Gを生成する一例を図示する。
図6の修正インスタンス680の実装形態は、不正確に判定されたオブジェクトの分類の人間の修正に基づいている。修正インスタンス680は、センサデータインスタンス685A~Nを含む。インスタンス685A~Nの各センサデータインスタンスは、対応する時間に対するセンサデータ(例えば、視覚センサデータ、位置センサデータ)を含む。
修正インスタンス680はまた、不正確な分類指標681、正確な分類指標682、オブジェクトID683、およびニューラルネットワークID684を含む。不正確な分類指標681は、対応するニューラルネットワークモデルを使用して、対応するパラメータモジュールによって不正確に判定されたオブジェクトのオブジェクト分類を示すことができる。正確な分類指標682は、人間の修正に基づいて判定することができる修正情報の一例である。例えば、正確な分類指標682は、人間の修正の自然言語ユーザインターフェース入力に基づくことができ、不正確に分類されたオブジェクトの正確な分類を示す。オブジェクトID683は、オブジェクトを識別する。例えば、オブジェクトID683は、オブジェクトの姿勢(複数可)および/またはオブジェクトの別の一意の識別子であり得る。ニューラルネットワークID684は、オブジェクトの不正確な分類を判定する際に利用されたニューラルネットワークを示す。
収集エンジン140は、修正インスタンス680を利用して、複数のトレーニング例680A~680Nを生成する。トレーニング例680Aは、修正インスタンス680のセンサデータインスタンス685Aに基づく入力を含む。例えば、センサデータインスタンス685Aは、視覚センサデータがオブジェクトを含むとの判定に基づいて(例えば、オブジェクトID683によって示された姿勢を捕捉するという判定に基づいて)選択された視覚センサデータインスタンスを含むことができる。他の実装形態では、オブジェクトを捕捉する視覚センサデータインスタンスのみが修正インスタンス680に提供される(トレーニング例入力の生成に利用される視覚センサデータがオブジェクトを含むことを保証するための収集エンジンの必要性を取り除く)。トレーニング例680Aはまた、不正確な分類指標681および/または正確な分類指標682に基づくトレーニング例出力を含む。例えば、トレーニング例出力は、不正確な分類指標681は、センサデータインスタンス685A内のオブジェクトの正確な分類ではないこと、および、正確な分類指標682は、センサデータインスタンス685A内のオブジェクトの正確な分類であること、の一方または両方を示すことができる。
トレーニング例680Nは、修正インスタンス680のセンサデータインスタンス685Nに基づく入力を含む。例えば、センサデータインスタンス685Nは、センサデータインスタンス685Aのものとは異なる視覚センサデータインスタンスを含むことができる。例えば、オブジェクトを捕捉することもできるが、異なる姿勢から捕捉することもできる(すなわち、視覚センサが、捕捉中にオブジェクトに対して異なる姿勢)。トレーニング例680Nはまた、不正確な分類指標681および/または正確な分類指標682に基づくトレーニング例出力を含む。例えば、トレーニング例の出力は、不正確な分類指標681は、センサデータインスタンス685N内のオブジェクトの正確な分類ではないこと、および、正確な分類指標682は、センサデータインスタンス685N内のオブジェクトの正確な分類であること、の一方または両方を示すことができる。追加のトレーニング例は、トレーニング例680Aと680Nとの間の省略記号で示されているように、修正インスタンス680に基づいて生成することができる。
トレーニングエンジン145は、トレーニング例680A~680N、および他のロボットからの修正インスタンスに基づいて生成された任意選択的に追加のトレーニング例を使用して、ニューラルネットワークID684に対応するニューラルネットワークモデルをトレーニングする。そのようなトレーニングを通して、改訂されたニューラルネットワークモデル151Gが生成され、ニューラルネットワークID684のニューラルネットワークモデルの代わりに使用するために提供することができる。
図7は、ロボット700の例示的なアーキテクチャを概略的に示す。図1のロボット190および/または追加のロボット192は、図7の例示的なアーキテクチャの1つ以上の構成要素を実装し得る。ロボット700は、ロボット制御システム760、1つ以上の動作構成要素704a~704n、および1つ以上のセンサ708a~708mを含む。センサ708a~708mは、例えば、視覚センサ(例えば、カメラ(複数可)、3Dスキャナ)、光センサ、圧力センサ、圧力波センサ(例えば、マイクロフォン)、近接センサ、加速度計、ジャイロスコープ、温度計、気圧計、などを含み得る。センサ708a~708mはロボット700と一体化されているように示されているが、これは限定することを意味するものではない。いくつかの実装形態では、センサ708a~708mは、例えばスタンドアロンユニットとして、ロボット700の外部に配置されてもよい。
動作構成要素704a~704nは、例えば、1つ以上のエンドエフェクタ(例えば、把持エンドエフェクタ)および/またはロボットの1つ以上の構成要素の動きを実現するための1つ以上のサーボモータまたは他のアクチュエータを含み得る。例えば、ロボット700は、複数の自由度を有してもよく、アクチュエータの各々は、制御コマンドに応答して1つ以上の自由度内でロボット700の作動を制御してもよい。本明細書で使用する、アクチュエータという用語は、アクチュエータに関連付けられ得、かつ受信した制御コマンドを、アクチュエータを駆動するための1つ以上の信号に変換する、任意のドライバ(複数可)に加えて、動きを作り出す機械的または電気的デバイス(例えば、モータ)を包含する 。したがって、制御コマンドをアクチュエータに提供することは、制御コマンドを電気的または機械的デバイスを駆動して所望の運動を作り出すための適切な信号に変換するドライバに制御コマンドを提供することを含み得る。
制御システム702は、CPU、GPU、および/またはロボット700の他のコントローラ(複数可)などの1つ以上のプロセッサに実装され得る。いくつかの実装形態では、ロボット700は、制御システム702のすべてまたは態様を含み得る「ブレインボックス」を備え得る。例えば、ブレインボックスは、データのリアルタイムバーストを動作構成要素704a~nに提供し得、リアルタイムバーストの各々は、とりわけ、動作構成要704a~nの1つ以上の各々に対する動きのパラメータ(もしあれば)を指令する1つ以上の制御コマンドのセットを備える。
制御システム702は、ロボット700の一体部分として図7に図示されているが、いくつかの実装形態では、制御システム702のすべてまたは態様は、ロボット700とは別個であるが通信している構成要素に実装されてもよい。例えば、制御システム702のすべてまたは態様は、コンピューティングデバイス810などの、ロボット700と有線および/または無線通信する1つ以上のコンピューティングデバイス上に実装されてもよい。
いくつかの実装形態では、制御システム702は、図1の構成要素103のうちの1つ以上を機能的に実装および/またはそれらとインターフェースする。例えば、制御システム702は、計画モジュール122、コマンドモジュール123、UI入力モジュール124、UI出力モジュール125、修正モジュール126、修正インスタンスエンジン130、および/またはロボットデータエンジン135を実装してもよい。また、例えば、制御システム702は、パラメータモジュール121A~Nおよび/またはNLPシステム133と(例えば、ネットワークインターフェース715を介して)インターフェースしてもよい。追加的または代替的に、制御システム702は、パラメータモジュール121A~Nのうちの1つ以上を実装してもよく、任意選択的にニューラルネットワークモデル150A~Nのうちの1つ以上を局所的に保存してもよい。
図8は、本明細書で説明する手法の1つ以上の態様を実行するために任意選択的に利用し得る例示的なコンピューティングデバイス810のブロック図である。コンピューティングデバイス810は、典型的には、バスサブシステム812を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ814を含む。これらの周辺機器は、例えば、メモリサブシステム825およびファイル記憶サブシステム826を含む記憶サブシステム824、ユーザインターフェース出力デバイス820、ユーザインターフェース入力デバイス822、およびネットワークインターフェースサブシステム816を含み得る。入力および出力デバイスは、ユーザがコンピューティングデバイス810と対話するのを可能にする。ネットワークインターフェースサブシステム816は、外部ネットワークへのインターフェースを提供し、他のコンピューティングデバイス内の対応するインターフェースデバイスに結合される。
ユーザインターフェース入力デバイス822は、キーボード、マウス、トラックボール、タッチパッド、またはグラフィックタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システム、マイクロフォンなどのオーディオ入力デバイス、および/または他のタイプの入力デバイスを含み得る。概して、「入力デバイス」という用語の使用は、すべての可能なタイプのデバイス、およびコンピューティングデバイス810または通信ネットワークに情報を入力する方法を含むことを意図している。
ユーザインターフェース出力デバイス820は、ディスプレイサブシステム、プリンタ、ファックスマシーン、またはオーディオ出力デバイスなどの非視覚ディスプレイを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、投射型デバイス、または可視画像を作成するためのなんらかの他のメカニズムを含み得る。ディスプレイサブシステムはまた、オーディオ出力デバイスを介してなど非視覚ディスプレイも提供し得る。概して、「出力デバイス」という用語の使用は、すべての可能なタイプのデバイス、およびコンピューティングデバイス810からユーザへ、あるいは別のマシンまたはコンピューティングデバイスへ情報を出力する方法を含むことを意図している。
記憶サブシステム824は、本明細書で説明されるモジュールの一部またはすべての機能を提供するプログラミングおよびデータ構造体を保存する。例えば、記憶サブシステム824は、本明細書で説明される方法の選択された態様を実行するためのロジックを含み得る。
これらのソフトウェアモジュールは概して、単独で、または他のプロセッサと組み合わせて、プロセッサ814によって実行される。記憶サブシステム824において使用されるメモリ825は、プログラム実行中に命令およびデータを記憶するためのメインランダムアクセスメモリ(RAM)830、および固定命令が記憶される読み出し専用メモリ(ROM)832を含むいくつかのメモリを含むことができる。ファイル記憶サブシステム826は、プログラムおよびデータファイルの永続的な保存を提供することができ、ハードディスクドライブ、フロッピーディスクドライブとともに関連するリムーバブルメディア、CD-ROMドライブ、光学ドライブ、またはリムーバブルメディアカートリッジを含み得る。特定の実装形態の機能を実装するモジュールは、記憶サブシステム824内のファイル記憶サブシステム826によって保存されてもよく、またはプロセッサ(複数可)814によってアクセス可能な他のマシンに保存されてもよい。
バスサブシステム812は、コンピューティングデバイス810の様々な構成要素およびサブシステムを意図したとおりに互いに通信させるためのメカニズムを提供する。バスサブシステム812は単一のバスとして概略的に示されているが、バスサブシステムの代替の実装形態は複数のバスを使用してもよい。
コンピューティングデバイス810は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムまたはコンピューティングデバイスを含む様々なタイプのものであることができる。コンピュータおよびネットワークの絶えず変化する性質のため、図8に示されるコンピューティングデバイス810の説明は、いくつかの実装形態を例示するための具体的な例としてのみ意図されている。図8に示されるコンピューティングデバイスよりも多いまたは少ない構成要素を有する、コンピューティングデバイス810の多くの他の構成が可能である。
本明細書ではいくつかの実装形態を記載および図示してきたが、機能を実行し、および/または結果を得るための様々な他の手段および/または構造、および/または本明細書で記載された1つ以上の利点が利用されてもよく、そのような変形および/または改変の各々は、本明細書で記載された実装形態の範囲内であるとみなされる。より一般的には、本明細書で記載されるすべてのパラメータ、寸法、材料、および構成は、例示であることを意図し、実際のパラメータ、寸法、材料、および/または構成は、本教示が使用される具体的な用途または応用に依存する。当業者は、型どおりの実験だけを使用して、本明細書に記載された具体的な実装形態に対する多くの等価物を認識するか、確かめることができるであろう。したがって、前述の実装形態は例としてのみ提示されており、添付の特許請求の範囲およびその等価物の範囲内で、具体的に記載および特許請求されている以外の方法で実装形態が実施され得ることを理解されたい。本開示の実施形態は、本明細書に記載の各個々の特徴、システム、物品、材料、キット、および/または方法を対象とする。加えて、そのような特徴、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組み合わせが、本開示の範囲内に含まれる。