(57)【特許請求の範囲】
【請求項１】
ロボットアーム上に配置された空間構造感知カメラを有する、前記ロボットアームを備えたロボットと通信するように構成された通信インターフェースと、
少なくとも一つの処理回路と、を備え、
前記空間構造感知カメラは、カメラ視野を有し、
前記少なくとも一つの処理回路は、容器が開位置にある間に、前記容器内の物体が前記カメラ視野の中にあるかまたは前記カメラ視野の中にあったときに、
前記カメラ視野中の環境について奥行き情報を含む空間構造情報を受信することであって、前記空間構造情報が前記空間構造感知カメラによって生成されることと、
前記空間構造情報に基づいて容器姿勢を決定することであって、前記容器姿勢が、前記容器の配向、または前記容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記容器姿勢に基づいて物体姿勢を決定することであって、前記物体姿勢が、前記物体の配向、または前記物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、前記移動コマンドが、前記物体姿勢に基づいて生成されることと、
を行うように構成される、計算システム。
【請求項２】
前記少なくとも一つの処理回路は、前記物体が配置されている容器表面の配向、または前記容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢として、前記容器姿勢を決定するように構成される、請求項１に記載の計算システム。
【請求項３】
前記少なくとも一つの処理回路は、前記容器が、前記容器表面からずれている容器縁を有する引き出しであるときに、前記容器縁の配向、または前記容器縁上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器縁の姿勢を決定するように構成され、
前記容器縁の姿勢が、前記空間構造情報に基づいて決定され、
前記容器表面の姿勢が、前記容器縁の姿勢に基づいて、かつ、前記容器縁と前記容器表面との間の定義された距離に基づいて決定される、請求項２に記載の計算システム。
【請求項４】
前記少なくとも一つの処理回路は、
前記物体と関連付けられた容器セグメント識別子を受信することであって、前記容器セグメント識別子が前記容器表面のセグメントを識別するためのものであることと、
前記容器表面の姿勢に基づいて、前記容器セグメント識別子と関連付けられた位置を決定することと、
を行うように構成される、請求項３に記載の計算システム。
【請求項５】
前記少なくとも一つの処理回路は、衝突事象を回避する物体移動経路を決定するように構成され、
前記衝突事象が、前記物体と、前記容器縁を形成する容器境界との衝突を表し、
前記移動コマンドが、前記物体移動経路に基づいて生成される、請求項３に記載の計算システム。
【請求項６】
前記少なくとも一つの処理回路は、物体識別子が前記物体上に配置されているときに、
前記物体識別子の２Ｄ位置を記述するための物体識別子位置を決定することと、
前記物体識別子位置および前記空間構造情報に基づいて、前記物体を表す一つ以上の位置である、一つ以上の物体位置の集合を決定することと、を行うように構成され、
前記移動コマンドが、前記一つ以上の物体位置の集合に基づいて生成される、請求項１に記載の計算システム。
【請求項７】
前記少なくとも一つの処理回路は、
前記物体識別子位置を囲む領域を決定することと、
前記物体識別子位置を囲む前記決定された領域に対応する、前記空間構造情報の一部分を検索することによって、前記一つ以上の物体位置の集合を決定することと、を行うように構成される、請求項６に記載の計算システム。
【請求項８】
前記空間構造情報は、前記カメラ視野中の前記環境より感知された、一つ以上の表面上の複数の位置を表す点群を含み、
前記一つ以上の物体位置の集合が検索される、前記空間構造情報の前記一部分は、前記物体識別子位置を囲む前記決定された領域内に位置する、前記複数の位置の部分集合を含む、請求項７に記載の計算システム。
【請求項９】
前記少なくとも一つの処理回路は、
前記物体識別子位置を表すための２Ｄ座標である、少なくとも一つの２Ｄ物体識別子の座標を決定することと、
前記２Ｄ物体識別子の座標に基づいて、一つ以上の２Ｄ物体座標の少なくとも一つの集合を決定することと、を行うように構成され、
前記一つ以上の２Ｄ物体座標は、前記一つ以上の物体位置を表すための、一つ以上のそれぞれの２Ｄ座標であり、
前記移動コマンドは、前記一つ以上の２Ｄ物体座標の集合に基づいて、かつ、前記物体の配向および奥行き値に基づいて生成される、請求項６に記載の計算システム。
【請求項１０】
前記少なくとも一つの処理回路は、前記物体識別子でコード化された情報に基づいて、物体サイズを決定するように構成され、
前記一つ以上の物体位置は、前記物体の境界を表し、前記物体サイズに基づいて決定される、請求項６に記載の計算システム。
【請求項１１】
前記少なくとも一つの処理回路は、
前記物体と関連付けられた物体識別情報を受信することと、
前記物体識別子にコード化された情報が、前記物体識別情報に合致するかどうかを決定することと、を行うように構成される、請求項６に記載の計算システム。
【請求項１２】
物体識別子感知装置が前記ロボットアーム上に配置されているときに、前記少なくとも一つの処理回路は、前記物体識別子感知装置によって感知された情報に基づいて、前記物体識別子位置を決定するように構成される、請求項６に記載の計算システム。
【請求項１３】
前記移動コマンドは、前記ロボットに前記物体を移動させるための物体移動コマンドであり、
前記少なくとも一つの処理回路は、前記ロボットアームに、前記物体識別子感知装置を前記容器の画定近接レベル内に移動させるための、センサー移動コマンドを出力するように構成され、
前記物体識別子の位置は、前記センサー移動コマンドの出力後に決定される、請求項１２に記載の計算システム。
【請求項１４】
前記センサー移動コマンドは、前記ロボットアームに、前記空間構造感知カメラを前記容器の前記画定近接レベル内に移動させるためのものでもあり、
前記空間構造情報は、前記空間構造感知カメラが前記容器の前記画定近接レベル内にあるときに生成され、前記物体が配置されている容器表面の一部分を表す、請求項１３に記載の計算システム。
【請求項１５】
前記容器が閉位置にあり、ハンドルを含むとき、前記少なくとも一つの処理回路は、
前記容器の外表面上の位置を記述するための、空間構造追加情報を受信することと、
前記空間構造追加情報に基づいて、前記ハンドルを表すための一つ以上のハンドル位置を決定することと、
前記ロボットアームに、前記容器を前記閉位置から前記開位置へ移動させるための、容器移動コマンドを出力することと、を行うように構成され、
前記容器移動コマンドは、前記一つ以上のハンドル位置に基づいて生成され、
前記センサー移動コマンド及び前記物体移動コマンドは、前記容器移動コマンドの後に出力される、請求項１３に記載の計算システム。
【請求項１６】
命令を有する非一時的コンピュータ可読媒体であって、
前記命令は、計算システムの少なくとも一つの処理回路によって実行されるとき、
空間構造情報を受信することであって、前記計算システムは、ロボットアーム上に配置されたカメラ視野を持つ空間構造感知カメラを有する、前記ロボットアームを備えたロボットと通信するように構成され、前記空間構造情報は、前記空間構造感知カメラによって生成され、前記空間構造情報は、前記カメラ視野中の環境について奥行き情報を含み、容器が開位置にある間に、前記容器内の物体が前記カメラ視野の中にあるかまたは前記カメラ視野の中にあったときに生成されることと、
前記空間構造情報に基づいて容器姿勢を決定することであって、前記容器姿勢が、前記容器の配向、または前記容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記容器姿勢に基づいて物体姿勢を決定することであって、前記物体姿勢が、前記物体の配向、または前記物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、前記移動コマンドが、前記物体姿勢に基づいて生成されることと、
を前記少なくとも一つの処理回路に行わせる、非一時的コンピュータ可読媒体。
【請求項１７】
前記命令は、前記少なくとも一つの処理回路によって実行されるとき、
前記物体が配置されている容器表面の配向、または前記容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢として、前記容器姿勢を決定することを前記少なくとも一つの処理回路に行わせる、請求項１６に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記命令は、前記少なくとも一つの処理回路によって実行されるとき、かつ前記容器が、前記容器表面からずれている容器縁を有する引き出しであるときに、
前記容器縁の配向、または前記容器縁上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器縁の姿勢を決定することを前記少なくとも一つの処理回路に行わせ、
前記容器縁の姿勢が、前記空間構造情報に基づいて決定され、
前記容器表面の姿勢が、前記容器縁の姿勢に基づいて、かつ、前記容器縁と前記容器表面との間の定義された距離に基づいて決定される、請求項１７に記載の非一時的コンピュータ可読媒体。
【請求項１９】
計算システムによって、空間構造情報を受信することであって、前記計算システムは、ロボットアーム上に配置されたカメラ視野を持つ空間構造感知カメラを有する、前記ロボットアームを備えたロボットと通信するように構成され、前記空間構造情報は、前記空間構造感知カメラによって生成され、前記空間構造情報は、前記カメラ視野中の環境について奥行き情報を含み、容器が開位置にある間に、前記容器内の物体が前記カメラ視野の中にあるかまたは前記カメラ視野の中にあったときに生成されることと、
前記空間構造情報に基づいて容器姿勢を決定することであって、前記容器姿勢が、前記容器の配向、または前記容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記容器姿勢に基づいて物体姿勢を決定することであって、前記物体姿勢が、前記物体の配向、または前記物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、前記移動コマンドが、前記物体姿勢に基づいて生成されることと、
を含む、物体検出のための方法。
【請求項２０】
前記容器姿勢を決定することは、前記物体が配置されている容器表面の配向、または前記容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢を決定することを含む、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、「Ａ  ＲＯＢＯＴＩＣ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＯＢＪＥＣＴ  ＲＥＣＯＧＮＩＴＩＯＮ  ＭＥＣＨＡＮＩＳＭ」と題する、２０２０年３月５日出願の米国仮特許出願第６２／９８５，３３６号の利益を請求し、その全体の内容は参照により本明細書に組み込まれる。
【０００２】
本開示は、容器検出および物体検出のための計算システムならびに方法に関する。
【背景技術】
【０００３】
自動化がより一般的になるに従い、倉庫保管および小売環境など、より多くの環境においてロボットが使用されている。例えば、ロボットは、商品または倉庫の中にある他の物体と相互作用するように使用されうる。ロボットの動作は、固定されてもよく、または倉庫の中のセンサーによって生成された情報などの、入力に基づいてもよい。
【発明の概要】
【０００４】
本開示の一つの態様は、物体検出を行うための命令を有する、計算システム、方法、および／または非一時的コンピュータ可読媒体に関する。計算システムは、ロボットアーム上に配置された空間構造感知カメラを有する、ロボットアームを備えたロボットと通信するように構成される通信インターフェースを含んでもよく、空間構造感知カメラは、カメラ視野を有する。少なくとも一つの処理回路は、容器が開位置にある間に、容器内の物体がカメラ視野の中にあるかまたはカメラ視野の中にあったときに、方法を行うように構成されうる。方法は、カメラ視野中の環境について奥行き情報を含む空間構造情報を受信することであって、空間構造情報が空間構造感知カメラによって生成されることと、空間構造情報に基づいて容器姿勢を決定することであって、容器姿勢が、容器の配向、または容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることとを伴いうる。方法はさらに、容器姿勢に基づいて物体姿勢を決定することであって、物体姿勢が、物体の配向、また物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、移動コマンドが、物体姿勢に基づいて生成されることとを伴いうる。
【図面の簡単な説明】
【０００５】
【図１Ａ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示す。
【図１Ｂ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示す。
【図１Ｃ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示す。
【図１Ｄ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示す。
【図１Ｅ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示す。
【０００６】
【図２Ａ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示すブロック図を提供する。
【図２Ｂ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示すブロック図を提供する。
【図２Ｃ】本明細書の実施形態と一致する、空間構造情報および／または物体識別子感知情報を受信し処理するために構成される、計算システムを示すブロック図を提供する。
【０００７】
【図３Ａ】本明細書の実施形態による、複数の容器（例えば、引き出し）と、空間構造感知カメラによって生成される空間構造情報に基づいて、容器と相互作用するためのロボットとを有する環境を示す。
【図３Ｂ】本明細書の実施形態による、複数の容器（例えば、引き出し）と、空間構造感知カメラによって生成される空間構造情報に基づいて、容器と相互作用するためのロボットとを有する環境を示す。
【図３Ｃ】本明細書の実施形態による、複数の容器（例えば、引き出し）と、空間構造感知カメラによって生成される空間構造情報に基づいて、容器と相互作用するためのロボットとを有する環境を示す。
【図３Ｄ】本明細書の実施形態による、複数の容器（例えば、引き出し）と、空間構造感知カメラによって生成される空間構造情報に基づいて、容器と相互作用するためのロボットとを有する環境を示す。
【０００８】
【図４】本明細書の実施形態による、容器内に配置された物体についての情報を決定する方法を示す、フロー図を提供する。
【０００９】
【図５Ａ】本明細書の実施形態による、容器と容器内の物体とを示す。
【図５Ｂ】本明細書の実施形態による、容器と容器内の物体とを示す。
【図５Ｃ】本明細書の実施形態による、容器と容器内の物体とを示す。
【００１０】
【図６Ａ】本明細書の実施形態による、容器、または容器内に配置された物体を記述する、空間構造情報を示す。
【図６Ｂ】本明細書の実施形態による、容器、または容器内に配置された物体を記述する、空間構造情報を示す。
【図６Ｃ】本明細書の実施形態による、容器、または容器内に配置された物体を記述する、空間構造情報を示す。
【００１１】
【図６Ｄ】本明細書の実施形態による、容器と容器内に配置された物体とを示す。
【００１２】
【図６Ｅ】本明細書の実施形態による、容器、または容器内に配置された物体を記述する、空間構造情報を示す。
【００１３】
【図６Ｆ】本明細書の実施形態による、容器表面と容器縁との関係を示す。
【００１４】
【図７Ａ】本明細書の実施形態による、空間構造感知カメラ、および物体識別子感知装置、すなわち、より具体的には、バーコード感知装置の両方を有する環境を描写する。
【００１５】
【図７Ｂ】本明細書の実施形態による、一つ以上の物体位置を決定するために使用される、バーコード位置の決定を示す。
【図７Ｃ】本明細書の実施形態による、一つ以上の物体位置を決定するために使用される、バーコード位置の決定を示す。
【００１６】
【図８】本明細書の実施形態による、物体の位置を決定するために使用される、物体に隣接するバーコードを示す。
【００１７】
【図９】本明細書の実施形態による、空間構造情報、および／または物体識別子感知情報、すなわち、より具体的には、容器の一部分のみを覆う感知されるバーコード情報を示す。
【００１８】
【図１０】本明細書の実施形態による、容器の異なる領域を異なるセグメントと関連付ける、セグメンテーションを示す。
【００１９】
【図１１Ａ】本明細書の実施形態による、閉位置から開位置となるように移動している容器を示す。
【図１１Ｂ】本明細書の実施形態による、閉位置から開位置となるように移動している容器を示す。
【図１１Ｃ】本明細書の実施形態による、閉位置から開位置となるように移動している容器を示す。
【発明を実施するための形態】
【００２０】
本開示の一つの態様は、容器内に配置された商品もしくは他の任意の物体など、引き出しまたは他の容器の内容物とのロボット相互作用を容易にすることに関する（「または」「もしくは」という用語を、本明細書では、「および／または」「および／もしくは」「ならびに／または」を指すために使用されうる）。ロボット相互作用は、例えば、ロボットの手で容器内に配置された物体をつかむか、または他の方法で拾い上げることを含みうる。ロボット相互作用は、例えば、倉庫、小売空間、またはいかなる他の環境においても発生しうる。一部の事例では、ロボット相互作用を容易にすることには、容器内の物体の姿勢を決定することを伴い、姿勢は、カメラもしくは何らかの他の基準点に対する、物体の配向または奥行きのうちの少なくとも一つを指してもよく、そのため、ロボットの手を適切に動かして、物体を回収するか、またはそうでなければ拾い上げることができる。
【００２１】
様々な実施形態は、開けられた容器についての情報が決定される、開いている容器の検出を行うことによって、物体の姿勢（物体姿勢とも呼ばれる）を決定することに関し、物体は容器内に配置されていてもよい。これらの実施形態によって、例えば、撮像ノイズまたは測定誤差の他の起源に対してより堅牢で耐性のある、物体姿勢を決定する様式を提供しうる。撮像ノイズは、例えば、物体を測定するために使用される、点群または他の空間構造情報に影響を与えうる。点群に持ち込まれる測定誤差は、例えば、物体の配向および／または奥行きの誤った決定を引き起こす場合がある。一部の事例では、数ミリメートルまたは数度の誤差であっても、一部の状況で、ロボットの手と物体との間の相対位置決定に関して、ミリメートルレベルまたはより優れた精度に依存しうる、ロボット相互作用に影響を与える場合がある。物体の測定誤差が、こうした精度を妨げるか、または邪魔することがあるため、本開示の一つの態様は、物体が中に配置されている容器に関する測定値の使用と、物体に関する姿勢もしくは他の情報を推定するか、または他の方法で決定するためのこのような測定値の使用とに関する。
【００２２】
一部の事例では、撮像ノイズはまた、物体が配置されている表面（表面は容器表面と呼ばれてもよい）など、容器の一部分の直接測定にも影響を与えうる。本開示の一つの態様は、容器の縁（容器縁とも呼ばれる）など、容器の別の部分を測定することによって、容器表面に影響を与える測定誤差の補正に関する。これらの場合、容器縁は、撮像ノイズによる影響がより少ない空間を占める場合があり、したがって、より信頼性の高いまたは信頼できる測定値を得ることができる。容器縁に関する測定値は、容器表面に関する姿勢もしくは他の情報を推測するか、または他の方法で決定するために使用されうる。こうした決定は、例えば、容器表面および容器縁を分離する、既知の間隔に基づいてもよい。
【００２３】
一部の事例では、容器に関する測定値は、容器からの物体回収に関与する動作の計画など、動作を計画するために使用されうる。例えば、容器縁に関する測定値は、容器の側壁がどこに位置するかに関する情報を提供しうる。ロボットが容器から物体を回収するとき、容器の側壁とロボットまたは物体との衝突を回避するために、物体移動経路が計画されうる。一部の事例では、容器に関する測定値は、以下でより詳細に論じるように、容器を異なるセグメントに仮想上で分割するために使用されうる。
【００２４】
一部の事例では、物体とのロボット相互作用を容易にすることは、物体上に配置された物体識別子（存在する場合）に関する情報の使用に依存しうる。物体識別子は、バーコード、ロゴ、もしくは記号（例えば、英数字記号）などの視覚マーク、または物体を識別する他の視覚的パターンを含みうる。一部の例では、物体識別子は物体の表面上に印刷されてもよい。一部の事例では、物体識別子は、ステッカー、または物体に付着するか、もしくは他の方法で配置されている他の材料の層に印刷されうる。物体が一つ以上の品目を保持する箱である場合、物体識別子によって、一つ以上の品目を識別し、または、より広くは、箱の内容物を識別することができる。ロボット相互作用を容易にするために使用される物体識別子に関する情報には、例えば、物体識別子の場所（物体識別子の位置とも呼ばれる）、またはバーコードにコード化された情報など、物体識別子にコード化される情報が含まれうる。一部の例では、物体識別子の位置は、特定の物体を検出するために、点群または他の空間構造情報のどの部分を検索すべきかを絞り込むように使用されうる。例えば、物体識別子がバーコード位置である場合、こうした検索は、バーコード位置を囲む領域に対応する、点群の一部分に限定されうる。このような実施形態によって、物体についてより集中的で効率的な検索が容易になりうる。一部の事例では、物体サイズが、バーコードまたは他の物体識別子にコード化されている場合、その情報を使用して、点群もしくは他の空間構造情報から物体を検索するか、またはロボットがどのようにつかむかを計画するか、もしくは他の方法でロボットと相互作用しうる。
【００２５】
図１Ａは、以下でより詳細に論じるように、物体検出のために空間構造情報を処理するシステム１００を示す。図１Ａの実施形態では、システム１００は、計算システム１０１および空間構造感知カメラ１５１（空間構造感知装置１５１とも呼ばれる）を含みうる。この例では、空間構造感知カメラ１５１は、空間構造感知カメラ１５１が位置する環境について、すなわち、より具体的には、カメラ１５１の視野（カメラ視野とも呼ばれる）中の環境についての奥行き情報を含む、空間構造情報（空間情報または空間構造データとも呼ばれる）を生成するように構成されうる。図１Ａの計算システム１０１は、空間構造情報を受信し処理するように構成されうる。例えば、計算システム１０１は、空間構造情報の奥行き情報を使用して、カメラ視野中の異なる構造を区別するように、または、より広くは、カメラ視野中の一つ以上の構造を識別するように構成されうる。この例の奥行き情報は、一つ以上の構造が、三次元（３Ｄ）空間の中で空間的にどのように配設されているかの推定を決定するために使用されうる。
【００２６】
一つの例では、空間構造感知カメラ１５１は、倉庫、小売空間（例えば、店舗）、または他の施設の中に位置してもよい。こうした例では、倉庫または小売空間は、様々な商品または他の物体を含んでもよい。空間構造感知カメラ１５１を使用して、物体について、および／または引き出しもしくは他のタイプの容器など、物体を包含する構造についての情報を感知しうる。上述のように、空間構造感知カメラ１５１は、例えば、一つの商品の構造および／または容器の構造が、３Ｄ空間の中にどのように配設されるかを説明しうる、空間構造情報を生成するように構成されうる。こうした例の計算システム１０１は、空間構造感知カメラ１５１から空間構造情報を受信し処理するように構成されうる。計算システム１０１は、同じ施設に位置してもよく、または遠隔に位置してもよい。例えば、計算システム１０１は、倉庫または小売空間から遠隔のデータセンターでホストされる、クラウドコンピューティングプラットフォームの一部であってもよく、ネットワーク接続を介して、空間構造感知カメラ１５１と通信していてもよい。
【００２７】
実施形態では、システム１００は、空間構造感知カメラ１５１の環境で様々な物体と相互作用するための、ロボット運用システムであってもよい。例えば、図１Ｂは、図１Ａのシステム１００の実施形態でありうる、ロボット運用システム１００Ａを示す。ロボット運用システム１００Ａは、計算システム１０１、空間構造感知カメラ１５１、およびロボット１６１を含みうる。実施形態では、ロボット１６１は、空間構造感知カメラ１５１の環境の中にある一つ以上の物体、例えば、商品または倉庫の中の他の物体と相互作用するために使用されうる。例えば、ロボット１６１は、引き出しまたは他の容器から商品を取り出し、商品を容器から別の位置（例えば、引き出しの外側にあるコンベヤベルト）へと移動させるように構成されてもよい。
【００２８】
実施形態では、図１Ａおよび１Ｂの計算システム１０１は、ロボット運用システム１００Ａの一部である、ロボット制御システム（ロボットコントローラとも呼ばれる）を形成しても、またはその一部であってもよい。ロボット制御システムは、例えば、ロボット１６１に対する移動コマンドまたは他のコマンドを生成するように構成される、システムであってもよい。こうした実施形態では、計算システム１０１は、例えば、空間構造感知カメラ１５１によって生成された空間構造情報に基づいて、このようなコマンドを生成するように構成されてもよい。実施形態では、計算システム１０１は、視覚システムを形成してもよく、またはその一部であってもよい。視覚システムは、例えば、ロボット１６１が位置する環境を記述する、すなわち、より具体的には、空間構造感知カメラ１５１が位置する環境を記述する、視覚情報を生成するシステムであってもよい。視覚情報は、３Ｄ空間で構造がどのように展開されているか、またはそうでなければ配設されているかを示すことができるため、３Ｄ情報または３Ｄ撮像情報とも呼ばれうる、空間構造情報を含んでもよい。一部の事例では、ロボット１６１は、ロボットの手、またはロボットアームの一方の端を形成する他のエンドエフェクターを有する、ロボットアームを含んでもよく、空間構造情報は、計算システム１０１によって使用されて、ロボットの手の配置を制御しうる。一部の事例では、計算システム１０１が、視覚システムを形成する場合、視覚システムは、上で論じたロボット制御システムの一部であってもよく、またはロボット制御システムから分離していてもよい。視覚システムは、ロボット制御システムから分離している場合、ロボット１６１が位置する環境に関する情報を出力するように構成されうる。こうした例のロボット制御システムは、このような情報を受信し、情報に基づいてロボット１６１の動作を制御しうる。
【００２９】
実施形態では、システム１００は、バーコード感知装置（バーコードリーダーとも呼ばれる）などの、物体識別子感知装置１５２を含んでもよい。より詳細には、図１Ｃが、計算システム１０１、空間構造感知カメラ１５１、ロボット１６１を含み、さらに物体識別子感知装置１５２も含む、システム１００Ｂ（システム１００／１００Ａの実施形態である）を描写する。一部の事例では、物体識別子感知装置１５２は、物体上またはそれに隣接して配置される、物体識別子を検出するように構成されてもよい。上述のように、物体識別子は、物体を識別する視覚マークであってもよい。物体が、箱、または商品もしくは何らかの他の品目を保持するための他の物体である場合、物体識別子は、実施形態では、箱の品目または他の内容物を識別することができる。また上述のように、物体識別子は、一部の例ではバーコードであってもよい。一部の例では、バーコードは、一連の黒い縞模様もしくはずらりと並んだ黒の正方形（例えば、ＱＲコード（登録商標））などの分布様式、または物体識別子感知装置１５２（例えば、バーコード感知装置）の視野中の任意の他のバーコードを有してもよい。例えば、バーコードは、一つの商品または倉庫の中にある他の物体上に配置されてもよい。物体識別子感知装置１５２は、物体識別子についての情報を感知するように構成されてもよい。この情報（物体識別子感知情報とも呼ばれうる）には、物体識別子にコード化された情報、物体識別子の場所（物体識別子の位置とも呼ばれる）、または物体識別子に関するいかなる他の情報も含めることができる。物体識別子がバーコードである場合、バーコードにコード化された情報には、例えば、最小在庫管理単位（ＳＫＵ）コードまたは統一商品コード（ＵＰＣ）が含まれうる。
【００３０】
実施形態では、物体識別子感知装置１５２および／または空間構造感知カメラ１５１は、倉庫または小売空間内で固定された実装点などの固定実装点に取り付けられてもよい。実施形態では、空間構造感知カメラ１５１および／または物体識別子感知装置１５２は、ロボット１６１のロボットアームに取り付けられてもよい。より具体的な例では、物体識別子感知装置１５２および／または空間構造感知カメラ１５１は、ロボットの手、もしくはロボットアームの一方の端を形成する他のエンドエフェクターに取り付けられてもよく、またはその上に配置（またはその近くに配置）されてもよい。こうした例では、物体識別子感知装置１５２および空間構造感知カメラ１５１は、それぞれ手元物体識別子感知装置（例えば、手元バーコードリーダー）および手元空間構造感知カメラと呼ばれる場合がある。一部の事例では、計算システム１０１は、以下でより詳細に論じるように、手元空間構造感知カメラおよび／または手元物体識別子感知装置を、ロボット１６１の環境を感知するのに最適な位置へ移動させるように、ロボット１６１を制御するよう構成されうる。
【００３１】
実施形態では、計算システム１０１がロボット制御システムの一部である場合、計算システム１０１は、以下でより詳細に論じるように、ロボット１６１の動きを制御する一つ以上の移動コマンドを生成するように構成されうる。これらの移動コマンドには、例えば、物体移動コマンド、センサー移動コマンド、および容器移動コマンドが含まれうる。センサー移動コマンドは、空間構造感知カメラ１５１および／または物体識別子感知装置１５２を移動させるように使用されうる。容器移動コマンドは、容器を開けるか、または閉じる移動コマンドなど、商品または他の物体を包含する容器を動かすために使用されうる。物体移動コマンドは、商品、または倉庫もしくは他の施設の中にある他の物体、すなわち、より具体的には、容器の中に配置されている物体を移動させるために使用されてもよい。
【００３２】
実施形態では、システム１００の構成要素は、ネットワークおよび／または記憶装置を介して通信するように構成されてもよい。より詳細には、図１Ｄが、図１Ａ〜１Ｃのシステム１００／１００Ａ／１００Ｂの実施形態である、システム１００Ｃを描写する。システム１００Ｃは、計算システム１０１、空間構造感知カメラ１５１、ロボット１６１、物体識別子感知装置１５２を含み、さらにネットワーク１９９、および計算システム１０１から分離しているデータ記憶装置１９８（またはいかなる他のタイプの非一時的コンピュータ可読媒体）を含む。一部の例では、記憶装置１９８は、物体識別子感知装置１５２、空間構造感知カメラ１５１、および／またはロボット１６１によって生成される情報を記憶し、記憶された情報を計算システム１０１が利用できるように構成されうる。こうした例では、計算システム１０１は、データ記憶装置１９８から情報を読み出す（またはより広くは、受信する）ことによって、記憶された情報にアクセスするように構成されてもよい。
【００３３】
図１Ｄでは、記憶装置１９８は、また非一時的コンピュータ可読記憶装置と呼んでもよい、いかなるタイプの非一時的コンピュータ可読媒体（または複数の媒体）を含んでもよい。こうした非一時的コンピュータ可読媒体または記憶装置は、記憶情報（記憶データとも呼ぶ）を記憶し、記憶情報へのアクセスを提供するように構成されうる。非一時的コンピュータ可読媒体または記憶装置の例としては、例えば、コンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消却可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、ソリッドステートドライブ、スタティックランダムアクセスメモリ（ＳＲＡＭ）、携帯型コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）、および／またはメモリスティックなど、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはそれらのいかなる適切な組み合わせが挙げられうるが、これらに限定されない。
【００３４】
実施形態では、ネットワーク１９９によって、計算システム１０１、空間構造感知カメラ１５１、物体識別子感知装置１５２、および／またはロボット１６１間の通信を容易にしうる。例えば、計算システム１０１および／または記憶装置１９８は、ネットワーク１９９を介して、空間構造感知カメラ１５１および／または物体識別子感知装置１５２（例えば、空間構造情報または物体識別子感知情報）によって生成される情報を受信してもよい。こうした例では、計算システム１０１は、もう一つのコマンド（例えば、移動コマンド）を、ネットワーク１９９を介してロボット１６１へ提供するように構成されてもよい。ネットワーク１９９によって、計算システム１０１が、本明細書の実施形態と一致して、情報を受信しおよび／またはコマンドを出力することが可能になるように、個々のネットワーク接続または一連のネットワーク接続が提供されてもよい。
【００３５】
図１Ｄでは、ネットワーク１９９に、有線または無線リンクを介して接続してもよい。有線リンクには、デジタル加入者回線（ＤＳＬ）、同軸ケーブル回線、または光ファイバ回線が含まれてもよい。無線リンクには、Ｂｌｕｅｔｏｏｔｈ（登録商標）、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ（ＢＬＥ）、ＡＮＴ／ＡＮＴ＋、ＺｉｇＢｅｅ、Ｚ−Ｗａｖｅ、Ｔｈｒｅａｄ、Ｗｉ−Ｆｉ（登録商標）、Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ（ＷｉＭＡＸ（登録商標））、モバイルＷｉＭＡＸ（登録商標）、ＷｉＭＡＸ（登録商標）−Ａｄｖａｎｃｅｄ、ＮＦＣ、ＳｉｇＦｏｘ、ＬｏＲａ、Ｒａｎｄｏｍ  Ｐｈａｓｅ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ（ＲＰＭＡ）、Ｗｅｉｇｈｔｌｅｓｓ−Ｎ／Ｐ／Ｗ、赤外線チャネル、または衛星バンドが含まれてもよい。無線リンクはまた、２Ｇ、３Ｇ、４Ｇ、または５Ｇの資格がある規格を含む、モバイル機器間を通信する、いかなるセルラーネットワーク規格が含まれてもよい。無線規格は、例えば、ＦＤＭＡ、ＴＤＭＡ、ＣＤＭＡ、ＯＦＤＭ、またはＳＤＭＡといった、様々なチャネルアクセス方法を使用してもよい。一部の実施形態では、異なるタイプの情報を、異なるリンクおよび規格によって伝送してもよい。他の実施形態では、同じタイプの情報を、異なるリンクおよび規格によって伝送してもよい。ネットワーク通信は、例えば、ｈｔｔｐ、ｔｃｐ／ｉｐ、ｕｄｐ、イーサネット、ＡＴＭなどを含む、いかなる適切なプロトコルによって実施されてもよい。
【００３６】
ネットワーク１９９は、いかなるタイプのおよび／または形態のネットワークであってもよい。ネットワークの地理的範囲は大きく異なってもよく、ネットワーク１９９は、ボディエリアネットワーク（ＢＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、例えば、イントラネットといったローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、広域ネットワーク（ＷＡＮ）、またはインターネットでありうる。ネットワーク１９９のトポロジーは、いかなる形態であってもよく、例えば、次の、ポイントツーポイント、バス、スター、リング、メッシュ、またはツリーのうちのいずれを含んでもよい。ネットワーク１９９は、本明細書に記載する動作をサポートできる、当業者に既知であるような、いかなるこうしたネットワークトポロジーから成ってもよい。ネットワーク１９９は、例えば、イーサネットプロトコル、インターネットプロトコル群（ＴＣＰ／ＩＰ）、ＡＴＭ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｔｒａｎｓｆｅｒ  Ｍｏｄｅ）技術、ＳＯＮＥＴ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｏｐｔｉｃａｌ  Ｎｅｔｗｏｒｋｉｎｇ）プロトコル、またはＳＤＨ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｉｇｉｔａｌ  Ｈｉｅｒａｒｃｈｙ）プロトコルを含む、プロトコルの異なる技術、および層またはスタックを利用してもよい。ＴＣＰ／ＩＰインターネットプロトコル群は、アプリケーション層、トランスポート層、インターネット層（例えば、ＩＰｖ４およびＩＰｖ４を含む）、またはリンク層を含んでもよい。ネットワーク１９９は、放送ネットワーク、電気通信ネットワーク、データ通信ネットワーク、またはコンピュータネットワークの１タイプであってもよい。
【００３７】
実施形態では、計算システム１０１、空間構造感知カメラ１５１、物体識別子感知装置１５２、および／またはロボット１６１は、ネットワーク接続ではなく直接接続によって、互いと通信可能でありうる。例えば、こうした実施形態の計算システム１０１は、空間構造感知カメラ１５１および／または物体識別子感知装置１５２から、ＲＳ−２３２インターフェース、ユニバーサルシリアルバス（ＵＳＢ）インターフェースなどの専用有線通信インターフェース、および／または周辺構成要素相互接続（ＰＣＩ）バスなどのローカルコンピュータバスを介して、情報を受信するように構成されてもよい。
【００３８】
実施形態では、空間構造感知カメラ１５１によって生成される空間構造情報は、構造が三次元（３Ｄ）空間などの空間にどのように展開されているか、またはそうでなければ配設されているかを記述する、任意のタイプの情報を指しうる。より詳細には、空間構造情報は、構造の３Ｄレイアウト、または３Ｄ空間の中にある構造の３Ｄ配置もしくは配列を記述しうる。構造は、例えば、空間構造感知カメラ１５１の環境もしくは視野の中にある容器に、または容器内に配置された物体に属しうる。一部の事例では、空間構造情報は、構造が３Ｄ空間の中でどのように配向するかを示しうる。一部の事例では、空間構造情報は、構造上、すなわち、より具体的には構造の一つ以上の表面上にある、一つ以上の位置の一つ以上のそれぞれの奥行き値を示す、奥行き情報を含みうる。特定位置の奥行き値は、空間構造感知カメラ１５１に対してか、または何らかの他の基準フレーム（例えば、倉庫もしくは小売空間の天井または壁）に対するものでありうる。一部の事例では、奥行き値は、空間構造感知カメラ１５１が位置する仮想平面に直交する、軸に沿って測定されてもよい。例えば、空間構造感知カメラ１５１が、画像センサーを有する場合、仮想平面は、画像センサーによって画定される画像平面であってもよい。実施形態では、空間構造情報は、構造の輪郭、または、より広くは、境界を決定するために使用されてもよい。輪郭は、例えば、容器もしくは容器の一部分、または容器の中の物体の輪郭でありうる。例えば、空間構造情報は、奥行き値に明らかな不連続性がある、一つ以上の位置を検出するために使用されてもよく、こうした位置は、構造の境界（例えば、エッジ）を示しうる。一部の例では、構造の境界は、その形状またはサイズを決定するために使用されうる。
【００３９】
一部の事例では、空間構造情報は、奥行きマップを含んでもよく、または奥行きマップを形成してもよい。奥行きマップは、カメラ視野中の一つ以上の構造上の位置など、カメラ視野中の様々な位置を表すか、または他の方法でそれらの位置に対応する、複数のピクセルを持つビットマップであってもよい。こうした場合、ピクセルの一部またはすべては各々、そのピクセルによって表されるか、または他の方法でそのピクセルに対応する、それぞれの位置の奥行きを示す、それぞれの奥行き値を有しうる。一部の事例では、奥行きマップは、カメラ視野中にある一つ以上の構造の２Ｄ外観を記述する、２Ｄ画像情報を含みうる。例えば、奥行きマップは２Ｄ画像を含みうる。こうした例では、奥行きマップのピクセルの各々は、ピクセルによって表されるか、もしくは他の方法でピクセルに対応する位置に反射する可視光の量を示す、色強度値またはグレースケール強度値をさらに含みうる。
【００４０】
実施形態では、空間構造情報は点群であってもよく、または点群を含んでもよい。点群によって、容器の構造および／または容器の中にある物体の構造など、一つ以上の構造を記述する複数の位置を識別しうる。一部の事例では、複数の点は、一つ以上の構造の一つ以上の表面上にある、それぞれの位置でありうる。一部の事例では、点群は、複数の点を識別する、または他の方法で記述する、複数の座標（例えば、３Ｄ座標）を含みうる。例えば、点群は、一つ以上の構造のそれぞれの位置もしくは他の特徴を指定する、一連のデカルト座標または極座標（または他のデータ値）を含みうる。それぞれの座標は、空間構造感知カメラ１５１の基準フレーム（例えば、座標系）に関して、または何らかの他の基準フレームに関して表示されてもよい。一部の事例では、それぞれの座標は離散しており、相互に間隙を介しているが、一つ以上の構造の一つ以上の接触面を表すと理解されうる。実施形態では、点群は、奥行きマップまたは他の情報から（例えば、計算システム１０１によって）生成されうる。
【００４１】
一部の実施形態では、空間構造情報はさらに、例えば、ポリゴンまたは三角形メッシュモデル、非一様有理Ｂスプラインモデル、ＣＡＤモデル、プリミティブのパラメータ化（例えば、長方形はｘ、ｙ、およびｚの方向の中点ならびに伸長部に従って画定されてもよく、円柱は中心、高さ、上半径、および下半径によって画定されうるなど）など、いかなる適切な形式に従って記憶されうる。
【００４２】
上述のように、空間構造情報は、空間構造感知カメラ１５１によって取り込まれるか、または他の方法で生成される。実施形態では、空間構造感知カメラ１５１は、３Ｄカメラもしくはいかなる他の３Ｄ画像感知装置であってもよく、またはそれを含んでもよい。３Ｄカメラは、飛行時間（ＴＯＦ）カメラもしくは構造化光カメラなどの、奥行き感知カメラ、またはいかなる他のタイプの３Ｄカメラであってもよい。一部の事例では、３Ｄカメラは、電荷結合素子（ＣＣＤ）センサーおよび／または相補型金属酸化膜半導体（ＣＭＯＳ）センサーなど、画像センサーを含みうる。実施形態では、空間構造感知カメラ１５１は、レーザー、ＬＩＤＡＲ装置、赤外線装置、明／暗センサー、モーションセンサー、マイクロ波検出器、超音波検出器、レーダー検出器、または空間構造情報を取り込むように構成されるいかなる他の装置をも含みうる。
【００４３】
上述のように、物体識別子感知装置１５２は、物体識別子を感知し、バーコードを記述する感知されるバーコード情報など、物体識別子感知情報を生成するように構成されてもよい。物体識別子感知情報は、例えば、物体識別子（例えば、バーコード位置）、物体識別子にコード化された情報、または何らかの他の物体識別子情報を記述しうる。物体識別子感知装置１５２がバーコード感知装置である場合、バーコード感知装置は、一部の事例では、バーコードの黒い縞模様もしくは黒の正方形によって占められる領域など、バーコードの領域に向かって光もしくは他の信号を放出するように構成された、レーザーまたはフォトダイオードを含んでもよく、領域から反射される光または他の信号の量を測定するように構成された、センサーを含んでもよい。一部の事例では、図１Ｅに描写するように、物体識別子感知装置１５２は２Ｄカメラ１５３を含みうる。２Ｄカメラ１５３には、例えば、グレースケールカメラまたはカラーカメラを含みうる。２Ｄカメラ１５３は、視野中の物体上にあるバーコードもしくは任意の他の物体識別子（存在する場合）の外観を含む、２Ｄカメラ１５３の視野の中にある環境の視覚的外観を記述するか、もしくは他の方法で表す２Ｄ撮像情報を取り込むか、または他の方法で生成するように構成されうる。こうした２Ｄカメラ１５３は、例えば、電荷結合素子（ＣＣＤ）センサーおよび／または相補型金属酸化膜半導体（ＣＭＯＳ）センサーなどの、画像センサーを含みうる。一部の事例では、２Ｄ画像情報は、２Ｄ画像を形成する複数のピクセルを含みうる。２Ｄ画像情報の各ピクセルは、例えば、ピクセルに対応する位置に反射する光の強度、または他の特性を表す場合がある。一部の事例では、２Ｄカメラ１５３は、２Ｄ画像内のバーコードまたは他の物体識別子を検出し、物体識別子に基づいて物体識別子感知情報を生成するように構成された、処理回路を含みうる。一部の事例では、空間構造情報に、２Ｄ画像情報を有する奥行きマップが含まれる場合、２Ｄ画像情報は、２Ｄカメラ１５３によって生成されうる。
【００４４】
実施形態では、空間構造感知カメラ１５１および物体識別子感知装置１５２は、単一の装置に統合されてもよい。例えば、それら装置は、単一の筐体によって囲まれてもよく、固定された相対位置および相対的配向を有してもよい。一部の事例では、それら装置は、単一の通信インターフェースおよび／または単一の電源を共有してもよい。実施形態では、空間構造感知カメラ１５１および物体識別子感知装置１５２は、以下でより詳細に論じるように、ロボット１６１のロボットアームなど、ロボット１６１へ嵌め込まれるか、または他の方法で取り付けられる、二つの分離した装置であってもよい。
【００４５】
上述のように、空間構造情報および／または物体識別子感知情報は、計算システム１０１によって処理されてもよい。実施形態では、計算システム１０１は、サーバ（例えば、一つ以上のサーバブレード、プロセッサなどを有する）、パーソナルコンピュータ（例えば、デスクトップコンピュータ、ノートパソコンなど）、スマートフォン、タブレットコンピューティング装置、および／もしくは他のいかなる他の計算システムを含んでもよく、またはそれらとして構成されてもよい。実施形態では、計算システム１０１の機能性のすべては、クラウドコンピューティングプラットフォームの一部として行われてもよい。計算システム１０１は、単一の計算装置（例えば、デスクトップコンピュータ）であってもよく、または複数の計算装置を含んでもよい。
【００４６】
図２Ａは、計算システム１０１の実施形態を示す、ブロック図を提供する。計算システム１０１は、少なくとも一つの処理回路１１０および非一時的コンピュータ可読媒体（または複数の媒体）１２０を含む。実施形態では、処理回路１１０は、一つ以上のプロセッサ、一つ以上の処理コア、プログラマブルロジックコントローラ（「ＰＬＣ」）、特定用途向け集積回路（「ＡＳＩＣ」）、プログラマブルゲートアレイ（「ＰＧＡ」）、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）、それらのいかなる組み合わせ、またはいかなる他の処理回路を含む。実施形態では、非一時的コンピュータ可読媒体１２０は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはそれらのいかなる適切な組み合わせなどの記憶装置であり、例えば、コンピュータディスケット、ハードディスク、ソリッドステートドライブ（ＳＳＤ）、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消却可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、携帯型コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多目的ディスク（ＤＶＤ）、メモリスティック、それらのいかなる組み合わせ、またはいかなる他の記憶装置などであってもよい。一部の例では、非一時的コンピュータ可読媒体は、複数の記憶装置を含みうる。特定の事例では、非一時的コンピュータ可読媒体１２０は、空間構造感知カメラ１５１によって生成される空間構造情報、および／または物体識別子感知装置１５２によって生成される物体識別子感知情報を記憶するように構成される。特定の事例では、非一時的コンピュータ可読媒体１２０はさらに、処理回路１１０によって実行されるときに、処理回路１１０に、図４に関連して記載する操作など、本明細書に記載する一つ以上の手法を行わせる、コンピュータ可読プログラム命令を記憶する。
【００４７】
図２Ｂは、計算システム１０１の実施形態であり、通信インターフェース１３０を含む、計算システム１０１Ａを描写する。通信インターフェース１３０は、図１Ｄの記憶装置１９８および／もしくはネットワーク１９９を介して、または空間構造感知カメラ１５１から、もしくは物体識別子感知装置１５２からより直接的接続を介してなど、例えば、空間構造感知カメラ１５１によって生成される空間構造情報、および／または物体識別子感知装置１５２によって生成される物体識別子感知情報（例えば、感知されるバーコード情報）を受信するように構成されてもよい。実施形態では、通信インターフェース１３０は、図１Ｂのロボット１６１と通信するように構成されうる。計算システム１０１が、ロボット制御システムの一部でない場合、計算システム１０１の通信インターフェース１３０は、ロボット制御システムと通信するように構成されうる。通信インターフェース１３０は、例えば、有線または無線プロトコルによって通信を行うように構成される通信回路を含みうる。例として、通信回路は、ＲＳ−２３２ポートコントローラ、ＵＳＢコントローラ、イーサネットコントローラ、Ｂｌｕｅｔｏｏｔｈ（登録商標）コントローラ、ＰＣＩバスコントローラ、いかなる他の通信回路、またはそれらの組み合わせを含んでもよい。
【００４８】
実施形態では、処理回路１１０は、非一時的コンピュータ可読媒体１２０に記憶される、一つ以上のコンピュータ可読プログラム命令によってプログラムされてもよい。例えば、図２Ｃは、計算システム１０１／１０１Ａの実施形態である計算システム１０１Ｂを示し、その中の処理回路１１０は、以下でより詳細に論じる、容器検出モジュール、物体検出モジュール２０４、および／または動作計画モジュール２０６を含む、一つ以上のモジュールによってプログラムされる。
【００４９】
実施形態では、容器検出モジュール２０２は、引き出しなどの容器を検出するように、すなわち、より具体的には、配向および／もしくは奥行きなど、引き出しが３Ｄ空間の中でどのように配設されているかについての情報を決定するように構成されてもよい。以下でより詳細に論じるように、容器検出モジュール２０２は、少なくとも空間構造情報を使用して、こうした決定をするように構成されうる。一部の事例では、容器検出モジュール２０２は、底部の内表面など、引き出しの特定部分が３Ｄ空間の中でどのように配設されているかを決定しうる。一部の実施では、容器検出モジュール２０２は、縁など、引き出しの別の部分が３Ｄ空間の中でどのように配設されているかに基づいて、底部の内表面が３Ｄ空間の中でどのように配設されているかを決定するように構成されうる。
【００５０】
実施形態では、物体検出モジュール２０４は、引き出しの底部内表面上に配置された一つの商品など、容器内にある物体を検出するように、すなわち、より具体的には、物体の配向および／または奥行きなど、物体が３Ｄ空間の中でどのように配設されているかを決定するように構成されうる。一部の事例では、物体検出モジュール２０４は、引き出しまたは他の容器が、３Ｄ空間の中でどのように配設されているかに関して、容器検出モジュール２０２によって生成される情報に基づいて、このような決定を行うことができる。一部の事例では、物体検出モジュール２０４は、以下でより詳細に論じるように、物体識別子感知情報（例えば、感知されるバーコード情報）を使用して、物体および／または物体のサイズを識別するように構成されうる。
【００５１】
実施形態では、動作計画モジュール２０６は、容器内の物体と相互作用するために、ならびに／または空間構造感知カメラ１５１および／もしくは物体識別子感知装置１５２を動かすために、容器と相互作用するためのロボットの動作を決定するように構成されうる。例えば、ロボットの動作は、容器から物体をつかむか、または他の方法で拾い上げ、物体をその他の場所に移動させる、ロボット操作の一部であってもよい。ロボットの動作は、例えば、物体が３Ｄ空間の中でどのように配設されているかに関しては、物体検出モジュール２０４によって、および／または容器が３Ｄ空間の中でどのように配置されているかに関しては、容器検出モジュール２０２によって生成された情報に基づいて決定されうる。本明細書で論じるモジュールの機能性は、代表的なものであり、限定ではないことは理解されるであろう。
【００５２】
様々な実施形態では、「コンピュータ可読命令」および「コンピュータ可読プログラム命令」という用語は、様々なタスクおよび操作を遂行するように構成される、ソフトウェア命令またはコンピュータコードを記述するために使用される。様々な実施形態では、「モジュール」という用語は、処理回路１１０に一つ以上の機能タスクを行わせるように構成される、ソフトウェア命令またはコードの集まりを広く指す。モジュールおよびコンピュータ可読命令は、処理回路または他のハードウェアコンポーネントが、モジュールまたはコンピュータ可読命令を実行しているときに、様々な操作またはタスクを行うものとして説明されうる。一部の事例では、モジュールおよびコンピュータ可読命令は、容器検出を行うための方法を実施し、容器検出に基づいてロボット相互作用を計画しうる。
【００５３】
図３Ａ〜３Ｃは、容器検出および／またはロボット相互作用の方法が発生しうる環境を示す。より具体的には、図３Ａは、計算システム１０１、ロボット３６１、および空間構造感知カメラ３５１（空間構造感知カメラ１５１の実施形態でありうる）を含む、システム３００（図１Ａ〜１Ｅのシステム１００／１００Ａ／１００Ｂ／１００Ｃの実施形態でありうる）を描写する。実施形態では、ロボット３６１は、ベース３６２およびロボットアーム３６３を含みうる。ベース３６２は、ロボット３６１を嵌め込むために使用されうる一方、ロボットアーム３６３は、ロボット３６１の環境と相互作用するために使用されうる。実施形態では、ロボットアーム３６３は、互いに対して動かすことが可能な複数のアーム部分を含みうる。例えば、図３Ａは、互いに対して回転可能および／または伸張可能なアーム部分３６３Ａ、３６３Ｂ、３６３Ｃ、および３６３Ｄを示す。例えば、ロボットアーム３６３は、ベース３６２に対してアーム部分３６３Ａを回転させ、アーム部分３６３Ａに対してアーム部分３６３Ｂを回転させ、アーム部分３６３Ｂに対してアーム部分３６３Ｃを回転させるように構成される、一つ以上のモーターまたは他のアクチュエーターを含みうる。この例では、アーム部分３６３Ａ、３６３Ｂ、および３６３Ｃはロボットアーム３６３の一節であってもよく、一方でアーム部分３６３Ｄは、ロボットの手など、エンドエフェクターであってもよい。一部の事例では、ロボットの手は、ロボットアーム３６３が物体と相互作用することを可能にするために、物体をつかむか、または拾い上げるように構成されるグリッパを含みうる。
【００５４】
図３Ａの実施形態では、空間構造感知カメラ３５１は、ロボット３６１に、すなわち、より具体的には、ロボット３６１のロボットアーム３６３に、エンドエフェクター３６３Ｄの一部であるか、もしくはそれに近い位置で、嵌め込まれるか、または他の方法で取り付けられてもよい。空間構造感知カメラ３５１は、撮像システムの一部であってもよい。一部のシナリオでは、撮像システムはさらに、図７Ａに関して以下で論じる、物体識別子感知装置を含みうる。一部の事例では、物体識別子感知装置はまた、エンドエフェクター３６３Ｄ上またはそれに近い位置などで、ロボットアーム３６３に取り付けられてもよい。
【００５５】
図３Ａに描写するように、システム３００は、容器３８４Ａ〜３８４Ｌなどの一つ以上の容器３８４をさらに含みうる。一部のシナリオでは、容器３８４Ａ〜３８４Ｌは、倉庫または小売空間に位置してもよく、商品または他の物体などの品目を包含するために使用されうる。図３Ａの例では、容器３８４Ａ〜３８４Ｌは、容器３８４Ａ〜３８４Ｌを積み重ねて配設する筐体３８１を提供しうる、キャビネット３８０の中に収容されうる。この例では、容器３８４Ａ〜３８４Ｌは各々、閉位置と開放位置との間を移動可能な引き出しであってもよい。容器３８４Ａ〜３８４Ｌの各々は、一つ以上の連結部を介してキャビネット３８０に取り付けられうる。例えば、図３Ａは、筐体３８１の内表面に取り付けられ、容器３８２Ａが開放位置と閉位置との間で摺動することを可能にする、一対のレール３８２Ａ、３８３Ａを示す。一部の状況では、容器３８４Ａ〜３８４Ｌのうちの少なくとも一つは、一つ以上の物体を包含しうる。例えば、容器３８４Ａは、倉庫または小売空間の中にある商品でありうる、物体３７１、３７３を含みうる。例として、物体３７１、３７３は各々、出荷または販売される商品などの品目である箱、または品目を保持する箱であってもよい。
【００５６】
上述のように、空間構造感知カメラ３５１（および／または物体識別子感知装置）は、ロボットアーム３６３に嵌め込まれるか、または他の方法で置かれる手元のカメラ装置であってもよい。この配置によって、空間構造感知カメラ３５１（および／または物体識別子感知装置）の位置および／または配向に柔軟性を持たせうる。より具体的には、空間構造感知カメラ３５１（および／または物体識別子感知装置）を固定実装点に嵌め込むのではなく、図３Ａ〜３Ｃは、ロボットアーム３６３によって、空間構造感知カメラ３５１（および／または物体識別子感知装置）を、様々な位置および／または配向へ移動できる実施形態を示す。例えば、こうした実施形態によって、結果として得られる空間構造情報（および／または物体識別子感知情報）における焦点および／または解像度のレベルを調整するために、ロボットアーム３６３が、感知される物体と空間構造感知カメラ３５１（および／または物体識別子感知装置）との間の距離を調整することが可能になる。
【００５７】
図３Ｂはさらに、容器３８４Ａなど、図３Ａの容器３８４Ａ〜３８４Ｌが各々閉位置にある状況を示す。容器３８４Ａが閉位置にあるとき、その内容物（例えば、物体３７１、３７３）に、ロボット３６１がアクセスできない、すなわち、より具体的には、ロボットアーム３６３がアクセスできない場合がある。例えば、容器３８４Ａの内表面（例えば、底部の内表面）は、容器３８４Ａが閉位置にあるとき、キャビネット３８０の筐体３８１の外部環境へ実質的に露出していなくてもよい。さらに、容器３８４Ａの内容物（例えば、物体３７１、３７３）は、隠されていて見えなくてもよい。より具体的には、内容物は、空間構造感知カメラ３５１のカメラ視野３５３（および／または物体識別子感知装置の視野）から遮られうる。こうした例では、容器３８４Ａのハンドルなど、一つ以上の容器の外部分が、カメラ視野３５３内にありうる。以下でより詳細に論じるように、ロボットアーム３６３は、一部の実施形態では、容器３８４Ａを開位置へと滑らかに動かす（例えば、図３Ａのレール３８２Ａ、３８３Ａによって）ために、例えば、容器３８４Ａのハンドルを握って引くように構成されうる。
【００５８】
図３Ｃは、開位置（開放位置とも呼ばれる）にある容器３８４Ａを描写する。容器３８４Ａが開位置にあるとき、その内容物にロボット３６１が、すなわち、より具体的には、ロボットアーム３６３がアクセス可能である。例えば、容器３８４Ａは、レール３８２Ａ、３８３Ａによって、容器３８２Ａの底部内表面の一部またはすべてが、キャビネット３８０の筐体３８１の外部環境に露出される位置へ滑らかに動かされうる。こうした状況では、底部の内表面の少なくとも一部分が、空間構造感知カメラ３５１のカメラ視野３５３（および／または物体識別子感知装置の視野）の中にあってもよい。さらに、容器３８４Ａの底部の内表面上に配置された物体３７１、３７３など、容器３８４Ａの内容物はまた、容器３８４Ａが開位置にあるとき、カメラ視野３５３内にありうる。上述のように、空間構造感知カメラ３５１は、容器３８４Ａおよび／またはその中に包含される物体３７１、３７３を記述する、空間構造情報を生成するように構成されうる。空間構造情報は、物体３７１、３７３の姿勢を検出し、ロボットアーム３６３のエンドエフェクター３６３Ｄが、物体３７１、３７３を拾い上げ、容器３８４Ａから離す相互作用など、ロボットアーム３６３と物体３７１、３７３との間の相互作用を容易にするように使用されうる。
【００５９】
図３Ｄは、図３Ａ〜３Ｃの容器３８４Ａの図を提供する。図３Ｄに示すように、容器３８４Ａは、実施形態において、物体３７１、３７３などの一つ以上の物体が容器３８４Ａ内に配置されている、表面３８４Ａ−１（容器表面３８４Ａ−１とも呼ばれる）を有しうる。例えば、容器表面３８４Ａ−１は、容器３８４Ａの底部の内表面でありうる。実施形態では、容器３８４Ａは、容器表面３８４Ａ−１からずれている、縁３８４Ａ−２（容器縁３８４Ａ−２とも呼ばれる）を有してもよい。容器縁３８４Ａ−２は、共通の高さｈ（図３Ｄに描写するように）、または異なるそれぞれの高さを各々有しうる、一つ以上の側壁３８４Ａ−３、３８４Ａ−４、および３８４Ａ−５によって形成されてもよい。この例では、容器縁３８４Ａ−２は、一つ以上の側壁３８４Ａ−３、３８４Ａ−４、および３８４Ａ−５の上表面を含みうる。容器縁３８４Ａ−２および容器表面３８４Ａ−１は、高さｈに等しいか、またはそれに基づく距離だけ離れていてもよく、高さｈは、計算システム１０１が受信または決定するように構成されている、既知の値でありうる。一部の事例では、図３Ａ〜３Ｃの計算システム１０１は、以下でより詳細に論じるように、容器表面３８４Ａ−１および／または容器縁３８４Ａ−２について記述する情報を決定し、その情報を使用して、容器３８４Ａ内に配置されている一つ以上の物体（例えば、３７１、３７３）を記述する追加情報を決定してもよい。さらに図３Ｄに描写するように、容器３８４Ａは、一部の例では、ハンドル３８４Ａ−６を含みうる。計算システム１０１は、一部の実施形態では、ロボットアーム３６３（図３Ａ〜３Ｃの）に、ハンドル３８４Ａ−６を引き寄せるか、または他の方法でハンドルと相互作用することによって、容器３８４Ａを開位置へ移動させるように構成されうる。
【００６０】
図４は、容器中に包含される物体とのロボット相互作用を容易にする、方法４００のフロー図を描写する。方法４００は、物体がどのように空間に配設されているかを記述する情報の決定を伴いうるので、ロボットは、例えば、物体を握るといった適切な手法で動くことができる。一つの例では、情報は、物体の配向または奥行き値（例えば、図３Ａ〜３Ｃの空間構造感知カメラ３５１に対する）のうちの少なくとも一つを記述しうる、物体の姿勢（物体姿勢とも呼ばれる）を記述しうる。以下でより詳細に論じるように、方法４００によって、容器（例えば、３８４Ａ）がどのように空間に配設されているかを記述する情報に基づいて、物体がどのように空間に配設されているかを決定しうる。実施形態では、方法４００は、計算システム１０１によって、すなわち、より具体的には、処理回路１１０によって行うことができる。一部の事例では、方法４００は、処理回路１１０が、図２Ａ〜２Ｃの非一時的コンピュータ可読媒体１２０上に記憶される命令を実行するときに行われてもよい。
【００６１】
実施形態では、方法４００は、容器（例えば、３８４Ａ）が閉位置にあるシナリオで始まってもよく、以下でより詳細に論じるように、容器を開位置へ移動させるために、計算システム１０１がロボット（例えば、３６１）を制御することを伴いうる。こうした移動には、例えば、図３Ａおよび３Ｃに示す、レール３８２Ａ、３８３Ａに沿って、容器３８４Ａを滑らかに動かすことを伴いうる。図３Ａおよび３Ｃに関連して論じたように、レール３８２Ａ、３８３Ａは、実施形態において、容器３８４Ａが収容される筐体３８１の側部の内表面に取り付けられてもよく、レールによって容器３８４Ａが、筐体３８１の中および外へと摺動することが可能になりうる。
【００６２】
実施形態では、方法４００は、容器（例えば、３８４Ａ）が、図３Ｃおよび５Ａに示すような開位置になるか、または既になっていたシナリオで始まりうる。図３Ｃの例と類似して、図５Ａの容器３８４Ａは、容器３８４Ａ内に配置されており、より具体的には、容器３８４Ａの容器表面３８４Ａ−１上に配置されている、物体３７１および３７３を包含する。容器３８４Ａが開位置にあるため、容器３８４Ａ内の物体３７１、３７３は、空間構造感知カメラ３５１のカメラ視野３５３内にありうる。
【００６３】
実施形態では、方法４００は、計算システム１０１が、空間構造感知カメラ（例えば、図５Ａの３５１）によって生成された空間構造情報を受信する、ステップ４０２を含んでもよい。空間構造情報は、カメラ視野３５３中の環境について奥行き情報を含みうる。より詳細には、空間構造情報は、カメラ視野３５３中の様々な構造が、空間的にどのように配設されているか（すなわち、空間の中でどのように配設されているか）を記述しうる。様々な構造には、例えば、容器３８４Ａ、および容器３８４Ａ内に配置されている物体３７１、３７３が含まれうる。
【００６４】
実施形態では、空間構造情報は、一つ以上の構造の傾斜、すなわち、より具体的には、傾きの量および／または傾きの配向を検出するために使用されうる。より具体的には、容器３８４Ａは、容器３８４Ａを筐体３８１へ取り付けるレール３８２Ａ、３８３Ａなどの、一つ以上の連結部を有しうる。容器３８４Ａは、開位置へと移動するにつれて、一つ以上の連結部に対して、かつ筐体３８１に対して下向きに傾きうる。例えば、容器３８４Ａが、閉位置から開位置へ、図５Ａのレール３８２Ａ、３８３Ａに沿って摺動するにつれて、容器３８４Ａの重さによって、レール３８２Ａ、３８３Ａに対して容器３８４Ａが下向きに傾きうる。傾斜の例を図５Ｂに示す。より詳細には、図５Ｂは、図５Ａのレール３８３Ａ、３８３Ａの配向を表し、より具体的には、レール３８２Ａ、３８３Ａと平行な軸５８２を描写する。図は、軸５８２に垂直な別の軸５８２Ｐをさらに描写する。一部の事例では、軸５８２Ｐは、キャビネット３８０の筐体３８１の垂直壁と平行であってもよい。図５Ｂはさらに、両方が容器３８４Ａの配向を表しうる、軸５８４および軸５８４Ｐを描写する。より具体的には、軸５８４は、容器３８４Ａと平行であってもよく、すなわち、より具体的には、容器表面３８４Ａ−１と平行であってもよい。軸５８４Ｐは、容器表面３８４Ａ−１に対する垂直軸であってもよく、軸５８４に垂直であってもよい。容器３８４Ａが閉位置にあるとき、容器３８４と関連付けられた軸５８４は、レール３８２Ａ、３８３Ａと関連付けられた軸５８２と平行でありうる。さらに、軸５８４Ｐは軸５８２Ｐと平行であってもよい。上で論じたように、容器３８４Ａが閉位置から開位置へ摺動すると、容器３８４Ａは下向きに傾き、図５Ｂに描写するように、容器３８４Ａと関連付けられた軸５８４を軸５８２から外れさせ、垂直軸５８４Ｐを軸５８２Ｐから外れさせうる。言い換えると、軸５８４が軸５８２に対して斜めになってもよく、軸５８４Ｐが軸５８２Ｐに対して斜めになってもよい。
【００６５】
実施形態では、容器３８４Ａの傾斜によって、容器３８４Ａ、および容器３８４Ａ内の任意の物体（例えば、物体３７１または３７３）を、例えば、図３Ａ〜３Ｃのロボットアーム３６３および／もしくは空間構造感知カメラ３５１に対して、奥行きならびに／または配向で変化させうる。例えば、容器３８４が開位置にあるときに、下向きに傾かなかった場合、物体３７１、３７３は、空間構造感知カメラ３５１および／またはロボットアーム３６３に対して、第一の奥行き値ならびに第一の配向を有しうる。容器３８４Ａの傾斜によって、物体３７１、３７３に、空間構造感知カメラ３５１および／またはロボットアーム３６３に対して、第二の奥行き値ならびに第二の配向を有させうる。一部の事例では、第二の奥行き値は、第一の奥行き値よりも数ミリメートルのみ大きくてもよく、第二の配向は、第一の配向と、ほんの数度または１度の何分の１異なりうるが、このような差異は、特に、物体３７１、３７３が、第一の奥行き値または第一の配向に従って、空間に配設されていると計算システム１０１が想定している場合、物体３７１、３７３を握るか、または他の方法で物体と正しく相互作用するように、ロボットアーム３６３の能力に影響を与えるのに充分でありうる。さらに、計算システム１０１は、図３Ａ〜３Ｃのロボット３６１と物体３７１、３７３との間の適切な相互作用を確保するために、ミリメートルレベルまたはより優れた精度で、物体３７１、３７３がどのように空間に配設されているかを決定する必要がありうる。
【００６６】
一部の事例では、傾斜の量または効果は、容器（例えば、３８４Ａ）が閉位置から開位置へ移動するにつれて、容器に対して多自由度がありうるため、ミリメートルの精度で予測するのが困難でありうる。したがって、本出願の一つの態様は、物体（例えば、３７１／３７３）と正しく相互作用するように、ロボットアーム３６３を制御する能力を促進するために、物体（例えば、３７１／３７３）がどのように空間に配設されているかを決定する、例えば、方法４００のステップ４０２で受信するような空間構造情報の使用に関する。
【００６７】
上述のように、ステップ４０２の空間構造情報は、カメラ視野（例えば、３５３）の中にある環境についての奥行き情報を含みうる。奥行き情報は、一つ以上の奥行き値を含んでもよく、各々が、空間構造感知カメラ（例えば、３５１）に対する、または何らかの他の基準点もしくは基準フレームに対する、カメラ視野３５３の中にある特定位置の奥行きを示しうる。一部の事例では、奥行き値と関連付けられた位置は、カメラ視野３５３の中にある構造の表面上の位置であってもよい。例えば、図５Ｃは、奥行き値ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１、ｄｒｉｍ，ｌｏｃａｔｉｏｎ１、ｄｓｕｒｆａｃｅ，ｌｏｃａｔｉｏｎ１、およびｄｆｌｏｏｒ，ｌｏｃａｔｉｏｎ１を含む、奥行き情報を示す。この例では、奥行き値ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１は、空間構造感知カメラ３５１に対する、すなわち、より具体的には、空間構造感知カメラ３５１の画像センサーまたは他のセンサーによって形成される画像平面３５４に対する、物体３７１上にある位置の奥行き値を示してもよい。より具体的には、奥行き値ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１は、物体３７１上（例えば、物体３７１の表面上）の位置と画像平面３５４との間の距離を示しうる。この距離は、画像平面３５４に垂直な軸に沿って測定されてもよい。実施形態では、奥行き情報は、容器表面３８４Ａ−１および容器縁３８４Ａ−２など、容器の一つ以上の部分についての一つ以上のそれぞれの奥行き値を含みうる。例えば、奥行き値ｄｓｕｒｆａｃｅ，ｌｏｃａｔｉｏｎ１は、容器表面３８４Ａ−１、すなわち、より具体的には容器表面３８４Ａ−１上の位置の奥行き値を示しうる。奥行き値ｄｒｉｍ，ｌｏｃａｔｉｏｎ１は、画像平面３５４に対する容器縁３８４Ａ−２、すなわち、より具体的には、容器縁３８４Ａ−２上の位置の奥行き値を示しうる。加えて、奥行き値ｄｆｌｏｏｒ，ｌｏｃａｔｉｏｎ１は、キャビネット３８０の筐体３８１が配置されている床または他の表面、すなわち、より具体的には、床上の位置の奥行き値を示しうる。
【００６８】
図６Ａは、ステップ４０２で受信した空間構造情報の表示を描写する。この例では、空間構造情報は、カメラ視野（例えば、３５３）の中に、複数の位置について複数の奥行き値をそれぞれ含んでもよく、またはそれらを識別してもよい。より詳細には、図は、空間構造情報がそれぞれの奥行き値を識別する位置（点とも呼ばれる）の様々な集合６１０〜６６０を示す。位置の集合６１０（縞模様の六角形として識別）は、図５Ｃの筐体３８１が配置されている床または他の表面に対応しうる。例えば、集合６１０は、図５Ｃの奥行き値ｄｆｌｏｏｒ，ｌｏｃａｔｉｏｎ１に対応しうる、位置６１０１を含んでもよい。位置の集合６２０（白丸として識別）は、容器３８４Ａの容器表面３８４Ａ−１（例えば、底部の内表面）に属しうる。例えば、集合６２０は、図５Ｃの奥行き値ｄｓｕｒｆａｃｅ，ｌｏｃａｔｉｏｎ１に対応しうる、位置６２０１を含んでもよい。位置の集合６３０（黒丸として識別）は、容器縁３８４Ａ−２に属しうる。例えば、集合６３０は、図５Ｃの奥行き値ｄｒｉｍ，ｌｏｃａｔｉｏｎ１と一致しうる、位置６３０１を含んでもよい。位置の集合６４０（黒い楕円として識別）は、容器３８４Ａのハンドル３８４Ａ−６に属しうる。さらに、位置の集合６５０（網掛けの長方形として識別）は、図５Ｃの物体３７１に属しうる。例えば、集合６５０は、図５Ｃの奥行き値ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１に対応しうる、位置６５０１を含んでもよい。加えて、位置の集合６６０（白い長方形として識別）は、図５Ｃの物体３７３に属しうる。
【００６９】
実施形態では、空間構造情報は、奥行きマップおよび／または点群を含んでもよい。点群は、例えば、空間構造感知カメラ（例えば、３５１）のカメラ視野（例えば、３５３）の中にある一つ以上の構造上の位置それぞれの座標を含みうる。例えば、点群は、空間構造感知カメラの基準フレーム（例えば、座標系）または何らかの他の基準フレームの中の［ｘ  ｙ  ｚ］座標など、３Ｄ座標を含みうる。こうした例では、位置の座標は位置の奥行き値を示しうる。例えば、位置の奥行き値は、座標のｚ成分と等しいか、またはそれに基づいてもよい。
【００７０】
実施形態では、空間構造情報は、測定誤差または他の誤差から影響を受けてもよく、または誤差を含みうる。例えば、位置６５０１は、ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１と等しい奥行き値を有してもよいが、点群または他の空間構造情報は、物体３７１上の位置６５０１が［ｘ  ｙ  ｚ］座標を有することを示してもよく、ｚ＝ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１＋εｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１であり、εｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１は、位置６５０１と関連付けられた誤差を指す。その状況では、空間構造情報は、位置６５０１が奥行き値ｄｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１＋εｏｂｊｅｃｔＡ，ｌｏｃａｔｉｏｎ１を有すると誤って示しうる。誤差は、例えば、撮像ノイズ、または何らかの他の誤差源が原因でありうる。誤差は、様々な要因に基づきうる。一部の例では、物体３７１または他の構造は、空間構造感知カメラ（例えば、３５１）の動作の原理に干渉する形状を有しうる。一部の事例では、物体３７１は、空間構造感知カメラの動作の原理に干渉する材料（例えば、透明または半透明の材料）から形成されうる。一部の事例では、光または他の信号は、別の物体３７３（図５Ｃの）または容器３８４Ａの内表面に反射してもよく、他の物体３７３からのこうした反射信号は、物体３７１の奥行き値を正確に測定する、空間構造感知カメラ（例えば、３５１）の能力に干渉する撮像ノイズとして作用しうる。
【００７１】
図６Ｂは、ノイズまたは他の誤差源から実質的に影響を受ける、空間構造情報の一部分に対応する位置（網掛けの三角形で表す）の例を提供する。図６Ｂの例では、位置の集合６２０の位置６２０２から６２０５（容器表面３８４Ａ−１に対応する）は、ノイズから実質的に影響を受ける場合があり、それらの位置に対応する空間構造情報は、著しい量の誤差を含みうる。さらに、位置の集合６５０の位置６５０１から６５０３（物体３７１に対応する）、および位置の集合６６０の位置６６０１から６６０３（物体３７３に対応する）は、ノイズから実質的に影響を受ける場合があり、それらの位置に対応する空間構造情報もまた、著しい量の誤差を含みうる。こうした例では、位置の集合６５０または位置の集合６６０の空間構造情報を直接使用することによって、物体３７１または物体３７３が、どのように空間に配設されているかを決定することは、それらの位置の相当な割合が、ノイズまたは他の誤差源から影響を受けうるため、不正確、またはそうでなければ信頼できない結果につながりうる。したがって、本開示の一つの態様は、容器（例えば、３８４Ａ）がどのように空間に配設されているかの決定、および容器（例えば、３８４Ａ）がどのように空間に配設されているかに基づいた、容器内の物体（例えば、３７１／３７３）が、どのように空間に配設されているかの決定に関する。
【００７２】
図４に戻ると、方法４００は、実施形態で、計算システム１０１によって、空間構造情報に基づいて容器姿勢を決定する、ステップ４０４を含みうる。一部の実施では、ステップ４０４は、図２Ｃの容器検出モジュール２０２によって行われうる。実施形態では、容器姿勢は、容器３８４Ａなどの容器の姿勢を指してもよく、容器（例えば、３８４Ａ）の配向、または容器（例えば、３８４Ａ）の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するように使用されてもよい。一部の事例では、容器（例えば、３８４Ａ）の一部分は、容器縁（例えば、３８４Ａ−２）または容器表面（例えば、３８４Ａ−１）など、容器の構成要素を指しうる。一部の事例では、容器（例えば、３８４Ａ）の一部分は、容器上の領域、または、より広くは、容器の内容物が配置されている容器表面（例えば、３８４Ａ−１）、もしくは容器縁（例えば、３８４Ａ−２）の表面など、容器の表面上の位置（例えば、図６Ａの６２０１または６３０１）を指しうる。
【００７３】
一部の事例では、容器姿勢は、容器（例えば、３８４Ａ）の配置もしくは配列を記述してもよく、または、より広くは、容器（例えば、３８４Ａ）が３Ｄ空間にどのように配設されているかを記述しうる。例えば、容器姿勢は、容器（例えば、３８４Ａ）の配向を記述してもよく、それによって、容器（例えば、３８４）またはその一部分が下向きに傾いている量（存在する場合）を記述しうる。上述のように、容器姿勢は、例えば、容器（例えば、３８４Ａ）またはその一部分が、空間構造感知カメラ（例えば、図３Ａ〜３Ｃの３５１）から、またはロボットアーム（例えば、３６３）もしくはロボット（例えば、３６１）の他の部分からどれだけ離れているかを示しうる、奥行き値を記述しうる。
【００７４】
一部の事例では、容器姿勢は、容器の配向、および容器（例えば、３８４Ａ）上にある位置（例えば、６２０１または６３０１）の奥行き値の両方を記述しうる。奥行き値は、例えば、その位置の３Ｄ座標成分と等しいか、または３Ｄ座標成分を示してもよい。例えば、３Ｄ座標は、２Ｄ成分または２Ｄ座標（例えば、［ｘ  ｙ］座標）、および奥行き成分（例えば、ｚ成分またはｚ座標）を含む、［ｘ  ｙ  ｚ］座標であってもよい。ｚ成分またはｚ座標は、空間構造感知カメラ（例えば、３５１）もしくは何らかの他の基準フレームに対して、その位置の奥行き値に等しいか、またはそれに基づいてもよい。こうした例では、容器姿勢は、容器の配向、および容器上にある位置の３Ｄ座標の両方を記述しうる。
【００７５】
実施形態では、ステップ４０４で決定される容器姿勢は、容器表面姿勢であってもよく、容器表面（例えば、３８４Ａ−１）の姿勢でありうる。容器表面は、例えば、物体もしくは容器（例えば、３８４Ａ）の他の内容物が、容器内に配置されている、底部の内表面または他の表面であってもよい。容器表面の姿勢は、容器表面（例えば、３８４Ａ−１）の配向、または容器表面（例えば、３８４Ａ−１）の、もしくはその上にある少なくとも一つの位置（例えば、６２０１）の奥行き値のうちの少なくとも一つを記述しうる。
【００７６】
実施形態では、容器表面の姿勢を決定することは、容器表面（例えば、３８４Ａ−１）上の位置に対応する、空間構造情報の一部分を直接使用することを伴いうる。例えば、実施形態の計算システム１０１によって、位置６２０１から６２０ｎを含みうる、図６Ｂの位置の集合６２０に対応する空間構造情報に直接基づいて、容器表面の姿勢を決定してもよい。対応する空間構造情報は、例えば、位置６２０１から６２０ｎのそれぞれの奥行き値を含みうる。一部の事例では、計算システム１０１は、位置６２０１〜６２０ｎをカメラ視野（例えば、３５３）の中にある他の層を表す位置と区別するために、これらの位置を容器表面（例えば、３８４Ａ−１）に属するとして、または、より広くは、共通する層に属するとして識別するように構成されてもよい。例えば、計算システム１０１は、位置６２０１から６２０ｎを、実質的に連続するそれぞれの奥行き値を有し、値の間には明らかな不連続性がないものと識別するように構成されてもよい。一部の事例では、この実施形態の計算システム１０１によって、位置６２０１から６２０ｎのすべてまたは一部を通り抜ける最適な平面を決定することによって、容器表面の姿勢を決定しうる。計算システム１０１によって、勾配もしくは法線ベクトルなど、平面の特徴と等しくなるように、または平面の特徴に基づいて、容器表面（例えば、３８４Ａ−１）の配向を決定しうる。一部の事例では、計算システム１０１によって、空間構造情報に直接基づいて、容器表面（例えば、３８４Ａ−１）上にある位置の奥行き値を推定するか、または他の方法で決定しうる。例えば、空間構造情報が、［ｘ  ｙ  ｚ］座標など、その位置の３Ｄ座標を提供する場合、奥行き値は、３Ｄ座標のｚ成分と等しいか、またはそれに基づいてもよい。一部の事例では、容器表面（例えば、３８４Ａ−１）上の位置が、平面にあるか、または実質的に平面に近い場合があるため、計算システム１０１は平面を使用して、その位置の奥行き値を推定してもよい。例えば、計算システム１０１は、容器表面（例えば、３８４Ａ−１）上にある位置の２Ｄ成分（例えば、［ｘ  ｙ］成分）を受信する場合、その２Ｄ成分も有する平面に属する３Ｄ座標を決定するように構成されてもよい。こうした例では、平面上の３Ｄ座標は、容器表面（例えば、３８４Ａ−１）上の位置を示してもよく、またはそれに近似してもよい。したがって、平面上にある３Ｄ座標のｚ成分は、容器表面（例えば、３８４Ａ−１）上にある位置の奥行き値と等しいか、またはそれに近似する場合がある。
【００７７】
実施形態では、容器表面の姿勢を決定することには、容器縁（例えば、３８４Ａ−２）に対応する空間構造情報など、容器（例えば、３８４Ａ）の別の部分に対応する空間構造情報の間接的な使用を伴いうる。より詳細には、ステップ４０４の実施形態は、容器縁の姿勢を決定すること、および容器縁の姿勢に基づいて容器表面の姿勢を決定することを伴いうる。容器縁の姿勢は、容器縁（例えば、３８４Ａ−２）の配向、または容器縁（例えば、３８４Ａ−２）上にある少なくとも一つの位置（例えば、６３０１）の奥行き値のうちの少なくとも一つを記述しうる。
【００７８】
一部の事例では、容器縁の姿勢に基づいて容器表面の姿勢を決定することによって、ノイズまたは他の誤差源に対して、より堅牢な決定を提供しうる。より具体的には、ノイズは、容器（例えば、３８４）内に配置されている物体（例えば、３７１）上の位置（例えば、６５０１から６５０３）に影響を与えうるだけでなく、物体が配置されている容器表面（例えば、３８４Ａ−１）上の位置にも影響を与えうる。したがって、それらの位置に対応する奥行き情報または他の空間構造情報は、信頼できない場合がある。例えば、図６Ｃは、容器表面３８４Ａ−１上の位置６２０２、６２０３、６２０４、６２０５、６２０６、６２０７、６２０８、６２０９、６２０１０、…６２０ｋ（空間構造情報によって識別される位置６２０１から６２０ｎの全ての部分集合でありうる）が、それらの位置の空間構造情報の対応する部分に誤差を持ち込み、より詳細には、それらの位置の奥行き情報に誤差を持ち込みうる、撮像ノイズから影響を受けうることを示す。図６Ｂがまた、ノイズを（位置６２０２から６２０６に）有する例も示し、図６Ｃは、容器表面３８４Ａ−１により多くのノイズがある環境の例を示す。図６Ｃの例では、ノイズ（６２０２から６２０ｋ）から影響を受ける位置が、空間構造情報が利用可能なすべての位置（６２０１から６２０ｎ）のうちの多くの割合でありうる。ノイズは、例えば、容器表面（例えば、３８４Ａ−１）に反射する、または容器表面（例えば、３８４Ａ−１）上の物体（例えば、３７１／３７３）に反射する信号の存在より生じる場合があり、反射信号は、互いに干渉し、容器表面（例えば、３８４Ａ−１）上にある位置の奥行き値の直接測定に干渉しうる。
【００７９】
一部の事例では、詰め込まれた容器（すなわち、容器表面を見えなくしうる多数の物体を含む容器）もまた、容器表面（例えば、３８４Ａ−１）上にある位置の奥行き値の直接測定に干渉しうる。例えば、図６Ｄは、物体３７１〜３７５などの多くの物体が、容器表面３８４Ａ−１上に配置されているシナリオを描写する。物体３７１〜３７５は、容器表面３８４Ａ−１の大部分を覆っていてもよい。より具体的に、図６Ｅが、図６Ｄに描写した例についての空間構造情報を示す。図６Ｅに描写するように、物体３７１〜３７５が、容器表面３８４Ａ−１の領域６５２〜６９２を覆ってもよく、または他の方法で占有してもよい。容器表面３８４Ａ−１のいくつかの部分は、物体３７１〜３７５によって覆われていないが、それらの部分も依然としてノイズの影響を受けうるため、空間構造感知カメラ３７１を使用して、容器表面３８４Ａ−１の正確な奥行きの測定を直接行う能力が制限される。
【００８０】
したがって、本開示の一つの態様は、容器縁（例えば、３８４Ａ−２）など、容器の別の部分に対応する空間構造情報を使用して、容器表面（例えば、３８４Ａ−１）についての情報を間接的に決定することに関する。実施形態では、上述のように、計算システム１０１によって、容器縁の姿勢を決定し、容器縁の姿勢を使用して、容器表面の姿勢を決定してもよい。容器縁（例えば、３８４Ａ−２）は、一部の例では、ノイズまたは測定誤差源から受ける影響がより少ない場合がある。すなわち、これらの測定誤差源は、容器表面（例えば、３８４Ａ−１）または容器表面（例えば、３８４Ａ−１）上に配置されている物体の直接測定に影響を与えうる。しかしながら、容器縁（例えば３８４Ａ−２）は、容器の一つ以上の側壁（例えば、図３Ｄの側壁３８４Ａ−３から３８４Ａ−５）によって、容器表面（例えば、３８４Ａ−１）からずれを生じる場合があり、側壁は、容器縁（例えば、３８４Ａ−２）を完全に物体（例えば、３７１、３７３）より上方に位置させる、高さｈを有しうる。したがって、容器縁（例えば、３８４Ａ−２）は、測定誤差源から受ける影響が著しく少ない場合があり、容器縁（例えば、３８４Ａ−２）の奥行きの直接測定は、容器表面（例えば、３８４Ａ−１）の奥行きの直接測定よりも著しく正確でありうる。
【００８１】
実施形態では、容器縁（例えば、３８４Ａ−２）の直接測定には、容器縁（例えば、３８４Ａ−２）上の位置に対応する空間構造情報を含んでもよく、容器縁の姿勢は、そのような空間構造情報に基づいて決定されてもよい。例えば、図６Ｃに描写するように、空間構造情報は、容器縁（例えば、３８４Ａ−２）上にある位置６３０１、６３０２、６３０３、６３０４、…６３０ｎのそれぞれの奥行き値を示す、奥行き情報を含みうる。一部の事例では、計算システム１０１は、位置６３０１〜６３０ｎを、その中の奥行きに明らかな不連続性が全くないものとして、それゆえ、カメラ視野（例えば、３５３）の中の他の層とは分離している、共通層に属するものとして識別することによって、これらの位置６３０１〜６３０ｎを、容器の別の構成要素を表す位置（例えば、６２０１から６２０ｎ）と区別するように構成されてもよい。実施形態では、計算システム１０１は、容器縁（例えば、３８４Ａ−２が位置すべき）の推定領域を決定し、推定領域の中にある位置（例えば、６３０１〜６３０ｎ）を検索することによって、位置６３０１〜６３０ｎを、容器縁（例えば、３８４Ａ−２）に属するものとして識別するように構成されてもよい。例えば、計算システム１０１は、容器（例えば、３８４Ａ）の構造と、容器（例えば、３８４Ａ）が位置するキャビネット（例えば、３８０）もしくは筐体（例えば、３８１）の構造とについての定義された、または他の方法で既知である情報を入手できてもよい。情報によって、例えば、容器（例えば、３８４Ａ）もしくはキャビネット３８０のサイズ（例えば、寸法）、物理構成、形状、および／または幾何学的形状を識別しうる。計算システム１０１は、この情報に基づいて推定領域を決定するように構成されうる。例えば、計算システムによって、容器縁（例えば、３８４Ａ−２）が、誤差の範囲が約１０ｍｍで、約６００ｍｍの奥行き値を有するべきであると推定してもよい。次に、計算システム１０１によって、５９０ｍｍから６１０ｍｍに及ぶ奥行き値を有する空間を占有する推定領域で、容器縁（例えば、３８４Ａ−２）を検索しうる。
【００８２】
上述のように、容器縁の姿勢は、容器縁（例えば、３８４Ａ−２）の配向、または容器縁（例えば、４８２Ａ−２）上にある少なくとも一つの位置の奥行き値のうちの少なくとも一つを示しうる。実施形態では、計算システム１０１によって、容器縁（例えば、３８４Ａ−２）上にある位置（例えば、６３０１〜６３０ｎ）の一部またはすべての、それぞれの奥行き値の間の差異（存在する場合）を決定することによって、容器縁の姿勢の配向を決定しうる。例えば、位置６３０１〜６３０ｎのそれぞれの奥行き値が、同じか、または実質的に同じ場合、計算システム１０１によって、容器縁３８４Ａ−２が、空間構造感知カメラ３５１または他の基準フレームに対して、実質的に平坦な配向を有すると決定することができる。それぞれの奥行き値が、位置の関数として変化する場合、計算システム１０１によって、変化を表す勾配を決定しうる。容器縁の姿勢の配向は、勾配と等しいか、またはそれに基づいてもよい。
【００８３】
実施形態では、計算システム１０１によって、空間構造情報が提供される容器縁（例えば、３８４Ａ−２）上にある位置（例えば、６３０１から６３０ｎ）の一部またはすべてを、実質的に通り抜ける平面を決定することによって、容器縁の姿勢を決定してもよい。例えば、計算システム１０１によって、位置（例えば、６３０１から６３０ｎ）の各々、または位置の部分集合について、３Ｄ座標（例えば、［ｘｎ  ｙｎ  ｚｎ］）を決定してもよく、３Ｄ座標は、空間構造情報から導き出される、奥行き成分（例えば、ｚｎ）を含みうる。計算システム１０１によって、それぞれの３Ｄ座標を通り抜ける最適な平面を決定しうる。例えば、平面は、方程式ａ（ｘ−ｘ０）＋ｂ（ｙ−ｙ０）＋ｃ（ｚ±ｚ０）＝０によって表されてもよく、式中、［ｘ０，ｙ０，ｚ０］は、容器縁（例えば、３８４Ａ−２）上にある位置（例えば、６３０１）のうちの一つに対する３Ｄ座標であってもよく、［ｘ  ｙ  ｚ］は、容器縁（例えば、３８４Ａ−２）上にある残りの位置（例えば、６３０２から６３０ｎ）の一部またはすべてに対する３Ｄ座標を表してもよい。計算システム１０１によって、上記座標に基づいて連立方程式のセットを生成し、連立方程式を最適に満たす係数ａ、ｂ、ｃについて方程式を解くことができる。こうした例では、計算システム１０１によって、勾配または法線ベクトル（例えば、＜ａ  ｂ  ｃ＞に平行なベクトル）など、平面の特徴と等しくなるように、または平面の特徴に基づいて、容器縁の姿勢の配向を決定しうる。
【００８４】
上述のように、計算システム１０１によって、容器縁の姿勢に基づいて、容器表面の姿勢を決定しうる。一部の事例では、こうした決定は、容器縁（例えば、３８４Ａ−２）と容器表面（例えば、３８４Ａ−１）との間の定義された距離に基づいてもよい。定義された距離は、例えば、容器縁（例えば、３８４Ａ−２）を形成する、一つ以上の側壁（例えば、図３Ｄの３８４Ａ−３から３８４Ａ−３）の高さｈでありうる。一部の事例では、定義された距離は、計算システム１０１によってアクセス可能な非一時的コンピュータ可読媒体（例えば、１２０）上に記憶される、既知の値であってもよい。
【００８５】
さらに上述のように、容器表面の姿勢は、容器表面（例えば、３８４Ａ−１）の配向、または容器表面（例えば、３８４Ａ−１）上にある位置の奥行き値のうちの少なくとも一つを記述しうる。一部の事例では、計算システム１０１によって、容器縁の姿勢の配向に基づいて、容器表面の姿勢の配向を決定しうる。より具体的には、計算システム１０１によって、容器縁（例えば、３８４Ａ−２）の配向と等しくなるように、またはその配向に基づいて、容器表面（例えば、３８４Ａ−１）の配向を決定しうる。こうした決定は、容器縁（例えば、３８４Ａ−２）が、容器表面（例えば、３８４Ａ−１）と平行であるという想定に基づいてもよい。
【００８６】
例として、計算システム１０１によって、上で論じたように、容器縁の姿勢の配向を画定する第一の平面を決定し、第一の平面を使用して、容器表面の姿勢の配向を画定する第二の平面を決定することができる。例えば、図６Ｆは、容器縁３８４Ａ−２上にある位置（例えば、６３０１から６３０ｎ）の空間構造情報に基づいて決定することができ、容器縁３８４Ａ−２の配向を画定しうる、第一の平面６８４Ａ−２を示す。計算システム１０１は、第一の平面６８４Ａ−２に基づいて、第二の平面６８４Ａ−１を決定するように構成されてもよく、第二の平面６８４Ａ−１は、容器表面３８４Ａ−１の配向を画定してもよい。一部の例では、第一の平面６８４Ａ−２および第二の平面６８４Ａ−１は、互いに並行で、定義された距離ｈだけずれていてもよい。例えば、第一の平面６８４Ａ−２が、上で論じたように、方程式ａ（ｘ−ｘ０）＋ｂ（ｙ−ｙ０）＋ｃ（ｚ−ｚ０）＝０によって定義される場合、計算システム１０１によって、方程式ａ（ｘ−ｘ０）＋ｂ（ｙ−ｙ０）＋ｃ（ｚ−ｚ０−ｈ）＝０によって定義される、第二の平面６８４Ａ−１を決定しうる。
【００８７】
実施形態では、容器表面３８４Ａ−１上の位置が、平面６８４Ａ−１にあるか、または実質的にその平面近くにありうるため、計算システム１０１によって、第二の平面６８４Ａ−１を使用して、容器表面３８４Ａ−１上にある位置のそれぞれの奥行き値を決定するか、または表してもよい。例として、計算システム１０１は、容器表面３８４Ａ−１上にある位置の２Ｄ成分または２Ｄ座標（例えば、［ｘ  ｙ］座標）を受信する場合、この２Ｄ成分に対応する平面６８４Ａ−１上の３Ｄ座標を決定し、３Ｄ座標の奥行き成分（例えば、ｚ成分）に基づいて、この位置の奥行き値を決定するように構成されうる。より具体的には、計算システム１０１によって、方程式ａ（ｘ−ｘ０）＋ｂ（ｙ−ｙ０）＋ｃ（ｚ−ｚ０−ｈ）＝０を満たす、３Ｄ座標［ｘ  ｙ  ｚ］を決定してもよく、ｘおよびｙは、受信した２Ｄ成分に属してもよく、ｚは、３Ｄ座標の奥行き成分であってもよい。したがって、容器縁３８４Ａ−２より決定された情報は、容器表面３８４Ａ−１の配向および／または奥行きに関する、信頼性の高い決定をするために使用されうる。
【００８８】
図４に戻ると、方法４００は、実施形態で、計算システム１０１によって、容器姿勢に基づいて物体姿勢を決定する、ステップ４０６を含みうる。ステップは、例えば、図２Ｃの異議検出モジュール２０４によって行われてもよい。この実施形態では、物体姿勢は、容器（例えば、３８４Ａ）内に配置されている物体（例えば、図３Ａ〜３Ｃの３７１／３７３）の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述しうる。一部の事例では、物体は、ロボット相互作用が望まれる、目標物体であってもよい。物体の一部分は、例えば、物体の表面（例えば、上表面）上の位置、および／または上表面の角もしくはエッジなど、物体の物理的特徴を指しうる。
【００８９】
実施形態では、物体姿勢を決定するために使用される容器姿勢は、容器表面の姿勢でありうる。例えば、計算システム１０１によって、容器表面の姿勢の配向と等しくなるように、またはその配向に基づいて、物体姿勢の配向を決定しうる。より具体的には、計算システム１０１によって、物体（例えば、３７１）の配向が、容器表面（例えば、３８４Ａ−１）の配向と等しいと決定しうる。
【００９０】
一部の事例では、計算システム１０１によって、容器表面（例えば、３８４Ａ−１）の配向に基づくように、物体（例えば、３７１／３７３）の配向を決定しうる。例えば、計算システム１０１によって、物体が配置されている、容器表面（例えば、３８４Ａ−１）の配向と等しくなるように、物体（例えば、３７１／３７３）の配向を決定しうる。こうした決定は、商品の箱などの物体が、容器表面（例えば、３８４Ａ−１）上に同じ高さで座しているという想定に基づきうる。
【００９１】
一部の事例では、計算システム１０１によって、容器表面（例えば、３８４Ａ−１）上の対応する位置の奥行き値に基づいて、物体上にある位置（物体位置とも呼ばれる）の奥行き値を決定しうる。対応する位置は、物体が座している、または、より広くは、物体位置と同じ２Ｄ成分もしくは２Ｄ座標を有する、容器表面（例えば、３８４Ａ−１）上の位置であってもよい。一部の事例では、決定は、計算システム１０１からアクセス可能な非一時的コンピュータ可読媒体（例えば、１２０）に記憶されてもよい、画定された高さｈｏｂｊｅｃｔなど、物体（例えば、３７１）の画定されたサイズに基づいてもよい。物体位置が、物体（例えば、３７１）の上表面である場合、計算システム１０１によって、物体位置が、容器表面（例えば、３８４Ａ−１）上の位置から、画定された高さｈｏｂｊｅｃｔ分離れていると決定しうる。例えば、容器表面（例えば、３８４Ａ−１）上の位置が、３Ｄ座標［ｘ  ｙ  ｚｓｕｒｆａｃｅ］を有する場合、計算システム１０１によって、物体位置が３Ｄ座標［ｘ  ｙ  ｚｓｕｒｆａｃｅ±ｈｏｂｊｅｃｔ］を有すると決定しうる。こうした例では、計算システム１０１によって、上で論じたように、最初に物体位置の２Ｄ成分を決定し、２Ｄ成分を使用して、例えば、平面６８４Ａ−１について方程式を解くことに基づいて、または、より広くは、容器表面の姿勢に基づいて決定されうる、３Ｄ座標［ｘ  ｙ  ｚｓｕｒｆａｃｅ］を決定することができる。次に、計算システム１０１によって、ｚｓｕｒｆａｃｅ±ｈｏｂｊｅｃｔと等しいものとして、またはそれに基づいて、物体位置の奥行き値を決定しうる。こうした手法で、著しい量の撮像ノイズを伴う環境でさえも、物体（例えば、３７１）の配向および／または奥行き値を正確に決定する、堅牢な方法を提供する。こうした撮像ノイズによって、空間構造感知カメラ（例えば、３５１）が、正確な手法で、物体の奥行きを直接測定するのを妨げうる。しかしながら、計算システム１０１は、容器の空間構造情報を使用して、容器表面の姿勢を決定し、容器表面上の対応する位置の奥行き値を決定することによって、間接的に測定することができる。次に、容器表面上の対応する位置の奥行き値に基づいて、物体の奥行き値を外挿しうる。
【００９２】
一部の事例では、ステップ４０６は、図７Ａのバーコード感知装置３５２など、物体識別子感知装置を含む環境で行われてもよい。バーコード感知装置３５２（物体識別子感知装置１５２の実施形態であってもよい）は、ロボットアーム（例えば、３６３）または固定実装点へ嵌め込みうる。バーコード感知装置３５２は、視野３５５（リーダー視野とも呼ばれる）を有してもよく、容器（例えば、３８４Ａ）内に配置される物体（例えば、３７１／３７３）上に配置される、バーコードまたは何らかの他の物体識別子（存在する場合）を感知するように構成されうる。例えば、図７Ｂは、バーコード７１１が物体３７１上に配置され、バーコード７１３が物体３７３上に配置されている例を提供する。上述のように、物体識別子情報は、物体識別子感知情報を生成するように構成されてもよい。図７Ｂの例では、バーコード感知装置３５２は、バーコード７１１／７１３の位置、バーコード７１１／７１３にコード化された情報、またはバーコード７１１／７１３についての任意の他の情報を記述しうる、感知されるバーコード情報を生成するように構成されうる。バーコード７１１／７１３にコード化された情報は、物体７１１／７１３の識別または物体７１１／７１３のサイズなど、バーコードが配置されている物体３７１／３７３について記述しうる。
【００９３】
一部の事例では、計算システム１０１は、バーコード（例えば、７１１／７１３）にコード化された情報、または他の物体識別子が、計算システム１０１によって受信される物体識別情報に合致するかどうかを決定するように構成されてもよい。例えば、計算システム１０１は、ロボット（例えば、３６１）による回収のために、商品などの特定の品目を識別する、最小在庫管理単位（ＳＫＵ）番号および／または統一商品コード（ＵＰＣ）などの物体識別情報を受信することができる。こうした例では、計算システム１０１は、容器（例えば、３８４Ａ）の中の任意の物体が、物体識別情報に合致する、物体の上に配置されているバーコード（例えば、７１１／７１３）もしくは他の物体識別子を有するか、すなわち、より具体的には、バーコード（例えば、７１１）もしくは他の物体識別子にコード化された情報が、物体識別情報に合致するかを決定するように構成されうる。コード化された情報が物体識別情報に合致する、バーコード（例えば、７１１）または他の物体識別子がある場合、計算システム１０１によって、例えば、バーコード（例えば、７１１）または他の物体識別子が配置されている物体（例えば、３７１）と関連付けられた、一つ以上の位置の２Ｄ成分を決定するように、バーコードを使用してもよい。
【００９４】
実施形態では、計算システム１０１は、バーコード位置など、物体識別子の位置を決定するように構成されてもよい。バーコード位置は、物体識別情報に合致するバーコードなど、バーコード（例えば、７１１／７１３）の２Ｄ位置を記述しうる。一部の事例では、物体識別子の２Ｄ位置は、２Ｄ座標（２Ｄ物体識別子の座標とも呼ばれる）によって表されてもよい。物体識別子がバーコードである場合、２Ｄ物体識別子の座標は２Ｄバーコード座標であってもよい。例えば、計算システム１０１は、図７Ｂの中にあるバーコード７１１の位置を表す２Ｄバーコード座標［ｘＢａｒｃｏｄｅＡ，ｙＢａｒｃｏｄｅＡ］を決定し、バーコード７１３の位置を表す２Ｄバーコード座標［ｘＢａｒｃｏｄｅＢ，ｙＢａｒｃｏｄｅＢ］を決定するように構成されてもよい。一部の事例では、２Ｄバーコード座標は、図７Ａのバーコード感知装置３５２によって、または何らかの他の物体識別子感知装置によって生成されうる。上述のように、バーコード位置は、上で論じた物体識別情報に合致する、バーコードに対して決定されうる。例えば、計算システム１０１によって、物体３７１上のバーコード７１１にコード化された情報が、受信したＳＫＵ番号と合致すると決定される場合、計算システム１０１は、バーコード７１１の位置に対して、２Ｄバーコード座標［ｘｏｂｊｅｃｔＡ，ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＡ，ｂａｒｃｏｄｅ］を決定してもよい。
【００９５】
実施形態では、計算システム１０１は、バーコード（例えば、７１１）または他の物体識別子にコード化された情報を使用して、バーコードが配置されている物体（例えば、３７１）に関するサイズまたは他の情報を決定してもよい。例えば、バーコード７１１または他の物体識別子は、上で論じた物体３７１の高さｈｏｂｊｅｃｔ、物体３７１の長さもしくは幅をコード化してもよく、または物体３７１のサイズ（物体サイズとも呼ばれる）に関する任意の他の情報をコード化してもよい。高さｈｏｂｊｅｃｔは、また上でも論じたように、物体３７１上にある位置の奥行き値を決定するために使用されうる。
【００９６】
実施形態では、計算システム１０１は、物体識別子と関連付けられた物体識別子感知情報（例えば、バーコード７１１と関連付けられた感知されるバーコード情報）を使用して、物体識別子が配置されている物体（例えば、３７１）の一つ以上の２Ｄ位置を決定するように、すなわち、より具体的には、物体（例えば、３７１）上にある一つ以上のそれぞれの位置の、一つ以上の２Ｄ座標を決定するように構成されてもよい。２Ｄ物体座標は、上で論じた奥行き値と組み合わされて、物体とのロボット相互作用を計画することができる（２Ｄ物体座標とも呼ばれる）。一部の事例では、２Ｄ物体座標は、物体の上表面の２Ｄ境界など、物体（例えば、３７１）の輪郭に近似してもよい。
【００９７】
実施形態では、物体位置の２Ｄ物体座標は、空間構造情報に基づいて決定されうる。例えば、空間構造情報は、カメラ視野（例えば、３５３）中の環境より感知された、一つ以上の表面上にある複数の位置を表す点群であってもよい。例えば、点群によって表される位置は、容器表面（例えば、３８４Ａ−１）、物体（例えば、３７１、３７３）の表面、および容器縁（例えば、３８４Ａ−２）の表面上にある位置の様々な集合６１０〜６６０など、図６Ａ〜６Ｃおよび７Ｃに示す位置でありうる。こうした実施形態では、計算システム１０１は、感知されるバーコード情報などの物体識別子感知情報を使用して、点群を検索して、一つ以上の２Ｄ物体座標の少なくとも一つの集合を決定するように構成されうる。２Ｄ物体座標は、例えば、それぞれの物体位置を表す［ｘ  ｙ］座標であってもよい。例えば、２Ｄ物体座標は、図７Ｃの物体３７１上にある物体位置６５０１から６５０４の一部もしくはすべて、または物体３７３上にある物体位置６６０１から６６０５の一部もしくはすべてを表す、それぞれの２Ｄ座標であってもよい。２Ｄ物体座標は、以下でより詳細に論じるように、対応する奥行き値または物体の配向と組み合わされて、物体（例えば、３７１／３７３）と相互作用するための移動コマンドを生成しうる。
【００９８】
実施形態では、物体位置の２Ｄ物体座標は、空間構造情報に基づいて、かつ物体識別子の位置、すなわち、より具体的には、その２Ｄ物体識別子の座標に基づいて決定されうる。物体識別子がバーコードである場合、２Ｄ物体座標は、空間構造情報およびバーコードの位置に基づいて決定されうる。より具体的には、バーコードの位置（例えば、２Ｄバーコード座標）は、２Ｄ物体座標を検索する空間構造情報の部分を絞り込むのにも使用されうる。より具体的には、検索は、物体識別子の位置を囲む領域に対応する空間構造情報の一部分、すなわち、より具体的には、バーコードの位置に限定されうる。例えば、物体３７１上の２Ｄ位置を検索するために、計算システム１０１によって、図７Ｂのバーコード７１１のバーコード位置を囲む、図７Ｃの領域７２１を決定しうる。すなわち、領域７２１は、２Ｄバーコード座標［ｘｏｂｊｅｃｔＡ，Ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＡ，Ｂａｒｃｏｄｅ］を囲む。一部の事例では、領域７２１は、２Ｄ領域または３Ｄ領域であってもよい。
【００９９】
実施形態では、計算システム１０１は、領域７２１に対応する空間構造情報の一部分を検索して、物体７１１に対応する物体位置を識別するように、すなわち、より具体的には、物体７１１上にある位置を検索するように構成されてもよい。したがって、図７Ｃに描写する空間構造情報によって表されるすべての位置を検索するのではなく、計算システム１０１は、空間構造情報によって表されるそれらの位置の部分集合を検索してもよい。より詳細には、位置の部分集合は、領域７２１の中の位置であってもよい。計算システム１０１は、例えば、容器表面３８４Ａ−１上にある周囲の位置と、奥行きに充分明らかな差異を有する位置を識別することによって、物体３７１上の位置を検索するように構成されうる。一部の例では、計算システム１０１によって、物体上にある位置の２Ｄ物体座標を決定してもよい。例えば、空間構造情報が、物体３７１上にある位置６５０１の［ｘ  ｙ  ｚ］座標を提供する場合、計算システム１０１によって、その物体位置の２Ｄ物体座標として、［ｘ  ｙ］を決定してもよい。この例における空間構造情報はまた、その位置のｚ成分も提供しうるが、ｚ成分は、上で論じたように、ノイズのために信頼できない場合がある。より具体的には、ｚ成分は、計算システム１０１が、物体３７１上の位置と周囲の容器表面３８４Ａ−１上の位置とを区別するには、充分な精度がありうるが、物体３７１とのロボット相互作用を計画するのに充分な精度はない場合がある。したがって、さらに上で論じたように、計算システム１０１によって、容器姿勢を使用して、物体位置６５０１、または、より広くは、２Ｄ物体座標もしくは２Ｄ成分［ｘ  ｙ］を有する物体位置のそれぞれの奥行き値を決定してもよい。一部の例では、例えば、物体位置６５０１の２Ｄ物体座標、およびその位置の対応する奥行き値を組み合わせて、その物体位置に対してより信頼できる３Ｄ座標を形成しうる。
【０１００】
図７Ｃはさらに、２Ｄ物体識別子の座標、すなわち、より具体的には、バーコード７１３の２Ｄバーコード座標［ｘｏｂｊｅｃｔＢ，Ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＢ，Ｂａｒｃｏｄｅ］を囲む、領域７２３を描写する。計算システム１０１は、領域７２３を検索して、物体３７３の物体位置を決定するように構成されうる。実施形態では、領域７２１／７２３は画定された固定サイズを有してもよい。実施形態では、領域７２１／７２３は、物体３７１／３７３の物体サイズに基づく、サイズを有してもよい。
【０１０１】
実施形態では、物体（例えば、３７１）の物体位置は、その物体サイズに基づいて決定されてもよく、物体サイズは、例えば、バーコード（例えば、７１１）、または物体上に配置される他の物体識別子にコード化されうる。例えば、物体サイズは、物体（例えば、３７１）の長さおよび幅を示しうる。計算システム１０１は、例えば、物体サイズに基づく物体（例えば、３７１）のエッジまたは他の境界を表す、２Ｄ座標を推定するように構成されうる。例として、計算システム１０１は、物体の長さまたは幅に基づいて、物体の特定のエッジが、バーコード位置または他の物体識別子の位置から、ある一定距離離れていると推定しうる。計算システム１０１は、その距離を使用して、その特定のエッジがどこに位置するかを示す、２Ｄ座標を決定することができる。
【０１０２】
実施形態では、バーコード位置の２Ｄバーコード座標など、２Ｄ物体識別子の座標は、物体識別子感知装置（例えば、図７Ａのバーコード感知装置３５２）によって感知される情報に基づいて決定されてもよい。例えば、バーコード感知装置（例えば、３５２）は、２Ｄバーコード座標として［ｘ  ｙ］座標を生成し、［ｘ  ｙ］座標を計算システム１０１に伝達してもよい。計算システム１０１は、必要であれば、［ｘ  ｙ］座標を、物体識別子感知装置（例えば、バーコード感知装置３５２）の座標系で表現されたものから、空間構造感知カメラ（例えば、３５１）の座標系など、別の座標系で表現されたものに変換するように構成されてもよい。上述のように、物体識別子感知装置（例えば、バーコード感知装置３５２）は、一部の例では、２Ｄカメラ（例えば、図１Ｅの１５３）を含んでもよい。こうした例では、物体識別子感知装置（例えば、バーコード感知装置３５２）は、２Ｄ画像を取り込むように構成されてもよい。例えば、図７Ｂは、バーコード感知装置３５２の視野（例えば、３５５）を表す２Ｄ画像を表しうる。物体識別子感知装置（例えば、バーコード感知装置３５２）および／または計算システム１０１は、２Ｄ画像からバーコード（例えば、７１１／７１３）または他の物体識別子を検出し、物体識別子（例えば、バーコード７１１／７１３）が２Ｄ画像中のどこに現れるかに基づいて、２Ｄ物体識別子の座標を決定するように構成されうる。
【０１０３】
実施形態では、２Ｄ画像は、生成される場合、２Ｄ物体座標を決定するために使用されうる。例えば、計算システム１０１は、２Ｄ画像を受信する場合、２Ｄ画像の中に現れる物体（例えば、３７１）のエッジまたは他の境界を検出し、エッジが２Ｄ画像中のどこに現れるかに基づいて、物体を表す２Ｄ物体座標を決定するように構成されうる。一部の事例では、計算システム１０１は、そのエッジまたは他の境界についての検索を、２Ｄ画像の一部分のみに制限するように構成されてもよい。こうした場合、検索が行われる２Ｄ画像の一部分は、物体上に配置されるバーコード（例えば、７１１）のバーコード位置などの物体識別子の位置、またはバーコードが２Ｄ画像中のどこに現れるかに基づいてもよい。
【０１０４】
実施形態では、計算システム１０１は、隣接するバーコードのバーコード位置など、物体識別子の位置に基づいて、物体の２Ｄ位置を推定するように構成されてもよい。隣接するバーコードは、物体上には配置されず、隣接する物体上に配置されてもよい。例えば、図８は、物体３７７が容器３８４Ａ内に配置されていて、容器上にバーコードが配置されていないシナリオを示す。この例では、計算システム１０１は、隣接する物体３７１、３７３、３７６上にそれぞれ配置されている、バーコード７１１、７１３、７１６の２Ｄバーコード位置を使用して、物体３７７の２Ｄ位置を三角測量するか、または他の方法で決定するように構成されうる。例えば、計算システム１０１は、境界が、バーコード７１１、７１３、７１６それぞれの２Ｄバーコード座標［ｘｏｂｊｅｃｔＡ，Ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＡ，Ｂａｒｃｏｄｅ］、［ｘｏｂｊｅｃｔＢ，Ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＢ，Ｂａｒｃｏｄｅ］、［ｘｏｂｊｅｃｔＣ，Ｂａｒｃｏｄｅ，ｙｏｂｊｅｃｔＣ，Ｂａｒｃｏｄｅ］によって画定される領域を決定し、物体３７７のその領域を検索するように構成されてもよい。より詳細には、計算システム１０１によって、その領域に対応する空間構造情報の一部分を、物体３７７上にある位置について検索してもよい。
【０１０５】
実施形態では、バーコード感知装置（または何らかの他の物体識別子感知装置）および／または空間構造感知カメラが、ロボットアーム（例えば、図３Ａの３５３）に取り付けられている場合、計算システム１０１は、ロボットアームの移動を引き起こすことによって、装置／カメラ（例えば、３５２／３５１）の配置を制御するように構成されうる。例えば、計算システム１０１は、ロボットアーム３６３に、物体識別子感知装置（例えば、バーコード感知装置３５２）および／もしくは空間構造感知カメラ（例えば、３５１）を、望ましい位置ならびに／または配向へ移動させるための、センサー移動コマンドを生成し出力するように構成されうる。センサー移動コマンドによって、例えば、装置（例えば、３５２／３５１）を、画定近接レベル内にある位置へ移動させることができる。一部の事例では、画定近接レベルは、物体識別子感知装置の焦点距離に基づいてもよい。より詳細には、物体上にある任意のバーコード（例えば、７１１）が、物体識別子感知装置の焦点距離内にくるように、センサー移動コマンドによって、物体識別子感知装置を、容器（例えば、３５４Ａ）中の物体の充分近くに移動させうる。実施形態では、ステップ４０２で受信した空間構造情報、および感知されるバーコード情報または他の物体識別子情報は、装置（例えば、３５２／３５１）が、センサー移動コマンドの結果として移動した後に、生成されてもよい。
【０１０６】
実施形態では、センサー移動コマンドによって、空間構造情報および／またはバーコード感知装置（または任意の他の物体識別子感知装置）を、空間構造情報および／または感知されるバーコード情報が、容器表面（例えば、３８４Ａ−１）の一部分のみを表すか、または覆うような近接範囲内に移動させうる。例えば、図９は、容器表面（例えば、３８４Ａ−１）の一部分のみ、または、より広くは、容器（例えば、３８４Ａ）の一つの側面の一部分のみを、空間構造感知カメラ３５１および／またはバーコード感知装置３５２によって取り込む状況を示す。すなわち、容器表面（例えば、３８４Ａ−１）の一部分のみが、こうした近接レベルで、カメラ視野（例えば、３５３）またはリーダー視野（例えば、３５５）の中にあってもよい。容器表面（例えば、３８４Ａ−１）の全体または容器（例えば、３８４Ａ）の全体について、情報を取り込む必要はない場合がある。むしろ、容器（例えば、３８４Ａ）の一部分のみを取り込むことによって、計算システム１０１が、右半分など、容器（例えば、３８４）の特定部分に焦点を合わせること、より具体的には、その部分の中にある物体の検出に焦点をあわせることが可能になりうる。一部の事例では、計算システム１０１によって、特定の容器（例えば、３８４Ａ）についての情報を取り込むために、空間構造感知カメラ（例えば、３５１）および／もしくは物体識別子感知装置（例えば、バーコード感知装置３５２）を移動させる回数、またはカメラ／装置（例えば、３５１／３５２）を移動させる位置の数を制限しうる。例えば、カメラ／装置（例えば、３５１／３５２）は、特定の容器のスナップショットを取り込むために、単一の位置へ一度のみ移動してもよい。
【０１０７】
実施形態では、計算システム１０１は、容器表面（例えば、３８４Ａ−１）上の異なる領域を、異なるセグメントと関連付けることによって、特定の容器（例えば、３８４Ａ）のセグメンテーションを行うように構成されうる。例えば、図１０は、容器表面３８４Ａ−１が、仮想上でセグメント１００１から１００６に分割されうる状況を描写する。このシナリオでは、計算システム１０１は、物体と関連付けられた容器セグメント識別子を受信するように構成されてもよい。一つの例では、計算システム１０１によって、セグメント１００６を識別する、すなわち、より具体的には、ロボット相互作用が、セグメント１００６内に配置される物体（例えば、３７１）にとって望ましいと示す、容器セグメント識別子を受信することができる。実施形態では、計算システム１０１は、容器セグメント識別子と関連付けられた容器表面（例えば、３８４Ａ−１）上の位置を決定するように構成されうる。一部の事例では、それらの位置の決定には、それらの奥行き値の決定を含んでもよく、上で論じたように、容器縁の姿勢または容器表面の姿勢のうちの少なくとも一つを使用することを伴いうる。
【０１０８】
実施形態では、方法４００は、計算システム１０１によって、ロボットアーム（例えば、３６３）が物体をつかむか、または他の方法で拾い上げるなど、物体（例えば、３７１／３７３）とのロボット相互作用を引き起こすための移動コマンドを出力する、ステップ４０８を含みうる。こうした移動コマンドはまた、物体移動コマンドと呼ばれる場合もある。一部の事例では、ステップ４０８は、例えば、物体移動コマンド、上で論じたセンサー移動コマンド、および容器移動コマンド（以下で論じる）を生成するように構成されてもよい、図２Ｃの動作計画モジュール２０６によって行われてもよい。物体移動コマンドは、例えば、物体（例えば、３７１）の配向または奥行き値など、ステップ４０６で決定された物体姿勢に基づいて、計算システム１０１によって生成されうる。例えば、物体移動コマンドは、ロボットの手、またはロボットアーム（例えば、３６３）上の他のエンドエフェクターを、物体（例えば、３７１）を操作できる、または他の方法で物体と相互作用できる範囲内へ、かつ物体（例えば、３７１）の配向に合致する配向へ移動させるように決定されうる。実施形態では、移動コマンドによって、例えば、エンドエフェクターをこうした位置および／もしくは配向に置く、回転または他の作動を引き起こしうる。一部の事例では、移動コマンドは、物体姿勢によって提供されてもよい、上で論じた２Ｄ物体座標およびそれらに対応する奥行き値に基づいて生成されてもよい。例えば、物体移動コマンドは、エンドエフェクターが、物体（例えば、３７１）を操作するか、または他の方法で物体と相互作用することが可能になる画定近接レベルにまで、エンドエフェクターを２Ｄ物体座標に近づけさせるように生成されうる。
【０１０９】
実施形態では、物体移動コマンドは、衝突事象を回避するように決定されてもよい。衝突事象は、移動させる物体（例えば、３７１）と、例えば、容器側壁（例えば、図３Ｄの３８４Ａ−５）または容器縁（例えば、３８４Ａ−２）を形成する他の容器境界との衝突を表しうる。一部の事例では、計算システム１０１は、こうした衝突事象を回避する物体移動経路を決定するように構成されてもよい。物体移動経路は、物体（例えば、３７１）を移動させる移動経路であってもよい。物体移動コマンドは、物体移動経路に基づいて生成されてもよい。一部の事例では、ステップ４０６での物体姿勢の正確な決定によって、こうした衝突の回避が容易になりうる。
【０１１０】
上で論じたように、方法４００は、一部の実施形態では、容器（例えば、３８４Ａ）が、既に図３Ｃに示すような開位置にあるシナリオで始まりうる。実施形態では、方法４００は、容器（例えば、３８４Ａ）が、図３Ａおよび図１１Ａに示すような閉位置にあるシナリオで始まりうる。こうした実施形態では、方法４００は、計算システム１０１によって、ロボットアーム（例えば、３６３）を制御して、容器（例えば、３８４Ａ）を開位置へ移動させるステップを含みうる。このように容器を開けるステップは、空間構造情報がステップ４０２で受信される前に発生しうる。
【０１１１】
例えば、図１１Ａおよび１１Ｂは、容器３８４Ａが閉位置にある状況を描写する。こうした状況では、空間構造感知カメラ３５１は、容器３８４Ａの外表面３８４Ａ−７を記述する、すなわち、より具体的には、外表面３８４Ａ−７上の位置を記述する、空間構造情報を生成するように構成されてもよい。この例における空間構造情報は、開いた容器の状況を伴う、ステップ４０２の空間構造情報とは異なってもよい。計算システム１０１は、外表面３８４Ａ−７について記述する空間構造情報に基づいて、容器３８４Ａのハンドル３８４Ａ−６を表す、一つ以上の位置を決定するように構成されうる。さらに、計算システム１０１は、ロボットアーム３６３に、容器３８４Ａを閉位置から開位置へ移動させる容器移動コマンドを、生成および出力するように構成されうる。容器移動コマンドは、ハンドル３８４Ａ−６を表す一つ以上の位置（容器のハンドル位置とも呼ばれる）に基づいて生成されうる。より詳細には、図１１Ｂおよび１１Ｃに示すように、容器移動コマンドによって、容器３８４Ａを開位置へ滑らかに動かすために、ロボットの手３６３Ｄ、またはロボットアーム３６３の他のエンドエフェクターに、ハンドル３８４Ａ−６を引き寄せさせうる。容器３８４Ａが開位置になった後、空間構造感知カメラ３５１は、一部のシナリオで、別の位置に移動して（例えば、センサー移動コマンドによって）、容器表面およびその上に配置される物体に関する空間構造情報を取り込んでもよく、その後、物体姿勢が決定されてもよく、物体姿勢に基づいて物体を移動させてもよい（例えば、物体移動コマンドによって）。
【０１１２】
様々な実施形態に関する追加の考察：
【０１１３】
実施形態１は、通信インターフェースおよび少なくとも一つの処理回路を備える、計算システムに関する。通信インターフェースは、ロボットアーム上に配置された空間構造感知カメラを有する、ロボットアームを備えたロボットと通信するように構成され、空間構造感知カメラは、カメラ視野を有する。少なくとも一つの処理回路は、容器が開位置にある間に、容器内の物体がカメラ視野の中にあるかまたはカメラ視野の中にあったときに、以下の方法を行うように構成され、方法は、カメラ視野中の環境について奥行き情報を含む空間構造情報を受信することであって、空間構造情報が空間構造感知カメラによって生成されること、空間構造情報に基づいて容器姿勢を決定することであって、容器姿勢が、容器の配向、または容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであること、容器姿勢に基づいて物体姿勢を決定することであって、物体姿勢が、物体の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであること、物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、移動コマンドが、物体姿勢に基づいて生成されることである。
【０１１４】
実施形態２は、実施形態１の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体が配置されている容器表面の配向、または容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢として、容器姿勢を決定するように構成される。
【０１１５】
実施形態３は、実施形態２の計算システムを含み、少なくとも一つの処理回路は、容器が容器表面からずれている容器縁を有する引き出しであるときに、容器縁の配向、または容器縁上の少なくとも一つの場所の奥行き値のうちの少なくとも一つを記述するための容器縁の姿勢を決定するように構成され、容器縁の姿勢が、空間構造情報に基づいて決定される。さらに、容器表面の姿勢が、容器縁の姿勢に基づいて、かつ、容器縁と容器表面との間の定義された距離に基づいて決定される。
【０１１６】
実施形態４は、実施形態２または３の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体と関連付けられた容器セグメント識別子（容器表面のセグメントを識別するためのもの）を受信し、容器表面の姿勢に基づいて、容器セグメント識別子と関連付けられた位置を決定するように構成される。
【０１１７】
実施形態５は、実施形態３または４の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、衝突事象を回避する物体移動経路を決定するように構成され、衝突事象が、物体と容器縁を形成する容器境界との衝突を表し、移動コマンドが、物体移動経路に基づいて生成される。
【０１１８】
実施形態６は、実施形態１〜５のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子が物体上に配置されるときに、物体識別子の２Ｄ位置を記述するために、物体識別子の位置を決定し、物体識別子の位置および空間構造情報に基づいて、物体を表す一つ以上の位置である一つ以上の物体位置の集合を決定するように構成され、移動コマンドが、一つ以上の物体位置の集合に基づいて生成される。
【０１１９】
実施形態７は、実施形態６の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子の位置を囲む領域を決定し、物体識別子の位置を囲む決定された領域に対応する、空間構造情報の一部分を検索することによって、一つ以上の物体位置の集合を決定するように構成される。
【０１２０】
実施形態８は、実施形態７の計算システムを含む。この実施形態では、空間構造情報は、カメラ視野中の環境より感知された、一つ以上の表面上にある複数の位置を表す点群を含み、一つ以上の物体位置の集合が検索される空間構造情報の一部分は、物体識別子の位置を囲む決定された領域内に位置する、複数の位置の部分集合を含む。
【０１２１】
実施形態９は、実施形態６〜８のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子の位置を表すための２Ｄ座標である、少なくとも一つの２Ｄ物体識別子の座標を決定し、２Ｄ物体識別子の座標に基づいて、一つ以上の２Ｄ物体座標の少なくとも一つの集合を決定するように構成され、一つ以上の２Ｄ物体座標が、一つ以上の物体位置を表すための、一つ以上のそれぞれの２Ｄ座標であり、移動コマンドが、一つ以上の２Ｄ物体座標の集合に基づいて、かつ物体の配向および奥行き値に基づいて生成される。
【０１２２】
実施形態１０は、実施形態６〜９のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子にコード化された情報に基づいて、物体サイズを決定するように構成され、一つ以上の物体位置が、物体の境界を表し、物体サイズに基づいて決定される。
【０１２３】
実施形態１１は、実施形態６〜１０のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体と関連付けられた物体識別情報を受信し、物体識別子にコード化された情報が、物体識別情報に合致するかどうかを決定するように構成される。
【０１２４】
実施形態１２は、実施形態６〜１１のうちのいずれか一つの計算システムを含む。この実施形態では、物体識別子感知装置が、ロボットアーム上に配置されるときに、少なくとも一つの処理回路は、物体識別子感知装置によって感知された情報に基づいて、物体識別子の位置を決定するように構成される。
【０１２５】
実施形態１３は、実施形態１２の計算システムを含む。この実施形態では、移動コマンドは、ロボットに物体を移動させるための物体移動コマンドであり、少なくとも一つの処理回路は、ロボットアームに、物体識別子感知装置を容器の画定近接レベル内に移動させるための、センサー移動コマンドを出力するように構成され、物体識別子の位置が、センサー移動コマンドの出力後に決定される。
【０１２６】
実施形態１４は、実施形態１３の計算システムを含む。この実施形態では、センサー移動コマンドは、ロボットアームに、空間構造感知カメラを容器の画定近接レベル内に移動させるためのものでもあり、空間構造情報は、空間構造感知カメラが容器の画定近接レベル内にあるときに生成され、物体が配置されている容器表面の一部分を表す。
【０１２７】
実施形態１５は、実施形態１３または１４の計算システムを含む。この実施形態では、容器が閉位置にあり、ハンドルを含むとき、少なくとも一つの処理回路は、容器の外表面上の位置を記述するための空間構造追加情報を受信し、空間構造追加情報に基づいてハンドルを表すための一つ以上のハンドル位置を決定し、ロボットアームに、容器を閉位置から開位置へ移動させるための容器移動コマンドを出力するように構成され、容器移動コマンドが、一つ以上のハンドル位置に基づいて生成され、センサー移動コマンドおよび物体移動コマンドが、容器移動コマンドの後に出力される。
【０１２８】
関連分野の当業者にとって、本明細書に記載する方法および用途への、その他の適切な修正ならびに適応が、実施形態のうちのいずれの範囲から逸脱することなく成すことができることは明らかであろう。上に記載する実施形態は、説明に役立つ実施例であり、本発明がこれらの特定の実施形態に限定されると解釈されるべきではない。本明細書に開示する様々な実施形態は、記載および添付の図に具体的に提示する組み合わせとは異なる組み合わせで、組み合わせてもよいことは理解されるべきである。実施例によって、本明細書に記載するプロセスもしくは方法のいずれのある特定の行為または事象は、異なる順番で行われてもよく、追加、統合、または完全に省略してもよいことも理解されるべきである（例えば、記載したすべての行為または事象は、方法またはプロセスを実施するのに必要ではない場合がある）。加えて、本明細書の実施形態のある特定の特徴を、明確にするために、単一の構成要素、モジュール、またはユニットにより行われていると記載しているものの、本明細書に記載する特徴および機能は、構成要素、モジュール、またはユニットのいかなる組み合わせによって行われてもよいことは理解されるべきである。したがって、添付の特許請求の範囲に定義するような、発明の精神または範囲から逸脱することなく、当業者によって様々な変更および修正に影響を与えうる。
【要約】
【課題】撮像ノイズまたは測定誤差の他の起源に対してより堅牢で耐性のある、物体姿勢を決定する。
【解決手段】物体検出を行うためのシステムによって、空間構造感知カメラのカメラ視野中にあるか、またはその中にあった物体と関連付けられた空間構造情報を受信する。空間構造情報は、空間構造感知カメラによって生成され、カメラ視野中の環境について奥行き情報を含む。システムによって、空間構造情報に基づいて容器姿勢を決定し、容器姿勢は、容器の配向、または容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものである。システムによってさらに、容器姿勢に基づいて物体姿勢を決定し、物体姿勢は、物体の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものである。
【選択図】図４【図１Ａ】
0006796901.tif 000002
【図１Ｂ】
0006796901.tif 000003
【図１Ｃ】
0006796901.tif 000004
【図１Ｄ】
0006796901.tif 000005
【図１Ｅ】
0006796901.tif 000006
【図２Ａ】
0006796901.tif 000007
【図２Ｂ】
0006796901.tif 000008
【図２Ｃ】
0006796901.tif 000009
【図３Ａ】
0006796901.tif 000010
【図３Ｂ】
0006796901.tif 000011
【図３Ｃ】
0006796901.tif 000012
【図３Ｄ】
0006796901.tif 000013
【図４】
0006796901.tif 000014
【図５Ａ】
0006796901.tif 000015
【図５Ｂ】
0006796901.tif 000016
【図５Ｃ】
0006796901.tif 000017
【図６Ａ】
0006796901.tif 000018
【図６Ｂ】
0006796901.tif 000019
【図６Ｃ】
0006796901.tif 000020
【図６Ｄ】
0006796901.tif 000021
【図６Ｅ】
0006796901.tif 000022
【図６Ｆ】
0006796901.tif 000023
【図７Ａ】
0006796901.tif 000024
【図７Ｂ】
0006796901.tif 000025
【図７Ｃ】
0006796901.tif 000026
【図８】
0006796901.tif 000027
【図９】
0006796901.tif 000028
【図１０】
0006796901.tif 000029
【図１１Ａ】
0006796901.tif 000030
【図１１Ｂ】
0006796901.tif 000031
【図１１Ｃ】
0006796901.tif 000032