(57)【要約】  ロボットのエンドエフェクタによる物体の操作に関連する深層機械学習方法および装置。いくつかの実装形態は、ロボットのエンドエフェクタに関する候補動きデータがエンドエフェクタによる1つまたは複数の物体の成功した把持をもたらす尺度を予測するために深層ニューラルネットワークをトレーニングすることに関する。いくつかの実装形態は、把持エンドエフェクタによる物体の成功した把持を達成するためにロボットの把持エンドエフェクタをサーボ制御するためのトレーニングされた深層ニューラルネットワークの利用に向けられている。たとえば、トレーニングされた深層ニューラルネットワークは、ロボットの把持エンドエフェクタの姿勢を制御するロボットの1つまたは複数のアクチュエータのための動き制御コマンドの反復的な更新において、把持エンドエフェクタによる試行された把持を実施するために把持制御コマンドを生成するときを決定するために利用されてもよい。
2019508273.tif 000002
【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって、ロボットの把持エンドエフェクタを現在の姿勢から追加の姿勢に移動させる動きを定義する候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた現在の画像を識別するステップであって、前記画像が、前記把持エンドエフェクタと、前記ロボットの環境内の少なくとも1つの物体とをキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、トレーニングされた畳み込みニューラルネットワークへの入力として前記現在の画像と前記候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用による前記物体の成功した把持の尺度を生成するステップであって、前記尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記エンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記尺度に基づいてエンドエフェクタコマンドを生成するステップであって、前記エンドエフェクタコマンドが把持コマンドまたはエンドエフェクタ動きコマンドである、ステップと、
前記エンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
を備える、方法。
【請求項２】
前記プロセッサのうちの1つまたは複数によって、前記動きの適用なしの前記物体の成功した把持の現在の尺度を決定するステップをさらに備え、
前記エンドエフェクタコマンドを生成するステップが、前記尺度と前記現在の尺度とに基づく、
請求項1に記載の方法。
【請求項３】
前記エンドエフェクタコマンドが前記把持コマンドであり、前記把持コマンドを生成するステップが、前記尺度と前記現在の尺度との比較が閾値を満たすと判定するステップに応答する、請求項2に記載の方法。
【請求項４】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、前記エンドエフェクタ動きコマンドを生成するステップが、前記候補エンドエフェクタ動きベクトルに適合するように前記エンドエフェクタ動きコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項５】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、前記エンドエフェクタ動きコマンドを生成するステップが、前記エンドエフェクタに対する軌道修正を実施するように前記エンドエフェクタ動きコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項６】
前記動きの適用なしの前記物体の前記成功した把持の前記現在の尺度を決定するステップが、
前記プロセッサのうちの1つまたは複数によって、前記トレーニングされた畳み込みニューラルネットワークへの入力として前記画像とヌルエンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用なしの前記物体の前記成功した把持の前記現在の尺度を生成するステップであって、前記現在の尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記ヌルエンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと
を備える、請求項2から5のいずれか一項に記載の方法。
【請求項７】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、かつ前記候補エンドエフェクタ動きベクトルに適合し、前記エンドエフェクタ動きコマンドを前記1つまたは複数のアクチュエータに提供するステップが、前記エンドエフェクタを新しい姿勢に移動させ、
1つまたは複数のプロセッサによって、前記把持エンドエフェクタを前記新しい姿勢からさらなる追加姿勢に移動させる新しい動きを定義する追加の候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた新しい画像を識別するステップであって、前記新しい画像が、前記新しい姿勢における前記エンドエフェクタをキャプチャし、かつ前記環境内の前記物体をキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、前記トレーニングされた畳み込みニューラルネットワークへの入力として前記新しい画像と前記追加の候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記新しい動きの適用による前記物体の成功した把持の新しい尺度を生成するステップであって、前記新しい尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記新しい画像および前記新しいエンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記新しい尺度に基づいて新しいエンドエフェクタコマンドを生成するステップであって、前記新しいエンドエフェクタコマンドが、前記把持コマンドまたは新しいエンドエフェクタ動きコマンドである、ステップと、
前記新しいエンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
をさらに備える、請求項1、2、および4のいずれか一項に記載の方法。
【請求項８】
前記トレーニングされた畳み込みニューラルネットワークへの入力として前記画像と前記候補エンドエフェクタ動きベクトルとを適用するステップが、
前記トレーニングされた畳み込みニューラルネットワークの初期層への入力として前記画像を適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークの追加層に前記候補エンドエフェクタ動きベクトルを適用するステップであって、前記追加層が前記初期層の下流にある、ステップと
を備える、請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記追加層に前記候補エンドエフェクタ動きベクトルを適用するステップが、
エンドエフェクタ動きベクトル出力を生成するために前記エンドエフェクタ動きベクトルを前記畳み込みニューラルネットワークの全結合層に渡すステップと、
前記エンドエフェクタ動きベクトル出力を上流出力と連結するステップであって、前記上流出力が、前記追加層のすぐ上流にありかつ前記畳み込みニューラルネットワークの初期層および1つまたは複数の中間層から下流にある前記畳み込みニューラルネットワークのすぐ上流の層からのものである、請求項8に記載の方法。
【請求項１０】
前記初期層が畳み込み層であり、前記すぐ上流の層がプーリング層である、請求項9に記載の方法。
【請求項１１】
前記プロセッサのうちの1つまたは複数によって、前記視覚センサによってキャプチャされた追加画像を識別するステップであって、前記追加画像が、前記1つまたは複数の環境物体をキャプチャし、かつロボットエンドエフェクタを省略するかまたは前記画像内の前記ロボットエンドエフェクタの姿勢と異なる姿勢における前記ロボットエンドエフェクタを含む、ステップと、
前記トレーニングされた畳み込みニューラルネットワークへの追加入力として前記追加画像を適用するステップと
をさらに備える、請求項1から10のいずれか一項に記載の方法。
【請求項１２】
前記画像と前記追加画像とを前記畳み込みニューラルネットワークに適用するステップが、
連結画像を生成するために前記画像と前記追加画像とを連結するステップと、
前記畳み込みニューラルネットワークの初期層への入力として前記連結画像を適用するステップと
を備える、請求項11に記載の方法。
【請求項１３】
前記候補エンドエフェクタ動きベクトルを生成するステップが、
複数の候補エンドエフェクタ動きベクトルを生成するステップと、
前記複数の候補エンドエフェクタ動きベクトルから前記候補エンドエフェクタ動きベクトルを選択するために、前記複数の候補エンドエフェクタ動きベクトルに対してクロスエントロピー最適化の1つまたは複数の反復を実行するステップと
を備える、請求項1から12のいずれか一項に記載の方法。
【請求項１４】
環境を見ている視覚センサと、
1つまたは複数の非一時的コンピュータ可読記憶媒体内に記憶されたトレーニングされた畳み込みニューラルネットワークと、
少なくとも1つのプロセッサであって、
ロボットエンドエフェクタを現在の姿勢から追加の姿勢に移動させる動きを定義する候補エンドエフェクタ動きベクトルを生成することと、
前記トレーニングされた畳み込みニューラルネットワークへの入力として、前記候補エンドエフェクタ動きベクトルと、前記視覚センサによってキャプチャされた画像とを適用することであって、前記画像が、エンドエフェクタと、物体の環境内の少なくとも1つの前記物体とをキャプチャする、適用することと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用による前記物体の成功した把持の尺度を生成することであって、前記尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記エンドエフェクタ動きベクトルの前記適用に基づいて生成される、生成することと、
前記尺度に基づいてエンドエフェクタコマンドを生成することであって、前記エンドエフェクタコマンドが、把持コマンドまたはエンドエフェクタ動きコマンドである、生成することと、
前記エンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供することと
を行うように構成される少なくとも1つのプロセッサと
を備える、システム。
【請求項１５】
畳み込みニューラルネットワークをトレーニングする方法であって、
1つまたは複数のプロセッサによって、1つまたは複数のロボットによる複数の把持試行中に前記ロボットからのセンサ出力に基づいて生成された複数のトレーニング例を識別するステップであって、
前記トレーニング例の各々が、
前記把持試行のうちの対応する把持試行の対応する時間インスタンスの画像であって、前記画像が、前記対応する時間インスタンスにおけるロボットエンドエフェクタと1つまたは複数の環境物体とをキャプチャする、画像と、
前記対応する時間インスタンスにおける前記エンドエフェクタの時間インスタンス姿勢から前記対応する把持試行に関する前記エンドエフェクタの最終姿勢へ動く前記エンドエフェクタの動きを定義するエンドエフェクタ動きベクトルと
を含むトレーニング例入力を含み、
前記トレーニング例の各々が、
前記対応する把持試行の成功を示す把持成功ラベルを備える
トレーニング例出力を含む、
ステップと、
前記プロセッサのうちの1つまたは複数によって、前記トレーニング例に基づいて前記畳み込みニューラルネットワークをトレーニングするステップと
を備える、方法。
【請求項１６】
前記トレーニング例の各々の前記トレーニング例入力が、
前記対応する把持試行に関する追加画像をさらに備え、前記追加画像が、前記1つまたは複数の環境物体をキャプチャし、かつ前記ロボットエンドエフェクタを省略するかまたは前記画像内の前記ロボットエンドエフェクタの姿勢と異なる姿勢における前記ロボットエンドエフェクタを含む、請求項15に記載の方法。
【請求項１７】
前記追加画像が前記ロボットエンドエフェクタを完全に省略する、請求項16に記載の方法。
【請求項１８】
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
連結画像を生成するために、前記所与のトレーニング例の前記画像と前記追加画像とを連結するステップと、
前記畳み込みニューラルネットワークの初期層への入力として前記連結画像を適用するステップと
を備える、請求項16または17に記載の方法。
【請求項１９】
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
前記畳み込みニューラルネットワークの初期層への入力として前記所与のトレーニング例の前記画像を適用するステップと、
前記所与のトレーニング例の前記エンドエフェクタ動きベクトルを前記畳み込みニューラルネットワークの追加層に適用するステップであって、前記追加層が前記初期層の下流にある、ステップと
を備える、請求項15から18のいずれか一項に記載の方法。
【請求項２０】
前記エンドエフェクタ動きベクトルを前記追加層に適用するステップが、
エンドエフェクタ動きベクトル出力を生成するために前記エンドエフェクタ動きベクトルを全結合層に渡すステップと、前記エンドエフェクタ動きベクトル出力を上流出力に連結するステップとを備え、前記上流出力が、前記追加層のすぐ上流にあり、かつ前記畳み込みニューラルネットワークの前記初期層および1つまたは複数の中間層から下流にある前記畳み込みニューラルネットワークのすぐ上流の層からのものである、請求項19に記載の方法。
【請求項２１】
前記初期層が畳み込み層であり、前記すぐ上流の層がプーリング層である、請求項20に記載の方法。
【請求項２２】
前記エンドエフェクタ動きベクトルがタスク空間における前記エンドエフェクタの動きを定義する、請求項15から21のいずれか一項に記載の方法。
【請求項２３】
前記トレーニング例が、
第1のロボットによる複数の前記把持試行中に前記第1のロボットの複数の第1のロボットセンサからの出力に基づいて生成された前記トレーニング例の第1のグループと、
第2のロボットによる複数の前記把持試行中に前記第2のロボットの複数の第2のロボットセンサからの出力に基づいて生成された前記トレーニング例の第2のグループと
を備える、請求項15から22のいずれか一項に記載の方法。
【請求項２４】
前記第1のロボットセンサが、前記第1のグループの前記トレーニング例に関する前記画像を生成する第1の視覚センサを備え、前記第2のロボットセンサが、前記第2のグループの前記トレーニング例に関する前記画像を生成する第2の視覚センサを備え、前記第1のロボットの第1のベースに対する前記第1の視覚センサの第1の姿勢が、前記第2のロボットの第2のベースに対する前記第2の視覚センサの第2の姿勢とは異なる、請求項23に記載の方法。
【請求項２５】
複数のトレーニング例が基づく前記把持試行が、前記エンドエフェクタを前記エンドエフェクタの開始姿勢から前記エンドエフェクタの前記最終姿勢にランダムに動かし、次いで前記最終姿勢において前記エンドエフェクタで把持する複数のランダムアクチュエータコマンドをそれぞれ備える、請求項15から24のいずれか一項に記載の方法。
【請求項２６】
前記トレーニングされた畳み込みニューラルネットワークに基づいて追加の把持試行を生成するステップと、
前記追加の把持試行に基づいて複数の追加のトレーニング例を識別するステップと、
前記追加のトレーニング例に基づく前記畳み込みネットワークのさらなるトレーニングによって前記畳み込みニューラルネットワークを更新するステップと
をさらに備える、請求項25に記載の方法。
【請求項２７】
前記トレーニング例の各々に関する前記把持成功ラベルが、成功を示す第1の値または失敗を示す第2の値のいずれかである、請求項15から26のいずれか一項に記載の方法。
【請求項２８】
前記トレーニングするステップが、前記複数のトレーニング例の前記トレーニング例出力に基づいて前記畳み込みニューラルネットワークに対する逆伝播を実行するステップを備える、請求項15から27のいずれか一項に記載の方法。
【請求項２９】
少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、請求項1から13および15から28のいずれか一項に記載の方法を実行させる、コンピュータ可読命令。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットの把持のための深層機械学習方法および装置に関する。
【背景技術】
【０００２】
多くのロボットは、1つまたは複数の物体を把持するために1つまたは複数のエンドエフェクタを利用するようにプログラムされる。たとえば、ロボットは、物体を第1の位置から拾い上げ、物体を第2の位置に移動させ、かつ物体を第2の位置に落とすために、(たとえば、ピン、針などを使用して物体に物理的に突き刺さる)「衝撃的(impactive)」グリッパまたは「侵入的(ingressive)」グリッパなどの把持エンドエフェクタを利用することができる。物体を把持することができるロボットエンドエフェクタのいくつかの追加の例は、2〜3例を挙げると、(たとえば、物体を拾い上げるために吸引または真空を使用する)「収斂性(astrictive)」エンドエフェクタ、および1つまたは複数の(たとえば、物体を拾い上げるために表面張力、凍結、または接着を使用する)「接触的(contigutive)」エンドエフェクタを含む。
【発明の概要】
【課題を解決するための手段】
【０００３】
本明細書は、全体的に、ロボットのエンドエフェクタによる物体の操作に関連する深層機械学習方法および装置に向けられている。いくつかの実装形態は、ロボットのエンドエフェクタに関する候補動きデータがエンドエフェクタによる1つもしくは複数の物体の成功した把持をもたらす確率を予測するために、(本明細書では"CNN"とも呼ばれる)畳み込みニューラルネットワーク(convolutional neural network)などの深層ニューラルネットワークをトレーニングすることに向けられている。たとえば、いくつかの実装形態は、トレーニングされた深層ニューラルネットワークへの入力として、少なくとも、(1)ロボットの把持エンドエフェクタの候補動き(もしあるなら)を定義する候補動きベクトルと、(2)ロボットの作業空間の少なくとも一部をキャプチャする画像とを適用することができ、適用することに基づいて、少なくとも、候補動きベクトルが成功した把持をもたらす確率を直接もしくは間接的に示す尺度を生成することができる。予測された確率は、次いで把持エンドエフェクタを有するロボットによる把持試行のサーボ制御動作において使用され、それによってその環境における物体を成功裏に把持するロボットの能力を改善することができる。
【０００４】
いくつかの実装形態は、把持エンドエフェクタによって物体の成功した把持を達成するために、ロボットの把持エンドエフェクタをサーボ制御するための、トレーニングされた深層ニューラルネットワークの利用に向けられている。たとえば、ロボットの把持エンドエフェクタの姿勢を制御するロボットの1つまたは複数のアクチュエータのための動き制御コマンドの反復的な更新において、および把持エンドエフェクタによる試行された把持を実施するために把持制御コマンドを生成するときを決定するために、トレーニングされた深層ニューラルネットワークが利用されてもよい。様々な実装形態では、把持エンドエフェクタをサーボ制御するためのトレーニングされた深層ニューラルネットワークの利用は、ロボットの混乱および/もしくは環境物体の動きに対する高速フィードバックならびに/または不正確なロボットの作動に対するロバスト性を可能にすることができる。
【０００５】
いくつかの実装形態では、ロボットの把持エンドエフェクタを現在の姿勢から追加の姿勢に移動する動きを定義する候補エンドエフェクタ動きベクトルを生成するステップを含む方法が提供される。本方法は、ロボットに関連付けられた視覚センサによって取り込まれ、把持エンドエフェクタと、ロボットの環境内の少なくとも1つの物体とをキャプチャする現在の画像を識別するステップをさらに含む。本方法は、トレーニングされた畳み込みニューラルネットワークへの入力として現在の画像と候補エンドエフェクタ動きベクトルとを適用するステップと、トレーニングされた畳み込みニューラルネットワークを介して、動きの適用による物体の成功した把持の尺度を生成するステップとをさらに含む。尺度は、トレーニングされた畳み込みニューラルネットワークへの画像およびエンドエフェクタ動きベクトルの適用に基づいて生成される。本方法は、オプションで尺度に基づいてエンドエフェクタコマンドを生成するステップと、エンドエフェクタコマンドをロボットの1つまたは複数のアクチュエータに提供するステップをさらに含む。エンドエフェクタコマンドは、把持コマンドまたはエンドエフェクタ動きコマンドであってもよい。
【０００６】
この方法および本明細書で開示される技術の他の実装形態は、各々以下の特徴のうちの1つまたは複数をオプションで含んでもよい。
【０００７】
いくつかの実装形態では、本方法は、動きの適用なしの物体の成功した把持の現在の尺度を決定するステップと、尺度と現在の尺度とに基づいてエンドエフェクタコマンドを生成するステップとをさらに含む。それらの実装形態のうちのいくつかの変形では、エンドエフェクタコマンドは、把持コマンドであり、把持コマンドを生成するステップは、尺度と現在の尺度との比較が閾値を満たすと判定するステップに応答する。それらの実装形態のいくつかの他の変形では、エンドエフェクタコマンドは、エンドエフェクタ動きコマンドであり、エンドエフェクタ動きコマンドを生成するステップは、候補エンドエフェクタ動きベクトルに従うようにエンドエフェクタ動きコマンドを生成するステップを含む。それらの実装形態のさらに他の変形では、エンドエフェクタコマンドは、エンドエフェクタ動きコマンドであり、エンドエフェクタ動きコマンドを生成するステップは、エンドエフェクタに対する軌道修正を実施するようにエンドエフェクタ動きコマンドを生成するステップを含む。いくつかの実装形態では、動きの適用なしの物体の成功した把持の現在の尺度を決定するステップは、トレーニングされた畳み込みニューラルネットワークへの入力として画像とヌルエンドエフェクタ動きベクトルとを適用するステップと、トレーニングされた畳み込みニューラルネットワークを介して、動きの適用なしの物体の成功した把持の現在の尺度を生成するステップとを含む。
【０００８】
いくつかの実装形態では、エンドエフェクタコマンドは、エンドエフェクタ動きコマンドであり、候補エンドエフェクタ動きベクトルに従う。それらの実施形態のうちのいくつかでは、エンドエフェクタ動きコマンドを1つまたは複数のアクチュエータに提供するステップは、エンドエフェクタを新しい姿勢に移動させ、本方法は、把持エンドエフェクタを新しい姿勢からさらなる追加姿勢に移動させる新しい動きを定義する追加の候補エンドエフェクタ動きベクトルを生成するステップと、ロボットに関連付けられた視覚センサによってキャプチャされた新しい画像を識別するステップであって、新しい画像が、新しい姿勢におけるエンドエフェクタをキャプチャし、環境内の物体をキャプチャする、ステップと、トレーニングされた畳み込みニューラルネットワークへの入力として新しい画像と追加の候補エンドエフェクタ動きベクトルとを適用するステップと、トレーニングされた畳み込みニューラルネットワークを介して、新しい動きの適用による物体の成功した把持の新しい尺度を生成するステップであって、新しい尺度が、トレーニングされた畳み込みニューラルネットワークへの新しい画像および追加のエンドエフェクタ動きベクトルの適用に基づいて生成される、ステップと、新しい尺度に基づいて新しいエンドエフェクタコマンドを生成するステップであって、新しいエンドエフェクタコマンドが、把持コマンドまたは新しいエンドエフェクタ動きコマンドである、ステップと、新しいエンドエフェクタコマンドをロボットの1つまたは複数のアクチュエータに提供するステップとをさらに含む。
【０００９】
いくつかの実装形態では、トレーニングされた畳み込みニューラルネットワークへの入力として画像と候補エンドエフェクタ動きベクトルとを適用するステップは、トレーニングされた畳み込みニューラルネットワークの初期層への入力として画像を適用するステップと、トレーニングされた畳み込みニューラルネットワークの追加層に候補エンドエフェクタ動きベクトルを適用するステップとを含む。追加層は、初期層の下流にあってもよい。それらの実装形態のうちのいくつかでは、追加層に候補エンドエフェクタ動きベクトルを適用するステップが、エンドエフェクタ動きベクトル出力を生成するためにエンドエフェクタ動きベクトルを畳み込みニューラルネットワークの全結合層に渡すステップと、エンドエフェクタ動きベクトル出力を上流出力と連結するステップとを含む。上流出力は、追加層のすぐ上流にあり、畳み込みニューラルネットワークの初期層および1つまたは複数の中間層から下流にある畳み込みニューラルネットワークのすぐ上流の層からのものである。初期層は、畳み込み層であってもよく、すぐ上流の層は、プーリング層であってもよい。
【００１０】
いくつかの実装形態では、本方法は、視覚センサによってキャプチャされた追加画像を識別するステップと、トレーニングされた畳み込みニューラルネットワークへの追加入力として追加画像を適用するステップとをさらに含む。追加画像は、1つまたは複数の環境物体をキャプチャし、ロボットエンドエフェクタを省略するか、または画像内のロボットエンドエフェクタの姿勢と異なる姿勢におけるロボットエンドエフェクタを含んでもよい。それらの実装形態のうちのいくつかでは、画像と追加画像とを畳み込みニューラルネットワークに適用するステップは、連結画像を生成するために画像と追加画像とを連結するステップと、畳み込みニューラルネットワークの初期層への入力として連結画像を適用するステップとを含む。
【００１１】
いくつかの実装形態では、候補エンドエフェクタ動きベクトルを生成するステップは、複数の候補エンドエフェクタ動きベクトルを生成するステップと、複数の候補エンドエフェクタ動きベクトルから候補エンドエフェクタ動きベクトルを選択するために、複数の候補エンドエフェクタ動きベクトルにクロスエントロピー最適化の1回または複数回の反復を実行するステップとを含む。
【００１２】
いくつかの実装形態では、ロボットによる複数の把持試行中に1つまたは複数のロボットからのセンサ出力に基づいて生成された複数のトレーニング例を識別するステップを含む方法が提供される。トレーニング例の各々は、トレーニング例入力とトレーニング例出力とを含む。トレーニング例の各々のトレーニング例入力は、把持試行のうちの対応する把持試行の対応する時間インスタンスに関する画像であって、対応する時間インスタンスにおけるロボットエンドエフェクタと1つまたは複数の環境物体とをキャプチャする画像と、対応する時間インスタンスにおけるエンドエフェクタの時間インスタンス姿勢から対応する把持試行に関するエンドエフェクタの最終姿勢に移動するエンドエフェクタの動きを定義するエンドエフェクタ動きベクトルとを含む。トレーニング例の各々のトレーニング例出力は、対応する把持試行の成功を示す把持成功ラベルを含む。本方法は、トレーニング例に基づいて畳み込みニューラルネットワークをトレーニングするステップをさらに含む。
【００１３】
この方法および本明細書で開示される技術の他の実装形態は、各々以下の特徴のうちの1つまたは複数をオプションで含んでもよい。
【００１４】
いくつかの実装形態では、トレーニング例の各々のトレーニング例入力は、対応する把持試行に関する追加画像をさらに含む。追加画像は、1つまたは複数の環境物体をキャプチャし、ロボットエンドエフェクタを省略するか、または画像内のロボットエンドエフェクタの姿勢と異なる姿勢におけるロボットエンドエフェクタを含んでもよい。いくつかの実装形態では、畳み込みニューラルネットワークをトレーニングするステップは、畳み込みニューラルネットワークに、トレーニング例のうちの所与のトレーニング例のトレーニング例入力を適用するステップを含む。それらの実装形態のうちのいくつかでは、所与のトレーニング例のトレーニング例入力を適用するステップは、連結画像を生成するために画像と所与のトレーニング例の追加画像とを連結するステップと、畳み込みニューラルネットワークの初期層への入力として連結画像を適用するステップとを含む。
【００１５】
いくつかの実装形態では、畳み込みニューラルネットワークをトレーニングするステップは、畳み込みニューラルネットワークに、トレーニング例のうちの所与のトレーニング例のトレーニング例入力を適用するステップを含む。それらの実装形態のうちのいくつかでは、所与のトレーニング例のトレーニング例入力を適用するステップは、畳み込みニューラルネットワークの初期層への入力として所与のトレーニング例の画像を適用するステップと、所与のトレーニング例のエンドエフェクタ動きベクトルを畳み込みニューラルネットワークの追加層に適用するステップとを含む。追加層は、初期層の下流にあってもよい。それらの実装形態のうちのいくつかでは、エンドエフェクタ動きベクトルを追加層に適用するステップは、エンドエフェクタ動きベクトル出力を生成するためにエンドエフェクタ動きベクトルを全結合層に渡すステップと、エンドエフェクタ動きベクトル出力を上流出力に連結するステップとを含む。上流出力は、追加層のすぐ上流にあり、畳み込みニューラルネットワークの初期層および1つまたは複数の中間層から下流にある畳み込みニューラルネットワークのすぐ上流の層からのものであってもよい。初期層は、畳み込み層であってもよく、すぐ上流の層は、プーリング層であってもよい。
【００１６】
いくつかの実装形態では、エンドエフェクタ動きベクトルは、タスク空間におけるエンドエフェクタの動きを定義する。
【００１７】
いくつかの実装形態では、トレーニング例は、第1のロボットによる複数の把持試行中に第1のロボットの複数の第1のロボットセンサからの出力に基づいて生成されたトレーニング例の第1のグループと、第2のロボットによる複数の把持試行中に第2のロボットの複数の第2のロボットセンサからの出力に基づいて生成されたトレーニング例の第2のグループとを含む。それらの実装形態のうちのいくつかでは、第1のロボットセンサは、第1のグループのトレーニング例に関する画像を生成する第1の視覚センサを含み、第2のロボットセンサは、第2のグループのトレーニング例に関する画像を生成する第2の視覚センサを含み、第1のロボットの第1のベースに対する第1の視覚センサの第1の姿勢は、第2のロボットの第2のベースに対する第2の視覚センサの第2の姿勢とは異なる。
【００１８】
いくつかの実装形態では、複数のトレーニング例が基づく把持試行は、エンドエフェクタをエンドエフェクタの開始姿勢からエンドエフェクタの最終姿勢にランダムに動かし、次いで最終姿勢においてエンドエフェクタで把持する複数のランダムアクチュエータコマンドをそれぞれ含む。それらの実装形態のうちのいくつかでは、本方法は、トレーニングされた畳み込みニューラルネットワークに基づいて追加の把持試行を生成するステップと、追加の把持試行に基づいて複数の追加のトレーニング例を識別するステップと、追加のトレーニング例に基づく畳み込みニューラルネットワークのさらなるトレーニングによって畳み込みニューラルネットワークを更新するステップとをさらに含む。
【００１９】
いくつかの実装形態では、トレーニング例の各々に関する把持成功ラベルは、成功を示す第1の値または失敗を示す第2の値のいずれかである。
【００２０】
いくつかの実装形態では、トレーニングするステップは、複数のトレーニング例のトレーニング例出力に基づいて畳み込みニューラルネットワークに対する逆伝播を実行するステップを備える。
【００２１】
他の実装形態は、上記で説明した方法のうちの1つまたは複数などの方法を実行するためにプロセッサ(たとえば、中央処理装置(CPU)またはグラフィックス処理装置(GPU))によって実行可能な命令を記憶する非一時的コンピュータ可読記憶媒体を含むことができる。さらに別の実装形態は、上記で説明した方法のうちの1つまたは複数などの方法を実行するために記憶された命令を実行するように動作可能な1つまたは複数のプロセッサを含む1つもしくは複数のコンピュータおよび/または1つもしくは複数のロボットのシステムを含むことができる。
【００２２】
前述の概念と本明細書でより詳細に説明される追加の概念のすべての組合せが本明細書で開示される主題の一部であると考えられることを理解すべきである。たとえば、本開示の最後に現れる特許請求される主題のすべての組合せが、本明細書で開示される主題の一部であると考えられる。
【図面の簡単な説明】
【００２３】
【図１】把持試行がロボットによって実行されてもよく、把持試行に関連するデータがトレーニング例を生成するために利用されてもよく、および/またはトレーニング例が畳み込みニューラルネットワークをトレーニングするために利用されてもよい例示的な環境を示す図である。
【図２】図1のロボットのうちの1つと、経路に沿ったロボットの把持エンドエフェクタの動きの一例とを示す図である。
【図３】把持試行を実行し、把持試行に関連するデータを記憶する例示的な方法を示すフローチャートである。
【図４】ロボットの把持試行に関連するデータに基づいてトレーニング例を生成する例示的な方法を示すフローチャートである。
【図５】トレーニング例に基づいて畳み込みニューラルネットワークをトレーニングする例示的な方法を示すフローチャートである。
【図６Ａ】例示的な畳み込みニューラルネットワークのアーキテクチャを示す図である。
【図６Ｂ】例示的な畳み込みニューラルネットワークのアーキテクチャを示す図である。
【図７Ａ】把持エンドエフェクタをサーボ制御するためにトレーニングされた畳み込みニューラルネットワークを利用する例示的な方法を示すフローチャートである。
【図７Ｂ】図7Aのフローチャートの特定のブロックのいくつかの実装形態を示すフローチャートである。
【図８】ロボットの例示的なアーキテクチャを概略的に示す図である。
【図９】コンピュータシステムの例示的なアーキテクチャを概略的に示す図である。
【発明を実施するための形態】
【００２４】
本明細書で説明される技術のいくつかの実装形態は、ロボットの把持エンドエフェクタに関する候補動きデータがエンドエフェクタによる1つまたは複数の物体の成功した把持をもたらす確率を示す尺度を予測するために、トレーニングされた深層ニューラルネットワークの利用を可能にするために、CNNなどの深層ニューラルネットワークをトレーニングすることに向けられている。いくつかの実装形態では、トレーニングされた深層ニューラルネットワークは、視覚センサによって生成された画像(It)を受け入れ、タスク空間動きベクトルなどのエンドエフェクタ動きベクトル(vt)を受け入れる。トレーニングされた深層ニューラルネットワークへの画像(It)およびエンドエフェクタ動きベクトル(vt)の適用は、深層ニューラルネットワークを介して、動きベクトル(vt)によって定義される動きを実施し、その後把持する実行コマンドが成功した把持を生じさせる予測尺度を生成するために使用されてもよい。いくつかの実装形態は、把持エンドエフェクタによる物体の成功した把持を達成するために、ロボットの把持エンドエフェクタをサーボ制御するための、トレーニングされた深層ニューラルネットワークの利用に向けられている。技術のこれらのおよび他の実装形態の追加の説明を以下に提供する。
【００２５】
図1〜図6Bを参照し、CNNをトレーニングする様々な実装形態について説明する。図1は、把持試行がロボット(たとえば、ロボット180A、180B、および/または他のロボット)によって実行されてもよく、把持試行に関連するデータがトレーニング例を生成するために利用されてもよく、ならびに/またはトレーニング例がCNNをトレーニングするために利用されてもよい例示的な環境を示す。
【００２６】
例示的なロボット180Aおよび180Bが図1に示される。ロボット180Aおよび180Bは、把持エンドエフェクタ182Aおよび182Bを所望の位置に位置決めするために複数の潜在的な経路のいずれかに沿った把持エンドエフェクタ182Aおよび182Bの横断を可能にするために複数の自由度を有する「ロボットアーム」である。たとえば、図2を参照すると、経路201に沿ってそのエンドエフェクタを横断させるロボット180Aの一例が示される。図2は、経路201に沿って横断する際にロボット180Aおよびそのエンドエフェクタによってとられる姿勢のセットのうちの2つの異なる姿勢を示すロボット180Aのファントム画像および非ファントム画像を含む。再び図1を参照すると、ロボット180Aおよび180Bは、それぞれそれらの対応する把持エンドエフェクタ182A、182Bの2つの対抗する「爪(claw)」を少なくとも開位置と閉位置(および/またはオプションで複数の「部分的に閉じられた」位置)との間で爪を作動させるようにさらに制御する。
【００２７】
例示的な視覚センサ184Aおよび184Bがまた図1に示される。図1では、視覚センサ184Aは、ロボット180Aのベースまたは他の静止した基準点に対して固定された姿勢で取り付けられる。視覚センサ184Bも、ロボット180Bのベースまたは他の静止した基準点に対して固定された姿勢で取り付けられる。図1に示すように、ロボット180Aに対する視覚センサ184Aの姿勢は、ロボット180Bに対する視覚センサ184Bの姿勢とは異なる。本明細書で説明するように、いくつかの実装形態では、これはカメラ較正に対して堅牢でありおよび/または独立したニューラルネットワークをトレーニングするために利用されてもよい様々なトレーニング例の生成を可能にするのに有益であってもよい。視覚センサ184Aおよび184Bは、センサの視線内にある物体の形状、色、奥行き、および/または他の特徴に関連する画像を生成することができるセンサである。視覚センサ184Aおよび184Bは、たとえばモノグラフィック(monographic)カメラ、立体カメラ、および/または3Dレーザスキャナであってもよい。3Dレーザスキャナは、光を放射する1つまたは複数のレーザと、放射された光の反射に関連するデータを収集する1つまたは複数のセンサとを含む。3Dレーザスキャナは、たとえば飛行時間型3Dレーザスキャナまたは三角測量ベースの3Dレーザスキャナであってもよく、位置検知型検出器(PSD(position sensitive detector))または他の光学的位置センサを含んでもよい。
【００２８】
視覚センサ184Aは、例示的な物体191Aを含む作業空間の一部などのロボット180Aの作業空間の少なくとも一部の視野を有する。物体191Aの載置面は、図1に示されていないが、それらの物体は、テーブル、トレイ、および/または他の表面上に載っていてもよい。物体191Aは、へら(spatula)と、ステープラと、鉛筆とを含む。他の実装形態では、より多くの物体、より少ない物体、追加の物体、および/または代替の物体が、本明細書で説明するようにロボット180Aの把持試行のすべてまたは一部の間に提供されてもよい。視覚センサ184Bは、例示的な物体191Bを含む作業空間の一部などのロボット180Bの作業空間の少なくとも一部の視野を有する。物体191Bの載置面は、図1に示されていないが、それらは、テーブル、トレイ、および/または他の表面上に載っていてもよい。物体191Bは、鉛筆と、ステープラと、眼鏡とを含む。他の実装形態では、より多くの物体、より少ない物体、追加の物体、および/または代替の物体が、本明細書で説明するようにロボット180Bの把持試行のすべてまたは一部の間に提供されてもよい。
【００２９】
特定のロボット180Aおよび180Bが図1に示されるが、ロボット180Aおよび180Bと同様の追加のロボットアーム、他のロボットアーム形状を有するロボット、人間型形状を有するロボット、動物形状を有するロボット、1つまたは複数の車輪を介して移動するロボット(たとえば、自己平衡型ロボット)、潜水艇ロボット、無人航空機("UAV"(unmanned aerial vehicle))などを含む追加および/または代替ロボットが利用されてもよい。また、特定の把持エンドエフェクタが図1に示されるが、代替の衝撃的把持エンドエフェクタ(たとえば、把持「プレート」を有するもの、より多いまたはより少ない「指」/「爪」を有するもの)、「侵入的」把持エンドエフェクタ、「収斂性」把持エンドエフェクタ、もしくは「接触的」把持エンドエフェクタ、または非把持エンドエフェクタなどの追加のおよび/または代替のエンドエフェクタが利用されてもよい。加えて、視覚センサ184Aおよび184Bの特定の取り付けが図1に示されるが、追加のおよび/または代替の取り付けが利用されてもよい。たとえば、いくつかの実装形態では、視覚センサは、ロボットの非作動可能コンポーネント上、またはロボットの作動可能コンポーネント上(たとえば、エンドエフェクタ上またはエンドエフェクタに近いコンポーネント上)など、ロボットに直接取り付けられてもよい。また、たとえばいくつかの実装形態では、視覚センサは、その関連するロボットとは別個の非静止構造体に取り付けられてもよく、および/またはその関連するロボットとは別個の構造体上に非静止状態で取り付けられてもよい。
【００３０】
ロボット180A、180B、および/または他のロボットは、多量の把持試行を実行するために利用されてもよく、把持試行に関連するデータは、トレーニング例を生成するためにトレーニング例生成システム110によって利用されてもよい。いくつかの実装形態では、トレーニング例生成システム110のすべてまたは諸態様は、ロボット180Aおよび/またはロボット180Bにおいて(たとえば、ロボット180Aおよび180Bの1つまたは複数のプロセッサを介して)実装されてもよい。たとえば、ロボット180Aおよび180Bは、それぞれトレーニング例生成システム110のインスタンスを含むことができる。いくつかの実装形態では、トレーニング例生成システム110のすべてまたは態様は、ロボット180Aおよび180Bとは別個であるが、ロボット180Aおよび180Bとネットワーク通信する1つまたは複数のコンピュータシステム上に実装されてもよい。
【００３１】
ロボット180A、180B、および/または他のロボットによる各把持試行は、Tの別個の時間ステップまたはインスタンスからなる。各時間ステップにおいて、把持試行を実行するロボットの視覚センサによってキャプチャされた現在の画像
【数１】
2019508273.tif 000003
が記憶され、エンドエフェクタの現在の姿勢
【数２】
2019508273.tif 000004
もまた記憶され、ロボットは、次にグリッパを動かす経路(平行移動および/または回転)を選択する。最終時間ステップTにおいて、ロボットは、グリッパを作動させ(たとえば、閉じ)、把持の成功の評価を可能にするために追加のデータを記憶し、および/または1つもしくは複数の追加のアクションを実行する。トレーニング例生成システム110の把持成功エンジン116は、把持の成功を評価し、把持成功ラベル(li)を生成する。
【００３２】
各把持試行は、
【数３】
2019508273.tif 000005
によって表されるTのトレーニング例をもたらす。すなわち、各トレーニング例は、少なくともその時間ステップにおいて観察された画像
【数４】
2019508273.tif 000006
と、その時間ステップにおける姿勢から最終的に到達する画像(把持試行の最終姿勢)へのエンドエフェクタ動きベクトル
【数５】
2019508273.tif 000007
と、把持試行の把持成功ラベル(li)とを含む。各エンドエフェクタ動きベクトルは、トレーニング例生成システム110のエンドエフェクタ動きベクトルエンジン114によって決定されてもよい。たとえば、エンドエフェクタ動きベクトルエンジン114は、現在の姿勢と把持試行の最終姿勢との間の変換を決定し、変換をエンドエフェクタ動きベクトルとして使用することができる。複数のロボットの複数の把持試行に関するトレーニング例は、トレーニング例生成システム110によってトレーニング例データベース117内に記憶される。
【００３３】
ロボットに関連付けられたセンサによって生成されたデータ、および/または生成されたデータから導出されたデータは、ロボットに局所的な、および/またはロボットから離れた1つまたは複数の非一時的コンピュータ可読媒体内に記憶されてもよい。いくつかの実装形態では、現在の画像は、赤色チャネル、青色チャネル、緑色チャネル、および/または深度チャネルなどの複数のチャネルを含むことができる。画像の各チャネルは、画像のピクセルの各々に関する0から255までの値などの画像の複数のピクセルの各々に関する値を規定する。いくつかの実装形態では、トレーニング例の各々は、現在の画像と、対応する把持試行に関する追加画像とを含むことができ、追加画像は、把持エンドエフェクタを含まず、または異なる姿勢(たとえば、現在の画像の姿勢と重複しない姿勢)におけるエンドエフェクタを含む。たとえば、追加画像は、任意の先行する把持試行後であるが、把持試行に関するエンドエフェクタの動きが開始する前、および把持エンドエフェクタが視覚センサの視野外に移動されたときに取り込まれてもよい。現在の姿勢、および現在の姿勢から把持試行の最終姿勢へのエンドエフェクタ動きベクトルは、タスク空間において、ジョイント空間において、または別の空間において表されてもよい。たとえば、エンドエフェクタ動きベクトルは、タスク空間における5つの値、すなわち3次元(3D)平行移動ベクトルを規定する3つの値、およびエンドエフェクタの軸の周りのエンドエフェクタの向きにおける変化のサイン−コサイン符号化を表す2つの値によって表されてもよい。いくつかの実装形態では、把持成功ラベルは、「0/成功」または「1/不成功」ラベルなどの2値ラベルである。いくつかの実装形態では、把持成功ラベルは、0、1、および0と1との間の1つまたは複数の値などの2つ以上のオプションから選択されてもよい。たとえば、"0"は、確認された「不成功の把持」を示してもよく、"1"は、確認された「成功した把持」を示してもよく、"0.25"は、「成功しない可能性が最も高い把持」を示してもよく、"0.75"は、「成功する可能性が最も高い把持」を示してもよい。
【００３４】
トレーニングエンジン120は、トレーニング例データベース117のトレーニング例に基づいて、CNN125または他のニューラルネットワークをトレーニングする。CNN125をトレーニングすることは、CNN125へのトレーニング例の適用に基づいてCNN125を反復的に更新することを含んでもよい。たとえば、現在の画像、追加画像、および現在の姿勢からトレーニング例の把持試行の最終姿勢へのベクトルは、トレーニング例入力として利用されてもよく、把持成功ラベルは、トレーニング例出力として利用されてもよい。トレーニングされたCNN125は、現在の画像(および、オプションでエンドエフェクタを少なくとも部分的に省略した画像などの追加画像)を考慮して、所与のエンドエフェクタ動きベクトルに従ってグリッパを移動し、その後把持することが成功した把持を生じさせる確率を示す尺度を予測するようにトレーニングされる。
【００３５】
図3は、把持試行を実行し、把持試行に関連するデータを記憶する例示的な方法300を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、840、および/または他のロボットのプロセッサおよび/またはロボット制御システムなどのロボットの1つまたは複数のコンポーネントを含むことができる。さらに、方法300の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【００３６】
ブロック352において、システムは、把持試行を開始する。ブロック354において、システムは、エンドエフェクタが画像内に存在しない環境の画像を記憶する。たとえば、システムは、把持エンドエフェクタを視覚センサの視野外に移動させ(すなわち、環境の眺めを遮らない)、把持エンドエフェクタが視野外にあるときのインスタンスにおける画像を取り込むことができる。画像は、次いで記憶され、把持試行に関連付けられてもよい。
【００３７】
ブロック356において、システムは、エンドエフェクタの動きを決定しかつ実施する。たとえば、システムは、エンドエフェクタの姿勢を制御するアクチュエータのうちの1つまたは複数を作動させ、それによってエンドエフェクタの姿勢を変化させる1つまたは複数の動きコマンドを生成することができる。
【００３８】
ブロック356のいくつかの実装形態および/または反復では、動きコマンドは、エンドエフェクタによって到達可能な作業空間、エンドエフェクタが把持試行に限られる制限された空間、ならびに/またはエンドエフェクタの姿勢を制御するアクチュエータの位置制限および/もしくはトルク制限によって規定される空間などの所与の空間内でランダムであってもよい。たとえば、ニューラルネットワークの初期トレーニングが完了する前に、エンドエフェクタの動きを実施するためにブロック356においてシステムによって生成された動きコマンドは、所与の空間内でランダムであってもよい。本明細書で使用されるランダムは、真のランダムまたは疑似ランダムを含むことができる。
【００３９】
いくつかの実装形態では、エンドエフェクタの移動を実施するためにブロック356においてシステムによって生成された動きコマンドは、トレーニングされたニューラルネットワークの現在のバージョンに少なくとも部分的に基づくことができ、および/または他の基準に基づくことができる。いくつかの実装形態では、各把持試行に対するブロック356の最初の反復において、エンドエフェクタは、エンドエフェクタがブロック354において視野外に移動されることに基づいて、「位置の外」であってもよい。これらの実装形態のうちのいくつかでは、ブロック356の最初の反復の前に、エンドエフェクタは、ランダムにまたは他の形で「位置に戻す」ように動かされてもよい。たとえば、エンドエフェクタは、設定された「開始位置」に戻されてもよく、および/または所与の空間内のランダムに選択された位置に移動されてもよい。
【００４０】
ブロック358において、システムは、(1)把持試行の現在のインスタンスにおけるエンドエフェクタと環境とをキャプチャする画像と、(2)現在のインスタンスにおけるエンドエフェクタの姿勢とを記憶する。たとえば、システムは、ロボットに関連付けられた視覚センサによって生成された現在の画像を記憶し、画像を現在のインスタンスと(たとえば、タイムスタンプと)関連付けることができる。また、たとえばシステムは、その位置がロボットの姿勢に影響を及ぼすロボットの関節の1つまたは複数の関節位置センサからのデータに基づいてエンドエフェクタの現在の姿勢を決定することができ、システムは、その姿勢を記憶することができる。システムは、タスク空間、ジョイント空間、または別の空間におけるエンドエフェクタの姿勢を決定および記憶することができる。
【００４１】
ブロック360において、システムは、現在のインスタンスが把持試行に関する最終インスタンスであるかどうかを判定する。いくつかの実装形態では、システムはブロック352、354、356、もしくは358においてインスタンスカウンタをインクリメントすることができ、および/または時間が経過するにつれて時間カウンタをインクリメントすることができ、カウンタの値を閾値と比較することに基づいて現在のインスタンスが最終インスタンスであるかどうかを判定することができる。たとえば、カウンタは、時間カウンタであってもよく、閾値は、3秒、4秒、5秒、および/または他の値であってもよい。いくつかの実装形態では、閾値は、方法300の1つまたは複数の反復間で変化してもよい。
【００４２】
システムがブロック360において現在のインスタンスが把持試行に関する最終インスタンスではないと判定した場合、システムはブロック356に戻り、別のエンドエフェクタの動きを決定および実施し、次いでブロック358に進み、現在のインスタンスにおける画像と姿勢とを記憶する。所与の把持試行に関するブロック356、358および360の複数の反復を通して、エンドエフェクタの姿勢は、ブロック356の複数の反復によって変更され、それらの反復の各々において画像と姿勢とが記憶される。多くの実装形態では、ブロック356、358、360、および/または他のブロックは、比較的高い頻度で実行されてもよく、それによって各把持試行に関する比較的大量のデータを記憶することができる。
【００４３】
システムがブロック360において現在のインスタンスが把持試行に関する最終インスタンスであると判定した場合、システムはブロック362に進み、エンドエフェクタのグリッパを作動させる。たとえば、衝撃的グリッパエンドエフェクタについて、システムは、1つまたは複数のプレート、指、および/または他の部材を閉じさせることができる。たとえば、システムは、部材が完全に閉じられた位置になるか、部材に関連付けられたトルクセンサによって測定されたトルク読み取り値が閾値を満たすまで、部材を閉じさせることができる。
【００４４】
ブロック364において、システムはブロック360の把持の成功の決定を可能にするために、追加データを記憶し、オプションで1つまたは複数の追加アクションを実行する。いくつかの実装形態では、追加データは、位置読み取り値、トルク読み取り値、および/またはグリッパエンドエフェクタからの他の読み取り値である。たとえば、ある閾値(たとえば、1cm)よりも大きい位置読み取り値は、成功した把持を示すことができる。
【００４５】
いくつかの実装形態では、ブロック364において、システムは、加えておよび/または代替的に、(1)エンドエフェクタを作動された(たとえば、閉じられた)位置に維持し、エンドエフェクタと、エンドエフェクタによって把持されている場合がある任意の物体とを(たとえば、垂直および/または横方向に)移動し、(2)エンドエフェクタが移動された後、元の把持位置をキャプチャする画像を記憶し、(3)(オプションで、グリッパを元の把持位置の近くに戻した後)エンドエフェクタに、エンドエフェクタによって把持されている任意の物体を「落とさせ」、(4)(もしあれば)物体が落とされた後、元の把持位置をキャプチャする画像を記憶する。システムは、エンドエフェクタおよび物体(もしあれば)が移動された後に元の把持位置をキャプチャする画像を記憶してもよく、物体(もしあれば)が落とされた後に元の把持位置をキャプチャする画像を記憶してもよく、画像を把持試行に関連付けてもよい。エンドエフェクタおよび物体(もしあれば)が移動された後の画像と、物体(もしあれば)が落とされた後の画像とを比較することは、把持が成功したかどうかを示す場合がある。たとえば、一方の画像内に現れるが、他方の画像内には現れない物体は、成功した把持を示す場合がある。
【００４６】
ブロック366において、システムは、カウンタ(たとえば、インスタンスカウンタおよび/または時間カウンタ)をリセットし、別の把持試行を開始するためにブロック352に戻る。
【００４７】
いくつかの実装形態では、図3の方法300は、オプションでは方法300のそれらのそれぞれの反復のうちの1つまたは複数(たとえば、すべて)の間に並列に動作する、複数のロボットの各々において実施されてもよい。これは、1つのロボットのみが方法300を動作していた場合よりも多くの把持試行が所与の時間期間内に達成されることを可能にすることができる。さらに、複数のロボットのうちの1つまたは複数が他のロボットに関連付けられた1つまたは複数の視覚センサの姿勢と異なるロボットに対する姿勢を有する関連する視覚センサを含む実装形態では、複数のロボットからの把持試行に基づいて生成されたトレーニング例は、それらのトレーニング例に基づいてトレーニングされたニューラルネットワークにおける視覚センサの姿勢にロバスト性を提供することができる。さらに、複数のロボットの把持エンドエフェクタおよび/もしくは他のハードウェアコンポーネントが異なっているかおよび/もしくは異なって摩耗する実装形態、ならびに/または異なるロボット(たとえば、同じ型および/もしくはモデル、ならびに/または異なる型および/もしくはモデル)が異なる物体(たとえば、異なるサイズ、異なる重さ、異なる形状、異なる透光性、異なる材料の物体)、および/または異なる環境(たとえば異なる表面、異なる照明、異なる環境上の障害)と相互作用する実装形態では、複数のロボットからの把持試行に基づいて生成されたトレーニング例は、様々なロボット構成および/または環境構成にロバスト性を提供することができる。
【００４８】
いくつかの実装形態では、所与のロボットによって到達可能であり、把持試行が行われてもよい物体は、方法300の異なる反復中に異なってもよい。たとえば、人間のオペレータおよび/または別のロボットは、ロボットの1つまたは複数の把持試行間にロボットの作業空間に物体を追加および/または除去することができる。また、たとえばロボット自体は、1つまたは複数の物体の成功した把持に続いて、それらの物体をその作業空間外に落とすことができる。これは、トレーニングデータの多様性を増加させる場合がある。いくつかの実装形態では、照明、表面、障害物などの環境要因は、加えておよび/または代替的に、方法300の異なる反復中に異なる場合があり、それがまた、トレーニングデータの多様性を増加させる場合がある。
【００４９】
図4は、ロボットの把持試行に関連するデータに基づいてトレーニング例を生成する例示的な方法400を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、1220のプロセッサおよび/もしくはロボット制御システム、ならびに/またはトレーニング例生成システム110および/もしくはオプションではロボットとは別個に実装されてもよい他のシステムのプロセッサなどのロボットおよび/または別のコンピュータシステムの1つまたは複数のコンポーネントを含むことができる。さらに、方法400の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【００５０】
ブロック452において、システムは、トレーニング例生成を開始する。ブロック454において、システムは把持試行を選択する。たとえば、システムは、複数の記憶された把持試行に関連するデータを含むデータベースにアクセスし、記憶された把持試行のうちの1つを選択することができる。選択された把持試行は、たとえば図3の方法300に基づいて生成された把持試行であってもよい。
【００５１】
ブロック456において、システムは、選択された把持試行に関する記憶されたデータに基づいて、選択された把持試行に対する把持成功ラベルを決定する。たとえば、方法300のブロック364に関して説明したように、把持試行に対する把持成功ラベルの決定を可能にするために、把持試行に関して追加データが記憶されてもよい。記憶されたデータは、1つまたは複数のセンサからのデータを含むことができ、データは、把持試行中および/または把持試行後に生成される。
【００５２】
一例として、追加のデータは、位置読み取り値、トルク読み取り値、および/または把持エンドエフェクタからの他の読み取り値であってもよい。そのような例では、システムは、読み取り値に基づいて把持成功ラベルを決定することができる。たとえば、読み取り値が位置読み取り値である場合、システムは、読み取り値がある閾値(たとえば、1cm)よりも大きい場合、「成功把持」ラベルを決定することができ、読み取り値がある閾値(たとえば、1cm)よりも小さい場合、「不成功把持」ラベルを決定することができる。
【００５３】
別の例として、追加データは、エンドエフェクタおよび物体(もしあれば)が移動された後の元の把持位置をキャプチャする画像、ならびに、物体(もしあれば)が落とされた後の元の把持位置をキャプチャする画像であってもよい。把持成功ラベルを決定するために、システムは、(1)エンドエフェクタおよび物体(もしあれば)が移動された後の画像を(2)物体(もしあれば)が落とされた後の画像と比較してもよい。たとえば、システムは、2つの画像のピクセルを比較してもよく、2つの画像間の閾値数よりも多いピクセルが異なる場合、システムは、「成功した把持」ラベルを決定してもよい。また、たとえばシステムは、2つの画像の各々において物体検出を実行し、物体(もしあれば)が落とされた後にキャプチャされた画像において物体が検出されたが、エンドエフェクタおよび物体(もしあれば)が移動された後にキャプチャされた画像において物体が検出されなかった場合、「成功した把持」ラベルを決定してもよい。
【００５４】
さらに別の例として、追加データは、エンドエフェクタおよび物体(もしあれば)が移動された後の元の把持位置をキャプチャする画像であってもよい。把持成功ラベルを決定するために、システムは、(1)エンドエフェクタおよび物体(もしあれば)が移動された後の画像と、(2)把持試行が開始する前に撮られた環境の追加画像(たとえば、エンドエフェクタを省略した追加画像)とを比較してもよい。
【００５５】
いくつかの実装形態では、把持成功ラベルは、「成功」/「不成功」ラベルなどの2値ラベルである。いくつかの実装形態では、把持成功ラベルは、0、1、および0と1との間の1つまたは複数の値などの3つ以上のオプションから選択されてもよい。たとえば、ピクセル比較手法では、"0"は、確認された「成功しなかった把持」を示してもよく、第1の閾値数未満のピクセルが2つの画像間で異なっているときにシステムによって選択されてもよく、"0.25"は、「成功していない可能性が最も高い把持」を示してもよく、異なるピクセルの数が第1の閾値からより大きい第2の閾値までであるときに選択されてもよく、"0.75"は、「成功した可能性が最も高い把持」を示してもよく、異なるピクセルの数が第2の閾値(または他の閾値)よりも大きいが、第3の閾値未満であるときに選択されてもよく、"1"は、「確認された成功した把持」を示してもよく、異なるピクセルの数が第3の閾値以上であるときに選択されてもよい。
【００５６】
ブロック458において、システムは、把持試行に関するインスタンスを選択する。たとえば、システムは、タイムスタンプ、および/またはインスタンスを把持試行の他のインスタンスと区別する、データに関連する他の境界に基づいてインスタンスに関連するデータを選択することができる。
【００５７】
ブロック460において、システムは、インスタンスにおけるエンドエフェクタの姿勢と、把持試行の最終インスタンスにおけるエンドエフェクタの姿勢とに基づいて、インスタンスに関するエンドエフェクタ動きベクトルを生成する。たとえば、システムは、現在の姿勢と把持試行の最終姿勢との間の変換を決定し、エンドエフェクタ動きベクトルとして変換を使用することができる。現在の姿勢、および現在の姿勢から把持試行の最終姿勢へのエンドエフェクタ動きベクトルは、タスク空間、ジョイント空間、または別の空間において表されてもよい。たとえば、エンドエフェクタ動きベクトルは、タスク空間における5つの値、すなわち3次元(3D)平行移動ベクトルを規定する3つの値、およびエンドエフェクタの軸の周りのエンドエフェクタの向きにおける変化のサイン−コサイン符号化を表す2つの値によって表されてもよい。
【００５８】
ブロック462において、システムは、(1)インスタンスに関する記憶された画像と、(2)ブロック460においてインスタンスに関して生成されたエンドエフェクタ動きベクトルと、(3)ブロック456において決定された把持成功ラベルとを含むインスタンスに関するトレーニング例を生成する。いくつかの実装形態では、システムは、エンドエフェクタを少なくとも部分的に除外し、把持試行の前にキャプチャされたものなどの把持試行に関する記憶された追加画像も含むトレーニング例を生成する。それらの実装形態のうちのいくつかでは、システムは、トレーニング例のための連結された画像を生成するために、インスタンスに関する記憶された画像と、把持試行に関する記憶された追加画像とを連結する。連結された画像は、インスタンスに関する記憶された画像と、記憶された追加画像の両方を含む。たとえば、両方の画像がX×Yピクセルと、3つのチャネル(たとえば、赤色、青色、緑色)とを含む場合、連結された画像は、X×Yピクセルと、6つのチャネル(各画像から3つ)とを含むことができる。本明細書で説明するように、現在の画像、追加画像、および現在の姿勢からトレーニング例の把持試行の最終姿勢へのベクトルはトレーニング例入力として利用されてもよく、把持成功ラベルはトレーニング例出力として利用されてもよい。
【００５９】
いくつかの実装形態では、ブロック462において、システムは、オプションで画像を処理することができる。たとえば、システムは、オプションでCNNの入力層の規定されたサイズに合うように画像の大きさを変更し、画像から1つまたは複数のチャネルを除去し、および/または(画像が深度チャネルを含む実装形態では)深度チャネルの値を正規化することができる。
【００６０】
ブロック464において、システムは、選択されたインスタンスが把持試行の最終インスタンスであるかどうかを判定する。システムが、選択されたインスタンスが把持試行の最終インスタンスではないと判定した場合、システムはブロック458に戻り、別のインスタンスを選択する。
【００６１】
システムが、選択されたインスタンスが把持試行の最終インスタンスであると判定した場合、システムはブロック466に進み、処理する追加の把持試行が存在するかどうかを判定する。システムが、処理する追加の把持試行が存在すると判定した場合、システムはブロック454に戻り、別の把持試行を選択する。いくつかの実装形態では、処理する追加の把持試行が存在するかどうかを判定することは、任意の残りの未処理把持試行が存在するかどうかを判定することを含むことができる。いくつかの実装形態では、処理する追加の把持試行が存在するかどうかを判定することは、加えておよび/または代替的に、閾値数のトレーニング例が既に生成されているかどうか、および/または他の基準が満たされているかどうかを判定することを含むことができる。
【００６２】
システムが、処理する追加の把持試行が存在しないと判定した場合、システムはブロック466に進み、方法400は、終了する。方法400の別の反復が再び実行されてもよい。たとえば、方法400は、実行されている少なくとも閾値数の追加把持試行に応答して再び実行されてもよい。
【００６３】
方法300および方法400は、明確のため本明細書では別個の図において示されるが、方法400の1つまたは複数のブロックは、方法300の1つまたは複数のブロックを実行する同じコンポーネントによって実行されてもよいことが理解される。たとえば、方法300および方法400のブロックのうちの1つまたは複数(たとえば、すべて)は、ロボットのプロセッサによって実行されてもよい。また、方法400の1つまたは複数のブロックは、方法300の1つまたは複数のブロックと組み合わせて、またはその前もしくは後に実行されてもよいことが理解される。
【００６４】
図5は、トレーニング例に基づいて畳み込みニューラルネットワークをトレーニングする例示的な方法500を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、トレーニングエンジン120のプロセッサ(たとえば、GPU)、および/または畳み込みニューラルネットワーク(たとえば、CNN125)を介して動作する他のコンピュータシステムなどのコンピュータシステムの1つまたは複数のコンポーネントを含むことができる。さらに、方法500の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【００６５】
ブロック552において、システムは、トレーニングを開始する。ブロック554において、システムは、トレーニング例を選択する。たとえば、システムは、図4の方法400に基づいて生成されたトレーニング例を選択することができる。
【００６６】
ブロック556において、システムは、トレーニング例のインスタンスに関する画像と、選択されたトレーニング例の追加画像とをCNNの初期層に適用する。たとえば、システムは、CNNの初期畳み込み層に画像を適用することができる。本明細書で説明するように、追加画像は、エンドエフェクタを少なくとも部分的に除外することができる。いくつかの実装形態では、システムは、画像と追加画像とを連結し、連結された画像を初期層に適用する。いくつかの他の実装形態では、画像および追加画像は、トレーニング例において既に連結されている。
【００６７】
ブロック558において、システムは、選択されたトレーニング例のエンドエフェクタ動きベクトルをCNNの追加層に適用する。たとえば、システムはブロック556において画像が適用された初期層の下流にあるCNNの追加層にエンドエフェクタ動きベクトルを適用することができる。いくつかの実装形態では、エンドエフェクタ動きベクトルを追加層に適用するために、システムは、エンドエフェクタ動きベクトル出力を生成するためにエンドエフェクタ動きベクトルを全結合層に通し、エンドエフェクタ動きベクトル出力をCNNのすぐ上流の層からの出力と連結する。すぐ上流の層は、エンドエフェクタ動きベクトルが適用される追加層のすぐ上流の層であり、オプションでブロック556において画像が適用される初期層から下流の1つまたは複数の層であってもよい。いくつかの実装形態では、初期層は畳み込み層であり、すぐ上流の層はプーリング(pooling)層であり、追加層は畳み込み層である。
【００６８】
ブロック560において、システムは、トレーニング例の把持成功ラベルに基づいてCNNに対して逆伝播を実行する。ブロック562において、システムは、追加のトレーニング例が存在するかどうかを判定する。システムが、追加のトレーニング例が存在すると判定した場合、システムはブロック554に戻り、別のトレーニング例を選択する。いくつかの実装形態では、追加のトレーニング例が存在するかどうかを判定することは、CNNをトレーニングするために利用されていない任意の残りのトレーニング例が存在するかどうかを判定することを含むことができる。いくつかの実装形態では、追加のトレーニング例が存在するかどうかを判定することは、加えておよび/または代替的に、閾値数のトレーニング例が利用されているかどうか、および/または他の基準が満たされているかどうかを判定することを含むことができる。
【００６９】
システムが、追加のトレーニング例が存在しないと判定した場合、および/または何らかの他の基準が満たされていると判定した場合、システムはブロック564またはブロック566に進む。
【００７０】
ブロック564において、CNNのトレーニングは終了することができる。トレーニングされたCNNは、次いで把持エンドエフェクタによる物体の成功した把持を達成するために、把持エンドエフェクタをサーボ制御する際に1つまたは複数のロボットによって使用するために提供されてもよい。たとえば、ロボットは、図7Aの方法700を実行する際にトレーニングされたCNNを利用することができる。
【００７１】
ブロック566において、システムは、加えておよび/または代替的にトレーニングされたCNNに基づいて追加のトレーニング例を生成するために、トレーニングされたCNNを提供することができる。たとえば1つまたは複数のロボットは、把持試行を実行する際にトレーニングされたCNNを利用することができ、それらの把持試行からのデータが、追加のトレーニング例を生成するために利用されてもよい。たとえば、1つまたは複数のロボットは、図7Aの方法700に基づいて把持試行を実行する際にトレーニングされたCNNを利用することができ、それらの把持試行からのデータが、図4の方法400に基づいて追加のトレーニング例を生成するために利用されてもよい。そのデータが追加のトレーニング例を生成するために利用されるロボットは、実験室/トレーニングセットアップにおけるロボット、および/または1人または複数の消費者による実際の使用におけるロボットであってもよい。
【００７２】
ブロック568において、システムはブロック566においてトレーニングされたCNNを提供することに応答して生成された追加のトレーニング例に基づいてCNNを更新してもよい。たとえば、システムは、追加のトレーニング例に基づいてブロック554、556、558および560の追加の反復を実行することによってCNNを更新してもよい。
【００７３】
ブロック566とブロック568との間に延びる矢印によって示すように、更新されたCNNは、さらなるトレーニング例を生成するためにブロック566において再び提供されてもよく、それらのトレーニング例は、ブロック568においてCNNをさらに更新するために利用される。いくつかの実装形態では、ブロック566の将来の反復に関連して実行される把持試行は、将来の反復において実行されるものおよび/またはトレーニングされたCNNの利用なしで実行されるものよりも時間的に長い把持試行であってもよい。たとえば、トレーニングされたCNNの利用なしで実行される図3の方法300の実装形態は、時間的により短い把持試行を有することができ、最初にトレーニングされたCNNを用いて実行されたものは、時間的により長い把持試行を有することができ、トレーニングされたCNNの次の反復を用いて実行されたものは、さらに時間的により長い把持試行を有することなどができる。これは、オプションで方法300のオプションのインスタンスカウンタおよび/または時間カウンタによって実現されてもよい。
【００７４】
図6Aおよび図6Bは、様々な実装形態のCNN600の例示的なアーキテクチャを示す。図6Aおよび図6BのCNN600は、図5の方法500に基づいてトレーニングされてもよいCNNの例である。図6Aおよび図6BのCNN600は、さらに一旦トレーニングされると、図7Aの方法700に基づいて把持エンドエフェクタをサーボ制御する際に利用されてもよいCNNの例である。一般に、畳み込みニューラルネットワークは、入力層と、1つまたは複数の畳み込み層と、オプションの重みおよび/または他の層と、出力層とを含む多層学習フレームワークである。トレーニング中、畳み込みニューラルネットワークは、特徴表現の階層を学習するためにトレーニングされる。ネットワークの畳み込み層は、フィルタを用いて畳み込まれ、オプションでプーリング層によってダウンサンプリングされる。一般に、プーリング層は、最大、最小、および/または正規化サンプリングなどの1つまたは複数のダウンサンプリング関数によって、値をより小さい領域内に集約する。
【００７５】
CNN600は、畳み込み層である初期入力層663を含む。いくつかの実装形態では、初期入力層663は、ストライド2と64のフィルタとを有する6×6の畳み込み層である。エンドエフェクタを有する画像661Aおよびエンドエフェクタのない画像661Bも図6Aに示される。画像661Aおよび661Bは、さらに連結されているように示され(たとえば、それぞれから延びる合流線によって表され)、連結された画像は、初期入力層663に供給される。いくつかの実装形態では、画像661Aおよび661Bは、それぞれ472ピクセル×472ピクセル×3チャネル(たとえば、3チャネルは、深度チャネル、第1の色チャネル、第2の色チャネル、第3の色チャネルから選択されてもよい)であってもよい。したがって、連結された画像は、472ピクセル×472ピクセル×6チャネルであってもよい。異なるピクセルサイズまたはより多いもしくはより少ないチャネルなどの他のサイズが使用されてもよい。画像661Aおよび661Bは、初期入力層663に畳み込まれる。CNN600の初期入力層および他の層の特徴の重みは、複数のトレーニング例に基づいてCNN600のトレーニング中に学習される。
【００７６】
初期入力層663の後に最大プーリング層664が続く。いくつかの実装形態では、最大プーリング層664は、64のフィルタを有する3×3最大プーリング層である。最大プーリング層664の後に6つの畳み込み層が続き、そのうちの2つは、図6A中で665および666によって表される。いくつかの実装形態では、6つの畳み込み層は、それぞれ64のフィルタを有する5×5畳み込み層である。畳み込み層666の後に最大プーリング層667が続く。いくつかの実装形態では、最大プーリング層667は、64のフィルタを有する3×3最大プーリング層である。
【００７７】
エンドエフェクタ動きベクトル662も図6Aに示される。エンドエフェクタ動きベクトル662は、(図6Aの"+"によって示されるように)最大プーリング層667の出力と連結され、連結された出力は、畳み込み層670に適用される(図6B)。いくつかの実装形態では、エンドエフェクタ動きベクトル662を最大プーリング層667の出力と連結することは、全結合層668によってエンドエフェクタ動きベクトル662を処理することを含み、その出力は、次いでタイル(tiled)ベクトル669を介して出力を空間次元にわたってタイリングすることによって最大プーリング層667の応答マップ内の各点に点ごとに加算される。言い換えれば、エンドエフェクタ動きベクトル662は、全結合層668に通され、タイルベクトル669を介して最大プーリング層667の応答マップの空間次元にわたって複製される。
【００７８】
ここで図6Bに進むと、エンドエフェクタ動きベクトル662と最大プーリング層667の出力との連結は、畳み込み層670に提供され、畳み込み層670の後にはもう5つの畳み込み層が続く(それらの5つのうち最後の畳み込み層671が図6Bに示されるが、介在する4つは示されない)。いくつかの実装形態では、畳み込み層670および671、ならびに4つの介在する畳み込み層は、それぞれ64のフィルタを有する3×3畳み込み層である。
【００７９】
畳み込み層671の後に最大プーリング層672が続く。いくつかの実装形態では、最大プーリング層672は、64のフィルタを有する2×2最大プーリング層である。最大プーリング層672の後に3つの畳み込み層が続き、そのうちの2つが図6Aにおいて673および674によって表される。
【００８０】
CNN600の最後の畳み込み層674は第1の全接続層675に完全に接続され、第1の全接続層675は次に第2の全接続層676に完全に接続される。全接続層675および676は、サイズ64のベクトルなどのベクトルであってもよい。第2の全結合層676の出力は、成功した把持の尺度677を生成するために利用される。たとえば、尺度677を生成して出力するために、シグモイドが利用されてもよい。CNN600をトレーニングするいくつかの実装形態では、エポック、学習レート、重み減衰、ドロップアウト確率、および/または他のパラメータに関する様々な値が利用されてもよい。いくつかの実装形態では、CNN600をトレーニングおよび/または利用するために、1つまたは複数のGPUが利用されてもよい。特定の畳み込みニューラルネットワーク600が図6に示されるが、変形が可能である。たとえば、より多いまたはより少ない畳み込み層が設けられてもよく、1つまたは複数の層が例として提供されたものと異なるサイズであるなどでもよい。
【００８１】
CNN600または他のニューラルネットワークが本明細書で説明される技法に従って一旦トレーニングされると、それは、把持エンドエフェクタをサーボ制御するために利用されてもよい。図7Aを参照すると、把持エンドエフェクタをサーボ制御するためにトレーニングされた畳み込みニューラルネットワークを利用する例示的な方法700を示すフローチャートが示される。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、840、および/または他のロボットのプロセッサ(たとえば、CPUおよび/またはGPU)および/またはロボット制御システムなどのロボットの1つまたは複数のコンポーネントを含むことができる。方法700の1つまたは複数のブロックを実施する際、システムは、たとえばロボットにおいて局所的に記憶されてもよい、および/またはロボットから離れて記憶されてもよいトレーニングされたCNNを介して動作することができる。さらに、方法700の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【００８２】
ブロック752において、システムは、候補エンドエフェクタ動きベクトルを生成する。候補エンドエフェクタ動きベクトルは、さらなるブロックにおいて利用されるべきトレーニングされたCNNの入力パラメータに応じて、タスク空間、ジョイント空間、または別の空間において規定されてもよい。
【００８３】
いくつかの実装形態では、システムは、エンドエフェクタによって到達可能な作業空間、エンドエフェクタが把持試行に限られる制限された空間、ならびに/またはエンドエフェクタの姿勢を制御するアクチュエータの位置制限および/もしくはトルク制限によって規定される空間などの所与の空間内でランダムである候補エンドエフェクタ動きベクトルを生成する。
【００８４】
いくつかの実装形態では、システムは、候補エンドエフェクタ動きベクトルのグループをサンプリングし、サンプリングされたグループからサブグループを選択するために、1つまたは複数の技法を利用することができる。たとえば、システムは、クロスエントロピー法(CEM:cross-entropy method)などの最適化技法を利用することができる。CEMは、各反復においてNの値のバッチをサンプリングし、これらのサンプルのうちのM<Nにガウス分布を適合させ、次いでこのガウスからNの新しいバッチをサンプリングする無導関数(derivative-free)最適化アルゴリズムである。たとえば、システムは、CEMと、M=64およびN=6の値とを利用し、(CEMによって)最良の利用可能な候補エンドエフェクタ動きベクトルを決定するために、CEMの3回の反復を実行することができる。
【００８５】
いくつかの実装形態では、ブロック752において生成されてもよい候補エンドエフェクタ動きベクトルに対して1つまたは複数の制約が課されてもよい。たとえば、CEMまたは他の技法によって評価される候補エンドエフェクタの動きは、制約に基づいて制約されてもよい。制約の一例は、把持が試行されてもよい領域に対する制約、把持が試行されてもよい特定の物体および/または特定の物体分類に対する制約などを課す、(たとえば、コンピュータシステムのユーザインターフェース入力デバイスを介して)人間が入力した制約である。制約の別の例は、把持が試行されてもよい領域に対する制約、把持が試行されてもよい特定の物体および/または特定の物体分類に対する制約などを課す、コンピュータが生成した制約である。たとえば、物体分類器は、キャプチャされた画像に基づいて1つまたは複数の物体を分類し、把持を特定の分類の物体に制限する制約を課してもよい。制約のさらに他の例は、たとえばロボットの作業空間、ロボットの関節限界、ロボットのトルク限界、衝突回避システムによって提供され、1つまたは複数の物体との衝突を防止するためのロボットの動きを制限する制約、などに基づく制約を含む。
【００８６】
ブロック754において、システムは、エンドエフェクタと1つまたは複数の環境物体とをキャプチャする現在の画像を識別する。いくつかの実装形態では、システムはまた、エンドエフェクタが少なくとも部分的に視覚センサの視野外にあったときに視覚センサによってキャプチャされた環境物体の追加画像などのエンドエフェクタを少なくとも部分的に省略した追加画像を識別する。いくつかの実装形態では、システムは、連結画像を生成するために画像と追加画像とを連結する。いくつかの実装形態では、システムは、(たとえば、CNNの入力にサイズを合わせるために)画像および/または連結画像の処理をオプションで実行する。
【００８７】
ブロック756において、システムは、現在の画像と候補エンドエフェクタ動きベクトルとをトレーニングされたCNNに適用する。たとえば、システムは、現在の画像と追加画像とを含む連結画像をトレーニングされたCNNの初期層に適用することができる。システムはまた、候補エンドエフェクタ動きベクトルを初期層の下流にあるトレーニングされたCNNの追加層に適用することができる。いくつかの実装形態では、候補エンドエフェクタ動きベクトルを追加層に適用する際、システムは、エンドエフェクタ動きベクトル出力を生成し、エンドエフェクタ動きベクトル出力をCNNの上流出力に連結するために、エンドエフェクタ動きベクトルをCNNの全結合層に渡す。上流出力は、追加層のすぐ上流にありCNNの初期層および1つまたは複数の中間層から下流にあるCNNのすぐ上流からである。
【００８８】
ブロック758において、システムは、トレーニングされたCNNを介して、エンドエフェクタ動きベクトルに基づいて成功した把持の尺度を生成する。尺度は、ブロック756におけるトレーニングされたCNNへの現在の画像(およびオプションで追加画像)および候補エンドエフェクタ動きベクトルの適用と、トレーニングされたCNNの学習された重みに基づいて尺度を決定することとに基づいて生成される。
【００８９】
ブロック760において、システムは、成功した把持の尺度に基づいてエンドエフェクタコマンドを生成する。たとえば、いくつかの実装形態では、システムはブロック752において1つまたは複数の追加の候補エンドエフェクタ動きベクトルを生成し、ブロック756の追加の反復においてそれらの追加の候補エンドエフェクタ動きベクトルおよび現在の画像(およびオプションで追加画像)をトレーニングされたCNNに適用することによって、ブロック758の追加の反復においてそれらの追加の候補エンドエフェクタ動きベクトルに関する成功した把持の尺度を生成してもよい。ブロック756および758の追加の反復は、オプションでシステムによって並列に実行されてもよい。それらの実装形態のうちのいくつかでは、システムは、候補エンドエフェクタ動きベクトルに関する尺度と、追加の候補エンドエフェクタ動きベクトルに関する尺度とに基づいて、エンドエフェクタコマンドを生成してもよい。たとえば、システムは、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに完全にまたは実質的に従うエンドエフェクタコマンドを生成することができる。たとえば、システムのロボットの制御システムは、エンドエフェクタ動きベクトルに基づいてエンドエフェクタを移動させるためにロボットの1つまたは複数のアクチュエータを作動させる動きコマンドを生成することができる。
【００９０】
いくつかの実装形態では、システムは、候補エンドエフェクタ動きベクトルが新しい動きコマンド(たとえば、成功した把持の現在の尺度)を生成するために利用されない場合、成功した把持の現在の尺度に基づいてエンドエフェクタコマンドを生成してもよい。たとえば、現在の尺度と成功した把持を最も示す候補エンドエフェクタ動きベクトルの尺度との1つまたは複数の比較が閾値を満たさない場合、エンドエフェクタ動きコマンドは、エンドエフェクタに把持を試行させる(たとえば、衝撃的把持エンドエフェクタの指を閉じさせる)「把持コマンド」であってもよい。たとえば、成功した把持を最も示す候補エンドエフェクタ動きベクトルの尺度で割った現在の尺度の結果が第1の閾値(たとえば、0.9)以上である場合、(グリッパを閉じることがそれを動かすのと同じくらい成功した把持を生じさせる可能性がある場合に把持を早く停止することの論理的根拠の下で)把持コマンドが生成されてもよい。また、たとえば結果が第2の閾値(たとえば、0.5)以下である場合、エンドエフェクタコマンドは、(把持エンドエフェクタが良好な構成に配置されていない可能性が最も高く、比較的大きい動きが必要とされるという論理的根拠の下で)軌道修正を達成させる(たとえば、把持エンドエフェクタを少なくともXメートルだけ「上」に上げる)動きコマンドであってもよい。また、たとえば結果が第1の閾値と第2の閾値との間である場合、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従う動きコマンドが生成されてもよい。システムによって生成されたエンドエフェクタコマンドは、1つもしくは複数のコマンドの単一のグループ、または1つもしくは複数のコマンドの一連のグループであってもよい。
【００９１】
候補エンドエフェクタ動きベクトルが新しい動きコマンドを生成するために利用されない場合の成功した把持の尺度は、方法700の前の反復において利用された候補エンドエフェクタ動きベクトルに関する尺度に基づくことができ、ならびに/または「ヌル」動きベクトルと現在の画像(およびオプションで追加画像)とをブロック756の追加の反復においてトレーニングされたCNNに適用すること、およびブロック758の追加の反復に基づいて尺度を生成することに基づくことができる。
【００９２】
ブロック762において、システムは、エンドエフェクタコマンドが把持コマンドであるかどうかを判定する。システムがブロック762において、エンドエフェクタコマンドが把持コマンドであると判定した場合、システムはブロック764に進み、把持コマンドを実行する。いくつかの実装形態では、システムは、(たとえば、本明細書で説明する技法を使用して)把持コマンドが成功した把持をもたらすかどうかをオプションで判定することができ、成功しない場合、システムは、エンドエフェクタの姿勢をオプションで調整し、ブロック752に戻ることができる。把持が成功した場合であっても、システムは、別の物体を把持するために後になってブロック752に戻ることができる。
【００９３】
システムがブロック762において、エンドエフェクタコマンドが把持コマンドではない(たとえば、それが動きコマンドである)と判定した場合、システムはブロック766に進み、エンドエフェクタコマンドを実行し、次いでブロック752に戻り、別の候補エンドエフェクタ動きベクトルを生成する。たとえば、ブロック766において、システムは、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従うエンドエフェクタ動きコマンドを実行することができる。
【００９４】
多くの実装形態では、方法700のブロックは、比較的高い頻度で実行されてもよく、それによってエンドエフェクタコマンドの反復更新を可能にし、成功した把持の比較的高い確率をもたらすために、トレーニングされたCNNによって通知された軌道に沿ったエンドエフェクタのサーボ制御を可能にする。
【００９５】
図7Bは、図7Aのフローチャートの特定のブロックのいくつかの実装形態を示すフローチャートである。特に、図7Bは、図7Aのブロック758および760のいくつかの実装形態を示すフローチャートである。
【００９６】
ブロック758Aにおいて、システムは、CNNを介して、ブロック752の候補エンドエフェクタ動きベクトルに基づいて、成功した把持の尺度を生成する。
【００９７】
ブロック758Bにおいて、システムは、エンドエフェクタの現在の姿勢に基づいて、成功した把持の現在の尺度を決定する。たとえば、システムは、候補エンドエフェクタ動きベクトルが、方法700の直前の反復において利用された候補エンドエフェクタ動きベクトルに関する尺度に基づいて新しい動きコマンドを生成するために利用されない場合、成功した把持の現在の尺度を決定してもよい。また、たとえばシステムはブロック756の追加の反復において「ヌル」動きベクトルと現在の画像(およびオプションで追加画像)とをトレーニングされたCNNに適用し、ブロック758の追加の反復に基づいて尺度を生成することに基づいて現在の尺度を決定してもよい。
【００９８】
ブロック760Aにおいて、システムはブロック758Aおよび758Bの尺度を比較する。たとえば、システムは、尺度を除算すること、尺度を減算すること、および/または尺度を1つもしくは複数の関数に適用することによって、それらを比較してもよい。
【００９９】
ブロック760Bにおいて、システムはブロック760Aの比較に基づいてエンドエフェクタコマンドを生成する。たとえば、ブロック758Bの尺度がブロック758Aの尺度によって除算され、商が閾値(たとえば、0.9)以上である場合、エンドエフェクタ動きコマンドは、エンドエフェクタに把持を試行させる「把持コマンド」であってもよい。また、たとえばブロック758Bの尺度がブロック758Aの尺度によって除算され、商が第2の閾値(たとえば、0.5)以下である場合、エンドエフェクタコマンドは、軌道修正を実施する動きコマンドであってもよい。また、たとえばブロック758Bの尺度がブロック758Aの尺度によって除算され、商が第2の閾値と第1の閾値との間である場合、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従う動きコマンドが生成されてもよい。
【０１００】
本明細書では、CNNをトレーニングし、および/またはエンドエフェクタをサーボ制御するためにCNNを利用する特定の例が与えられている。しかしながら、いくつかの実装形態は、特定の例とは異なる追加の特徴および/または代替的な特徴を含む場合がある。たとえば、いくつかの実装形態では、CNNは、ロボットのエンドエフェクタに関する候補動きデータが、特定の分類の物体(たとえば、鉛筆、筆記用具、へら、台所用具、略矩形の構成を有する物体、柔らかい物体、最小の境界がXとYとの間にある物体など)などの1つまたは複数の特定の物体の成功した把持をもたらす可能性を示す尺度を予測するようにトレーニングされてもよい。
【０１０１】
たとえば、いくつかの実装形態では、特定の分類の物体は、様々な把持試行中にロボットが把持するための他の物体と共に含まれてもよい。(1)把持が成功した場合、および(2)把持がその特定の分類に適合する物体のものである場合にのみ「成功した把持」の把持ラベルが見つけられるトレーニング例が生成されてもよい。物体が特定の分類に一致するかどうかを判定することは、たとえばロボットが把持エンドエフェクタを把持試行に続いて視覚センサに向け、把持エンドエフェクタによって把持された物体(もしあれば)の画像を取り込むために視覚センサを使用することに基づいて決定されてもよい。人間の観察者および/または画像分類ニューラルネットワーク(または他の画像分類システム)は、次いでエンドエフェクタによって把持された物体が特定の分類のものであるかどうかを判定してもよく、その決定は、適切な把持レベルを適用するために利用される。そのようなトレーニング例は、本明細書で説明するようにCNNをトレーニングするために利用されてもよく、そのようなトレーニング例によるトレーニングの結果として、トレーニングされたCNNは、特定の分類のものである物体の把持エンドエフェクタによる成功した把持を達成するためにロボットの把持エンドエフェクタをサーボ制御するために利用されてもよい。
【０１０２】
図8は、ロボット840の例示的なアーキテクチャを概略的に示す。ロボット840は、ロボット制御システム860と、1つまたは複数の動作コンポーネント840a〜840nと、1つまたは複数のセンサ842a〜842mとを含む。センサ842a〜842mは、たとえば視覚センサ、光センサ、圧力センサ、圧力波センサ(たとえば、マイクロフォン)、近接センサ、加速度計、ジャイロスコープ、温度計、気圧計などを含むことができる。センサ842a〜842mは、ロボット840と一体であるように描かれているが、これは限定することを意味しない。いくつかの実装形態では、センサ842a〜842mは、たとえば独立型ユニットとして、ロボット840の外部に配置されてもよい。
【０１０３】
動作コンポーネント840a〜840nは、たとえばロボットの1つまたは複数のコンポーネントの移動を実施するために、1つもしくは複数のエンドエフェクタおよび/または1つもしくは複数のサーボモータまたは他のアクチュエータを含むことができる。たとえば、ロボット840は、複数の自由度を有することができ、アクチュエータの各々は、制御コマンドに応答して自由度のうちの1つまたは複数の範囲内のロボット840の作動を制御することができる。本明細書で使用される場合、アクチュエータという用語は、アクチュエータに関連付けられてもよく、受信した制御コマンドをアクチュエータを駆動するための1つまたは複数の信号に変換する任意のドライバに加えて、動きを引き起こす機械的または電気的デバイス(たとえば、モータ)を包含する。したがって、制御コマンドをアクチュエータに提供することは、制御コマンドを所望の動きを作成するために電気的または機械的デバイスを駆動するための適切な信号に変換するドライバに制御コマンドを提供することを含むことができる。
【０１０４】
ロボット制御システム860は、ロボット840のCPU、GPU、および/または他のコントローラなどの1つまたは複数のプロセッサ内に実装されてもよい。いくつかの実装形態では、ロボット840は、制御システム860のすべてまたは態様を含むことができる「ブレインボックス(brain box)」を備えることができる。たとえば、ブレインボックスは、データのリアルタイムバーストを動作コンポーネント840a〜840nに提供することができ、リアルタイムバーストの各々は、とりわけ、動作コンポーネント840a〜840nのうちの1つまたは複数の各々に関する(もしあれば)動きのパラメータを指示する1つまたは複数の制御コマンドのセットを備える。いくつかの実装形態では、ロボット制御システム860は、本明細書で説明する方法300、400、500、および/または700の1つまたは複数の態様を実行することができる。
【０１０５】
本明細書で説明するように、いくつかの実装形態では、物体を把持するためにエンドエフェクタを位置決めする際に制御システム860によって生成される制御コマンドのすべてまたは態様は、トレーニングされたCNNなどのトレーニングされたニューラルネットワークの利用に基づいて生成されたエンドエフェクタコマンドに基づくことができる。たとえば、センサ842a〜842mの視覚センサは、現在の画像と追加画像とを取り込むことができ、ロボット制御システム860は、候補動きベクトルを生成することができる。ロボット制御システム860は、トレーニングされたCNNに、現在の画像と、追加画像と、候補動きベクトルとを提供することができ、ロボットのエンドエフェクタの動きおよび/または把持を制御するための1つまたは複数のエンドエフェクタ制御コマンドを生成するために、適用することに基づいて生成された尺度を利用することができる。制御システム860は、図8においてロボット840の一体部分として示されるが、いくつかの実装形態では、制御システム860のすべてまたは態様は、ロボット840とは別個であるがロボット840と通信するコンポーネント内に実装されてもよい。たとえば、制御システム860のすべてまたは態様は、コンピューティングデバイス910などのロボット840と有線および/またはワイヤレス通信する1つまたは複数のコンピューティングデバイス上に実装されてもよい。
【０１０６】
図9は、本明細書で説明する技法の1つまたは複数の態様を実行するためにオプションで利用されてもよい例示的なコンピューティングデバイス910のブロック図である。コンピューティングデバイス910は、典型的には、バスサブシステム912を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ914を含む。それらの周辺デバイスは、たとえばメモリサブシステム925およびファイル記憶サブシステム926を含む記憶サブシステム924と、ユーザインターフェース出力デバイス920と、ユーザインターフェース入力デバイス922と、ネットワークインターフェースサブシステム916とを含むことができる。入力デバイスおよび出力デバイスは、コンピューティングデバイス910とのユーザ対話を可能にする。ネットワークインターフェースサブシステム916は、外部ネットワークとのインターフェースを提供し、他のコンピューティングデバイスにおける対応するインターフェースデバイスに結合される。
【０１０７】
ユーザインターフェース入力デバイス922は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含むことができる。一般に、「入力デバイス」という用語の使用は、コンピューティングデバイス910内または通信ネットワーク上に情報を入力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【０１０８】
ユーザインターフェース出力デバイス920は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含むことができる。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、プロジェクションデバイス、または可視画像を作成するための何らかの他の機構を含むことができる。ディスプレイサブシステムはまた、オーディオ出力デバイスを介するなどして、非視覚的ディスプレイを提供することができる。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス910からユーザまたは別の機械もしくはコンピューティングデバイスに情報を出力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【０１０９】
記憶サブシステム924は、本明細書で説明するモジュールのうちのいくつかまたはすべての機能を提供するプログラミング構造およびデータ構造を記憶する。たとえば、記憶サブシステム924は、図3、図4、図5、ならびに/または図7Aおよび図7Bの方法の選択された態様を実行するロジックを含むことができる。
【０１１０】
これらのソフトウェアモジュールは、一般に、プロセッサ914単独によって、または他のプロセッサと組み合わせて実行される。記憶サブシステム924において使用されるメモリ925は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)930と、固定命令が記憶される読み出し専用メモリ(ROM)932とを含むいくつかのメモリを含むことができる。ファイル記憶サブシステム926は、プログラムファイルおよびデータファイルの永続的なストレージを提供することができ、ハードディスクドライブ、関連するリムーバブル媒体を伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含むことができる。特定の実装形態の機能を実装するモジュールは、記憶サブシステム924内の、またはプロセッサ914によってアクセス可能な他の機械内のファイル記憶サブシステム926によって記憶されてもよい。
【０１１１】
バスサブシステム912は、コンピューティングデバイス910の様々なコンポーネントおよびサブシステムが意図されたように互いに通信することを可能にするための機構を提供する。バスサブシステム912は、単一のバスとして概略的に示されるが、バスサブシステムの代替的な実装形態は、複数のバスを使用することができる。
【０１１２】
コンピューティングデバイス910は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプであってもよい。コンピュータおよびネットワークの時々刻々と変化する性質のために、図9に示すコンピューティングデバイス910の説明は、いくつかの実装形態を説明する目的のための特定の例としてのみ意図されている。図9に示すコンピューティングデバイスよりも多いまたは少ないコンポーネントを有するコンピューティングデバイス910の多くの他の構成が可能である。
【０１１３】
本明細書では、いくつかの実装形態について説明し、例示してきたが、本明細書で説明した機能を実行し、ならびに/または結果および/もしくは1つもしくは複数の利点を得るための様々な他の手段および/または構造が利用されてもよく、そのような変形および/または修正の各々は、本明細書で説明した実装形態の範囲内にあると見なされる。より一般的には、本明細書で説明したすべてのパラメータ、寸法、材料および構成は、例示的であることを意図したものであり、実際のパラメータ、寸法、材料および/または構成は、教示が使用される特定の用途に依存する。当業者は、ほんの日常的な実験を使用して、本明細書で説明した特定の実装形態の多くの等価物を認識するか、または確認することができるであろう。したがって、前述の実装形態が単なる例として提示され、添付の特許請求の範囲およびその均等物の範囲内で、実装形態は、具体的に説明および特許請求されたものと違うやり方で実施されてもよいことが理解されるべきである。本開示の実装形態は、本明細書で説明した個々の特徴、システム、物品、材料、キット、および/または方法に向けられている。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合、本開示の範囲内に含まれる。
【符号の説明】
【０１１４】
110  トレーニング例生成システム
114  エンドエフェクタ動きベクトルエンジン
116  把持成功エンジン
117  トレーニング例データベース
120  トレーニングエンジン
125  畳み込みニューラルネットワーク
180A  ロボット
180B  ロボット
182A  把持エンドエフェクタ
182B  把持エンドエフェクタ
184A  視覚センサ
184B  視覚センサ
191A  物体
191B  物体
201  経路
600  CNN
661A  エンドエフェクタを有する画像、画像
661B  エンドエフェクタのない画像、画像
662  エンドエフェクタ動きベクトル
663  初期入力層
664  最大プーリング層
665  畳み込み層
666  畳み込み層
667  最大プーリング層
668  全結合層
669  タイルベクトル
670  畳み込み層
671  畳み込み層
672  最大プーリング層
673  畳み込み層
674  畳み込み層
675  全結合層
676  全結合層
677  成功した把持の尺度、尺度
840  ロボット
842a  センサ
842b  センサ
842m  センサ
860  ロボット制御システム、制御システム
910  コンピューティングデバイス
912  バスサブシステム
914  プロセッサ
916  ネットワークインターフェースサブシステム
920  ユーザインターフェース出力デバイス
922  ユーザインターフェース入力デバイス
924  記憶サブシステム
925  メモリサブシステム、メモリ
926  ファイル記憶サブシステム
930  メインランダムアクセスメモリ(RAM)
932  読み出し専用メモリ(ROM)
【図１】
2019508273.tif 000008
【図２】
2019508273.tif 000009
【図３】
2019508273.tif 000010
【図４】
2019508273.tif 000011
【図５】
2019508273.tif 000012
【図６Ａ】
2019508273.tif 000013
【図６Ｂ】
2019508273.tif 000014
【図７Ａ】
2019508273.tif 000015
【図７Ｂ】
2019508273.tif 000016
【図８】
2019508273.tif 000017
【図９】
2019508273.tif 000018
【手続補正書】
【提出日】平成30年10月26日(2018.10.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
1つまたは複数のプロセッサによって、ロボットの把持エンドエフェクタを現在の姿勢から追加の姿勢に移動させる動きを定義する候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた現在の画像を識別するステップであって、前記画像が、前記把持エンドエフェクタと、前記ロボットの環境内の少なくとも1つの物体とをキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、トレーニングされた畳み込みニューラルネットワークへの入力として前記現在の画像と前記候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用による前記物体の成功した把持の尺度を生成するステップであって、前記尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記候補エンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記尺度に基づいてエンドエフェクタコマンドを生成するステップであって、前記エンドエフェクタコマンドが把持コマンドまたはエンドエフェクタ動きコマンドである、ステップと、
前記エンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
を備える、方法。
【請求項２】
前記プロセッサのうちの1つまたは複数によって、前記動きの適用なしの前記物体の成功した把持の現在の尺度を決定するステップをさらに備え、
前記エンドエフェクタコマンドを生成するステップが、前記尺度と前記現在の尺度とに基づく、
請求項1に記載の方法。
【請求項３】
前記エンドエフェクタコマンドが前記把持コマンドであり、前記把持コマンドを生成するステップが、前記尺度と前記現在の尺度との比較が閾値を満たすと判定するステップに応答する、請求項2に記載の方法。
【請求項４】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、前記エンドエフェクタ動きコマンドを生成するステップが、前記候補エンドエフェクタ動きベクトルに適合するように前記エンドエフェクタ動きコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項５】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、前記エンドエフェクタ動きコマンドを生成するステップが、前記把持エンドエフェクタに対する軌道修正を実施するように前記エンドエフェクタ動きコマンドを生成するステップを備える、請求項2に記載の方法。
【請求項６】
前記動きの適用なしの前記物体の前記成功した把持の前記現在の尺度を決定するステップが、
前記プロセッサのうちの1つまたは複数によって、前記トレーニングされた畳み込みニューラルネットワークへの入力として前記画像とヌルエンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用なしの前記物体の前記成功した把持の前記現在の尺度を生成するステップであって、前記現在の尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記ヌルエンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと
を備える、請求項2に記載の方法。
【請求項７】
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、かつ前記候補エンドエフェクタ動きベクトルに適合し、前記エンドエフェクタ動きコマンドを前記1つまたは複数のアクチュエータに提供するステップが、前記把持エンドエフェクタを新しい姿勢に移動させ、
1つまたは複数のプロセッサによって、前記把持エンドエフェクタを前記新しい姿勢からさらなる追加姿勢に移動させる新しい動きを定義する追加の候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた新しい画像を識別するステップであって、前記新しい画像が、前記新しい姿勢における前記把持エンドエフェクタをキャプチャし、かつ前記環境内の前記物体をキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、前記トレーニングされた畳み込みニューラルネットワークへの入力として前記新しい画像と前記追加の候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記新しい動きの適用による前記物体の成功した把持の新しい尺度を生成するステップであって、前記新しい尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記新しい画像および前記新しいエンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記新しい尺度に基づいて新しいエンドエフェクタコマンドを生成するステップであって、前記新しいエンドエフェクタコマンドが、前記把持コマンドまたは新しいエンドエフェクタ動きコマンドである、ステップと、
前記新しいエンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
をさらに備える、請求項1に記載の方法。
【請求項８】
前記トレーニングされた畳み込みニューラルネットワークへの入力として前記画像と前記候補エンドエフェクタ動きベクトルとを適用するステップが、
前記トレーニングされた畳み込みニューラルネットワークの初期層への入力として前記画像を適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークの追加層に前記候補エンドエフェクタ動きベクトルを適用するステップであって、前記追加層が前記初期層の下流にある、ステップと
を備える、請求項1に記載の方法。
【請求項９】
前記追加層に前記候補エンドエフェクタ動きベクトルを適用するステップが、
エンドエフェクタ動きベクトル出力を生成するために前記エンドエフェクタ動きベクトルを前記畳み込みニューラルネットワークの全結合層に渡すステップと、
前記エンドエフェクタ動きベクトル出力を上流出力と連結するステップであって、前記上流出力が、前記追加層のすぐ上流にありかつ前記畳み込みニューラルネットワークの初期層および1つまたは複数の中間層から下流にある前記畳み込みニューラルネットワークのすぐ上流の層からのものである、請求項8に記載の方法。
【請求項１０】
前記初期層が畳み込み層であり、前記すぐ上流の層がプーリング層である、請求項9に記載の方法。
【請求項１１】
前記プロセッサのうちの1つまたは複数によって、前記視覚センサによってキャプチャされた追加画像を識別するステップであって、前記追加画像が、前記1つまたは複数の環境物体をキャプチャし、かつ前記把持エンドエフェクタを省略するかまたは前記画像内の前記把持エンドエフェクタの姿勢と異なる姿勢における前記把持エンドエフェクタを含む、ステップと、
前記トレーニングされた畳み込みニューラルネットワークへの追加入力として前記追加画像を適用するステップと
をさらに備える、請求項1に記載の方法。
【請求項１２】
前記画像と前記追加画像とを前記畳み込みニューラルネットワークに適用するステップが、
連結画像を生成するために前記画像と前記追加画像とを連結するステップと、
前記畳み込みニューラルネットワークの初期層への入力として前記連結画像を適用するステップと
を備える、請求項11に記載の方法。
【請求項１３】
前記候補エンドエフェクタ動きベクトルを生成するステップが、
複数の候補エンドエフェクタ動きベクトルを生成するステップと、
前記複数の候補エンドエフェクタ動きベクトルから前記候補エンドエフェクタ動きベクトルを選択するために、前記複数の候補エンドエフェクタ動きベクトルに対してクロスエントロピー最適化の1つまたは複数の反復を実行するステップと
を備える、請求項1に記載の方法。
【請求項１４】
環境を見ている視覚センサと、
1つまたは複数の非一時的コンピュータ可読記憶媒体内に記憶されたトレーニングされた畳み込みニューラルネットワークと、
少なくとも1つのプロセッサであって、
ロボットエンドエフェクタを現在の姿勢から追加の姿勢に移動させる動きを定義する候補エンドエフェクタ動きベクトルを生成することと、
前記トレーニングされた畳み込みニューラルネットワークへの入力として、前記候補エンドエフェクタ動きベクトルと、前記視覚センサによってキャプチャされた画像とを適用することであって、前記画像が、エンドエフェクタと、物体の環境内の少なくとも1つの前記物体とをキャプチャする、適用することと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記動きの適用による前記物体の成功した把持の尺度を生成することであって、前記尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記画像および前記候補エンドエフェクタ動きベクトルの前記適用に基づいて生成される、生成することと、
前記尺度に基づいてエンドエフェクタコマンドを生成することであって、前記エンドエフェクタコマンドが、把持コマンドまたはエンドエフェクタ動きコマンドである、生成することと、
前記エンドエフェクタコマンドをロボットの1つまたは複数のアクチュエータに提供することと
を行うように構成される少なくとも1つのプロセッサと
を備える、システム。
【請求項１５】
畳み込みニューラルネットワークをトレーニングする方法であって、
1つまたは複数のプロセッサによって、1つまたは複数のロボットによる複数の把持試行中に前記ロボットからのセンサ出力に基づいて生成された複数のトレーニング例を識別するステップであって、
前記トレーニング例の各々が、
前記把持試行のうちの対応する把持試行の対応する時間インスタンスの画像であって、前記画像が、前記対応する時間インスタンスにおけるロボットエンドエフェクタと1つまたは複数の環境物体とをキャプチャする、画像と、
前記対応する時間インスタンスにおける前記ロボットエンドエフェクタの時間インスタンス姿勢から前記対応する把持試行に関する前記ロボットエンドエフェクタの最終姿勢へ動く前記ロボットエンドエフェクタの動きを定義するエンドエフェクタ動きベクトルと
を含むトレーニング例入力を含み、
前記トレーニング例の各々が、
前記対応する把持試行の成功を示す把持成功ラベルを備える
トレーニング例出力を含む、
ステップと、
前記プロセッサのうちの1つまたは複数によって、前記トレーニング例に基づいて前記畳み込みニューラルネットワークをトレーニングするステップと
を備える、方法。
【請求項１６】
前記トレーニング例の各々の前記トレーニング例入力が、
前記対応する把持試行に関する追加画像をさらに備え、前記追加画像が、前記1つまたは複数の環境物体をキャプチャし、かつ前記ロボットエンドエフェクタを省略するかまたは前記画像内の前記ロボットエンドエフェクタの姿勢と異なる姿勢における前記ロボットエンドエフェクタを含む、請求項15に記載の方法。
【請求項１７】
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
連結画像を生成するために、前記所与のトレーニング例の前記画像と前記追加画像とを連結するステップと、
前記畳み込みニューラルネットワークの初期層への入力として前記連結画像を適用するステップと
を備える、請求項16に記載の方法。
【請求項１８】
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
前記畳み込みニューラルネットワークの初期層への入力として前記所与のトレーニング例の前記画像を適用するステップと、
前記所与のトレーニング例の前記エンドエフェクタ動きベクトルを前記畳み込みニューラルネットワークの追加層に適用するステップであって、前記追加層が前記初期層の下流にある、ステップと
を備える、請求項15に記載の方法。
【請求項１９】
前記エンドエフェクタ動きベクトルを前記追加層に適用するステップが、
エンドエフェクタ動きベクトル出力を生成するために前記エンドエフェクタ動きベクトルを全結合層に渡すステップと、前記エンドエフェクタ動きベクトル出力を上流出力に連結するステップとを備え、前記上流出力が、前記追加層のすぐ上流にあり、かつ前記畳み込みニューラルネットワークの前記初期層および1つまたは複数の中間層から下流にある前記畳み込みニューラルネットワークのすぐ上流の層からのものである、請求項18に記載の方法。
【請求項２０】
前記トレーニング例が、
第1のロボットによる複数の前記把持試行中に前記第1のロボットの複数の第1のロボットセンサからの出力に基づいて生成された前記トレーニング例の第1のグループと、
第2のロボットによる複数の前記把持試行中に前記第2のロボットの複数の第2のロボットセンサからの出力に基づいて生成された前記トレーニング例の第2のグループと
を備える、請求項15に記載の方法。
【請求項２１】
前記トレーニングされた畳み込みニューラルネットワークに基づいて追加の把持試行を生成するステップと、
前記追加の把持試行に基づいて複数の追加のトレーニング例を識別するステップと、
前記追加のトレーニング例に基づく前記畳み込みネットワークのさらなるトレーニングによって前記畳み込みニューラルネットワークを更新するステップと
をさらに備える、請求項15に記載の方法。
【国際調査報告】
2019508273.tif 000019
2019508273.tif 000020
2019508273.tif 000021