(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも一つの処理回路は、前記物体が配置されている容器表面の配向、または前記容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢として、前記容器姿勢を決定するように構成される、請求項1に記載の計算システム。
前記少なくとも一つの処理回路は、前記容器が、前記容器表面からずれている容器縁を有する引き出しであるときに、前記容器縁の配向、または前記容器縁上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器縁の姿勢を決定するように構成され、
前記容器縁の姿勢が、前記空間構造情報に基づいて決定され、
前記容器表面の姿勢が、前記容器縁の姿勢に基づいて、かつ、前記容器縁と前記容器表面との間の定義された距離に基づいて決定される、請求項2に記載の計算システム。
物体識別子感知装置が前記ロボットアーム上に配置されているときに、前記少なくとも一つの処理回路は、前記物体識別子感知装置によって感知された情報に基づいて、前記物体識別子位置を決定するように構成される、請求項6に記載の計算システム。
計算システムによって、空間構造情報を受信することであって、前記計算システムは、ロボットアーム上に配置されたカメラ視野を持つ空間構造感知カメラを有する、前記ロボットアームを備えたロボットと通信するように構成され、前記空間構造情報は、前記空間構造感知カメラによって生成され、前記空間構造情報は、前記カメラ視野中の環境について奥行き情報を含み、容器が開位置にある間に、前記容器内の物体が前記カメラ視野の中にあるかまたは前記カメラ視野の中にあったときに生成されることと、
前記空間構造情報に基づいて容器姿勢を決定することであって、前記容器姿勢が、前記容器の配向、または前記容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記容器姿勢に基づいて物体姿勢を決定することであって、前記物体姿勢が、前記物体の配向、または前記物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであることと、
前記物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、前記移動コマンドが、前記物体姿勢に基づいて生成されることと、
を含む、物体検出のための方法。
前記容器姿勢を決定することは、前記物体が配置されている容器表面の配向、または前記容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢を決定することを含む、請求項19に記載の方法。
【発明を実施するための形態】
【0020】
本開示の一つの態様は、容器内に配置された商品もしくは他の任意の物体など、引き出しまたは他の容器の内容物とのロボット相互作用を容易にすることに関する(「または」「もしくは」という用語を、本明細書では、「および/または」「および/もしくは」「ならびに/または」を指すために使用されうる)。ロボット相互作用は、例えば、ロボットの手で容器内に配置された物体をつかむか、または他の方法で拾い上げることを含みうる。ロボット相互作用は、例えば、倉庫、小売空間、またはいかなる他の環境においても発生しうる。一部の事例では、ロボット相互作用を容易にすることには、容器内の物体の姿勢を決定することを伴い、姿勢は、カメラもしくは何らかの他の基準点に対する、物体の配向または奥行きのうちの少なくとも一つを指してもよく、そのため、ロボットの手を適切に動かして、物体を回収するか、またはそうでなければ拾い上げることができる。
【0021】
様々な実施形態は、開けられた容器についての情報が決定される、開いている容器の検出を行うことによって、物体の姿勢(物体姿勢とも呼ばれる)を決定することに関し、物体は容器内に配置されていてもよい。これらの実施形態によって、例えば、撮像ノイズまたは測定誤差の他の起源に対してより堅牢で耐性のある、物体姿勢を決定する様式を提供しうる。撮像ノイズは、例えば、物体を測定するために使用される、点群または他の空間構造情報に影響を与えうる。点群に持ち込まれる測定誤差は、例えば、物体の配向および/または奥行きの誤った決定を引き起こす場合がある。一部の事例では、数ミリメートルまたは数度の誤差であっても、一部の状況で、ロボットの手と物体との間の相対位置決定に関して、ミリメートルレベルまたはより優れた精度に依存しうる、ロボット相互作用に影響を与える場合がある。物体の測定誤差が、こうした精度を妨げるか、または邪魔することがあるため、本開示の一つの態様は、物体が中に配置されている容器に関する測定値の使用と、物体に関する姿勢もしくは他の情報を推定するか、または他の方法で決定するためのこのような測定値の使用とに関する。
【0022】
一部の事例では、撮像ノイズはまた、物体が配置されている表面(表面は容器表面と呼ばれてもよい)など、容器の一部分の直接測定にも影響を与えうる。本開示の一つの態様は、容器の縁(容器縁とも呼ばれる)など、容器の別の部分を測定することによって、容器表面に影響を与える測定誤差の補正に関する。これらの場合、容器縁は、撮像ノイズによる影響がより少ない空間を占める場合があり、したがって、より信頼性の高いまたは信頼できる測定値を得ることができる。容器縁に関する測定値は、容器表面に関する姿勢もしくは他の情報を推測するか、または他の方法で決定するために使用されうる。こうした決定は、例えば、容器表面および容器縁を分離する、既知の間隔に基づいてもよい。
【0023】
一部の事例では、容器に関する測定値は、容器からの物体回収に関与する動作の計画など、動作を計画するために使用されうる。例えば、容器縁に関する測定値は、容器の側壁がどこに位置するかに関する情報を提供しうる。ロボットが容器から物体を回収するとき、容器の側壁とロボットまたは物体との衝突を回避するために、物体移動経路が計画されうる。一部の事例では、容器に関する測定値は、以下でより詳細に論じるように、容器を異なるセグメントに仮想上で分割するために使用されうる。
【0024】
一部の事例では、物体とのロボット相互作用を容易にすることは、物体上に配置された物体識別子(存在する場合)に関する情報の使用に依存しうる。物体識別子は、バーコード、ロゴ、もしくは記号(例えば、英数字記号)などの視覚マーク、または物体を識別する他の視覚的パターンを含みうる。一部の例では、物体識別子は物体の表面上に印刷されてもよい。一部の事例では、物体識別子は、ステッカー、または物体に付着するか、もしくは他の方法で配置されている他の材料の層に印刷されうる。物体が一つ以上の品目を保持する箱である場合、物体識別子によって、一つ以上の品目を識別し、または、より広くは、箱の内容物を識別することができる。ロボット相互作用を容易にするために使用される物体識別子に関する情報には、例えば、物体識別子の場所(物体識別子の位置とも呼ばれる)、またはバーコードにコード化された情報など、物体識別子にコード化される情報が含まれうる。一部の例では、物体識別子の位置は、特定の物体を検出するために、点群または他の空間構造情報のどの部分を検索すべきかを絞り込むように使用されうる。例えば、物体識別子がバーコード位置である場合、こうした検索は、バーコード位置を囲む領域に対応する、点群の一部分に限定されうる。このような実施形態によって、物体についてより集中的で効率的な検索が容易になりうる。一部の事例では、物体サイズが、バーコードまたは他の物体識別子にコード化されている場合、その情報を使用して、点群もしくは他の空間構造情報から物体を検索するか、またはロボットがどのようにつかむかを計画するか、もしくは他の方法でロボットと相互作用しうる。
【0025】
図1Aは、以下でより詳細に論じるように、物体検出のために空間構造情報を処理するシステム100を示す。
図1Aの実施形態では、システム100は、計算システム101および空間構造感知カメラ151(空間構造感知装置151とも呼ばれる)を含みうる。この例では、空間構造感知カメラ151は、空間構造感知カメラ151が位置する環境について、すなわち、より具体的には、カメラ151の視野(カメラ視野とも呼ばれる)中の環境についての奥行き情報を含む、空間構造情報(空間情報または空間構造データとも呼ばれる)を生成するように構成されうる。
図1Aの計算システム101は、空間構造情報を受信し処理するように構成されうる。例えば、計算システム101は、空間構造情報の奥行き情報を使用して、カメラ視野中の異なる構造を区別するように、または、より広くは、カメラ視野中の一つ以上の構造を識別するように構成されうる。この例の奥行き情報は、一つ以上の構造が、三次元(3D)空間の中で空間的にどのように配設されているかの推定を決定するために使用されうる。
【0026】
一つの例では、空間構造感知カメラ151は、倉庫、小売空間(例えば、店舗)、または他の施設の中に位置してもよい。こうした例では、倉庫または小売空間は、様々な商品または他の物体を含んでもよい。空間構造感知カメラ151を使用して、物体について、および/または引き出しもしくは他のタイプの容器など、物体を包含する構造についての情報を感知しうる。上述のように、空間構造感知カメラ151は、例えば、一つの商品の構造および/または容器の構造が、3D空間の中にどのように配設されるかを説明しうる、空間構造情報を生成するように構成されうる。こうした例の計算システム101は、空間構造感知カメラ151から空間構造情報を受信し処理するように構成されうる。計算システム101は、同じ施設に位置してもよく、または遠隔に位置してもよい。例えば、計算システム101は、倉庫または小売空間から遠隔のデータセンターでホストされる、クラウドコンピューティングプラットフォームの一部であってもよく、ネットワーク接続を介して、空間構造感知カメラ151と通信していてもよい。
【0027】
実施形態では、システム100は、空間構造感知カメラ151の環境で様々な物体と相互作用するための、ロボット運用システムであってもよい。例えば、
図1Bは、
図1Aのシステム100の実施形態でありうる、ロボット運用システム100Aを示す。ロボット運用システム100Aは、計算システム101、空間構造感知カメラ151、およびロボット161を含みうる。実施形態では、ロボット161は、空間構造感知カメラ151の環境の中にある一つ以上の物体、例えば、商品または倉庫の中の他の物体と相互作用するために使用されうる。例えば、ロボット161は、引き出しまたは他の容器から商品を取り出し、商品を容器から別の位置(例えば、引き出しの外側にあるコンベヤベルト)へと移動させるように構成されてもよい。
【0028】
実施形態では、
図1Aおよび1Bの計算システム101は、ロボット運用システム100Aの一部である、ロボット制御システム(ロボットコントローラとも呼ばれる)を形成しても、またはその一部であってもよい。ロボット制御システムは、例えば、ロボット161に対する移動コマンドまたは他のコマンドを生成するように構成される、システムであってもよい。こうした実施形態では、計算システム101は、例えば、空間構造感知カメラ151によって生成された空間構造情報に基づいて、このようなコマンドを生成するように構成されてもよい。実施形態では、計算システム101は、視覚システムを形成してもよく、またはその一部であってもよい。視覚システムは、例えば、ロボット161が位置する環境を記述する、すなわち、より具体的には、空間構造感知カメラ151が位置する環境を記述する、視覚情報を生成するシステムであってもよい。視覚情報は、3D空間で構造がどのように展開されているか、またはそうでなければ配設されているかを示すことができるため、3D情報または3D撮像情報とも呼ばれうる、空間構造情報を含んでもよい。一部の事例では、ロボット161は、ロボットの手、またはロボットアームの一方の端を形成する他のエンドエフェクターを有する、ロボットアームを含んでもよく、空間構造情報は、計算システム101によって使用されて、ロボットの手の配置を制御しうる。一部の事例では、計算システム101が、視覚システムを形成する場合、視覚システムは、上で論じたロボット制御システムの一部であってもよく、またはロボット制御システムから分離していてもよい。視覚システムは、ロボット制御システムから分離している場合、ロボット161が位置する環境に関する情報を出力するように構成されうる。こうした例のロボット制御システムは、このような情報を受信し、情報に基づいてロボット161の動作を制御しうる。
【0029】
実施形態では、システム100は、バーコード感知装置(バーコードリーダーとも呼ばれる)などの、物体識別子感知装置152を含んでもよい。より詳細には、
図1Cが、計算システム101、空間構造感知カメラ151、ロボット161を含み、さらに物体識別子感知装置152も含む、システム100B(システム100/100Aの実施形態である)を描写する。一部の事例では、物体識別子感知装置152は、物体上またはそれに隣接して配置される、物体識別子を検出するように構成されてもよい。上述のように、物体識別子は、物体を識別する視覚マークであってもよい。物体が、箱、または商品もしくは何らかの他の品目を保持するための他の物体である場合、物体識別子は、実施形態では、箱の品目または他の内容物を識別することができる。また上述のように、物体識別子は、一部の例ではバーコードであってもよい。一部の例では、バーコードは、一連の黒い縞模様もしくはずらりと並んだ黒の正方形(例えば、QRコード(登録商標))などの分布様式、または物体識別子感知装置152(例えば、バーコード感知装置)の視野中の任意の他のバーコードを有してもよい。例えば、バーコードは、一つの商品または倉庫の中にある他の物体上に配置されてもよい。物体識別子感知装置152は、物体識別子についての情報を感知するように構成されてもよい。この情報(物体識別子感知情報とも呼ばれうる)には、物体識別子にコード化された情報、物体識別子の場所(物体識別子の位置とも呼ばれる)、または物体識別子に関するいかなる他の情報も含めることができる。物体識別子がバーコードである場合、バーコードにコード化された情報には、例えば、最小在庫管理単位(SKU)コードまたは統一商品コード(UPC)が含まれうる。
【0030】
実施形態では、物体識別子感知装置152および/または空間構造感知カメラ151は、倉庫または小売空間内で固定された実装点などの固定実装点に取り付けられてもよい。実施形態では、空間構造感知カメラ151および/または物体識別子感知装置152は、ロボット161のロボットアームに取り付けられてもよい。より具体的な例では、物体識別子感知装置152および/または空間構造感知カメラ151は、ロボットの手、もしくはロボットアームの一方の端を形成する他のエンドエフェクターに取り付けられてもよく、またはその上に配置(またはその近くに配置)されてもよい。こうした例では、物体識別子感知装置152および空間構造感知カメラ151は、それぞれ手元物体識別子感知装置(例えば、手元バーコードリーダー)および手元空間構造感知カメラと呼ばれる場合がある。一部の事例では、計算システム101は、以下でより詳細に論じるように、手元空間構造感知カメラおよび/または手元物体識別子感知装置を、ロボット161の環境を感知するのに最適な位置へ移動させるように、ロボット161を制御するよう構成されうる。
【0031】
実施形態では、計算システム101がロボット制御システムの一部である場合、計算システム101は、以下でより詳細に論じるように、ロボット161の動きを制御する一つ以上の移動コマンドを生成するように構成されうる。これらの移動コマンドには、例えば、物体移動コマンド、センサー移動コマンド、および容器移動コマンドが含まれうる。センサー移動コマンドは、空間構造感知カメラ151および/または物体識別子感知装置152を移動させるように使用されうる。容器移動コマンドは、容器を開けるか、または閉じる移動コマンドなど、商品または他の物体を包含する容器を動かすために使用されうる。物体移動コマンドは、商品、または倉庫もしくは他の施設の中にある他の物体、すなわち、より具体的には、容器の中に配置されている物体を移動させるために使用されてもよい。
【0032】
実施形態では、システム100の構成要素は、ネットワークおよび/または記憶装置を介して通信するように構成されてもよい。より詳細には、
図1Dが、
図1A〜1Cのシステム100/100A/100Bの実施形態である、システム100Cを描写する。システム100Cは、計算システム101、空間構造感知カメラ151、ロボット161、物体識別子感知装置152を含み、さらにネットワーク199、および計算システム101から分離しているデータ記憶装置198(またはいかなる他のタイプの非一時的コンピュータ可読媒体)を含む。一部の例では、記憶装置198は、物体識別子感知装置152、空間構造感知カメラ151、および/またはロボット161によって生成される情報を記憶し、記憶された情報を計算システム101が利用できるように構成されうる。こうした例では、計算システム101は、データ記憶装置198から情報を読み出す(またはより広くは、受信する)ことによって、記憶された情報にアクセスするように構成されてもよい。
【0033】
図1Dでは、記憶装置198は、また非一時的コンピュータ可読記憶装置と呼んでもよい、いかなるタイプの非一時的コンピュータ可読媒体(または複数の媒体)を含んでもよい。こうした非一時的コンピュータ可読媒体または記憶装置は、記憶情報(記憶データとも呼ぶ)を記憶し、記憶情報へのアクセスを提供するように構成されうる。非一時的コンピュータ可読媒体または記憶装置の例としては、例えば、コンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消却可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、ソリッドステートドライブ、スタティックランダムアクセスメモリ(SRAM)、携帯型コンパクトディスク読み取り専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、および/またはメモリスティックなど、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはそれらのいかなる適切な組み合わせが挙げられうるが、これらに限定されない。
【0034】
実施形態では、ネットワーク199によって、計算システム101、空間構造感知カメラ151、物体識別子感知装置152、および/またはロボット161間の通信を容易にしうる。例えば、計算システム101および/または記憶装置198は、ネットワーク199を介して、空間構造感知カメラ151および/または物体識別子感知装置152(例えば、空間構造情報または物体識別子感知情報)によって生成される情報を受信してもよい。こうした例では、計算システム101は、もう一つのコマンド(例えば、移動コマンド)を、ネットワーク199を介してロボット161へ提供するように構成されてもよい。ネットワーク199によって、計算システム101が、本明細書の実施形態と一致して、情報を受信しおよび/またはコマンドを出力することが可能になるように、個々のネットワーク接続または一連のネットワーク接続が提供されてもよい。
【0035】
図1Dでは、ネットワーク199に、有線または無線リンクを介して接続してもよい。有線リンクには、デジタル加入者回線(DSL)、同軸ケーブル回線、または光ファイバ回線が含まれてもよい。無線リンクには、Bluetooth(登録商標)、Bluetooth Low Energy(BLE)、ANT/ANT+、ZigBee、Z−Wave、Thread、Wi−Fi(登録商標)、Worldwide Interoperability for Microwave Access(WiMAX(登録商標))、モバイルWiMAX(登録商標)、WiMAX(登録商標)−Advanced、NFC、SigFox、LoRa、Random Phase Multiple Access(RPMA)、Weightless−N/P/W、赤外線チャネル、または衛星バンドが含まれてもよい。無線リンクはまた、2G、3G、4G、または5Gの資格がある規格を含む、モバイル機器間を通信する、いかなるセルラーネットワーク規格が含まれてもよい。無線規格は、例えば、FDMA、TDMA、CDMA、OFDM、またはSDMAといった、様々なチャネルアクセス方法を使用してもよい。一部の実施形態では、異なるタイプの情報を、異なるリンクおよび規格によって伝送してもよい。他の実施形態では、同じタイプの情報を、異なるリンクおよび規格によって伝送してもよい。ネットワーク通信は、例えば、http、tcp/ip、udp、イーサネット、ATMなどを含む、いかなる適切なプロトコルによって実施されてもよい。
【0036】
ネットワーク199は、いかなるタイプのおよび/または形態のネットワークであってもよい。ネットワークの地理的範囲は大きく異なってもよく、ネットワーク199は、ボディエリアネットワーク(BAN)、パーソナルエリアネットワーク(PAN)、例えば、イントラネットといったローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、またはインターネットでありうる。ネットワーク199のトポロジーは、いかなる形態であってもよく、例えば、次の、ポイントツーポイント、バス、スター、リング、メッシュ、またはツリーのうちのいずれを含んでもよい。ネットワーク199は、本明細書に記載する動作をサポートできる、当業者に既知であるような、いかなるこうしたネットワークトポロジーから成ってもよい。ネットワーク199は、例えば、イーサネットプロトコル、インターネットプロトコル群(TCP/IP)、ATM(Asynchronous Transfer Mode)技術、SONET(Synchronous Optical Networking)プロトコル、またはSDH(Synchronous Digital Hierarchy)プロトコルを含む、プロトコルの異なる技術、および層またはスタックを利用してもよい。TCP/IPインターネットプロトコル群は、アプリケーション層、トランスポート層、インターネット層(例えば、IPv4およびIPv4を含む)、またはリンク層を含んでもよい。ネットワーク199は、放送ネットワーク、電気通信ネットワーク、データ通信ネットワーク、またはコンピュータネットワークの1タイプであってもよい。
【0037】
実施形態では、計算システム101、空間構造感知カメラ151、物体識別子感知装置152、および/またはロボット161は、ネットワーク接続ではなく直接接続によって、互いと通信可能でありうる。例えば、こうした実施形態の計算システム101は、空間構造感知カメラ151および/または物体識別子感知装置152から、RS−232インターフェース、ユニバーサルシリアルバス(USB)インターフェースなどの専用有線通信インターフェース、および/または周辺構成要素相互接続(PCI)バスなどのローカルコンピュータバスを介して、情報を受信するように構成されてもよい。
【0038】
実施形態では、空間構造感知カメラ151によって生成される空間構造情報は、構造が三次元(3D)空間などの空間にどのように展開されているか、またはそうでなければ配設されているかを記述する、任意のタイプの情報を指しうる。より詳細には、空間構造情報は、構造の3Dレイアウト、または3D空間の中にある構造の3D配置もしくは配列を記述しうる。構造は、例えば、空間構造感知カメラ151の環境もしくは視野の中にある容器に、または容器内に配置された物体に属しうる。一部の事例では、空間構造情報は、構造が3D空間の中でどのように配向するかを示しうる。一部の事例では、空間構造情報は、構造上、すなわち、より具体的には構造の一つ以上の表面上にある、一つ以上の位置の一つ以上のそれぞれの奥行き値を示す、奥行き情報を含みうる。特定位置の奥行き値は、空間構造感知カメラ151に対してか、または何らかの他の基準フレーム(例えば、倉庫もしくは小売空間の天井または壁)に対するものでありうる。一部の事例では、奥行き値は、空間構造感知カメラ151が位置する仮想平面に直交する、軸に沿って測定されてもよい。例えば、空間構造感知カメラ151が、画像センサーを有する場合、仮想平面は、画像センサーによって画定される画像平面であってもよい。実施形態では、空間構造情報は、構造の輪郭、または、より広くは、境界を決定するために使用されてもよい。輪郭は、例えば、容器もしくは容器の一部分、または容器の中の物体の輪郭でありうる。例えば、空間構造情報は、奥行き値に明らかな不連続性がある、一つ以上の位置を検出するために使用されてもよく、こうした位置は、構造の境界(例えば、エッジ)を示しうる。一部の例では、構造の境界は、その形状またはサイズを決定するために使用されうる。
【0039】
一部の事例では、空間構造情報は、奥行きマップを含んでもよく、または奥行きマップを形成してもよい。奥行きマップは、カメラ視野中の一つ以上の構造上の位置など、カメラ視野中の様々な位置を表すか、または他の方法でそれらの位置に対応する、複数のピクセルを持つビットマップであってもよい。こうした場合、ピクセルの一部またはすべては各々、そのピクセルによって表されるか、または他の方法でそのピクセルに対応する、それぞれの位置の奥行きを示す、それぞれの奥行き値を有しうる。一部の事例では、奥行きマップは、カメラ視野中にある一つ以上の構造の2D外観を記述する、2D画像情報を含みうる。例えば、奥行きマップは2D画像を含みうる。こうした例では、奥行きマップのピクセルの各々は、ピクセルによって表されるか、もしくは他の方法でピクセルに対応する位置に反射する可視光の量を示す、色強度値またはグレースケール強度値をさらに含みうる。
【0040】
実施形態では、空間構造情報は点群であってもよく、または点群を含んでもよい。点群によって、容器の構造および/または容器の中にある物体の構造など、一つ以上の構造を記述する複数の位置を識別しうる。一部の事例では、複数の点は、一つ以上の構造の一つ以上の表面上にある、それぞれの位置でありうる。一部の事例では、点群は、複数の点を識別する、または他の方法で記述する、複数の座標(例えば、3D座標)を含みうる。例えば、点群は、一つ以上の構造のそれぞれの位置もしくは他の特徴を指定する、一連のデカルト座標または極座標(または他のデータ値)を含みうる。それぞれの座標は、空間構造感知カメラ151の基準フレーム(例えば、座標系)に関して、または何らかの他の基準フレームに関して表示されてもよい。一部の事例では、それぞれの座標は離散しており、相互に間隙を介しているが、一つ以上の構造の一つ以上の接触面を表すと理解されうる。実施形態では、点群は、奥行きマップまたは他の情報から(例えば、計算システム101によって)生成されうる。
【0041】
一部の実施形態では、空間構造情報はさらに、例えば、ポリゴンまたは三角形メッシュモデル、非一様有理Bスプラインモデル、CADモデル、プリミティブのパラメータ化(例えば、長方形はx、y、およびzの方向の中点ならびに伸長部に従って画定されてもよく、円柱は中心、高さ、上半径、および下半径によって画定されうるなど)など、いかなる適切な形式に従って記憶されうる。
【0042】
上述のように、空間構造情報は、空間構造感知カメラ151によって取り込まれるか、または他の方法で生成される。実施形態では、空間構造感知カメラ151は、3Dカメラもしくはいかなる他の3D画像感知装置であってもよく、またはそれを含んでもよい。3Dカメラは、飛行時間(TOF)カメラもしくは構造化光カメラなどの、奥行き感知カメラ、またはいかなる他のタイプの3Dカメラであってもよい。一部の事例では、3Dカメラは、電荷結合素子(CCD)センサーおよび/または相補型金属酸化膜半導体(CMOS)センサーなど、画像センサーを含みうる。実施形態では、空間構造感知カメラ151は、レーザー、LIDAR装置、赤外線装置、明/暗センサー、モーションセンサー、マイクロ波検出器、超音波検出器、レーダー検出器、または空間構造情報を取り込むように構成されるいかなる他の装置をも含みうる。
【0043】
上述のように、物体識別子感知装置152は、物体識別子を感知し、バーコードを記述する感知されるバーコード情報など、物体識別子感知情報を生成するように構成されてもよい。物体識別子感知情報は、例えば、物体識別子(例えば、バーコード位置)、物体識別子にコード化された情報、または何らかの他の物体識別子情報を記述しうる。物体識別子感知装置152がバーコード感知装置である場合、バーコード感知装置は、一部の事例では、バーコードの黒い縞模様もしくは黒の正方形によって占められる領域など、バーコードの領域に向かって光もしくは他の信号を放出するように構成された、レーザーまたはフォトダイオードを含んでもよく、領域から反射される光または他の信号の量を測定するように構成された、センサーを含んでもよい。一部の事例では、
図1Eに描写するように、物体識別子感知装置152は2Dカメラ153を含みうる。2Dカメラ153には、例えば、グレースケールカメラまたはカラーカメラを含みうる。2Dカメラ153は、視野中の物体上にあるバーコードもしくは任意の他の物体識別子(存在する場合)の外観を含む、2Dカメラ153の視野の中にある環境の視覚的外観を記述するか、もしくは他の方法で表す2D撮像情報を取り込むか、または他の方法で生成するように構成されうる。こうした2Dカメラ153は、例えば、電荷結合素子(CCD)センサーおよび/または相補型金属酸化膜半導体(CMOS)センサーなどの、画像センサーを含みうる。一部の事例では、2D画像情報は、2D画像を形成する複数のピクセルを含みうる。2D画像情報の各ピクセルは、例えば、ピクセルに対応する位置に反射する光の強度、または他の特性を表す場合がある。一部の事例では、2Dカメラ153は、2D画像内のバーコードまたは他の物体識別子を検出し、物体識別子に基づいて物体識別子感知情報を生成するように構成された、処理回路を含みうる。一部の事例では、空間構造情報に、2D画像情報を有する奥行きマップが含まれる場合、2D画像情報は、2Dカメラ153によって生成されうる。
【0044】
実施形態では、空間構造感知カメラ151および物体識別子感知装置152は、単一の装置に統合されてもよい。例えば、それら装置は、単一の筐体によって囲まれてもよく、固定された相対位置および相対的配向を有してもよい。一部の事例では、それら装置は、単一の通信インターフェースおよび/または単一の電源を共有してもよい。実施形態では、空間構造感知カメラ151および物体識別子感知装置152は、以下でより詳細に論じるように、ロボット161のロボットアームなど、ロボット161へ嵌め込まれるか、または他の方法で取り付けられる、二つの分離した装置であってもよい。
【0045】
上述のように、空間構造情報および/または物体識別子感知情報は、計算システム101によって処理されてもよい。実施形態では、計算システム101は、サーバ(例えば、一つ以上のサーバブレード、プロセッサなどを有する)、パーソナルコンピュータ(例えば、デスクトップコンピュータ、ノートパソコンなど)、スマートフォン、タブレットコンピューティング装置、および/もしくは他のいかなる他の計算システムを含んでもよく、またはそれらとして構成されてもよい。実施形態では、計算システム101の機能性のすべては、クラウドコンピューティングプラットフォームの一部として行われてもよい。計算システム101は、単一の計算装置(例えば、デスクトップコンピュータ)であってもよく、または複数の計算装置を含んでもよい。
【0046】
図2Aは、計算システム101の実施形態を示す、ブロック図を提供する。計算システム101は、少なくとも一つの処理回路110および非一時的コンピュータ可読媒体(または複数の媒体)120を含む。実施形態では、処理回路110は、一つ以上のプロセッサ、一つ以上の処理コア、プログラマブルロジックコントローラ(「PLC」)、特定用途向け集積回路(「ASIC」)、プログラマブルゲートアレイ(「PGA」)、フィールドプログラマブルゲートアレイ(「FPGA」)、それらのいかなる組み合わせ、またはいかなる他の処理回路を含む。実施形態では、非一時的コンピュータ可読媒体120は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはそれらのいかなる適切な組み合わせなどの記憶装置であり、例えば、コンピュータディスケット、ハードディスク、ソリッドステートドライブ(SSD)、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消却可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、スタティックランダムアクセスメモリ(SRAM)、携帯型コンパクトディスク読み取り専用メモリ(CD−ROM)、デジタル多目的ディスク(DVD)、メモリスティック、それらのいかなる組み合わせ、またはいかなる他の記憶装置などであってもよい。一部の例では、非一時的コンピュータ可読媒体は、複数の記憶装置を含みうる。特定の事例では、非一時的コンピュータ可読媒体120は、空間構造感知カメラ151によって生成される空間構造情報、および/または物体識別子感知装置152によって生成される物体識別子感知情報を記憶するように構成される。特定の事例では、非一時的コンピュータ可読媒体120はさらに、処理回路110によって実行されるときに、処理回路110に、
図4に関連して記載する操作など、本明細書に記載する一つ以上の手法を行わせる、コンピュータ可読プログラム命令を記憶する。
【0047】
図2Bは、計算システム101の実施形態であり、通信インターフェース130を含む、計算システム101Aを描写する。通信インターフェース130は、
図1Dの記憶装置198および/もしくはネットワーク199を介して、または空間構造感知カメラ151から、もしくは物体識別子感知装置152からより直接的接続を介してなど、例えば、空間構造感知カメラ151によって生成される空間構造情報、および/または物体識別子感知装置152によって生成される物体識別子感知情報(例えば、感知されるバーコード情報)を受信するように構成されてもよい。実施形態では、通信インターフェース130は、
図1Bのロボット161と通信するように構成されうる。計算システム101が、ロボット制御システムの一部でない場合、計算システム101の通信インターフェース130は、ロボット制御システムと通信するように構成されうる。通信インターフェース130は、例えば、有線または無線プロトコルによって通信を行うように構成される通信回路を含みうる。例として、通信回路は、RS−232ポートコントローラ、USBコントローラ、イーサネットコントローラ、Bluetooth(登録商標)コントローラ、PCIバスコントローラ、いかなる他の通信回路、またはそれらの組み合わせを含んでもよい。
【0048】
実施形態では、処理回路110は、非一時的コンピュータ可読媒体120に記憶される、一つ以上のコンピュータ可読プログラム命令によってプログラムされてもよい。例えば、
図2Cは、計算システム101/101Aの実施形態である計算システム101Bを示し、その中の処理回路110は、以下でより詳細に論じる、容器検出モジュール、物体検出モジュール204、および/または動作計画モジュール206を含む、一つ以上のモジュールによってプログラムされる。
【0049】
実施形態では、容器検出モジュール202は、引き出しなどの容器を検出するように、すなわち、より具体的には、配向および/もしくは奥行きなど、引き出しが3D空間の中でどのように配設されているかについての情報を決定するように構成されてもよい。以下でより詳細に論じるように、容器検出モジュール202は、少なくとも空間構造情報を使用して、こうした決定をするように構成されうる。一部の事例では、容器検出モジュール202は、底部の内表面など、引き出しの特定部分が3D空間の中でどのように配設されているかを決定しうる。一部の実施では、容器検出モジュール202は、縁など、引き出しの別の部分が3D空間の中でどのように配設されているかに基づいて、底部の内表面が3D空間の中でどのように配設されているかを決定するように構成されうる。
【0050】
実施形態では、物体検出モジュール204は、引き出しの底部内表面上に配置された一つの商品など、容器内にある物体を検出するように、すなわち、より具体的には、物体の配向および/または奥行きなど、物体が3D空間の中でどのように配設されているかを決定するように構成されうる。一部の事例では、物体検出モジュール204は、引き出しまたは他の容器が、3D空間の中でどのように配設されているかに関して、容器検出モジュール202によって生成される情報に基づいて、このような決定を行うことができる。一部の事例では、物体検出モジュール204は、以下でより詳細に論じるように、物体識別子感知情報(例えば、感知されるバーコード情報)を使用して、物体および/または物体のサイズを識別するように構成されうる。
【0051】
実施形態では、動作計画モジュール206は、容器内の物体と相互作用するために、ならびに/または空間構造感知カメラ151および/もしくは物体識別子感知装置152を動かすために、容器と相互作用するためのロボットの動作を決定するように構成されうる。例えば、ロボットの動作は、容器から物体をつかむか、または他の方法で拾い上げ、物体をその他の場所に移動させる、ロボット操作の一部であってもよい。ロボットの動作は、例えば、物体が3D空間の中でどのように配設されているかに関しては、物体検出モジュール204によって、および/または容器が3D空間の中でどのように配置されているかに関しては、容器検出モジュール202によって生成された情報に基づいて決定されうる。本明細書で論じるモジュールの機能性は、代表的なものであり、限定ではないことは理解されるであろう。
【0052】
様々な実施形態では、「コンピュータ可読命令」および「コンピュータ可読プログラム命令」という用語は、様々なタスクおよび操作を遂行するように構成される、ソフトウェア命令またはコンピュータコードを記述するために使用される。様々な実施形態では、「モジュール」という用語は、処理回路110に一つ以上の機能タスクを行わせるように構成される、ソフトウェア命令またはコードの集まりを広く指す。モジュールおよびコンピュータ可読命令は、処理回路または他のハードウェアコンポーネントが、モジュールまたはコンピュータ可読命令を実行しているときに、様々な操作またはタスクを行うものとして説明されうる。一部の事例では、モジュールおよびコンピュータ可読命令は、容器検出を行うための方法を実施し、容器検出に基づいてロボット相互作用を計画しうる。
【0053】
図3A〜3Cは、容器検出および/またはロボット相互作用の方法が発生しうる環境を示す。より具体的には、
図3Aは、計算システム101、ロボット361、および空間構造感知カメラ351(空間構造感知カメラ151の実施形態でありうる)を含む、システム300(
図1A〜1Eのシステム100/100A/100B/100Cの実施形態でありうる)を描写する。実施形態では、ロボット361は、ベース362およびロボットアーム363を含みうる。ベース362は、ロボット361を嵌め込むために使用されうる一方、ロボットアーム363は、ロボット361の環境と相互作用するために使用されうる。実施形態では、ロボットアーム363は、互いに対して動かすことが可能な複数のアーム部分を含みうる。例えば、
図3Aは、互いに対して回転可能および/または伸張可能なアーム部分363A、363B、363C、および363Dを示す。例えば、ロボットアーム363は、ベース362に対してアーム部分363Aを回転させ、アーム部分363Aに対してアーム部分363Bを回転させ、アーム部分363Bに対してアーム部分363Cを回転させるように構成される、一つ以上のモーターまたは他のアクチュエーターを含みうる。この例では、アーム部分363A、363B、および363Cはロボットアーム363の一節であってもよく、一方でアーム部分363Dは、ロボットの手など、エンドエフェクターであってもよい。一部の事例では、ロボットの手は、ロボットアーム363が物体と相互作用することを可能にするために、物体をつかむか、または拾い上げるように構成されるグリッパを含みうる。
【0054】
図3Aの実施形態では、空間構造感知カメラ351は、ロボット361に、すなわち、より具体的には、ロボット361のロボットアーム363に、エンドエフェクター363Dの一部であるか、もしくはそれに近い位置で、嵌め込まれるか、または他の方法で取り付けられてもよい。空間構造感知カメラ351は、撮像システムの一部であってもよい。一部のシナリオでは、撮像システムはさらに、
図7Aに関して以下で論じる、物体識別子感知装置を含みうる。一部の事例では、物体識別子感知装置はまた、エンドエフェクター363D上またはそれに近い位置などで、ロボットアーム363に取り付けられてもよい。
【0055】
図3Aに描写するように、システム300は、容器384A〜384Lなどの一つ以上の容器384をさらに含みうる。一部のシナリオでは、容器384A〜384Lは、倉庫または小売空間に位置してもよく、商品または他の物体などの品目を包含するために使用されうる。
図3Aの例では、容器384A〜384Lは、容器384A〜384Lを積み重ねて配設する筐体381を提供しうる、キャビネット380の中に収容されうる。この例では、容器384A〜384Lは各々、閉位置と開放位置との間を移動可能な引き出しであってもよい。容器384A〜384Lの各々は、一つ以上の連結部を介してキャビネット380に取り付けられうる。例えば、
図3Aは、筐体381の内表面に取り付けられ、容器382Aが開放位置と閉位置との間で摺動することを可能にする、一対のレール382A、383Aを示す。一部の状況では、容器384A〜384Lのうちの少なくとも一つは、一つ以上の物体を包含しうる。例えば、容器384Aは、倉庫または小売空間の中にある商品でありうる、物体371、373を含みうる。例として、物体371、373は各々、出荷または販売される商品などの品目である箱、または品目を保持する箱であってもよい。
【0056】
上述のように、空間構造感知カメラ351(および/または物体識別子感知装置)は、ロボットアーム363に嵌め込まれるか、または他の方法で置かれる手元のカメラ装置であってもよい。この配置によって、空間構造感知カメラ351(および/または物体識別子感知装置)の位置および/または配向に柔軟性を持たせうる。より具体的には、空間構造感知カメラ351(および/または物体識別子感知装置)を固定実装点に嵌め込むのではなく、
図3A〜3Cは、ロボットアーム363によって、空間構造感知カメラ351(および/または物体識別子感知装置)を、様々な位置および/または配向へ移動できる実施形態を示す。例えば、こうした実施形態によって、結果として得られる空間構造情報(および/または物体識別子感知情報)における焦点および/または解像度のレベルを調整するために、ロボットアーム363が、感知される物体と空間構造感知カメラ351(および/または物体識別子感知装置)との間の距離を調整することが可能になる。
【0057】
図3Bはさらに、容器384Aなど、
図3Aの容器384A〜384Lが各々閉位置にある状況を示す。容器384Aが閉位置にあるとき、その内容物(例えば、物体371、373)に、ロボット361がアクセスできない、すなわち、より具体的には、ロボットアーム363がアクセスできない場合がある。例えば、容器384Aの内表面(例えば、底部の内表面)は、容器384Aが閉位置にあるとき、キャビネット380の筐体381の外部環境へ実質的に露出していなくてもよい。さらに、容器384Aの内容物(例えば、物体371、373)は、隠されていて見えなくてもよい。より具体的には、内容物は、空間構造感知カメラ351のカメラ視野353(および/または物体識別子感知装置の視野)から遮られうる。こうした例では、容器384Aのハンドルなど、一つ以上の容器の外部分が、カメラ視野353内にありうる。以下でより詳細に論じるように、ロボットアーム363は、一部の実施形態では、容器384Aを開位置へと滑らかに動かす(例えば、
図3Aのレール382A、383Aによって)ために、例えば、容器384Aのハンドルを握って引くように構成されうる。
【0058】
図3Cは、開位置(開放位置とも呼ばれる)にある容器384Aを描写する。容器384Aが開位置にあるとき、その内容物にロボット361が、すなわち、より具体的には、ロボットアーム363がアクセス可能である。例えば、容器384Aは、レール382A、383Aによって、容器382Aの底部内表面の一部またはすべてが、キャビネット380の筐体381の外部環境に露出される位置へ滑らかに動かされうる。こうした状況では、底部の内表面の少なくとも一部分が、空間構造感知カメラ351のカメラ視野353(および/または物体識別子感知装置の視野)の中にあってもよい。さらに、容器384Aの底部の内表面上に配置された物体371、373など、容器384Aの内容物はまた、容器384Aが開位置にあるとき、カメラ視野353内にありうる。上述のように、空間構造感知カメラ351は、容器384Aおよび/またはその中に包含される物体371、373を記述する、空間構造情報を生成するように構成されうる。空間構造情報は、物体371、373の姿勢を検出し、ロボットアーム363のエンドエフェクター363Dが、物体371、373を拾い上げ、容器384Aから離す相互作用など、ロボットアーム363と物体371、373との間の相互作用を容易にするように使用されうる。
【0059】
図3Dは、
図3A〜3Cの容器384Aの図を提供する。
図3Dに示すように、容器384Aは、実施形態において、物体371、373などの一つ以上の物体が容器384A内に配置されている、表面384A−1(容器表面384A−1とも呼ばれる)を有しうる。例えば、容器表面384A−1は、容器384Aの底部の内表面でありうる。実施形態では、容器384Aは、容器表面384A−1からずれている、縁384A−2(容器縁384A−2とも呼ばれる)を有してもよい。容器縁384A−2は、共通の高さh(
図3Dに描写するように)、または異なるそれぞれの高さを各々有しうる、一つ以上の側壁384A−3、384A−4、および384A−5によって形成されてもよい。この例では、容器縁384A−2は、一つ以上の側壁384A−3、384A−4、および384A−5の上表面を含みうる。容器縁384A−2および容器表面384A−1は、高さhに等しいか、またはそれに基づく距離だけ離れていてもよく、高さhは、計算システム101が受信または決定するように構成されている、既知の値でありうる。一部の事例では、
図3A〜3Cの計算システム101は、以下でより詳細に論じるように、容器表面384A−1および/または容器縁384A−2について記述する情報を決定し、その情報を使用して、容器384A内に配置されている一つ以上の物体(例えば、371、373)を記述する追加情報を決定してもよい。さらに
図3Dに描写するように、容器384Aは、一部の例では、ハンドル384A−6を含みうる。計算システム101は、一部の実施形態では、ロボットアーム363(
図3A〜3Cの)に、ハンドル384A−6を引き寄せるか、または他の方法でハンドルと相互作用することによって、容器384Aを開位置へ移動させるように構成されうる。
【0060】
図4は、容器中に包含される物体とのロボット相互作用を容易にする、方法400のフロー図を描写する。方法400は、物体がどのように空間に配設されているかを記述する情報の決定を伴いうるので、ロボットは、例えば、物体を握るといった適切な手法で動くことができる。一つの例では、情報は、物体の配向または奥行き値(例えば、
図3A〜3Cの空間構造感知カメラ351に対する)のうちの少なくとも一つを記述しうる、物体の姿勢(物体姿勢とも呼ばれる)を記述しうる。以下でより詳細に論じるように、方法400によって、容器(例えば、384A)がどのように空間に配設されているかを記述する情報に基づいて、物体がどのように空間に配設されているかを決定しうる。実施形態では、方法400は、計算システム101によって、すなわち、より具体的には、処理回路110によって行うことができる。一部の事例では、方法400は、処理回路110が、
図2A〜2Cの非一時的コンピュータ可読媒体120上に記憶される命令を実行するときに行われてもよい。
【0061】
実施形態では、方法400は、容器(例えば、384A)が閉位置にあるシナリオで始まってもよく、以下でより詳細に論じるように、容器を開位置へ移動させるために、計算システム101がロボット(例えば、361)を制御することを伴いうる。こうした移動には、例えば、
図3Aおよび3Cに示す、レール382A、383Aに沿って、容器384Aを滑らかに動かすことを伴いうる。
図3Aおよび3Cに関連して論じたように、レール382A、383Aは、実施形態において、容器384Aが収容される筐体381の側部の内表面に取り付けられてもよく、レールによって容器384Aが、筐体381の中および外へと摺動することが可能になりうる。
【0062】
実施形態では、方法400は、容器(例えば、384A)が、
図3Cおよび5Aに示すような開位置になるか、または既になっていたシナリオで始まりうる。
図3Cの例と類似して、
図5Aの容器384Aは、容器384A内に配置されており、より具体的には、容器384Aの容器表面384A−1上に配置されている、物体371および373を包含する。容器384Aが開位置にあるため、容器384A内の物体371、373は、空間構造感知カメラ351のカメラ視野353内にありうる。
【0063】
実施形態では、方法400は、計算システム101が、空間構造感知カメラ(例えば、
図5Aの351)によって生成された空間構造情報を受信する、ステップ402を含んでもよい。空間構造情報は、カメラ視野353中の環境について奥行き情報を含みうる。より詳細には、空間構造情報は、カメラ視野353中の様々な構造が、空間的にどのように配設されているか(すなわち、空間の中でどのように配設されているか)を記述しうる。様々な構造には、例えば、容器384A、および容器384A内に配置されている物体371、373が含まれうる。
【0064】
実施形態では、空間構造情報は、一つ以上の構造の傾斜、すなわち、より具体的には、傾きの量および/または傾きの配向を検出するために使用されうる。より具体的には、容器384Aは、容器384Aを筐体381へ取り付けるレール382A、383Aなどの、一つ以上の連結部を有しうる。容器384Aは、開位置へと移動するにつれて、一つ以上の連結部に対して、かつ筐体381に対して下向きに傾きうる。例えば、容器384Aが、閉位置から開位置へ、
図5Aのレール382A、383Aに沿って摺動するにつれて、容器384Aの重さによって、レール382A、383Aに対して容器384Aが下向きに傾きうる。傾斜の例を
図5Bに示す。より詳細には、
図5Bは、
図5Aのレール383A、383Aの配向を表し、より具体的には、レール382A、383Aと平行な軸582を描写する。図は、軸582に垂直な別の軸582Pをさらに描写する。一部の事例では、軸582Pは、キャビネット380の筐体381の垂直壁と平行であってもよい。
図5Bはさらに、両方が容器384Aの配向を表しうる、軸584および軸584Pを描写する。より具体的には、軸584は、容器384Aと平行であってもよく、すなわち、より具体的には、容器表面384A−1と平行であってもよい。軸584Pは、容器表面384A−1に対する垂直軸であってもよく、軸584に垂直であってもよい。容器384Aが閉位置にあるとき、容器384と関連付けられた軸584は、レール382A、383Aと関連付けられた軸582と平行でありうる。さらに、軸584Pは軸582Pと平行であってもよい。上で論じたように、容器384Aが閉位置から開位置へ摺動すると、容器384Aは下向きに傾き、
図5Bに描写するように、容器384Aと関連付けられた軸584を軸582から外れさせ、垂直軸584Pを軸582Pから外れさせうる。言い換えると、軸584が軸582に対して斜めになってもよく、軸584Pが軸582Pに対して斜めになってもよい。
【0065】
実施形態では、容器384Aの傾斜によって、容器384A、および容器384A内の任意の物体(例えば、物体371または373)を、例えば、
図3A〜3Cのロボットアーム363および/もしくは空間構造感知カメラ351に対して、奥行きならびに/または配向で変化させうる。例えば、容器384が開位置にあるときに、下向きに傾かなかった場合、物体371、373は、空間構造感知カメラ351および/またはロボットアーム363に対して、第一の奥行き値ならびに第一の配向を有しうる。容器384Aの傾斜によって、物体371、373に、空間構造感知カメラ351および/またはロボットアーム363に対して、第二の奥行き値ならびに第二の配向を有させうる。一部の事例では、第二の奥行き値は、第一の奥行き値よりも数ミリメートルのみ大きくてもよく、第二の配向は、第一の配向と、ほんの数度または1度の何分の1異なりうるが、このような差異は、特に、物体371、373が、第一の奥行き値または第一の配向に従って、空間に配設されていると計算システム101が想定している場合、物体371、373を握るか、または他の方法で物体と正しく相互作用するように、ロボットアーム363の能力に影響を与えるのに充分でありうる。さらに、計算システム101は、
図3A〜3Cのロボット361と物体371、373との間の適切な相互作用を確保するために、ミリメートルレベルまたはより優れた精度で、物体371、373がどのように空間に配設されているかを決定する必要がありうる。
【0066】
一部の事例では、傾斜の量または効果は、容器(例えば、384A)が閉位置から開位置へ移動するにつれて、容器に対して多自由度がありうるため、ミリメートルの精度で予測するのが困難でありうる。したがって、本出願の一つの態様は、物体(例えば、371/373)と正しく相互作用するように、ロボットアーム363を制御する能力を促進するために、物体(例えば、371/373)がどのように空間に配設されているかを決定する、例えば、方法400のステップ402で受信するような空間構造情報の使用に関する。
【0067】
上述のように、ステップ402の空間構造情報は、カメラ視野(例えば、353)の中にある環境についての奥行き情報を含みうる。奥行き情報は、一つ以上の奥行き値を含んでもよく、各々が、空間構造感知カメラ(例えば、351)に対する、または何らかの他の基準点もしくは基準フレームに対する、カメラ視野353の中にある特定位置の奥行きを示しうる。一部の事例では、奥行き値と関連付けられた位置は、カメラ視野353の中にある構造の表面上の位置であってもよい。例えば、
図5Cは、奥行き値d
objectA,location1、d
rim,location1、d
surface,location1、およびd
floor,location1を含む、奥行き情報を示す。この例では、奥行き値d
objectA,location1は、空間構造感知カメラ351に対する、すなわち、より具体的には、空間構造感知カメラ351の画像センサーまたは他のセンサーによって形成される画像平面354に対する、物体371上にある位置の奥行き値を示してもよい。より具体的には、奥行き値d
objectA,location1は、物体371上(例えば、物体371の表面上)の位置と画像平面354との間の距離を示しうる。この距離は、画像平面354に垂直な軸に沿って測定されてもよい。実施形態では、奥行き情報は、容器表面384A−1および容器縁384A−2など、容器の一つ以上の部分についての一つ以上のそれぞれの奥行き値を含みうる。例えば、奥行き値d
surface,location1は、容器表面384A−1、すなわち、より具体的には容器表面384A−1上の位置の奥行き値を示しうる。奥行き値d
rim,location1は、画像平面354に対する容器縁384A−2、すなわち、より具体的には、容器縁384A−2上の位置の奥行き値を示しうる。加えて、奥行き値d
floor,location1は、キャビネット380の筐体381が配置されている床または他の表面、すなわち、より具体的には、床上の位置の奥行き値を示しうる。
【0068】
図6Aは、ステップ402で受信した空間構造情報の表示を描写する。この例では、空間構造情報は、カメラ視野(例えば、353)の中に、複数の位置について複数の奥行き値をそれぞれ含んでもよく、またはそれらを識別してもよい。より詳細には、図は、空間構造情報がそれぞれの奥行き値を識別する位置(点とも呼ばれる)の様々な集合610〜660を示す。位置の集合610(縞模様の六角形として識別)は、
図5Cの筐体381が配置されている床または他の表面に対応しうる。例えば、集合610は、
図5Cの奥行き値d
floor,location1に対応しうる、位置610
1を含んでもよい。位置の集合620(白丸として識別)は、容器384Aの容器表面384A−1(例えば、底部の内表面)に属しうる。例えば、集合620は、
図5Cの奥行き値d
surface,location1に対応しうる、位置620
1を含んでもよい。位置の集合630(黒丸として識別)は、容器縁384A−2に属しうる。例えば、集合630は、
図5Cの奥行き値d
rim,location1と一致しうる、位置630
1を含んでもよい。位置の集合640(黒い楕円として識別)は、容器384Aのハンドル384A−6に属しうる。さらに、位置の集合650(網掛けの長方形として識別)は、
図5Cの物体371に属しうる。例えば、集合650は、
図5Cの奥行き値d
objectA,location1に対応しうる、位置650
1を含んでもよい。加えて、位置の集合660(白い長方形として識別)は、
図5Cの物体373に属しうる。
【0069】
実施形態では、空間構造情報は、奥行きマップおよび/または点群を含んでもよい。点群は、例えば、空間構造感知カメラ(例えば、351)のカメラ視野(例えば、353)の中にある一つ以上の構造上の位置それぞれの座標を含みうる。例えば、点群は、空間構造感知カメラの基準フレーム(例えば、座標系)または何らかの他の基準フレームの中の[x y z]座標など、3D座標を含みうる。こうした例では、位置の座標は位置の奥行き値を示しうる。例えば、位置の奥行き値は、座標のz成分と等しいか、またはそれに基づいてもよい。
【0070】
実施形態では、空間構造情報は、測定誤差または他の誤差から影響を受けてもよく、または誤差を含みうる。例えば、位置650
1は、d
objectA,location1と等しい奥行き値を有してもよいが、点群または他の空間構造情報は、物体371上の位置650
1が[x y z]座標を有することを示してもよく、z=d
objectA,location1+ε
objectA,location1であり、ε
objectA,location1は、位置650
1と関連付けられた誤差を指す。その状況では、空間構造情報は、位置650
1が奥行き値d
objectA,location1+ε
objectA,location1を有すると誤って示しうる。誤差は、例えば、撮像ノイズ、または何らかの他の誤差源が原因でありうる。誤差は、様々な要因に基づきうる。一部の例では、物体371または他の構造は、空間構造感知カメラ(例えば、351)の動作の原理に干渉する形状を有しうる。一部の事例では、物体371は、空間構造感知カメラの動作の原理に干渉する材料(例えば、透明または半透明の材料)から形成されうる。一部の事例では、光または他の信号は、別の物体373(
図5Cの)または容器384Aの内表面に反射してもよく、他の物体373からのこうした反射信号は、物体371の奥行き値を正確に測定する、空間構造感知カメラ(例えば、351)の能力に干渉する撮像ノイズとして作用しうる。
【0071】
図6Bは、ノイズまたは他の誤差源から実質的に影響を受ける、空間構造情報の一部分に対応する位置(網掛けの三角形で表す)の例を提供する。
図6Bの例では、位置の集合620の位置620
2から620
5(容器表面384A−1に対応する)は、ノイズから実質的に影響を受ける場合があり、それらの位置に対応する空間構造情報は、著しい量の誤差を含みうる。さらに、位置の集合650の位置650
1から650
3(物体371に対応する)、および位置の集合660の位置660
1から660
3(物体373に対応する)は、ノイズから実質的に影響を受ける場合があり、それらの位置に対応する空間構造情報もまた、著しい量の誤差を含みうる。こうした例では、位置の集合650または位置の集合660の空間構造情報を直接使用することによって、物体371または物体373が、どのように空間に配設されているかを決定することは、それらの位置の相当な割合が、ノイズまたは他の誤差源から影響を受けうるため、不正確、またはそうでなければ信頼できない結果につながりうる。したがって、本開示の一つの態様は、容器(例えば、384A)がどのように空間に配設されているかの決定、および容器(例えば、384A)がどのように空間に配設されているかに基づいた、容器内の物体(例えば、371/373)が、どのように空間に配設されているかの決定に関する。
【0072】
図4に戻ると、方法400は、実施形態で、計算システム101によって、空間構造情報に基づいて容器姿勢を決定する、ステップ404を含みうる。一部の実施では、ステップ404は、
図2Cの容器検出モジュール202によって行われうる。実施形態では、容器姿勢は、容器384Aなどの容器の姿勢を指してもよく、容器(例えば、384A)の配向、または容器(例えば、384A)の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するように使用されてもよい。一部の事例では、容器(例えば、384A)の一部分は、容器縁(例えば、384A−2)または容器表面(例えば、384A−1)など、容器の構成要素を指しうる。一部の事例では、容器(例えば、384A)の一部分は、容器上の領域、または、より広くは、容器の内容物が配置されている容器表面(例えば、384A−1)、もしくは容器縁(例えば、384A−2)の表面など、容器の表面上の位置(例えば、
図6Aの620
1または630
1)を指しうる。
【0073】
一部の事例では、容器姿勢は、容器(例えば、384A)の配置もしくは配列を記述してもよく、または、より広くは、容器(例えば、384A)が3D空間にどのように配設されているかを記述しうる。例えば、容器姿勢は、容器(例えば、384A)の配向を記述してもよく、それによって、容器(例えば、384)またはその一部分が下向きに傾いている量(存在する場合)を記述しうる。上述のように、容器姿勢は、例えば、容器(例えば、384A)またはその一部分が、空間構造感知カメラ(例えば、
図3A〜3Cの351)から、またはロボットアーム(例えば、363)もしくはロボット(例えば、361)の他の部分からどれだけ離れているかを示しうる、奥行き値を記述しうる。
【0074】
一部の事例では、容器姿勢は、容器の配向、および容器(例えば、384A)上にある位置(例えば、620
1または630
1)の奥行き値の両方を記述しうる。奥行き値は、例えば、その位置の3D座標成分と等しいか、または3D座標成分を示してもよい。例えば、3D座標は、2D成分または2D座標(例えば、[x y]座標)、および奥行き成分(例えば、z成分またはz座標)を含む、[x y z]座標であってもよい。z成分またはz座標は、空間構造感知カメラ(例えば、351)もしくは何らかの他の基準フレームに対して、その位置の奥行き値に等しいか、またはそれに基づいてもよい。こうした例では、容器姿勢は、容器の配向、および容器上にある位置の3D座標の両方を記述しうる。
【0075】
実施形態では、ステップ404で決定される容器姿勢は、容器表面姿勢であってもよく、容器表面(例えば、384A−1)の姿勢でありうる。容器表面は、例えば、物体もしくは容器(例えば、384A)の他の内容物が、容器内に配置されている、底部の内表面または他の表面であってもよい。容器表面の姿勢は、容器表面(例えば、384A−1)の配向、または容器表面(例えば、384A−1)の、もしくはその上にある少なくとも一つの位置(例えば、620
1)の奥行き値のうちの少なくとも一つを記述しうる。
【0076】
実施形態では、容器表面の姿勢を決定することは、容器表面(例えば、384A−1)上の位置に対応する、空間構造情報の一部分を直接使用することを伴いうる。例えば、実施形態の計算システム101によって、位置620
1から620
nを含みうる、
図6Bの位置の集合620に対応する空間構造情報に直接基づいて、容器表面の姿勢を決定してもよい。対応する空間構造情報は、例えば、位置620
1から620
nのそれぞれの奥行き値を含みうる。一部の事例では、計算システム101は、位置620
1〜620
nをカメラ視野(例えば、353)の中にある他の層を表す位置と区別するために、これらの位置を容器表面(例えば、384A−1)に属するとして、または、より広くは、共通する層に属するとして識別するように構成されてもよい。例えば、計算システム101は、位置620
1から620
nを、実質的に連続するそれぞれの奥行き値を有し、値の間には明らかな不連続性がないものと識別するように構成されてもよい。一部の事例では、この実施形態の計算システム101によって、位置620
1から620
nのすべてまたは一部を通り抜ける最適な平面を決定することによって、容器表面の姿勢を決定しうる。計算システム101によって、勾配もしくは法線ベクトルなど、平面の特徴と等しくなるように、または平面の特徴に基づいて、容器表面(例えば、384A−1)の配向を決定しうる。一部の事例では、計算システム101によって、空間構造情報に直接基づいて、容器表面(例えば、384A−1)上にある位置の奥行き値を推定するか、または他の方法で決定しうる。例えば、空間構造情報が、[x y z]座標など、その位置の3D座標を提供する場合、奥行き値は、3D座標のz成分と等しいか、またはそれに基づいてもよい。一部の事例では、容器表面(例えば、384A−1)上の位置が、平面にあるか、または実質的に平面に近い場合があるため、計算システム101は平面を使用して、その位置の奥行き値を推定してもよい。例えば、計算システム101は、容器表面(例えば、384A−1)上にある位置の2D成分(例えば、[x y]成分)を受信する場合、その2D成分も有する平面に属する3D座標を決定するように構成されてもよい。こうした例では、平面上の3D座標は、容器表面(例えば、384A−1)上の位置を示してもよく、またはそれに近似してもよい。したがって、平面上にある3D座標のz成分は、容器表面(例えば、384A−1)上にある位置の奥行き値と等しいか、またはそれに近似する場合がある。
【0077】
実施形態では、容器表面の姿勢を決定することには、容器縁(例えば、384A−2)に対応する空間構造情報など、容器(例えば、384A)の別の部分に対応する空間構造情報の間接的な使用を伴いうる。より詳細には、ステップ404の実施形態は、容器縁の姿勢を決定すること、および容器縁の姿勢に基づいて容器表面の姿勢を決定することを伴いうる。容器縁の姿勢は、容器縁(例えば、384A−2)の配向、または容器縁(例えば、384A−2)上にある少なくとも一つの位置(例えば、630
1)の奥行き値のうちの少なくとも一つを記述しうる。
【0078】
一部の事例では、容器縁の姿勢に基づいて容器表面の姿勢を決定することによって、ノイズまたは他の誤差源に対して、より堅牢な決定を提供しうる。より具体的には、ノイズは、容器(例えば、384)内に配置されている物体(例えば、371)上の位置(例えば、650
1から650
3)に影響を与えうるだけでなく、物体が配置されている容器表面(例えば、384A−1)上の位置にも影響を与えうる。したがって、それらの位置に対応する奥行き情報または他の空間構造情報は、信頼できない場合がある。例えば、
図6Cは、容器表面384A−1上の位置620
2、620
3、620
4、620
5、620
6、620
7、620
8、620
9、620
10、…620
k(空間構造情報によって識別される位置620
1から620
nの全ての部分集合でありうる)が、それらの位置の空間構造情報の対応する部分に誤差を持ち込み、より詳細には、それらの位置の奥行き情報に誤差を持ち込みうる、撮像ノイズから影響を受けうることを示す。
図6Bがまた、ノイズを(位置620
2から620
6に)有する例も示し、
図6Cは、容器表面384A−1により多くのノイズがある環境の例を示す。
図6Cの例では、ノイズ(620
2から620
k)から影響を受ける位置が、空間構造情報が利用可能なすべての位置(620
1から620
n)のうちの多くの割合でありうる。ノイズは、例えば、容器表面(例えば、384A−1)に反射する、または容器表面(例えば、384A−1)上の物体(例えば、371/373)に反射する信号の存在より生じる場合があり、反射信号は、互いに干渉し、容器表面(例えば、384A−1)上にある位置の奥行き値の直接測定に干渉しうる。
【0079】
一部の事例では、詰め込まれた容器(すなわち、容器表面を見えなくしうる多数の物体を含む容器)もまた、容器表面(例えば、384A−1)上にある位置の奥行き値の直接測定に干渉しうる。例えば、
図6Dは、物体371〜375などの多くの物体が、容器表面384A−1上に配置されているシナリオを描写する。物体371〜375は、容器表面384A−1の大部分を覆っていてもよい。より具体的に、
図6Eが、
図6Dに描写した例についての空間構造情報を示す。
図6Eに描写するように、物体371〜375が、容器表面384A−1の領域652〜692を覆ってもよく、または他の方法で占有してもよい。容器表面384A−1のいくつかの部分は、物体371〜375によって覆われていないが、それらの部分も依然としてノイズの影響を受けうるため、空間構造感知カメラ371を使用して、容器表面384A−1の正確な奥行きの測定を直接行う能力が制限される。
【0080】
したがって、本開示の一つの態様は、容器縁(例えば、384A−2)など、容器の別の部分に対応する空間構造情報を使用して、容器表面(例えば、384A−1)についての情報を間接的に決定することに関する。実施形態では、上述のように、計算システム101によって、容器縁の姿勢を決定し、容器縁の姿勢を使用して、容器表面の姿勢を決定してもよい。容器縁(例えば、384A−2)は、一部の例では、ノイズまたは測定誤差源から受ける影響がより少ない場合がある。すなわち、これらの測定誤差源は、容器表面(例えば、384A−1)または容器表面(例えば、384A−1)上に配置されている物体の直接測定に影響を与えうる。しかしながら、容器縁(例えば384A−2)は、容器の一つ以上の側壁(例えば、
図3Dの側壁384A−3から384A−5)によって、容器表面(例えば、384A−1)からずれを生じる場合があり、側壁は、容器縁(例えば、384A−2)を完全に物体(例えば、371、373)より上方に位置させる、高さhを有しうる。したがって、容器縁(例えば、384A−2)は、測定誤差源から受ける影響が著しく少ない場合があり、容器縁(例えば、384A−2)の奥行きの直接測定は、容器表面(例えば、384A−1)の奥行きの直接測定よりも著しく正確でありうる。
【0081】
実施形態では、容器縁(例えば、384A−2)の直接測定には、容器縁(例えば、384A−2)上の位置に対応する空間構造情報を含んでもよく、容器縁の姿勢は、そのような空間構造情報に基づいて決定されてもよい。例えば、
図6Cに描写するように、空間構造情報は、容器縁(例えば、384A−2)上にある位置630
1、630
2、630
3、630
4、…630
nのそれぞれの奥行き値を示す、奥行き情報を含みうる。一部の事例では、計算システム101は、位置630
1〜630
nを、その中の奥行きに明らかな不連続性が全くないものとして、それゆえ、カメラ視野(例えば、353)の中の他の層とは分離している、共通層に属するものとして識別することによって、これらの位置630
1〜630
nを、容器の別の構成要素を表す位置(例えば、620
1から620
n)と区別するように構成されてもよい。実施形態では、計算システム101は、容器縁(例えば、384A−2が位置すべき)の推定領域を決定し、推定領域の中にある位置(例えば、630
1〜630
n)を検索することによって、位置630
1〜630
nを、容器縁(例えば、384A−2)に属するものとして識別するように構成されてもよい。例えば、計算システム101は、容器(例えば、384A)の構造と、容器(例えば、384A)が位置するキャビネット(例えば、380)もしくは筐体(例えば、381)の構造とについての定義された、または他の方法で既知である情報を入手できてもよい。情報によって、例えば、容器(例えば、384A)もしくはキャビネット380のサイズ(例えば、寸法)、物理構成、形状、および/または幾何学的形状を識別しうる。計算システム101は、この情報に基づいて推定領域を決定するように構成されうる。例えば、計算システムによって、容器縁(例えば、384A−2)が、誤差の範囲が約10mmで、約600mmの奥行き値を有するべきであると推定してもよい。次に、計算システム101によって、590mmから610mmに及ぶ奥行き値を有する空間を占有する推定領域で、容器縁(例えば、384A−2)を検索しうる。
【0082】
上述のように、容器縁の姿勢は、容器縁(例えば、384A−2)の配向、または容器縁(例えば、482A−2)上にある少なくとも一つの位置の奥行き値のうちの少なくとも一つを示しうる。実施形態では、計算システム101によって、容器縁(例えば、384A−2)上にある位置(例えば、630
1〜630
n)の一部またはすべての、それぞれの奥行き値の間の差異(存在する場合)を決定することによって、容器縁の姿勢の配向を決定しうる。例えば、位置630
1〜630
nのそれぞれの奥行き値が、同じか、または実質的に同じ場合、計算システム101によって、容器縁384A−2が、空間構造感知カメラ351または他の基準フレームに対して、実質的に平坦な配向を有すると決定することができる。それぞれの奥行き値が、位置の関数として変化する場合、計算システム101によって、変化を表す勾配を決定しうる。容器縁の姿勢の配向は、勾配と等しいか、またはそれに基づいてもよい。
【0083】
実施形態では、計算システム101によって、空間構造情報が提供される容器縁(例えば、384A−2)上にある位置(例えば、630
1から630
n)の一部またはすべてを、実質的に通り抜ける平面を決定することによって、容器縁の姿勢を決定してもよい。例えば、計算システム101によって、位置(例えば、630
1から630
n)の各々、または位置の部分集合について、3D座標(例えば、[x
n y
n z
n])を決定してもよく、3D座標は、空間構造情報から導き出される、奥行き成分(例えば、z
n)を含みうる。計算システム101によって、それぞれの3D座標を通り抜ける最適な平面を決定しうる。例えば、平面は、方程式a(x−x
0)+b(y−y
0)+c(z±z
0)=0によって表されてもよく、式中、[x
0,y
0,z
0]は、容器縁(例えば、384A−2)上にある位置(例えば、630
1)のうちの一つに対する3D座標であってもよく、[x y z]は、容器縁(例えば、384A−2)上にある残りの位置(例えば、630
2から630
n)の一部またはすべてに対する3D座標を表してもよい。計算システム101によって、上記座標に基づいて連立方程式のセットを生成し、連立方程式を最適に満たす係数a、b、cについて方程式を解くことができる。こうした例では、計算システム101によって、勾配または法線ベクトル(例えば、<a b c>に平行なベクトル)など、平面の特徴と等しくなるように、または平面の特徴に基づいて、容器縁の姿勢の配向を決定しうる。
【0084】
上述のように、計算システム101によって、容器縁の姿勢に基づいて、容器表面の姿勢を決定しうる。一部の事例では、こうした決定は、容器縁(例えば、384A−2)と容器表面(例えば、384A−1)との間の定義された距離に基づいてもよい。定義された距離は、例えば、容器縁(例えば、384A−2)を形成する、一つ以上の側壁(例えば、
図3Dの384A−3から384A−3)の高さhでありうる。一部の事例では、定義された距離は、計算システム101によってアクセス可能な非一時的コンピュータ可読媒体(例えば、120)上に記憶される、既知の値であってもよい。
【0085】
さらに上述のように、容器表面の姿勢は、容器表面(例えば、384A−1)の配向、または容器表面(例えば、384A−1)上にある位置の奥行き値のうちの少なくとも一つを記述しうる。一部の事例では、計算システム101によって、容器縁の姿勢の配向に基づいて、容器表面の姿勢の配向を決定しうる。より具体的には、計算システム101によって、容器縁(例えば、384A−2)の配向と等しくなるように、またはその配向に基づいて、容器表面(例えば、384A−1)の配向を決定しうる。こうした決定は、容器縁(例えば、384A−2)が、容器表面(例えば、384A−1)と平行であるという想定に基づいてもよい。
【0086】
例として、計算システム101によって、上で論じたように、容器縁の姿勢の配向を画定する第一の平面を決定し、第一の平面を使用して、容器表面の姿勢の配向を画定する第二の平面を決定することができる。例えば、
図6Fは、容器縁384A−2上にある位置(例えば、630
1から630
n)の空間構造情報に基づいて決定することができ、容器縁384A−2の配向を画定しうる、第一の平面684A−2を示す。計算システム101は、第一の平面684A−2に基づいて、第二の平面684A−1を決定するように構成されてもよく、第二の平面684A−1は、容器表面384A−1の配向を画定してもよい。一部の例では、第一の平面684A−2および第二の平面684A−1は、互いに並行で、定義された距離hだけずれていてもよい。例えば、第一の平面684A−2が、上で論じたように、方程式a(x−x
0)+b(y−y
0)+c(z−z
0)=0によって定義される場合、計算システム101によって、方程式a(x−x
0)+b(y−y
0)+c(z−z
0−h)=0によって定義される、第二の平面684A−1を決定しうる。
【0087】
実施形態では、容器表面384A−1上の位置が、平面684A−1にあるか、または実質的にその平面近くにありうるため、計算システム101によって、第二の平面684A−1を使用して、容器表面384A−1上にある位置のそれぞれの奥行き値を決定するか、または表してもよい。例として、計算システム101は、容器表面384A−1上にある位置の2D成分または2D座標(例えば、[x y]座標)を受信する場合、この2D成分に対応する平面684A−1上の3D座標を決定し、3D座標の奥行き成分(例えば、z成分)に基づいて、この位置の奥行き値を決定するように構成されうる。より具体的には、計算システム101によって、方程式a(x−x
0)+b(y−y
0)+c(z−z
0−h)=0を満たす、3D座標[x y z]を決定してもよく、xおよびyは、受信した2D成分に属してもよく、zは、3D座標の奥行き成分であってもよい。したがって、容器縁384A−2より決定された情報は、容器表面384A−1の配向および/または奥行きに関する、信頼性の高い決定をするために使用されうる。
【0088】
図4に戻ると、方法400は、実施形態で、計算システム101によって、容器姿勢に基づいて物体姿勢を決定する、ステップ406を含みうる。ステップは、例えば、
図2Cの異議検出モジュール204によって行われてもよい。この実施形態では、物体姿勢は、容器(例えば、384A)内に配置されている物体(例えば、
図3A〜3Cの371/373)の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述しうる。一部の事例では、物体は、ロボット相互作用が望まれる、目標物体であってもよい。物体の一部分は、例えば、物体の表面(例えば、上表面)上の位置、および/または上表面の角もしくはエッジなど、物体の物理的特徴を指しうる。
【0089】
実施形態では、物体姿勢を決定するために使用される容器姿勢は、容器表面の姿勢でありうる。例えば、計算システム101によって、容器表面の姿勢の配向と等しくなるように、またはその配向に基づいて、物体姿勢の配向を決定しうる。より具体的には、計算システム101によって、物体(例えば、371)の配向が、容器表面(例えば、384A−1)の配向と等しいと決定しうる。
【0090】
一部の事例では、計算システム101によって、容器表面(例えば、384A−1)の配向に基づくように、物体(例えば、371/373)の配向を決定しうる。例えば、計算システム101によって、物体が配置されている、容器表面(例えば、384A−1)の配向と等しくなるように、物体(例えば、371/373)の配向を決定しうる。こうした決定は、商品の箱などの物体が、容器表面(例えば、384A−1)上に同じ高さで座しているという想定に基づきうる。
【0091】
一部の事例では、計算システム101によって、容器表面(例えば、384A−1)上の対応する位置の奥行き値に基づいて、物体上にある位置(物体位置とも呼ばれる)の奥行き値を決定しうる。対応する位置は、物体が座している、または、より広くは、物体位置と同じ2D成分もしくは2D座標を有する、容器表面(例えば、384A−1)上の位置であってもよい。一部の事例では、決定は、計算システム101からアクセス可能な非一時的コンピュータ可読媒体(例えば、120)に記憶されてもよい、画定された高さh
objectなど、物体(例えば、371)の画定されたサイズに基づいてもよい。物体位置が、物体(例えば、371)の上表面である場合、計算システム101によって、物体位置が、容器表面(例えば、384A−1)上の位置から、画定された高さh
object分離れていると決定しうる。例えば、容器表面(例えば、384A−1)上の位置が、3D座標[x y z
surface]を有する場合、計算システム101によって、物体位置が3D座標[x y z
surface±h
object]を有すると決定しうる。こうした例では、計算システム101によって、上で論じたように、最初に物体位置の2D成分を決定し、2D成分を使用して、例えば、平面684A−1について方程式を解くことに基づいて、または、より広くは、容器表面の姿勢に基づいて決定されうる、3D座標[x y z
surface]を決定することができる。次に、計算システム101によって、z
surface±h
objectと等しいものとして、またはそれに基づいて、物体位置の奥行き値を決定しうる。こうした手法で、著しい量の撮像ノイズを伴う環境でさえも、物体(例えば、371)の配向および/または奥行き値を正確に決定する、堅牢な方法を提供する。こうした撮像ノイズによって、空間構造感知カメラ(例えば、351)が、正確な手法で、物体の奥行きを直接測定するのを妨げうる。しかしながら、計算システム101は、容器の空間構造情報を使用して、容器表面の姿勢を決定し、容器表面上の対応する位置の奥行き値を決定することによって、間接的に測定することができる。次に、容器表面上の対応する位置の奥行き値に基づいて、物体の奥行き値を外挿しうる。
【0092】
一部の事例では、ステップ406は、
図7Aのバーコード感知装置352など、物体識別子感知装置を含む環境で行われてもよい。バーコード感知装置352(物体識別子感知装置152の実施形態であってもよい)は、ロボットアーム(例えば、363)または固定実装点へ嵌め込みうる。バーコード感知装置352は、視野355(リーダー視野とも呼ばれる)を有してもよく、容器(例えば、384A)内に配置される物体(例えば、371/373)上に配置される、バーコードまたは何らかの他の物体識別子(存在する場合)を感知するように構成されうる。例えば、
図7Bは、バーコード711が物体371上に配置され、バーコード713が物体373上に配置されている例を提供する。上述のように、物体識別子情報は、物体識別子感知情報を生成するように構成されてもよい。
図7Bの例では、バーコード感知装置352は、バーコード711/713の位置、バーコード711/713にコード化された情報、またはバーコード711/713についての任意の他の情報を記述しうる、感知されるバーコード情報を生成するように構成されうる。バーコード711/713にコード化された情報は、物体711/713の識別または物体711/713のサイズなど、バーコードが配置されている物体371/373について記述しうる。
【0093】
一部の事例では、計算システム101は、バーコード(例えば、711/713)にコード化された情報、または他の物体識別子が、計算システム101によって受信される物体識別情報に合致するかどうかを決定するように構成されてもよい。例えば、計算システム101は、ロボット(例えば、361)による回収のために、商品などの特定の品目を識別する、最小在庫管理単位(SKU)番号および/または統一商品コード(UPC)などの物体識別情報を受信することができる。こうした例では、計算システム101は、容器(例えば、384A)の中の任意の物体が、物体識別情報に合致する、物体の上に配置されているバーコード(例えば、711/713)もしくは他の物体識別子を有するか、すなわち、より具体的には、バーコード(例えば、711)もしくは他の物体識別子にコード化された情報が、物体識別情報に合致するかを決定するように構成されうる。コード化された情報が物体識別情報に合致する、バーコード(例えば、711)または他の物体識別子がある場合、計算システム101によって、例えば、バーコード(例えば、711)または他の物体識別子が配置されている物体(例えば、371)と関連付けられた、一つ以上の位置の2D成分を決定するように、バーコードを使用してもよい。
【0094】
実施形態では、計算システム101は、バーコード位置など、物体識別子の位置を決定するように構成されてもよい。バーコード位置は、物体識別情報に合致するバーコードなど、バーコード(例えば、711/713)の2D位置を記述しうる。一部の事例では、物体識別子の2D位置は、2D座標(2D物体識別子の座標とも呼ばれる)によって表されてもよい。物体識別子がバーコードである場合、2D物体識別子の座標は2Dバーコード座標であってもよい。例えば、計算システム101は、
図7Bの中にあるバーコード711の位置を表す2Dバーコード座標[x
BarcodeA,y
BarcodeA]を決定し、バーコード713の位置を表す2Dバーコード座標[x
BarcodeB,y
BarcodeB]を決定するように構成されてもよい。一部の事例では、2Dバーコード座標は、
図7Aのバーコード感知装置352によって、または何らかの他の物体識別子感知装置によって生成されうる。上述のように、バーコード位置は、上で論じた物体識別情報に合致する、バーコードに対して決定されうる。例えば、計算システム101によって、物体371上のバーコード711にコード化された情報が、受信したSKU番号と合致すると決定される場合、計算システム101は、バーコード711の位置に対して、2Dバーコード座標[x
objectA,barcode,y
objectA,barcode]を決定してもよい。
【0095】
実施形態では、計算システム101は、バーコード(例えば、711)または他の物体識別子にコード化された情報を使用して、バーコードが配置されている物体(例えば、371)に関するサイズまたは他の情報を決定してもよい。例えば、バーコード711または他の物体識別子は、上で論じた物体371の高さh
object、物体371の長さもしくは幅をコード化してもよく、または物体371のサイズ(物体サイズとも呼ばれる)に関する任意の他の情報をコード化してもよい。高さh
objectは、また上でも論じたように、物体371上にある位置の奥行き値を決定するために使用されうる。
【0096】
実施形態では、計算システム101は、物体識別子と関連付けられた物体識別子感知情報(例えば、バーコード711と関連付けられた感知されるバーコード情報)を使用して、物体識別子が配置されている物体(例えば、371)の一つ以上の2D位置を決定するように、すなわち、より具体的には、物体(例えば、371)上にある一つ以上のそれぞれの位置の、一つ以上の2D座標を決定するように構成されてもよい。2D物体座標は、上で論じた奥行き値と組み合わされて、物体とのロボット相互作用を計画することができる(2D物体座標とも呼ばれる)。一部の事例では、2D物体座標は、物体の上表面の2D境界など、物体(例えば、371)の輪郭に近似してもよい。
【0097】
実施形態では、物体位置の2D物体座標は、空間構造情報に基づいて決定されうる。例えば、空間構造情報は、カメラ視野(例えば、353)中の環境より感知された、一つ以上の表面上にある複数の位置を表す点群であってもよい。例えば、点群によって表される位置は、容器表面(例えば、384A−1)、物体(例えば、371、373)の表面、および容器縁(例えば、384A−2)の表面上にある位置の様々な集合610〜660など、
図6A〜6Cおよび7Cに示す位置でありうる。こうした実施形態では、計算システム101は、感知されるバーコード情報などの物体識別子感知情報を使用して、点群を検索して、一つ以上の2D物体座標の少なくとも一つの集合を決定するように構成されうる。2D物体座標は、例えば、それぞれの物体位置を表す[x y]座標であってもよい。例えば、2D物体座標は、
図7Cの物体371上にある物体位置650
1から650
4の一部もしくはすべて、または物体373上にある物体位置660
1から660
5の一部もしくはすべてを表す、それぞれの2D座標であってもよい。2D物体座標は、以下でより詳細に論じるように、対応する奥行き値または物体の配向と組み合わされて、物体(例えば、371/373)と相互作用するための移動コマンドを生成しうる。
【0098】
実施形態では、物体位置の2D物体座標は、空間構造情報に基づいて、かつ物体識別子の位置、すなわち、より具体的には、その2D物体識別子の座標に基づいて決定されうる。物体識別子がバーコードである場合、2D物体座標は、空間構造情報およびバーコードの位置に基づいて決定されうる。より具体的には、バーコードの位置(例えば、2Dバーコード座標)は、2D物体座標を検索する空間構造情報の部分を絞り込むのにも使用されうる。より具体的には、検索は、物体識別子の位置を囲む領域に対応する空間構造情報の一部分、すなわち、より具体的には、バーコードの位置に限定されうる。例えば、物体371上の2D位置を検索するために、計算システム101によって、
図7Bのバーコード711のバーコード位置を囲む、
図7Cの領域721を決定しうる。すなわち、領域721は、2Dバーコード座標[x
objectA,Barcode,y
objectA,Barcode]を囲む。一部の事例では、領域721は、2D領域または3D領域であってもよい。
【0099】
実施形態では、計算システム101は、領域721に対応する空間構造情報の一部分を検索して、物体711に対応する物体位置を識別するように、すなわち、より具体的には、物体711上にある位置を検索するように構成されてもよい。したがって、
図7Cに描写する空間構造情報によって表されるすべての位置を検索するのではなく、計算システム101は、空間構造情報によって表されるそれらの位置の部分集合を検索してもよい。より詳細には、位置の部分集合は、領域721の中の位置であってもよい。計算システム101は、例えば、容器表面384A−1上にある周囲の位置と、奥行きに充分明らかな差異を有する位置を識別することによって、物体371上の位置を検索するように構成されうる。一部の例では、計算システム101によって、物体上にある位置の2D物体座標を決定してもよい。例えば、空間構造情報が、物体371上にある位置650
1の[x y z]座標を提供する場合、計算システム101によって、その物体位置の2D物体座標として、[x y]を決定してもよい。この例における空間構造情報はまた、その位置のz成分も提供しうるが、z成分は、上で論じたように、ノイズのために信頼できない場合がある。より具体的には、z成分は、計算システム101が、物体371上の位置と周囲の容器表面384A−1上の位置とを区別するには、充分な精度がありうるが、物体371とのロボット相互作用を計画するのに充分な精度はない場合がある。したがって、さらに上で論じたように、計算システム101によって、容器姿勢を使用して、物体位置650
1、または、より広くは、2D物体座標もしくは2D成分[x y]を有する物体位置のそれぞれの奥行き値を決定してもよい。一部の例では、例えば、物体位置650
1の2D物体座標、およびその位置の対応する奥行き値を組み合わせて、その物体位置に対してより信頼できる3D座標を形成しうる。
【0100】
図7Cはさらに、2D物体識別子の座標、すなわち、より具体的には、バーコード713の2Dバーコード座標[x
objectB,Barcode,y
objectB,Barcode]を囲む、領域723を描写する。計算システム101は、領域723を検索して、物体373の物体位置を決定するように構成されうる。実施形態では、領域721/723は画定された固定サイズを有してもよい。実施形態では、領域721/723は、物体371/373の物体サイズに基づく、サイズを有してもよい。
【0101】
実施形態では、物体(例えば、371)の物体位置は、その物体サイズに基づいて決定されてもよく、物体サイズは、例えば、バーコード(例えば、711)、または物体上に配置される他の物体識別子にコード化されうる。例えば、物体サイズは、物体(例えば、371)の長さおよび幅を示しうる。計算システム101は、例えば、物体サイズに基づく物体(例えば、371)のエッジまたは他の境界を表す、2D座標を推定するように構成されうる。例として、計算システム101は、物体の長さまたは幅に基づいて、物体の特定のエッジが、バーコード位置または他の物体識別子の位置から、ある一定距離離れていると推定しうる。計算システム101は、その距離を使用して、その特定のエッジがどこに位置するかを示す、2D座標を決定することができる。
【0102】
実施形態では、バーコード位置の2Dバーコード座標など、2D物体識別子の座標は、物体識別子感知装置(例えば、
図7Aのバーコード感知装置352)によって感知される情報に基づいて決定されてもよい。例えば、バーコード感知装置(例えば、352)は、2Dバーコード座標として[x y]座標を生成し、[x y]座標を計算システム101に伝達してもよい。計算システム101は、必要であれば、[x y]座標を、物体識別子感知装置(例えば、バーコード感知装置352)の座標系で表現されたものから、空間構造感知カメラ(例えば、351)の座標系など、別の座標系で表現されたものに変換するように構成されてもよい。上述のように、物体識別子感知装置(例えば、バーコード感知装置352)は、一部の例では、2Dカメラ(例えば、
図1Eの153)を含んでもよい。こうした例では、物体識別子感知装置(例えば、バーコード感知装置352)は、2D画像を取り込むように構成されてもよい。例えば、
図7Bは、バーコード感知装置352の視野(例えば、355)を表す2D画像を表しうる。物体識別子感知装置(例えば、バーコード感知装置352)および/または計算システム101は、2D画像からバーコード(例えば、711/713)または他の物体識別子を検出し、物体識別子(例えば、バーコード711/713)が2D画像中のどこに現れるかに基づいて、2D物体識別子の座標を決定するように構成されうる。
【0103】
実施形態では、2D画像は、生成される場合、2D物体座標を決定するために使用されうる。例えば、計算システム101は、2D画像を受信する場合、2D画像の中に現れる物体(例えば、371)のエッジまたは他の境界を検出し、エッジが2D画像中のどこに現れるかに基づいて、物体を表す2D物体座標を決定するように構成されうる。一部の事例では、計算システム101は、そのエッジまたは他の境界についての検索を、2D画像の一部分のみに制限するように構成されてもよい。こうした場合、検索が行われる2D画像の一部分は、物体上に配置されるバーコード(例えば、711)のバーコード位置などの物体識別子の位置、またはバーコードが2D画像中のどこに現れるかに基づいてもよい。
【0104】
実施形態では、計算システム101は、隣接するバーコードのバーコード位置など、物体識別子の位置に基づいて、物体の2D位置を推定するように構成されてもよい。隣接するバーコードは、物体上には配置されず、隣接する物体上に配置されてもよい。例えば、
図8は、物体377が容器384A内に配置されていて、容器上にバーコードが配置されていないシナリオを示す。この例では、計算システム101は、隣接する物体371、373、376上にそれぞれ配置されている、バーコード711、713、716の2Dバーコード位置を使用して、物体377の2D位置を三角測量するか、または他の方法で決定するように構成されうる。例えば、計算システム101は、境界が、バーコード711、713、716それぞれの2Dバーコード座標[x
objectA,Barcode,y
objectA,Barcode]、[x
objectB,Barcode,y
objectB,Barcode]、[x
objectC,Barcode,y
objectC,Barcode]によって画定される領域を決定し、物体377のその領域を検索するように構成されてもよい。より詳細には、計算システム101によって、その領域に対応する空間構造情報の一部分を、物体377上にある位置について検索してもよい。
【0105】
実施形態では、バーコード感知装置(または何らかの他の物体識別子感知装置)および/または空間構造感知カメラが、ロボットアーム(例えば、
図3Aの353)に取り付けられている場合、計算システム101は、ロボットアームの移動を引き起こすことによって、装置/カメラ(例えば、352/351)の配置を制御するように構成されうる。例えば、計算システム101は、ロボットアーム363に、物体識別子感知装置(例えば、バーコード感知装置352)および/もしくは空間構造感知カメラ(例えば、351)を、望ましい位置ならびに/または配向へ移動させるための、センサー移動コマンドを生成し出力するように構成されうる。センサー移動コマンドによって、例えば、装置(例えば、352/351)を、画定近接レベル内にある位置へ移動させることができる。一部の事例では、画定近接レベルは、物体識別子感知装置の焦点距離に基づいてもよい。より詳細には、物体上にある任意のバーコード(例えば、711)が、物体識別子感知装置の焦点距離内にくるように、センサー移動コマンドによって、物体識別子感知装置を、容器(例えば、354A)中の物体の充分近くに移動させうる。実施形態では、ステップ402で受信した空間構造情報、および感知されるバーコード情報または他の物体識別子情報は、装置(例えば、352/351)が、センサー移動コマンドの結果として移動した後に、生成されてもよい。
【0106】
実施形態では、センサー移動コマンドによって、空間構造情報および/またはバーコード感知装置(または任意の他の物体識別子感知装置)を、空間構造情報および/または感知されるバーコード情報が、容器表面(例えば、384A−1)の一部分のみを表すか、または覆うような近接範囲内に移動させうる。例えば、
図9は、容器表面(例えば、384A−1)の一部分のみ、または、より広くは、容器(例えば、384A)の一つの側面の一部分のみを、空間構造感知カメラ351および/またはバーコード感知装置352によって取り込む状況を示す。すなわち、容器表面(例えば、384A−1)の一部分のみが、こうした近接レベルで、カメラ視野(例えば、353)またはリーダー視野(例えば、355)の中にあってもよい。容器表面(例えば、384A−1)の全体または容器(例えば、384A)の全体について、情報を取り込む必要はない場合がある。むしろ、容器(例えば、384A)の一部分のみを取り込むことによって、計算システム101が、右半分など、容器(例えば、384)の特定部分に焦点を合わせること、より具体的には、その部分の中にある物体の検出に焦点をあわせることが可能になりうる。一部の事例では、計算システム101によって、特定の容器(例えば、384A)についての情報を取り込むために、空間構造感知カメラ(例えば、351)および/もしくは物体識別子感知装置(例えば、バーコード感知装置352)を移動させる回数、またはカメラ/装置(例えば、351/352)を移動させる位置の数を制限しうる。例えば、カメラ/装置(例えば、351/352)は、特定の容器のスナップショットを取り込むために、単一の位置へ一度のみ移動してもよい。
【0107】
実施形態では、計算システム101は、容器表面(例えば、384A−1)上の異なる領域を、異なるセグメントと関連付けることによって、特定の容器(例えば、384A)のセグメンテーションを行うように構成されうる。例えば、
図10は、容器表面384A−1が、仮想上でセグメント1001から1006に分割されうる状況を描写する。このシナリオでは、計算システム101は、物体と関連付けられた容器セグメント識別子を受信するように構成されてもよい。一つの例では、計算システム101によって、セグメント1006を識別する、すなわち、より具体的には、ロボット相互作用が、セグメント1006内に配置される物体(例えば、371)にとって望ましいと示す、容器セグメント識別子を受信することができる。実施形態では、計算システム101は、容器セグメント識別子と関連付けられた容器表面(例えば、384A−1)上の位置を決定するように構成されうる。一部の事例では、それらの位置の決定には、それらの奥行き値の決定を含んでもよく、上で論じたように、容器縁の姿勢または容器表面の姿勢のうちの少なくとも一つを使用することを伴いうる。
【0108】
実施形態では、方法400は、計算システム101によって、ロボットアーム(例えば、363)が物体をつかむか、または他の方法で拾い上げるなど、物体(例えば、371/373)とのロボット相互作用を引き起こすための移動コマンドを出力する、ステップ408を含みうる。こうした移動コマンドはまた、物体移動コマンドと呼ばれる場合もある。一部の事例では、ステップ408は、例えば、物体移動コマンド、上で論じたセンサー移動コマンド、および容器移動コマンド(以下で論じる)を生成するように構成されてもよい、
図2Cの動作計画モジュール206によって行われてもよい。物体移動コマンドは、例えば、物体(例えば、371)の配向または奥行き値など、ステップ406で決定された物体姿勢に基づいて、計算システム101によって生成されうる。例えば、物体移動コマンドは、ロボットの手、またはロボットアーム(例えば、363)上の他のエンドエフェクターを、物体(例えば、371)を操作できる、または他の方法で物体と相互作用できる範囲内へ、かつ物体(例えば、371)の配向に合致する配向へ移動させるように決定されうる。実施形態では、移動コマンドによって、例えば、エンドエフェクターをこうした位置および/もしくは配向に置く、回転または他の作動を引き起こしうる。一部の事例では、移動コマンドは、物体姿勢によって提供されてもよい、上で論じた2D物体座標およびそれらに対応する奥行き値に基づいて生成されてもよい。例えば、物体移動コマンドは、エンドエフェクターが、物体(例えば、371)を操作するか、または他の方法で物体と相互作用することが可能になる画定近接レベルにまで、エンドエフェクターを2D物体座標に近づけさせるように生成されうる。
【0109】
実施形態では、物体移動コマンドは、衝突事象を回避するように決定されてもよい。衝突事象は、移動させる物体(例えば、371)と、例えば、容器側壁(例えば、
図3Dの384A−5)または容器縁(例えば、384A−2)を形成する他の容器境界との衝突を表しうる。一部の事例では、計算システム101は、こうした衝突事象を回避する物体移動経路を決定するように構成されてもよい。物体移動経路は、物体(例えば、371)を移動させる移動経路であってもよい。物体移動コマンドは、物体移動経路に基づいて生成されてもよい。一部の事例では、ステップ406での物体姿勢の正確な決定によって、こうした衝突の回避が容易になりうる。
【0110】
上で論じたように、方法400は、一部の実施形態では、容器(例えば、384A)が、既に
図3Cに示すような開位置にあるシナリオで始まりうる。実施形態では、方法400は、容器(例えば、384A)が、
図3Aおよび
図11Aに示すような閉位置にあるシナリオで始まりうる。こうした実施形態では、方法400は、計算システム101によって、ロボットアーム(例えば、363)を制御して、容器(例えば、384A)を開位置へ移動させるステップを含みうる。このように容器を開けるステップは、空間構造情報がステップ402で受信される前に発生しうる。
【0111】
例えば、
図11Aおよび11Bは、容器384Aが閉位置にある状況を描写する。こうした状況では、空間構造感知カメラ351は、容器384Aの外表面384A−7を記述する、すなわち、より具体的には、外表面384A−7上の位置を記述する、空間構造情報を生成するように構成されてもよい。この例における空間構造情報は、開いた容器の状況を伴う、ステップ402の空間構造情報とは異なってもよい。計算システム101は、外表面384A−7について記述する空間構造情報に基づいて、容器384Aのハンドル384A−6を表す、一つ以上の位置を決定するように構成されうる。さらに、計算システム101は、ロボットアーム363に、容器384Aを閉位置から開位置へ移動させる容器移動コマンドを、生成および出力するように構成されうる。容器移動コマンドは、ハンドル384A−6を表す一つ以上の位置(容器のハンドル位置とも呼ばれる)に基づいて生成されうる。より詳細には、
図11Bおよび11Cに示すように、容器移動コマンドによって、容器384Aを開位置へ滑らかに動かすために、ロボットの手363D、またはロボットアーム363の他のエンドエフェクターに、ハンドル384A−6を引き寄せさせうる。容器384Aが開位置になった後、空間構造感知カメラ351は、一部のシナリオで、別の位置に移動して(例えば、センサー移動コマンドによって)、容器表面およびその上に配置される物体に関する空間構造情報を取り込んでもよく、その後、物体姿勢が決定されてもよく、物体姿勢に基づいて物体を移動させてもよい(例えば、物体移動コマンドによって)。
【0113】
実施形態1は、通信インターフェースおよび少なくとも一つの処理回路を備える、計算システムに関する。通信インターフェースは、ロボットアーム上に配置された空間構造感知カメラを有する、ロボットアームを備えたロボットと通信するように構成され、空間構造感知カメラは、カメラ視野を有する。少なくとも一つの処理回路は、容器が開位置にある間に、容器内の物体がカメラ視野の中にあるかまたはカメラ視野の中にあったときに、以下の方法を行うように構成され、方法は、カメラ視野中の環境について奥行き情報を含む空間構造情報を受信することであって、空間構造情報が空間構造感知カメラによって生成されること、空間構造情報に基づいて容器姿勢を決定することであって、容器姿勢が、容器の配向、または容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであること、容器姿勢に基づいて物体姿勢を決定することであって、物体姿勢が、物体の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものであること、物体とのロボット相互作用を引き起こすための移動コマンドを出力することであって、移動コマンドが、物体姿勢に基づいて生成されることである。
【0114】
実施形態2は、実施形態1の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体が配置されている容器表面の配向、または容器表面上の少なくとも一つの位置の奥行き値のうちの少なくとも一つを記述するための容器表面の姿勢として、容器姿勢を決定するように構成される。
【0115】
実施形態3は、実施形態2の計算システムを含み、少なくとも一つの処理回路は、容器が容器表面からずれている容器縁を有する引き出しであるときに、容器縁の配向、または容器縁上の少なくとも一つの場所の奥行き値のうちの少なくとも一つを記述するための容器縁の姿勢を決定するように構成され、容器縁の姿勢が、空間構造情報に基づいて決定される。さらに、容器表面の姿勢が、容器縁の姿勢に基づいて、かつ、容器縁と容器表面との間の定義された距離に基づいて決定される。
【0116】
実施形態4は、実施形態2または3の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体と関連付けられた容器セグメント識別子(容器表面のセグメントを識別するためのもの)を受信し、容器表面の姿勢に基づいて、容器セグメント識別子と関連付けられた位置を決定するように構成される。
【0117】
実施形態5は、実施形態3または4の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、衝突事象を回避する物体移動経路を決定するように構成され、衝突事象が、物体と容器縁を形成する容器境界との衝突を表し、移動コマンドが、物体移動経路に基づいて生成される。
【0118】
実施形態6は、実施形態1〜5のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子が物体上に配置されるときに、物体識別子の2D位置を記述するために、物体識別子の位置を決定し、物体識別子の位置および空間構造情報に基づいて、物体を表す一つ以上の位置である一つ以上の物体位置の集合を決定するように構成され、移動コマンドが、一つ以上の物体位置の集合に基づいて生成される。
【0119】
実施形態7は、実施形態6の計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子の位置を囲む領域を決定し、物体識別子の位置を囲む決定された領域に対応する、空間構造情報の一部分を検索することによって、一つ以上の物体位置の集合を決定するように構成される。
【0120】
実施形態8は、実施形態7の計算システムを含む。この実施形態では、空間構造情報は、カメラ視野中の環境より感知された、一つ以上の表面上にある複数の位置を表す点群を含み、一つ以上の物体位置の集合が検索される空間構造情報の一部分は、物体識別子の位置を囲む決定された領域内に位置する、複数の位置の部分集合を含む。
【0121】
実施形態9は、実施形態6〜8のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子の位置を表すための2D座標である、少なくとも一つの2D物体識別子の座標を決定し、2D物体識別子の座標に基づいて、一つ以上の2D物体座標の少なくとも一つの集合を決定するように構成され、一つ以上の2D物体座標が、一つ以上の物体位置を表すための、一つ以上のそれぞれの2D座標であり、移動コマンドが、一つ以上の2D物体座標の集合に基づいて、かつ物体の配向および奥行き値に基づいて生成される。
【0122】
実施形態10は、実施形態6〜9のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体識別子にコード化された情報に基づいて、物体サイズを決定するように構成され、一つ以上の物体位置が、物体の境界を表し、物体サイズに基づいて決定される。
【0123】
実施形態11は、実施形態6〜10のうちのいずれか一つの計算システムを含む。この実施形態では、少なくとも一つの処理回路は、物体と関連付けられた物体識別情報を受信し、物体識別子にコード化された情報が、物体識別情報に合致するかどうかを決定するように構成される。
【0124】
実施形態12は、実施形態6〜11のうちのいずれか一つの計算システムを含む。この実施形態では、物体識別子感知装置が、ロボットアーム上に配置されるときに、少なくとも一つの処理回路は、物体識別子感知装置によって感知された情報に基づいて、物体識別子の位置を決定するように構成される。
【0125】
実施形態13は、実施形態12の計算システムを含む。この実施形態では、移動コマンドは、ロボットに物体を移動させるための物体移動コマンドであり、少なくとも一つの処理回路は、ロボットアームに、物体識別子感知装置を容器の画定近接レベル内に移動させるための、センサー移動コマンドを出力するように構成され、物体識別子の位置が、センサー移動コマンドの出力後に決定される。
【0126】
実施形態14は、実施形態13の計算システムを含む。この実施形態では、センサー移動コマンドは、ロボットアームに、空間構造感知カメラを容器の画定近接レベル内に移動させるためのものでもあり、空間構造情報は、空間構造感知カメラが容器の画定近接レベル内にあるときに生成され、物体が配置されている容器表面の一部分を表す。
【0127】
実施形態15は、実施形態13または14の計算システムを含む。この実施形態では、容器が閉位置にあり、ハンドルを含むとき、少なくとも一つの処理回路は、容器の外表面上の位置を記述するための空間構造追加情報を受信し、空間構造追加情報に基づいてハンドルを表すための一つ以上のハンドル位置を決定し、ロボットアームに、容器を閉位置から開位置へ移動させるための容器移動コマンドを出力するように構成され、容器移動コマンドが、一つ以上のハンドル位置に基づいて生成され、センサー移動コマンドおよび物体移動コマンドが、容器移動コマンドの後に出力される。
【0128】
関連分野の当業者にとって、本明細書に記載する方法および用途への、その他の適切な修正ならびに適応が、実施形態のうちのいずれの範囲から逸脱することなく成すことができることは明らかであろう。上に記載する実施形態は、説明に役立つ実施例であり、本発明がこれらの特定の実施形態に限定されると解釈されるべきではない。本明細書に開示する様々な実施形態は、記載および添付の図に具体的に提示する組み合わせとは異なる組み合わせで、組み合わせてもよいことは理解されるべきである。実施例によって、本明細書に記載するプロセスもしくは方法のいずれのある特定の行為または事象は、異なる順番で行われてもよく、追加、統合、または完全に省略してもよいことも理解されるべきである(例えば、記載したすべての行為または事象は、方法またはプロセスを実施するのに必要ではない場合がある)。加えて、本明細書の実施形態のある特定の特徴を、明確にするために、単一の構成要素、モジュール、またはユニットにより行われていると記載しているものの、本明細書に記載する特徴および機能は、構成要素、モジュール、またはユニットのいかなる組み合わせによって行われてもよいことは理解されるべきである。したがって、添付の特許請求の範囲に定義するような、発明の精神または範囲から逸脱することなく、当業者によって様々な変更および修正に影響を与えうる。
【解決手段】物体検出を行うためのシステムによって、空間構造感知カメラのカメラ視野中にあるか、またはその中にあった物体と関連付けられた空間構造情報を受信する。空間構造情報は、空間構造感知カメラによって生成され、カメラ視野中の環境について奥行き情報を含む。システムによって、空間構造情報に基づいて容器姿勢を決定し、容器姿勢は、容器の配向、または容器の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものである。システムによってさらに、容器姿勢に基づいて物体姿勢を決定し、物体姿勢は、物体の配向、または物体の少なくとも一部分の奥行き値のうちの少なくとも一つを記述するためのものである。