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