(58)【調査した分野】(Int.Cl.,DB名)
1つまたは複数のプロセッサによって、ロボットの把持エンドエフェクタを現在の姿勢から追加の姿勢に移動させる動きを定義する候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた現在の画像を識別するステップであって、前記視覚センサが、前記把持エンドエフェクタと、前記ロボットの環境内の少なくとも1つの物体とを前記現在の画像内にキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、トレーニングされた畳み込みニューラルネットワークへの入力として前記現在の画像と前記候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記候補エンドエフェクタ動きベクトルの適用による前記物体の把持の成功確率を示す尺度を生成するステップであって、前記尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記現在の画像および前記候補エンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記尺度に基づいてエンドエフェクタコマンドを生成するステップであって、前記エンドエフェクタコマンドが把持コマンドまたはエンドエフェクタ動きコマンドである、ステップと、
前記エンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
を備える、方法。
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、前記エンドエフェクタ動きコマンドを生成するステップが、前記候補エンドエフェクタ動きベクトルに適合するように前記エンドエフェクタ動きコマンドを生成するステップを備える、請求項2に記載の方法。
前記エンドエフェクタコマンドが前記エンドエフェクタ動きコマンドであり、かつ前記候補エンドエフェクタ動きベクトルに適合し、前記エンドエフェクタ動きコマンドを前記1つまたは複数のアクチュエータに提供するステップが、前記把持エンドエフェクタを新しい姿勢に移動させ、
1つまたは複数のプロセッサによって、前記把持エンドエフェクタを前記新しい姿勢からさらなる追加姿勢に移動させる新しい動きを定義する追加の候補エンドエフェクタ動きベクトルを生成するステップと、
前記プロセッサのうちの1つまたは複数によって、前記ロボットに関連付けられた視覚センサによってキャプチャされた新しい画像を識別するステップであって、前記視覚センサが、前記新しい姿勢における前記把持エンドエフェクタを前記新しい画像内にキャプチャし、かつ前記環境内の前記物体を前記新しい画像内にキャプチャする、ステップと、
前記プロセッサのうちの1つまたは複数によって、前記トレーニングされた畳み込みニューラルネットワークへの入力として前記新しい画像と前記追加の候補エンドエフェクタ動きベクトルとを適用するステップと、
前記トレーニングされた畳み込みニューラルネットワークを介して、前記追加の候補エンドエフェクタ動きベクトルの適用による前記物体の把持の成功確率を示す新しい尺度を生成するステップであって、前記新しい尺度が、前記トレーニングされた畳み込みニューラルネットワークへの前記新しい画像および前記追加の候補エンドエフェクタ動きベクトルの前記適用に基づいて生成される、ステップと、
前記新しい尺度に基づいて新しいエンドエフェクタコマンドを生成するステップであって、前記新しいエンドエフェクタコマンドが、前記把持コマンドまたは新しいエンドエフェクタ動きコマンドである、ステップと、
前記新しいエンドエフェクタコマンドを前記ロボットの1つまたは複数のアクチュエータに提供するステップと
をさらに備える、請求項1に記載の方法。
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
連結画像を生成するために、前記所与のトレーニング例に含まれる前記画像と前記追加画像とを連結するステップと、
前記畳み込みニューラルネットワークの初期層への入力として前記連結画像を適用するステップと
を備える、請求項15に記載の方法。
前記畳み込みニューラルネットワークをトレーニングするステップが、前記畳み込みニューラルネットワークに、前記トレーニング例のうちの所与のトレーニング例の前記トレーニング例入力を適用するステップを備え、前記所与のトレーニング例の前記トレーニング例入力を適用するステップが、
前記畳み込みニューラルネットワークの初期層への入力として前記所与のトレーニング例の前記画像を適用するステップと、
前記所与のトレーニング例の前記エンドエフェクタ動きベクトルを前記畳み込みニューラルネットワークの追加層に適用するステップであって、前記追加層が前記初期層の下流にある、ステップと
を備える、請求項14に記載の方法。
【発明を実施するための形態】
【0024】
本明細書で説明される技術のいくつかの実装形態は、ロボットの把持エンドエフェクタに関する候補動きデータがエンドエフェクタによる1つまたは複数の物体の成功した把持をもたらす確率を示す尺度を予測するために、トレーニングされた深層ニューラルネットワークの利用を可能にするために、CNNなどの深層ニューラルネットワークをトレーニングすることに向けられている。いくつかの実装形態では、トレーニングされた深層ニューラルネットワークは、視覚センサによって生成された画像(I
t)を受け入れ、タスク空間動きベクトルなどのエンドエフェクタ動きベクトル(v
t)を受け入れる。トレーニングされた深層ニューラルネットワークへの画像(I
t)およびエンドエフェクタ動きベクトル(v
t)の適用は、深層ニューラルネットワークを介して、動きベクトル(v
t)によって定義される動きを実施し、その後把持する実行コマンドが成功した把持を生じさせる予測尺度を生成するために使用されてもよい。いくつかの実装形態は、把持エンドエフェクタによる物体の成功した把持を達成するために、ロボットの把持エンドエフェクタをサーボ制御するための、トレーニングされた深層ニューラルネットワークの利用に向けられている。技術のこれらのおよび他の実装形態の追加の説明を以下に提供する。
【0025】
図1〜
図6Bを参照し、CNNをトレーニングする様々な実装形態について説明する。
図1は、把持試行がロボット(たとえば、ロボット180A、180B、および/または他のロボット)によって実行されてもよく、把持試行に関連するデータがトレーニング例を生成するために利用されてもよく、ならびに/またはトレーニング例がCNNをトレーニングするために利用されてもよい例示的な環境を示す。
【0026】
例示的なロボット180Aおよび180Bが
図1に示される。ロボット180Aおよび180Bは、把持エンドエフェクタ182Aおよび182Bを所望の位置に位置決めするために複数の潜在的な経路のいずれかに沿った把持エンドエフェクタ182Aおよび182Bの横断を可能にするために複数の自由度を有する「ロボットアーム」である。たとえば、
図2を参照すると、経路201に沿ってそのエンドエフェクタを横断させるロボット180Aの一例が示される。
図2は、経路201に沿って横断する際にロボット180Aおよびそのエンドエフェクタによってとられる姿勢のセットのうちの2つの異なる姿勢を示すロボット180Aのファントム画像および非ファントム画像を含む。再び
図1を参照すると、ロボット180Aおよび180Bは、それぞれそれらの対応する把持エンドエフェクタ182A、182Bの2つの対抗する「爪(claw)」を少なくとも開位置と閉位置(および/またはオプションで複数の「部分的に閉じられた」位置)との間で爪を作動させるようにさらに制御する。
【0027】
例示的な視覚センサ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))または他の光学的位置センサを含んでもよい。
【0028】
視覚センサ184Aは、例示的な物体191Aを含む作業空間の一部などのロボット180Aの作業空間の少なくとも一部の視野を有する。物体191Aの載置面は、
図1に示されていないが、それらの物体は、テーブル、トレイ、および/または他の表面上に載っていてもよい。物体191Aは、へら(spatula)と、ステープラと、鉛筆とを含む。他の実装形態では、より多くの物体、より少ない物体、追加の物体、および/または代替の物体が、本明細書で説明するようにロボット180Aの把持試行のすべてまたは一部の間に提供されてもよい。視覚センサ184Bは、例示的な物体191Bを含む作業空間の一部などのロボット180Bの作業空間の少なくとも一部の視野を有する。物体191Bの載置面は、
図1に示されていないが、それらは、テーブル、トレイ、および/または他の表面上に載っていてもよい。物体191Bは、鉛筆と、ステープラと、眼鏡とを含む。他の実装形態では、より多くの物体、より少ない物体、追加の物体、および/または代替の物体が、本明細書で説明するようにロボット180Bの把持試行のすべてまたは一部の間に提供されてもよい。
【0029】
特定のロボット180Aおよび180Bが
図1に示されるが、ロボット180Aおよび180Bと同様の追加のロボットアーム、他のロボットアーム形状を有するロボット、人間型形状を有するロボット、動物形状を有するロボット、1つまたは複数の車輪を介して移動するロボット(たとえば、自己平衡型ロボット)、潜水艇ロボット、無人航空機("UAV"(unmanned aerial vehicle))などを含む追加および/または代替ロボットが利用されてもよい。また、特定の把持エンドエフェクタが
図1に示されるが、代替の衝撃的把持エンドエフェクタ(たとえば、把持「プレート」を有するもの、より多いまたはより少ない「指」/「爪」を有するもの)、「侵入的」把持エンドエフェクタ、「収斂性」把持エンドエフェクタ、もしくは「接触的」把持エンドエフェクタ、または非把持エンドエフェクタなどの追加のおよび/または代替のエンドエフェクタが利用されてもよい。加えて、視覚センサ184Aおよび184Bの特定の取り付けが
図1に示されるが、追加のおよび/または代替の取り付けが利用されてもよい。たとえば、いくつかの実装形態では、視覚センサは、ロボットの非作動可能コンポーネント上、またはロボットの作動可能コンポーネント上(たとえば、エンドエフェクタ上またはエンドエフェクタに近いコンポーネント上)など、ロボットに直接取り付けられてもよい。また、たとえばいくつかの実装形態では、視覚センサは、その関連するロボットとは別個の非静止構造体に取り付けられてもよく、および/またはその関連するロボットとは別個の構造体上に非静止状態で取り付けられてもよい。
【0030】
ロボット180A、180B、および/または他のロボットは、多量の把持試行を実行するために利用されてもよく、把持試行に関連するデータは、トレーニング例を生成するためにトレーニング例生成システム110によって利用されてもよい。いくつかの実装形態では、トレーニング例生成システム110のすべてまたは諸態様は、ロボット180Aおよび/またはロボット180Bにおいて(たとえば、ロボット180Aおよび180Bの1つまたは複数のプロセッサを介して)実装されてもよい。たとえば、ロボット180Aおよび180Bは、それぞれトレーニング例生成システム110のインスタンスを含むことができる。いくつかの実装形態では、トレーニング例生成システム110のすべてまたは態様は、ロボット180Aおよび180Bとは別個であるが、ロボット180Aおよび180Bとネットワーク通信する1つまたは複数のコンピュータシステム上に実装されてもよい。
【0031】
ロボット180A、180B、および/または他のロボットによる各把持試行は、Tの別個の時間ステップまたはインスタンスからなる。各時間ステップにおいて、把持試行を実行するロボットの視覚センサによってキャプチャされた現在の画像
【数1】
が記憶され、エンドエフェクタの現在の姿勢
【数2】
もまた記憶され、ロボットは、次にグリッパを動かす経路(平行移動および/または回転)を選択する。最終時間ステップTにおいて、ロボットは、グリッパを作動させ(たとえば、閉じ)、把持の成功の評価を可能にするために追加のデータを記憶し、および/または1つもしくは複数の追加のアクションを実行する。トレーニング例生成システム110の把持成功エンジン116は、把持の成功を評価し、把持成功ラベル(l
i)を生成する。
【0032】
各把持試行は、
【数3】
によって表されるTのトレーニング例をもたらす。すなわち、各トレーニング例は、少なくともその時間ステップにおいて観察された画像
【数4】
と、その時間ステップにおける姿勢から最終的に到達する画像(把持試行の最終姿勢)へのエンドエフェクタ動きベクトル
【数5】
と、把持試行の把持成功ラベル(l
i)とを含む。各エンドエフェクタ動きベクトルは、トレーニング例生成システム110のエンドエフェクタ動きベクトルエンジン114によって決定されてもよい。たとえば、エンドエフェクタ動きベクトルエンジン114は、現在の姿勢と把持試行の最終姿勢との間の変換を決定し、変換をエンドエフェクタ動きベクトルとして使用することができる。複数のロボットの複数の把持試行に関するトレーニング例は、トレーニング例生成システム110によってトレーニング例データベース117内に記憶される。
【0033】
ロボットに関連付けられたセンサによって生成されたデータ、および/または生成されたデータから導出されたデータは、ロボットに局所的な、および/またはロボットから離れた1つまたは複数の非一時的コンピュータ可読媒体内に記憶されてもよい。いくつかの実装形態では、現在の画像は、赤色チャネル、青色チャネル、緑色チャネル、および/または深度チャネルなどの複数のチャネルを含むことができる。画像の各チャネルは、画像のピクセルの各々に関する0から255までの値などの画像の複数のピクセルの各々に関する値を規定する。いくつかの実装形態では、トレーニング例の各々は、現在の画像と、対応する把持試行に関する追加画像とを含むことができ、追加画像は、把持エンドエフェクタを含まず、または異なる姿勢(たとえば、現在の画像の姿勢と重複しない姿勢)におけるエンドエフェクタを含む。たとえば、追加画像は、任意の先行する把持試行後であるが、把持試行に関するエンドエフェクタの動きが開始する前、および把持エンドエフェクタが視覚センサの視野外に移動されたときに取り込まれてもよい。現在の姿勢、および現在の姿勢から把持試行の最終姿勢へのエンドエフェクタ動きベクトルは、タスク空間において、ジョイント空間において、または別の空間において表されてもよい。たとえば、エンドエフェクタ動きベクトルは、タスク空間における5つの値、すなわち3次元(3D)平行移動ベクトルを規定する3つの値、およびエンドエフェクタの軸の周りのエンドエフェクタの向きにおける変化のサイン−コサイン符号化を表す2つの値によって表されてもよい。いくつかの実装形態では、把持成功ラベルは、「0/成功」または「1/不成功」ラベルなどの2値ラベルである。いくつかの実装形態では、把持成功ラベルは、0、1、および0と1との間の1つまたは複数の値などの2つ以上のオプションから選択されてもよい。たとえば、"0"は、確認された「不成功の把持」を示してもよく、"1"は、確認された「成功した把持」を示してもよく、"0.25"は、「成功しない可能性が最も高い把持」を示してもよく、"0.75"は、「成功する可能性が最も高い把持」を示してもよい。
【0034】
トレーニングエンジン120は、トレーニング例データベース117のトレーニング例に基づいて、CNN125または他のニューラルネットワークをトレーニングする。CNN125をトレーニングすることは、CNN125へのトレーニング例の適用に基づいてCNN125を反復的に更新することを含んでもよい。たとえば、現在の画像、追加画像、および現在の姿勢からトレーニング例の把持試行の最終姿勢へのベクトルは、トレーニング例入力として利用されてもよく、把持成功ラベルは、トレーニング例出力として利用されてもよい。トレーニングされたCNN125は、現在の画像(および、オプションでエンドエフェクタを少なくとも部分的に省略した画像などの追加画像)を考慮して、所与のエンドエフェクタ動きベクトルに従ってグリッパを移動し、その後把持することが成功した把持を生じさせる確率を示す尺度を予測するようにトレーニングされる。
【0035】
図3は、把持試行を実行し、把持試行に関連するデータを記憶する例示的な方法300を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、840、および/または他のロボットのプロセッサおよび/またはロボット制御システムなどのロボットの1つまたは複数のコンポーネントを含むことができる。さらに、方法300の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【0036】
ブロック352において、システムは、把持試行を開始する。ブロック354において、システムは、エンドエフェクタが画像内に存在しない環境の画像を記憶する。たとえば、システムは、把持エンドエフェクタを視覚センサの視野外に移動させ(すなわち、環境の眺めを遮らない)、把持エンドエフェクタが視野外にあるときのインスタンスにおける画像を取り込むことができる。画像は、次いで記憶され、把持試行に関連付けられてもよい。
【0037】
ブロック356において、システムは、エンドエフェクタの動きを決定しかつ実施する。たとえば、システムは、エンドエフェクタの姿勢を制御するアクチュエータのうちの1つまたは複数を作動させ、それによってエンドエフェクタの姿勢を変化させる1つまたは複数の動きコマンドを生成することができる。
【0038】
ブロック356のいくつかの実装形態および/または反復では、動きコマンドは、エンドエフェクタによって到達可能な作業空間、エンドエフェクタが把持試行に限られる制限された空間、ならびに/またはエンドエフェクタの姿勢を制御するアクチュエータの位置制限および/もしくはトルク制限によって規定される空間などの所与の空間内でランダムであってもよい。たとえば、ニューラルネットワークの初期トレーニングが完了する前に、エンドエフェクタの動きを実施するためにブロック356においてシステムによって生成された動きコマンドは、所与の空間内でランダムであってもよい。本明細書で使用されるランダムは、真のランダムまたは疑似ランダムを含むことができる。
【0039】
いくつかの実装形態では、エンドエフェクタの移動を実施するためにブロック356においてシステムによって生成された動きコマンドは、トレーニングされたニューラルネットワークの現在のバージョンに少なくとも部分的に基づくことができ、および/または他の基準に基づくことができる。いくつかの実装形態では、各把持試行に対するブロック356の最初の反復において、エンドエフェクタは、エンドエフェクタがブロック354において視野外に移動されることに基づいて、「位置の外」であってもよい。これらの実装形態のうちのいくつかでは、ブロック356の最初の反復の前に、エンドエフェクタは、ランダムにまたは他の形で「位置に戻す」ように動かされてもよい。たとえば、エンドエフェクタは、設定された「開始位置」に戻されてもよく、および/または所与の空間内のランダムに選択された位置に移動されてもよい。
【0040】
ブロック358において、システムは、(1)把持試行の現在のインスタンスにおけるエンドエフェクタと環境とをキャプチャする画像と、(2)現在のインスタンスにおけるエンドエフェクタの姿勢とを記憶する。たとえば、システムは、ロボットに関連付けられた視覚センサによって生成された現在の画像を記憶し、画像を現在のインスタンスと(たとえば、タイムスタンプと)関連付けることができる。また、たとえばシステムは、その位置がロボットの姿勢に影響を及ぼすロボットの関節の1つまたは複数の関節位置センサからのデータに基づいてエンドエフェクタの現在の姿勢を決定することができ、システムは、その姿勢を記憶することができる。システムは、タスク空間、ジョイント空間、または別の空間におけるエンドエフェクタの姿勢を決定および記憶することができる。
【0041】
ブロック360において、システムは、現在のインスタンスが把持試行に関する最終インスタンスであるかどうかを判定する。いくつかの実装形態では、システムはブロック352、354、356、もしくは358においてインスタンスカウンタをインクリメントすることができ、および/または時間が経過するにつれて時間カウンタをインクリメントすることができ、カウンタの値を閾値と比較することに基づいて現在のインスタンスが最終インスタンスであるかどうかを判定することができる。たとえば、カウンタは、時間カウンタであってもよく、閾値は、3秒、4秒、5秒、および/または他の値であってもよい。いくつかの実装形態では、閾値は、方法300の1つまたは複数の反復間で変化してもよい。
【0042】
システムがブロック360において現在のインスタンスが把持試行に関する最終インスタンスではないと判定した場合、システムはブロック356に戻り、別のエンドエフェクタの動きを決定および実施し、次いでブロック358に進み、現在のインスタンスにおける画像と姿勢とを記憶する。所与の把持試行に関するブロック356、358および360の複数の反復を通して、エンドエフェクタの姿勢は、ブロック356の複数の反復によって変更され、それらの反復の各々において画像と姿勢とが記憶される。多くの実装形態では、ブロック356、358、360、および/または他のブロックは、比較的高い頻度で実行されてもよく、それによって各把持試行に関する比較的大量のデータを記憶することができる。
【0043】
システムがブロック360において現在のインスタンスが把持試行に関する最終インスタンスであると判定した場合、システムはブロック362に進み、エンドエフェクタのグリッパを作動させる。たとえば、衝撃的グリッパエンドエフェクタについて、システムは、1つまたは複数のプレート、指、および/または他の部材を閉じさせることができる。たとえば、システムは、部材が完全に閉じられた位置になるか、部材に関連付けられたトルクセンサによって測定されたトルク読み取り値が閾値を満たすまで、部材を閉じさせることができる。
【0044】
ブロック364において、システムはブロック360の把持の成功の決定を可能にするために、追加データを記憶し、オプションで1つまたは複数の追加アクションを実行する。いくつかの実装形態では、追加データは、位置読み取り値、トルク読み取り値、および/またはグリッパエンドエフェクタからの他の読み取り値である。たとえば、ある閾値(たとえば、1cm)よりも大きい位置読み取り値は、成功した把持を示すことができる。
【0045】
いくつかの実装形態では、ブロック364において、システムは、加えておよび/または代替的に、(1)エンドエフェクタを作動された(たとえば、閉じられた)位置に維持し、エンドエフェクタと、エンドエフェクタによって把持されている場合がある任意の物体とを(たとえば、垂直および/または横方向に)移動し、(2)エンドエフェクタが移動された後、元の把持位置をキャプチャする画像を記憶し、(3)(オプションで、グリッパを元の把持位置の近くに戻した後)エンドエフェクタに、エンドエフェクタによって把持されている任意の物体を「落とさせ」、(4)(もしあれば)物体が落とされた後、元の把持位置をキャプチャする画像を記憶する。システムは、エンドエフェクタおよび物体(もしあれば)が移動された後に元の把持位置をキャプチャする画像を記憶してもよく、物体(もしあれば)が落とされた後に元の把持位置をキャプチャする画像を記憶してもよく、画像を把持試行に関連付けてもよい。エンドエフェクタおよび物体(もしあれば)が移動された後の画像と、物体(もしあれば)が落とされた後の画像とを比較することは、把持が成功したかどうかを示す場合がある。たとえば、一方の画像内に現れるが、他方の画像内には現れない物体は、成功した把持を示す場合がある。
【0046】
ブロック366において、システムは、カウンタ(たとえば、インスタンスカウンタおよび/または時間カウンタ)をリセットし、別の把持試行を開始するためにブロック352に戻る。
【0047】
いくつかの実装形態では、
図3の方法300は、オプションでは方法300のそれらのそれぞれの反復のうちの1つまたは複数(たとえば、すべて)の間に並列に動作する、複数のロボットの各々において実施されてもよい。これは、1つのロボットのみが方法300を動作していた場合よりも多くの把持試行が所与の時間期間内に達成されることを可能にすることができる。さらに、複数のロボットのうちの1つまたは複数が他のロボットに関連付けられた1つまたは複数の視覚センサの姿勢と異なるロボットに対する姿勢を有する関連する視覚センサを含む実装形態では、複数のロボットからの把持試行に基づいて生成されたトレーニング例は、それらのトレーニング例に基づいてトレーニングされたニューラルネットワークにおける視覚センサの姿勢にロバスト性を提供することができる。さらに、複数のロボットの把持エンドエフェクタおよび/もしくは他のハードウェアコンポーネントが異なっているかおよび/もしくは異なって摩耗する実装形態、ならびに/または異なるロボット(たとえば、同じ型および/もしくはモデル、ならびに/または異なる型および/もしくはモデル)が異なる物体(たとえば、異なるサイズ、異なる重さ、異なる形状、異なる透光性、異なる材料の物体)、および/または異なる環境(たとえば異なる表面、異なる照明、異なる環境上の障害)と相互作用する実装形態では、複数のロボットからの把持試行に基づいて生成されたトレーニング例は、様々なロボット構成および/または環境構成にロバスト性を提供することができる。
【0048】
いくつかの実装形態では、所与のロボットによって到達可能であり、把持試行が行われてもよい物体は、方法300の異なる反復中に異なってもよい。たとえば、人間のオペレータおよび/または別のロボットは、ロボットの1つまたは複数の把持試行間にロボットの作業空間に物体を追加および/または除去することができる。また、たとえばロボット自体は、1つまたは複数の物体の成功した把持に続いて、それらの物体をその作業空間外に落とすことができる。これは、トレーニングデータの多様性を増加させる場合がある。いくつかの実装形態では、照明、表面、障害物などの環境要因は、加えておよび/または代替的に、方法300の異なる反復中に異なる場合があり、それがまた、トレーニングデータの多様性を増加させる場合がある。
【0049】
図4は、ロボットの把持試行に関連するデータに基づいてトレーニング例を生成する例示的な方法400を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、1220のプロセッサおよび/もしくはロボット制御システム、ならびに/またはトレーニング例生成システム110および/もしくはオプションではロボットとは別個に実装されてもよい他のシステムのプロセッサなどのロボットおよび/または別のコンピュータシステムの1つまたは複数のコンポーネントを含むことができる。さらに、方法400の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【0050】
ブロック452において、システムは、トレーニング例生成を開始する。ブロック454において、システムは把持試行を選択する。たとえば、システムは、複数の記憶された把持試行に関連するデータを含むデータベースにアクセスし、記憶された把持試行のうちの1つを選択することができる。選択された把持試行は、たとえば
図3の方法300に基づいて生成された把持試行であってもよい。
【0051】
ブロック456において、システムは、選択された把持試行に関する記憶されたデータに基づいて、選択された把持試行に対する把持成功ラベルを決定する。たとえば、方法300のブロック364に関して説明したように、把持試行に対する把持成功ラベルの決定を可能にするために、把持試行に関して追加データが記憶されてもよい。記憶されたデータは、1つまたは複数のセンサからのデータを含むことができ、データは、把持試行中および/または把持試行後に生成される。
【0052】
一例として、追加のデータは、位置読み取り値、トルク読み取り値、および/または把持エンドエフェクタからの他の読み取り値であってもよい。そのような例では、システムは、読み取り値に基づいて把持成功ラベルを決定することができる。たとえば、読み取り値が位置読み取り値である場合、システムは、読み取り値がある閾値(たとえば、1cm)よりも大きい場合、「成功把持」ラベルを決定することができ、読み取り値がある閾値(たとえば、1cm)よりも小さい場合、「不成功把持」ラベルを決定することができる。
【0053】
別の例として、追加データは、エンドエフェクタおよび物体(もしあれば)が移動された後の元の把持位置をキャプチャする画像、ならびに、物体(もしあれば)が落とされた後の元の把持位置をキャプチャする画像であってもよい。把持成功ラベルを決定するために、システムは、(1)エンドエフェクタおよび物体(もしあれば)が移動された後の画像を(2)物体(もしあれば)が落とされた後の画像と比較してもよい。たとえば、システムは、2つの画像のピクセルを比較してもよく、2つの画像間の閾値数よりも多いピクセルが異なる場合、システムは、「成功した把持」ラベルを決定してもよい。また、たとえばシステムは、2つの画像の各々において物体検出を実行し、物体(もしあれば)が落とされた後にキャプチャされた画像において物体が検出されたが、エンドエフェクタおよび物体(もしあれば)が移動された後にキャプチャされた画像において物体が検出されなかった場合、「成功した把持」ラベルを決定してもよい。
【0054】
さらに別の例として、追加データは、エンドエフェクタおよび物体(もしあれば)が移動された後の元の把持位置をキャプチャする画像であってもよい。把持成功ラベルを決定するために、システムは、(1)エンドエフェクタおよび物体(もしあれば)が移動された後の画像と、(2)把持試行が開始する前に撮られた環境の追加画像(たとえば、エンドエフェクタを省略した追加画像)とを比較してもよい。
【0055】
いくつかの実装形態では、把持成功ラベルは、「成功」/「不成功」ラベルなどの2値ラベルである。いくつかの実装形態では、把持成功ラベルは、0、1、および0と1との間の1つまたは複数の値などの3つ以上のオプションから選択されてもよい。たとえば、ピクセル比較手法では、"0"は、確認された「成功しなかった把持」を示してもよく、第1の閾値数未満のピクセルが2つの画像間で異なっているときにシステムによって選択されてもよく、"0.25"は、「成功していない可能性が最も高い把持」を示してもよく、異なるピクセルの数が第1の閾値からより大きい第2の閾値までであるときに選択されてもよく、"0.75"は、「成功した可能性が最も高い把持」を示してもよく、異なるピクセルの数が第2の閾値(または他の閾値)よりも大きいが、第3の閾値未満であるときに選択されてもよく、"1"は、「確認された成功した把持」を示してもよく、異なるピクセルの数が第3の閾値以上であるときに選択されてもよい。
【0056】
ブロック458において、システムは、把持試行に関するインスタンスを選択する。たとえば、システムは、タイムスタンプ、および/またはインスタンスを把持試行の他のインスタンスと区別する、データに関連する他の境界に基づいてインスタンスに関連するデータを選択することができる。
【0057】
ブロック460において、システムは、インスタンスにおけるエンドエフェクタの姿勢と、把持試行の最終インスタンスにおけるエンドエフェクタの姿勢とに基づいて、インスタンスに関するエンドエフェクタ動きベクトルを生成する。たとえば、システムは、現在の姿勢と把持試行の最終姿勢との間の変換を決定し、エンドエフェクタ動きベクトルとして変換を使用することができる。現在の姿勢、および現在の姿勢から把持試行の最終姿勢へのエンドエフェクタ動きベクトルは、タスク空間、ジョイント空間、または別の空間において表されてもよい。たとえば、エンドエフェクタ動きベクトルは、タスク空間における5つの値、すなわち3次元(3D)平行移動ベクトルを規定する3つの値、およびエンドエフェクタの軸の周りのエンドエフェクタの向きにおける変化のサイン−コサイン符号化を表す2つの値によって表されてもよい。
【0058】
ブロック462において、システムは、(1)インスタンスに関する記憶された画像と、(2)ブロック460においてインスタンスに関して生成されたエンドエフェクタ動きベクトルと、(3)ブロック456において決定された把持成功ラベルとを含むインスタンスに関するトレーニング例を生成する。いくつかの実装形態では、システムは、エンドエフェクタを少なくとも部分的に除外し、把持試行の前にキャプチャされたものなどの把持試行に関する記憶された追加画像も含むトレーニング例を生成する。それらの実装形態のうちのいくつかでは、システムは、トレーニング例のための連結された画像を生成するために、インスタンスに関する記憶された画像と、把持試行に関する記憶された追加画像とを連結する。連結された画像は、インスタンスに関する記憶された画像と、記憶された追加画像の両方を含む。たとえば、両方の画像がX×Yピクセルと、3つのチャネル(たとえば、赤色、青色、緑色)とを含む場合、連結された画像は、X×Yピクセルと、6つのチャネル(各画像から3つ)とを含むことができる。本明細書で説明するように、現在の画像、追加画像、および現在の姿勢からトレーニング例の把持試行の最終姿勢へのベクトルはトレーニング例入力として利用されてもよく、把持成功ラベルはトレーニング例出力として利用されてもよい。
【0059】
いくつかの実装形態では、ブロック462において、システムは、オプションで画像を処理することができる。たとえば、システムは、オプションでCNNの入力層の規定されたサイズに合うように画像の大きさを変更し、画像から1つまたは複数のチャネルを除去し、および/または(画像が深度チャネルを含む実装形態では)深度チャネルの値を正規化することができる。
【0060】
ブロック464において、システムは、選択されたインスタンスが把持試行の最終インスタンスであるかどうかを判定する。システムが、選択されたインスタンスが把持試行の最終インスタンスではないと判定した場合、システムはブロック458に戻り、別のインスタンスを選択する。
【0061】
システムが、選択されたインスタンスが把持試行の最終インスタンスであると判定した場合、システムはブロック466に進み、処理する追加の把持試行が存在するかどうかを判定する。システムが、処理する追加の把持試行が存在すると判定した場合、システムはブロック454に戻り、別の把持試行を選択する。いくつかの実装形態では、処理する追加の把持試行が存在するかどうかを判定することは、任意の残りの未処理把持試行が存在するかどうかを判定することを含むことができる。いくつかの実装形態では、処理する追加の把持試行が存在するかどうかを判定することは、加えておよび/または代替的に、閾値数のトレーニング例が既に生成されているかどうか、および/または他の基準が満たされているかどうかを判定することを含むことができる。
【0062】
システムが、処理する追加の把持試行が存在しないと判定した場合、システムはブロック466に進み、方法400は、終了する。方法400の別の反復が再び実行されてもよい。たとえば、方法400は、実行されている少なくとも閾値数の追加把持試行に応答して再び実行されてもよい。
【0063】
方法300および方法400は、明確のため本明細書では別個の図において示されるが、方法400の1つまたは複数のブロックは、方法300の1つまたは複数のブロックを実行する同じコンポーネントによって実行されてもよいことが理解される。たとえば、方法300および方法400のブロックのうちの1つまたは複数(たとえば、すべて)は、ロボットのプロセッサによって実行されてもよい。また、方法400の1つまたは複数のブロックは、方法300の1つまたは複数のブロックと組み合わせて、またはその前もしくは後に実行されてもよいことが理解される。
【0064】
図5は、トレーニング例に基づいて畳み込みニューラルネットワークをトレーニングする例示的な方法500を示すフローチャートである。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、トレーニングエンジン120のプロセッサ(たとえば、GPU)、および/または畳み込みニューラルネットワーク(たとえば、CNN125)を介して動作する他のコンピュータシステムなどのコンピュータシステムの1つまたは複数のコンポーネントを含むことができる。さらに、方法500の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【0065】
ブロック552において、システムは、トレーニングを開始する。ブロック554において、システムは、トレーニング例を選択する。たとえば、システムは、
図4の方法400に基づいて生成されたトレーニング例を選択することができる。
【0066】
ブロック556において、システムは、トレーニング例のインスタンスに関する画像と、選択されたトレーニング例の追加画像とをCNNの初期層に適用する。たとえば、システムは、CNNの初期畳み込み層に画像を適用することができる。本明細書で説明するように、追加画像は、エンドエフェクタを少なくとも部分的に除外することができる。いくつかの実装形態では、システムは、画像と追加画像とを連結し、連結された画像を初期層に適用する。いくつかの他の実装形態では、画像および追加画像は、トレーニング例において既に連結されている。
【0067】
ブロック558において、システムは、選択されたトレーニング例のエンドエフェクタ動きベクトルをCNNの追加層に適用する。たとえば、システムはブロック556において画像が適用された初期層の下流にあるCNNの追加層にエンドエフェクタ動きベクトルを適用することができる。いくつかの実装形態では、エンドエフェクタ動きベクトルを追加層に適用するために、システムは、エンドエフェクタ動きベクトル出力を生成するためにエンドエフェクタ動きベクトルを全結合層に通し、エンドエフェクタ動きベクトル出力をCNNのすぐ上流の層からの出力と連結する。すぐ上流の層は、エンドエフェクタ動きベクトルが適用される追加層のすぐ上流の層であり、オプションでブロック556において画像が適用される初期層から下流の1つまたは複数の層であってもよい。いくつかの実装形態では、初期層は畳み込み層であり、すぐ上流の層はプーリング(pooling)層であり、追加層は畳み込み層である。
【0068】
ブロック560において、システムは、トレーニング例の把持成功ラベルに基づいてCNNに対して逆伝播を実行する。ブロック562において、システムは、追加のトレーニング例が存在するかどうかを判定する。システムが、追加のトレーニング例が存在すると判定した場合、システムはブロック554に戻り、別のトレーニング例を選択する。いくつかの実装形態では、追加のトレーニング例が存在するかどうかを判定することは、CNNをトレーニングするために利用されていない任意の残りのトレーニング例が存在するかどうかを判定することを含むことができる。いくつかの実装形態では、追加のトレーニング例が存在するかどうかを判定することは、加えておよび/または代替的に、閾値数のトレーニング例が利用されているかどうか、および/または他の基準が満たされているかどうかを判定することを含むことができる。
【0069】
システムが、追加のトレーニング例が存在しないと判定した場合、および/または何らかの他の基準が満たされていると判定した場合、システムはブロック564またはブロック566に進む。
【0070】
ブロック564において、CNNのトレーニングは終了することができる。トレーニングされたCNNは、次いで把持エンドエフェクタによる物体の成功した把持を達成するために、把持エンドエフェクタをサーボ制御する際に1つまたは複数のロボットによって使用するために提供されてもよい。たとえば、ロボットは、
図7Aの方法700を実行する際にトレーニングされたCNNを利用することができる。
【0071】
ブロック566において、システムは、加えておよび/または代替的にトレーニングされたCNNに基づいて追加のトレーニング例を生成するために、トレーニングされたCNNを提供することができる。たとえば1つまたは複数のロボットは、把持試行を実行する際にトレーニングされたCNNを利用することができ、それらの把持試行からのデータが、追加のトレーニング例を生成するために利用されてもよい。たとえば、1つまたは複数のロボットは、
図7Aの方法700に基づいて把持試行を実行する際にトレーニングされたCNNを利用することができ、それらの把持試行からのデータが、
図4の方法400に基づいて追加のトレーニング例を生成するために利用されてもよい。そのデータが追加のトレーニング例を生成するために利用されるロボットは、実験室/トレーニングセットアップにおけるロボット、および/または1人または複数の消費者による実際の使用におけるロボットであってもよい。
【0072】
ブロック568において、システムはブロック566においてトレーニングされたCNNを提供することに応答して生成された追加のトレーニング例に基づいてCNNを更新してもよい。たとえば、システムは、追加のトレーニング例に基づいてブロック554、556、558および560の追加の反復を実行することによってCNNを更新してもよい。
【0073】
ブロック566とブロック568との間に延びる矢印によって示すように、更新されたCNNは、さらなるトレーニング例を生成するためにブロック566において再び提供されてもよく、それらのトレーニング例は、ブロック568においてCNNをさらに更新するために利用される。いくつかの実装形態では、ブロック566の将来の反復に関連して実行される把持試行は、将来の反復において実行されるものおよび/またはトレーニングされたCNNの利用なしで実行されるものよりも時間的に長い把持試行であってもよい。たとえば、トレーニングされたCNNの利用なしで実行される
図3の方法300の実装形態は、時間的により短い把持試行を有することができ、最初にトレーニングされたCNNを用いて実行されたものは、時間的により長い把持試行を有することができ、トレーニングされたCNNの次の反復を用いて実行されたものは、さらに時間的により長い把持試行を有することなどができる。これは、オプションで方法300のオプションのインスタンスカウンタおよび/または時間カウンタによって実現されてもよい。
【0074】
図6Aおよび
図6Bは、様々な実装形態のCNN600の例示的なアーキテクチャを示す。
図6Aおよび
図6BのCNN600は、
図5の方法500に基づいてトレーニングされてもよいCNNの例である。
図6Aおよび
図6BのCNN600は、さらに一旦トレーニングされると、
図7Aの方法700に基づいて把持エンドエフェクタをサーボ制御する際に利用されてもよいCNNの例である。一般に、畳み込みニューラルネットワークは、入力層と、1つまたは複数の畳み込み層と、オプションの重みおよび/または他の層と、出力層とを含む多層学習フレームワークである。トレーニング中、畳み込みニューラルネットワークは、特徴表現の階層を学習するためにトレーニングされる。ネットワークの畳み込み層は、フィルタを用いて畳み込まれ、オプションでプーリング層によってダウンサンプリングされる。一般に、プーリング層は、最大、最小、および/または正規化サンプリングなどの1つまたは複数のダウンサンプリング関数によって、値をより小さい領域内に集約する。
【0075】
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のトレーニング中に学習される。
【0076】
初期入力層663の後に最大プーリング層664が続く。いくつかの実装形態では、最大プーリング層664は、64のフィルタを有する3×3最大プーリング層である。最大プーリング層664の後に6つの畳み込み層が続き、そのうちの2つは、
図6A中で665および666によって表される。いくつかの実装形態では、6つの畳み込み層は、それぞれ64のフィルタを有する5×5畳み込み層である。畳み込み層666の後に最大プーリング層667が続く。いくつかの実装形態では、最大プーリング層667は、64のフィルタを有する3×3最大プーリング層である。
【0077】
エンドエフェクタ動きベクトル662も
図6Aに示される。エンドエフェクタ動きベクトル662は、(
図6Aの"+"によって示されるように)最大プーリング層667の出力と連結され、連結された出力は、畳み込み層670に適用される(
図6B)。いくつかの実装形態では、エンドエフェクタ動きベクトル662を最大プーリング層667の出力と連結することは、全結合層668によってエンドエフェクタ動きベクトル662を処理することを含み、その出力は、次いでタイル(tiled)ベクトル669を介して出力を空間次元にわたってタイリングすることによって最大プーリング層667の応答マップ内の各点に点ごとに加算される。言い換えれば、エンドエフェクタ動きベクトル662は、全結合層668に通され、タイルベクトル669を介して最大プーリング層667の応答マップの空間次元にわたって複製される。
【0078】
ここで
図6Bに進むと、エンドエフェクタ動きベクトル662と最大プーリング層667の出力との連結は、畳み込み層670に提供され、畳み込み層670の後にはもう5つの畳み込み層が続く(それらの5つのうち最後の畳み込み層671が
図6Bに示されるが、介在する4つは示されない)。いくつかの実装形態では、畳み込み層670および671、ならびに4つの介在する畳み込み層は、それぞれ64のフィルタを有する3×3畳み込み層である。
【0079】
畳み込み層671の後に最大プーリング層672が続く。いくつかの実装形態では、最大プーリング層672は、64のフィルタを有する2×2最大プーリング層である。最大プーリング層672の後に3つの畳み込み層が続き、そのうちの2つが
図6Aにおいて673および674によって表される。
【0080】
CNN600の最後の畳み込み層674は第1の全接続層675に完全に接続され、第1の全接続層675は次に第2の全接続層676に完全に接続される。全接続層675および676は、サイズ64のベクトルなどのベクトルであってもよい。第2の全結合層676の出力は、成功した把持の尺度677を生成するために利用される。たとえば、尺度677を生成して出力するために、シグモイドが利用されてもよい。CNN600をトレーニングするいくつかの実装形態では、エポック、学習レート、重み減衰、ドロップアウト確率、および/または他のパラメータに関する様々な値が利用されてもよい。いくつかの実装形態では、CNN600をトレーニングおよび/または利用するために、1つまたは複数のGPUが利用されてもよい。特定の畳み込みニューラルネットワーク600が
図6に示されるが、変形が可能である。たとえば、より多いまたはより少ない畳み込み層が設けられてもよく、1つまたは複数の層が例として提供されたものと異なるサイズであるなどでもよい。
【0081】
CNN600または他のニューラルネットワークが本明細書で説明される技法に従って一旦トレーニングされると、それは、把持エンドエフェクタをサーボ制御するために利用されてもよい。
図7Aを参照すると、把持エンドエフェクタをサーボ制御するためにトレーニングされた畳み込みニューラルネットワークを利用する例示的な方法700を示すフローチャートが示される。便宜上、フローチャートの動作について、動作を実行するシステムを参照して説明する。このシステムは、ロボット180A、180B、840、および/または他のロボットのプロセッサ(たとえば、CPUおよび/またはGPU)および/またはロボット制御システムなどのロボットの1つまたは複数のコンポーネントを含むことができる。方法700の1つまたは複数のブロックを実施する際、システムは、たとえばロボットにおいて局所的に記憶されてもよい、および/またはロボットから離れて記憶されてもよいトレーニングされたCNNを介して動作することができる。さらに、方法700の動作が特定の順序で示されるが、これは限定することを意味しない。1つまたは複数の動作が、並べ替えられ、省略され、または追加されてもよい。
【0082】
ブロック752において、システムは、候補エンドエフェクタ動きベクトルを生成する。候補エンドエフェクタ動きベクトルは、さらなるブロックにおいて利用されるべきトレーニングされたCNNの入力パラメータに応じて、タスク空間、ジョイント空間、または別の空間において規定されてもよい。
【0083】
いくつかの実装形態では、システムは、エンドエフェクタによって到達可能な作業空間、エンドエフェクタが把持試行に限られる制限された空間、ならびに/またはエンドエフェクタの姿勢を制御するアクチュエータの位置制限および/もしくはトルク制限によって規定される空間などの所与の空間内でランダムである候補エンドエフェクタ動きベクトルを生成する。
【0084】
いくつかの実装形態では、システムは、候補エンドエフェクタ動きベクトルのグループをサンプリングし、サンプリングされたグループからサブグループを選択するために、1つまたは複数の技法を利用することができる。たとえば、システムは、クロスエントロピー法(CEM:cross-entropy method)などの最適化技法を利用することができる。CEMは、各反復においてNの値のバッチをサンプリングし、これらのサンプルのうちのM<Nにガウス分布を適合させ、次いでこのガウスからNの新しいバッチをサンプリングする無導関数(derivative-free)最適化アルゴリズムである。たとえば、システムは、CEMと、M=64およびN=6の値とを利用し、(CEMによって)最良の利用可能な候補エンドエフェクタ動きベクトルを決定するために、CEMの3回の反復を実行することができる。
【0085】
いくつかの実装形態では、ブロック752において生成されてもよい候補エンドエフェクタ動きベクトルに対して1つまたは複数の制約が課されてもよい。たとえば、CEMまたは他の技法によって評価される候補エンドエフェクタの動きは、制約に基づいて制約されてもよい。制約の一例は、把持が試行されてもよい領域に対する制約、把持が試行されてもよい特定の物体および/または特定の物体分類に対する制約などを課す、(たとえば、コンピュータシステムのユーザインターフェース入力デバイスを介して)人間が入力した制約である。制約の別の例は、把持が試行されてもよい領域に対する制約、把持が試行されてもよい特定の物体および/または特定の物体分類に対する制約などを課す、コンピュータが生成した制約である。たとえば、物体分類器は、キャプチャされた画像に基づいて1つまたは複数の物体を分類し、把持を特定の分類の物体に制限する制約を課してもよい。制約のさらに他の例は、たとえばロボットの作業空間、ロボットの関節限界、ロボットのトルク限界、衝突回避システムによって提供され、1つまたは複数の物体との衝突を防止するためのロボットの動きを制限する制約、などに基づく制約を含む。
【0086】
ブロック754において、システムは、エンドエフェクタと1つまたは複数の環境物体とをキャプチャする現在の画像を識別する。いくつかの実装形態では、システムはまた、エンドエフェクタが少なくとも部分的に視覚センサの視野外にあったときに視覚センサによってキャプチャされた環境物体の追加画像などのエンドエフェクタを少なくとも部分的に省略した追加画像を識別する。いくつかの実装形態では、システムは、連結画像を生成するために画像と追加画像とを連結する。いくつかの実装形態では、システムは、(たとえば、CNNの入力にサイズを合わせるために)画像および/または連結画像の処理をオプションで実行する。
【0087】
ブロック756において、システムは、現在の画像と候補エンドエフェクタ動きベクトルとをトレーニングされたCNNに適用する。たとえば、システムは、現在の画像と追加画像とを含む連結画像をトレーニングされたCNNの初期層に適用することができる。システムはまた、候補エンドエフェクタ動きベクトルを初期層の下流にあるトレーニングされたCNNの追加層に適用することができる。いくつかの実装形態では、候補エンドエフェクタ動きベクトルを追加層に適用する際、システムは、エンドエフェクタ動きベクトル出力を生成し、エンドエフェクタ動きベクトル出力をCNNの上流出力に連結するために、エンドエフェクタ動きベクトルをCNNの全結合層に渡す。上流出力は、追加層のすぐ上流にありCNNの初期層および1つまたは複数の中間層から下流にあるCNNのすぐ上流からである。
【0088】
ブロック758において、システムは、トレーニングされたCNNを介して、エンドエフェクタ動きベクトルに基づいて成功した把持の尺度を生成する。尺度は、ブロック756におけるトレーニングされたCNNへの現在の画像(およびオプションで追加画像)および候補エンドエフェクタ動きベクトルの適用と、トレーニングされたCNNの学習された重みに基づいて尺度を決定することとに基づいて生成される。
【0089】
ブロック760において、システムは、成功した把持の尺度に基づいてエンドエフェクタコマンドを生成する。たとえば、いくつかの実装形態では、システムはブロック752において1つまたは複数の追加の候補エンドエフェクタ動きベクトルを生成し、ブロック756の追加の反復においてそれらの追加の候補エンドエフェクタ動きベクトルおよび現在の画像(およびオプションで追加画像)をトレーニングされたCNNに適用することによって、ブロック758の追加の反復においてそれらの追加の候補エンドエフェクタ動きベクトルに関する成功した把持の尺度を生成してもよい。ブロック756および758の追加の反復は、オプションでシステムによって並列に実行されてもよい。それらの実装形態のうちのいくつかでは、システムは、候補エンドエフェクタ動きベクトルに関する尺度と、追加の候補エンドエフェクタ動きベクトルに関する尺度とに基づいて、エンドエフェクタコマンドを生成してもよい。たとえば、システムは、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに完全にまたは実質的に従うエンドエフェクタコマンドを生成することができる。たとえば、システムのロボットの制御システムは、エンドエフェクタ動きベクトルに基づいてエンドエフェクタを移動させるためにロボットの1つまたは複数のアクチュエータを作動させる動きコマンドを生成することができる。
【0090】
いくつかの実装形態では、システムは、候補エンドエフェクタ動きベクトルが新しい動きコマンド(たとえば、成功した把持の現在の尺度)を生成するために利用されない場合、成功した把持の現在の尺度に基づいてエンドエフェクタコマンドを生成してもよい。たとえば、現在の尺度と成功した把持を最も示す候補エンドエフェクタ動きベクトルの尺度との1つまたは複数の比較が閾値を満たさない場合、エンドエフェクタ動きコマンドは、エンドエフェクタに把持を試行させる(たとえば、衝撃的把持エンドエフェクタの指を閉じさせる)「把持コマンド」であってもよい。たとえば、成功した把持を最も示す候補エンドエフェクタ動きベクトルの尺度で割った現在の尺度の結果が第1の閾値(たとえば、0.9)以上である場合、(グリッパを閉じることがそれを動かすのと同じくらい成功した把持を生じさせる可能性がある場合に把持を早く停止することの論理的根拠の下で)把持コマンドが生成されてもよい。また、たとえば結果が第2の閾値(たとえば、0.5)以下である場合、エンドエフェクタコマンドは、(把持エンドエフェクタが良好な構成に配置されていない可能性が最も高く、比較的大きい動きが必要とされるという論理的根拠の下で)軌道修正を達成させる(たとえば、把持エンドエフェクタを少なくともXメートルだけ「上」に上げる)動きコマンドであってもよい。また、たとえば結果が第1の閾値と第2の閾値との間である場合、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従う動きコマンドが生成されてもよい。システムによって生成されたエンドエフェクタコマンドは、1つもしくは複数のコマンドの単一のグループ、または1つもしくは複数のコマンドの一連のグループであってもよい。
【0091】
候補エンドエフェクタ動きベクトルが新しい動きコマンドを生成するために利用されない場合の成功した把持の尺度は、方法700の前の反復において利用された候補エンドエフェクタ動きベクトルに関する尺度に基づくことができ、ならびに/または「ヌル」動きベクトルと現在の画像(およびオプションで追加画像)とをブロック756の追加の反復においてトレーニングされたCNNに適用すること、およびブロック758の追加の反復に基づいて尺度を生成することに基づくことができる。
【0092】
ブロック762において、システムは、エンドエフェクタコマンドが把持コマンドであるかどうかを判定する。システムがブロック762において、エンドエフェクタコマンドが把持コマンドであると判定した場合、システムはブロック764に進み、把持コマンドを実行する。いくつかの実装形態では、システムは、(たとえば、本明細書で説明する技法を使用して)把持コマンドが成功した把持をもたらすかどうかをオプションで判定することができ、成功しない場合、システムは、エンドエフェクタの姿勢をオプションで調整し、ブロック752に戻ることができる。把持が成功した場合であっても、システムは、別の物体を把持するために後になってブロック752に戻ることができる。
【0093】
システムがブロック762において、エンドエフェクタコマンドが把持コマンドではない(たとえば、それが動きコマンドである)と判定した場合、システムはブロック766に進み、エンドエフェクタコマンドを実行し、次いでブロック752に戻り、別の候補エンドエフェクタ動きベクトルを生成する。たとえば、ブロック766において、システムは、成功した把持を最も示す尺度を用いて、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従うエンドエフェクタ動きコマンドを実行することができる。
【0094】
多くの実装形態では、方法700のブロックは、比較的高い頻度で実行されてもよく、それによってエンドエフェクタコマンドの反復更新を可能にし、成功した把持の比較的高い確率をもたらすために、トレーニングされたCNNによって通知された軌道に沿ったエンドエフェクタのサーボ制御を可能にする。
【0095】
図7Bは、
図7Aのフローチャートの特定のブロックのいくつかの実装形態を示すフローチャートである。特に、
図7Bは、
図7Aのブロック758および760のいくつかの実装形態を示すフローチャートである。
【0096】
ブロック758Aにおいて、システムは、CNNを介して、ブロック752の候補エンドエフェクタ動きベクトルに基づいて、成功した把持の尺度を生成する。
【0097】
ブロック758Bにおいて、システムは、エンドエフェクタの現在の姿勢に基づいて、成功した把持の現在の尺度を決定する。たとえば、システムは、候補エンドエフェクタ動きベクトルが、方法700の直前の反復において利用された候補エンドエフェクタ動きベクトルに関する尺度に基づいて新しい動きコマンドを生成するために利用されない場合、成功した把持の現在の尺度を決定してもよい。また、たとえばシステムはブロック756の追加の反復において「ヌル」動きベクトルと現在の画像(およびオプションで追加画像)とをトレーニングされたCNNに適用し、ブロック758の追加の反復に基づいて尺度を生成することに基づいて現在の尺度を決定してもよい。
【0098】
ブロック760Aにおいて、システムはブロック758Aおよび758Bの尺度を比較する。たとえば、システムは、尺度を除算すること、尺度を減算すること、および/または尺度を1つもしくは複数の関数に適用することによって、それらを比較してもよい。
【0099】
ブロック760Bにおいて、システムはブロック760Aの比較に基づいてエンドエフェクタコマンドを生成する。たとえば、ブロック758Bの尺度がブロック758Aの尺度によって除算され、商が閾値(たとえば、0.9)以上である場合、エンドエフェクタ動きコマンドは、エンドエフェクタに把持を試行させる「把持コマンド」であってもよい。また、たとえばブロック758Bの尺度がブロック758Aの尺度によって除算され、商が第2の閾値(たとえば、0.5)以下である場合、エンドエフェクタコマンドは、軌道修正を実施する動きコマンドであってもよい。また、たとえばブロック758Bの尺度がブロック758Aの尺度によって除算され、商が第2の閾値と第1の閾値との間である場合、候補エンドエフェクタ動きベクトルに実質的にまたは完全に従う動きコマンドが生成されてもよい。
【0100】
本明細書では、CNNをトレーニングし、および/またはエンドエフェクタをサーボ制御するためにCNNを利用する特定の例が与えられている。しかしながら、いくつかの実装形態は、特定の例とは異なる追加の特徴および/または代替的な特徴を含む場合がある。たとえば、いくつかの実装形態では、CNNは、ロボットのエンドエフェクタに関する候補動きデータが、特定の分類の物体(たとえば、鉛筆、筆記用具、へら、台所用具、略矩形の構成を有する物体、柔らかい物体、最小の境界がXとYとの間にある物体など)などの1つまたは複数の特定の物体の成功した把持をもたらす可能性を示す尺度を予測するようにトレーニングされてもよい。
【0101】
たとえば、いくつかの実装形態では、特定の分類の物体は、様々な把持試行中にロボットが把持するための他の物体と共に含まれてもよい。(1)把持が成功した場合、および(2)把持がその特定の分類に適合する物体のものである場合にのみ「成功した把持」の把持ラベルが見つけられるトレーニング例が生成されてもよい。物体が特定の分類に一致するかどうかを判定することは、たとえばロボットが把持エンドエフェクタを把持試行に続いて視覚センサに向け、把持エンドエフェクタによって把持された物体(もしあれば)の画像を取り込むために視覚センサを使用することに基づいて決定されてもよい。人間の観察者および/または画像分類ニューラルネットワーク(または他の画像分類システム)は、次いでエンドエフェクタによって把持された物体が特定の分類のものであるかどうかを判定してもよく、その決定は、適切な把持レベルを適用するために利用される。そのようなトレーニング例は、本明細書で説明するようにCNNをトレーニングするために利用されてもよく、そのようなトレーニング例によるトレーニングの結果として、トレーニングされたCNNは、特定の分類のものである物体の把持エンドエフェクタによる成功した把持を達成するためにロボットの把持エンドエフェクタをサーボ制御するために利用されてもよい。
【0102】
図8は、ロボット840の例示的なアーキテクチャを概略的に示す。ロボット840は、ロボット制御システム860と、1つまたは複数の動作コンポーネント840a〜840nと、1つまたは複数のセンサ842a〜842mとを含む。センサ842a〜842mは、たとえば視覚センサ、光センサ、圧力センサ、圧力波センサ(たとえば、マイクロフォン)、近接センサ、加速度計、ジャイロスコープ、温度計、気圧計などを含むことができる。センサ842a〜842mは、ロボット840と一体であるように描かれているが、これは限定することを意味しない。いくつかの実装形態では、センサ842a〜842mは、たとえば独立型ユニットとして、ロボット840の外部に配置されてもよい。
【0103】
動作コンポーネント840a〜840nは、たとえばロボットの1つまたは複数のコンポーネントの移動を実施するために、1つもしくは複数のエンドエフェクタおよび/または1つもしくは複数のサーボモータまたは他のアクチュエータを含むことができる。たとえば、ロボット840は、複数の自由度を有することができ、アクチュエータの各々は、制御コマンドに応答して自由度のうちの1つまたは複数の範囲内のロボット840の作動を制御することができる。本明細書で使用される場合、アクチュエータという用語は、アクチュエータに関連付けられてもよく、受信した制御コマンドをアクチュエータを駆動するための1つまたは複数の信号に変換する任意のドライバに加えて、動きを引き起こす機械的または電気的デバイス(たとえば、モータ)を包含する。したがって、制御コマンドをアクチュエータに提供することは、制御コマンドを所望の動きを作成するために電気的または機械的デバイスを駆動するための適切な信号に変換するドライバに制御コマンドを提供することを含むことができる。
【0104】
ロボット制御システム860は、ロボット840のCPU、GPU、および/または他のコントローラなどの1つまたは複数のプロセッサ内に実装されてもよい。いくつかの実装形態では、ロボット840は、制御システム860のすべてまたは態様を含むことができる「ブレインボックス(brain box)」を備えることができる。たとえば、ブレインボックスは、データのリアルタイムバーストを動作コンポーネント840a〜840nに提供することができ、リアルタイムバーストの各々は、とりわけ、動作コンポーネント840a〜840nのうちの1つまたは複数の各々に関する(もしあれば)動きのパラメータを指示する1つまたは複数の制御コマンドのセットを備える。いくつかの実装形態では、ロボット制御システム860は、本明細書で説明する方法300、400、500、および/または700の1つまたは複数の態様を実行することができる。
【0105】
本明細書で説明するように、いくつかの実装形態では、物体を把持するためにエンドエフェクタを位置決めする際に制御システム860によって生成される制御コマンドのすべてまたは態様は、トレーニングされたCNNなどのトレーニングされたニューラルネットワークの利用に基づいて生成されたエンドエフェクタコマンドに基づくことができる。たとえば、センサ842a〜842mの視覚センサは、現在の画像と追加画像とを取り込むことができ、ロボット制御システム860は、候補動きベクトルを生成することができる。ロボット制御システム860は、トレーニングされたCNNに、現在の画像と、追加画像と、候補動きベクトルとを提供することができ、ロボットのエンドエフェクタの動きおよび/または把持を制御するための1つまたは複数のエンドエフェクタ制御コマンドを生成するために、適用することに基づいて生成された尺度を利用することができる。制御システム860は、
図8においてロボット840の一体部分として示されるが、いくつかの実装形態では、制御システム860のすべてまたは態様は、ロボット840とは別個であるがロボット840と通信するコンポーネント内に実装されてもよい。たとえば、制御システム860のすべてまたは態様は、コンピューティングデバイス910などのロボット840と有線および/またはワイヤレス通信する1つまたは複数のコンピューティングデバイス上に実装されてもよい。
【0106】
図9は、本明細書で説明する技法の1つまたは複数の態様を実行するためにオプションで利用されてもよい例示的なコンピューティングデバイス910のブロック図である。コンピューティングデバイス910は、典型的には、バスサブシステム912を介していくつかの周辺デバイスと通信する少なくとも1つのプロセッサ914を含む。それらの周辺デバイスは、たとえばメモリサブシステム925およびファイル記憶サブシステム926を含む記憶サブシステム924と、ユーザインターフェース出力デバイス920と、ユーザインターフェース入力デバイス922と、ネットワークインターフェースサブシステム916とを含むことができる。入力デバイスおよび出力デバイスは、コンピューティングデバイス910とのユーザ対話を可能にする。ネットワークインターフェースサブシステム916は、外部ネットワークとのインターフェースを提供し、他のコンピューティングデバイスにおける対応するインターフェースデバイスに結合される。
【0107】
ユーザインターフェース入力デバイス922は、キーボード、マウス、トラックボール、タッチパッド、もしくはグラフィックスタブレットなどのポインティングデバイス、スキャナ、ディスプレイに組み込まれたタッチスクリーン、音声認識システムなどのオーディオ入力デバイス、マイクロフォン、および/または他のタイプの入力デバイスを含むことができる。一般に、「入力デバイス」という用語の使用は、コンピューティングデバイス910内または通信ネットワーク上に情報を入力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【0108】
ユーザインターフェース出力デバイス920は、ディスプレイサブシステム、プリンタ、ファックスマシン、またはオーディオ出力デバイスなどの非視覚的ディスプレイを含むことができる。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)などのフラットパネルデバイス、プロジェクションデバイス、または可視画像を作成するための何らかの他の機構を含むことができる。ディスプレイサブシステムはまた、オーディオ出力デバイスを介するなどして、非視覚的ディスプレイを提供することができる。一般に、「出力デバイス」という用語の使用は、コンピューティングデバイス910からユーザまたは別の機械もしくはコンピューティングデバイスに情報を出力するすべての可能なタイプのデバイスおよび方法を含むことを意図している。
【0109】
記憶サブシステム924は、本明細書で説明するモジュールのうちのいくつかまたはすべての機能を提供するプログラミング構造およびデータ構造を記憶する。たとえば、記憶サブシステム924は、
図3、
図4、
図5、ならびに/または
図7Aおよび
図7Bの方法の選択された態様を実行するロジックを含むことができる。
【0110】
これらのソフトウェアモジュールは、一般に、プロセッサ914単独によって、または他のプロセッサと組み合わせて実行される。記憶サブシステム924において使用されるメモリ925は、プログラム実行中の命令およびデータの記憶のためのメインランダムアクセスメモリ(RAM)930と、固定命令が記憶される読み出し専用メモリ(ROM)932とを含むいくつかのメモリを含むことができる。ファイル記憶サブシステム926は、プログラムファイルおよびデータファイルの永続的なストレージを提供することができ、ハードディスクドライブ、関連するリムーバブル媒体を伴うフロッピーディスクドライブ、CD-ROMドライブ、光学ドライブ、またはリムーバブル媒体カートリッジを含むことができる。特定の実装形態の機能を実装するモジュールは、記憶サブシステム924内の、またはプロセッサ914によってアクセス可能な他の機械内のファイル記憶サブシステム926によって記憶されてもよい。
【0111】
バスサブシステム912は、コンピューティングデバイス910の様々なコンポーネントおよびサブシステムが意図されたように互いに通信することを可能にするための機構を提供する。バスサブシステム912は、単一のバスとして概略的に示されるが、バスサブシステムの代替的な実装形態は、複数のバスを使用することができる。
【0112】
コンピューティングデバイス910は、ワークステーション、サーバ、コンピューティングクラスタ、ブレードサーバ、サーバファーム、または任意の他のデータ処理システムもしくはコンピューティングデバイスを含む様々なタイプであってもよい。コンピュータおよびネットワークの時々刻々と変化する性質のために、
図9に示すコンピューティングデバイス910の説明は、いくつかの実装形態を説明する目的のための特定の例としてのみ意図されている。
図9に示すコンピューティングデバイスよりも多いまたは少ないコンポーネントを有するコンピューティングデバイス910の多くの他の構成が可能である。
【0113】
本明細書では、いくつかの実装形態について説明し、例示してきたが、本明細書で説明した機能を実行し、ならびに/または結果および/もしくは1つもしくは複数の利点を得るための様々な他の手段および/または構造が利用されてもよく、そのような変形および/または修正の各々は、本明細書で説明した実装形態の範囲内にあると見なされる。より一般的には、本明細書で説明したすべてのパラメータ、寸法、材料および構成は、例示的であることを意図したものであり、実際のパラメータ、寸法、材料および/または構成は、教示が使用される特定の用途に依存する。当業者は、ほんの日常的な実験を使用して、本明細書で説明した特定の実装形態の多くの等価物を認識するか、または確認することができるであろう。したがって、前述の実装形態が単なる例として提示され、添付の特許請求の範囲およびその均等物の範囲内で、実装形態は、具体的に説明および特許請求されたものと違うやり方で実施されてもよいことが理解されるべきである。本開示の実装形態は、本明細書で説明した個々の特徴、システム、物品、材料、キット、および/または方法に向けられている。加えて、2つ以上のそのような特徴、システム、物品、材料、キット、および/または方法の任意の組合せは、そのような特徴、システム、物品、材料、キット、および/または方法が相互に矛盾しない場合、本開示の範囲内に含まれる。