(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-05-24
(45)【発行日】2023-06-01
(54)【発明の名称】高度化したスキャンメカニズムを有するロボットシステム
(51)【国際特許分類】
B25J 13/08 20060101AFI20230525BHJP
B65G 59/02 20060101ALI20230525BHJP
【FI】
B25J13/08 A
B65G59/02 Z
【外国語出願】
(21)【出願番号】P 2020068723
(22)【出願日】2020-04-07
(62)【分割の表示】P 2019080213の分割
【原出願日】2019-04-19
【審査請求日】2022-04-04
(32)【優先日】2019-01-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515182347
【氏名又は名称】株式会社Mujin
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100134371
【氏名又は名称】中塚 隆志
(72)【発明者】
【氏名】デアンコウ,ロセン
【審査官】杉山 悟史
(56)【参考文献】
【文献】米国特許出願公開第2013/0110280(US,A1)
【文献】特開2013-086914(JP,A)
【文献】特開平05-285803(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
B25J 1/00 ~ 21/02
B65G 57/00 ~ 69/34
(57)【特許請求の範囲】
【請求項1】
ロボットシステムの操作方法であって、
撮像データに基づいて、ターゲットとなる対象の最初のポーズを判定することであって、前記撮像データ内に示される前記ターゲットとなる対象は、1つ又は複数の対象識別子を含むことと、
前記最初のポーズに関連する信頼基準を計算することと、
前記信頼基準に基づいて、前記1つ又は複数の対象識別子の位置を概算することと、
前記1つ又は複数の対象識別子の前記概算の位置に基づいて、モーションプランを取得することであって、前記モーションプランは、前記ターゲットとなる対象をスタート位置と作業位置との間で移動する間に、前記概算の位置の少なくとも1つを1つ又は複数の対象スキャナに提供するように、ロボットアーム及びエンドエフェクタを操作するためのものであることと、
を含む、方法。
【請求項2】
前記1つ又は複数の対象識別子を有する前記ターゲットとなる対象を含む、ピックアップエリアを示す前記撮像データを受信することと、
前記ロボットアーム及び/又は前記エンドエフェクタの1つ又は複数の作動デバイスを操作するための前記モーションプランを実行することと、
をさらに含み、
前記信頼基準は、前記最初のポーズが前記ターゲットとなる対象の実際の向きにマッチすることの可能性を示すものであり、
前記モーションプランは、前記ロボットアーム及び/又は前記エンドエフェクタの前記1つ又は複数の作動デバイスのためのコマンド、設定、又はそれらの組み合わせを含み、
前記モーションプランは、アプローチ位置及びスキャン位置に対応しており、前記アプローチ位置及び前記スキャン位置は、前記概算の位置に基づいて、かつ、前記最初のポーズが前記ターゲットとなる対象の前記実際の向きにマッチするか否かにかかわらず、前記対象識別子の少なくとも1つが前記エンドエフェクタによって視覚的に妨害されないままであることの計算された可能性に従って取得される、請求項1に記載の方法。
【請求項3】
前記アプローチ位置は、前記エンドエフェクタが前記ターゲットとなる対象に接触し、当該ターゲットとなる対象をグリップする位置を規定し、
前記スキャン位置は、前記1つ又は複数の対象識別子の少なくとも1つをスキャンするために、前記1つ又は複数の対象スキャナの前に前記ターゲットとなる対象の1つ又は複数の表面を提供するための前記エンドエフェクタの位置を規定し、前記1つ又は複数の表面は、前記1つ又は複数の対象識別子の前記概算の位置の少なくとも1つを含み、
前記モーションプランを取得することは、前記信頼基準が十分性閾値を満たさない場合に、前記計算された可能性に従って、前記アプローチ位置及び前記スキャン位置を取得することを含む、請求項2に記載の方法。
【請求項4】
前記アプローチ位置及び前記スキャン位置は、前記信頼基準が十分性閾値を満たさない場合に、前記対象識別子の少なくとも1つが前記エンドエフェクタによって視覚的に妨害されないままであることの前記計算された可能性を最大化することに基づいて取得される、請求項2に記載の方法。
【請求項5】
前記モーションプランを取得することは、
前記撮像データに基づいて、利用可能なアプローチ位置のセットを取得することと、
前記セット内の前記利用可能なアプローチ位置の各々に関連するスキャンのメトリック及び性能のメトリックを計算することと、
前記信頼基準が十分性閾値を満たさない場合に、前記性能のメトリックの前に前記スキャンのメトリックを優先順位付けすることに基づいて、前記アプローチ位置を選択することと、
を含む、請求項2に記載の方法。
【請求項6】
前記モーションプランを取得することは、
前記撮像データに基づいて、利用可能なアプローチ位置のセットを取得することであって、前記セット内の前記利用可能なアプローチ位置の各々は、グリップ可能な前記ターゲットとなる対象の表面に対応することと、
前記最初のポーズが前記ターゲットとなる対象の前記実際の向きにマッチするという第1の仮定に従って、前記セット内の前記利用可能なアプローチ位置の各々に関して露出した識別子のセットを計算することと、
前記最初のポーズが前記ターゲットとなる対象の前記実際の向きにマッチしないという第2の仮定に従って、前記セット内の前記利用可能なアプローチ位置の各々に関して代替的な識別子のセットを計算することと、
前記露出した識別子のセットと前記代替的な識別子のセットの両方における、視覚的に妨害されていない対象識別子に対応する、前記アプローチ位置を選択することと、
を含み、
前記露出した識別子のセット及び前記代替的な識別子のセットは、それぞれ、前記第1の仮定及び前記第2の仮定に従って、前記ターゲット表面の外側の前記対象識別子の1つ又は複数の概算の位置を示す、請求項2に記載の方法。
【請求項7】
前記対象スキャナに対応するスキャンフィールドを識別することと、
前記スキャンフィールド内又は前記スキャンフィールドを通る、前記ターゲットとなる対象の候補のポーズのセットを計算することであって、前記候補のポーズの各々は、前記対象スキャナの少なくとも1つに対して前記ターゲットとなる対象の1つ又は複数の表面を提供することと、
をさらに含み、
前記モーションプランを取得することは、
前記露出した識別子のセット及び前記代替的な識別子のセットを前記候補のポーズの各々にマッピングすることと、
前記露出した識別子のセット及び前記代替的な識別子のセットにおける前記対象識別子を前記スキャンフィールドに提供するための候補のポーズとして、スキャンポーズを識別することと、
前記スキャンフィールド内又は前記スキャンフィールドを通る、前記スキャンポーズを確立する前記モーションプランを取得することと、
を含む、請求項6に記載の方法。
【請求項8】
前記モーションプランを取得することは、少なくとも第1のスキャン位置及び第2のスキャン位置を計算することを含み、前記第1のスキャン位置は、前記露出した識別子のセット内の位置を、前記対象スキャナの1つに提供するためのものであり、前記第2のスキャン位置は、前記代替的な識別子のセット内の位置を、前記対象スキャナの1つに提供するためのものである、請求項6に記載の方法。
【請求項9】
前記モーションプランを実施することは、前記第1のスキャン位置まで前記モーションプランを実施した後に、スキャン結果を評価することを含み、
当該方法は、前記スキャン結果が成功したスキャンを示す場合、前記ターゲットとなる対象を直接前記作業位置に移動し、かつ、前記第2のスキャン位置を無視するための第2のプランを実施することをさらに含む、請求項8に記載の方法。
【請求項10】
前記モーションプランを実施することは、
前記第1のスキャン位置まで前記モーションプランを実施した後に、スキャン結果を評価することと、
前記スキャン結果が失敗したスキャンを示す場合、前記ターゲットとなる対象を前記第2のスキャン位置に移動することと、
を含む、請求項8に記載の方法。
【請求項11】
ロボットシステムであって、
プロセッサと、
前記プロセッサと動作可能に結合され、撮像センサ、対象スキャナのセット及びロボットアームと通信するように構成された通信回路と、
少なくとも1つのプロセッサと接続され、前記プロセッサによって実行可能である命令を記憶する少なくとも1つのメモリデバイスと、
を備え、
前記ロボットアームは、エンドエフェクタを有し、ターゲットとなる対象をスタート位置から作業位置にグリップ及び移動するように構成され、
前記命令は、
撮像データに基づいて、ターゲットとなる対象の最初のポーズを判定することであって、
前記ターゲットとなる対象は、1つ又は複数の対象識別子を含み、
前記最初のポーズは、前記ターゲットとなる対象の概算の向きであることと、
前記最初のポーズが前記ターゲットとなる対象の実際の向きにマッチするという第1の仮定に従って、前記対象識別子の1つの、第1の概算の位置を計算することと、
前記最初のポーズが前記ターゲットとなる対象の前記実際の向きにマッチしないという第2の仮定に従って、前記対象識別子の1つの、第2の概算の位置を計算することと、
前記第1の概算の位置及び前記第2の概算の位置
をスキャンフィールドの1つ又は複数に配置するモーションプランを取得することであって、前記モーションプランは、前記移動の間に、前記対象識別子の少なくとも1つを対象スキャナのセットに提供するように、ロボットアーム及びエンドエフェクタを操作するためのものであることと、
を行うためのものである、ロボットシステム。
【請求項12】
前記通信
回路は、前記ロボットアームを操作するための前記モーションプランを通信するように構成され、前記モーションプランはアプローチ位置及びスキャン位置と関連し、
前記アプローチ位置は、前記エンドエフェクタが前記ターゲットとなる対象に接触し、当該ターゲットとなる対象をグリップする位置を規定し、
前記スキャン位置は、前記1つ又は複数の対象識別子をスキャンするために、前記1つ又は複数の対象スキャナの前に前記ターゲットとなる対象の1つ又は複数の表面を提供するための前記エンドエフェクタの位置を規定し、前記スキャン位置は、前記
作業位置の前に存在する、請求項11に記載のロボットシステム。
【請求項13】
前記通信回路は、前記モーションプランの一部分を実施した後に、前記対象スキャナの前記1つ又は複数からスキャン結果を受信するように構成され、
前記少なくとも1つのメモリデバイスは、
前記モーションプランの前記一部分を実施して、前記第1の概算の位置及び前記第2の概算の位置の一方を、前記対象スキャナのセットに提供することと、
前記モーションプランの前記一部分を実施した後に、前記スキャン結果を評価することと、
前記スキャン結果が成功したスキャンを示す場合、前記ターゲットとなる対象を提供位置から直接前記作業位置に移動し、かつ、前記第1の概算の位置及び前記第2の概算の位置の他方を無視するための第2のプランを実施することと、
を行うための、前記プロセッサによって実行可能である命令を含む、請求項11に記載のロボットシステム。
【請求項14】
前記通信回路は、1つのポーズにおける前記ターゲットとなる対象の様々な表面をスキャンするための、互いに逆向きの方向、直交した方向、又はそれらの組み合わせを向いた対応するスキャンフィールドを有する、前記対象スキャナのセットと通信するように構成される、請求項11に記載のロボットシステム。
【請求項15】
プロセッサ命令を記憶した有形の非一時的なコンピュータ可読媒体であって、前記プロセッサ命令は、ロボットシステムにより、その1つ又は複数のプロセッサを介して実行された際に、前記ロボットシステムに、
撮像データ及び信頼基準に基づいて、ターゲットとなる対象の最初のポーズを判定することであって、
前記ターゲットとなる対象は、1つ又は複数の対象識別子を含み、前記信頼基準は、前記最初のポーズが前記ターゲットとなる対象の実際の向きにマッチすることの可能性を示すものであることと、
前記信頼基準に基づいて、前記1つ又は複数の対象識別子の位置を概算することと、
前記1つ又は複数の対象識別子の前記概算の位置に基づいて、モーションプランを取得することであって、前記モーションプランは、前記ターゲットとなる対象をスタート位置と作業位置との間で移動する間に、前記概算の位置の少なくとも1つを対象スキャナのセットに提供するように、ロボットアーム及びエンドエフェクタを操作するためのものであることと、
を含む方法を実行させる、有形の非一時的なコンピュータ可読媒体。
【請求項16】
前記方法はさらに、
1つ又は複数のスキャンフィールドを識別することであって、各々のスキャンフィールドは、前記対象スキャナのセット内の対象スキャナに隣接する空間を示すことと、
前記信頼基準が十分性条件を満たさないと判定することと、
を含み、
前記1つ又は複数の対象識別子の前記位置を概算することは、
前記最初のポーズが正確であるという第1の仮定に従って、前記対象識別子の1つの、第1の概算の位置を計算することと、
前記判定に基づいて、前記最初のポーズが正確ではないという第2の仮定に従って、前記対象識別子の1つの、第2の概算の位置を計算することと、を含み、
前記モーションプランは、前記第1の概算の位置及び前記第2の概算の位置を、前記スキャンフィールドの1つ又は複数に配置するためのものである、請求項15に記載の有形の非一時的なコンピュータ可読媒体。
【請求項17】
前記モーションプランは、
(1)前記1つ又は複数の対象識別子の前記概算の位置と、
(2)前記最初のポーズが正確であるか否かにかかわらず、前記対象識別子の少なくとも1つがグリップ表面の外側にあることを示す計算された可能性と
に従って取得された、前記グリップ表面において、前記ターゲットとなる対象をグリップするためのものであり、
前記グリップ表面はさらに、前記エンドエフェクタによってカバーされる前記ターゲットとなる対象の表面を示す、請求項15に記載の有形の非一時的なコンピュータ可読媒体。
【請求項18】
前記モーションプランを取得することは、前記信頼基準が十分性条件を満たさない場合に、前記計算された可能性を最大化することを含む、請求項17に記載の有形の非一時的なコンピュータ可読媒体。
【請求項19】
前記モーションプランを取得することは、
前記撮像データに基づいて、利用可能なアプローチ位置のセットを計算することであって、前記セット内の各々の利用可能なアプローチ位置は、前記エンドエフェクタを、前記ターゲットとなる対象に接触し且つグリップするように配置するためのものであることと、
前記最初のポーズが正確であるという第1の仮定に従って、前記セット内の各々の利用可能なアプローチ位置に関して露出した識別子のセットを取得することと、
前記最初のポーズが正確ではないという第2の仮定に従って、前記セット内の各々の利用可能なアプローチ位置に関して代替的な識別子のセットを取得することと、
前記露出した識別子のセットと前記代替的な識別子のセットの両方における、カバーされていない対象識別子を有する、前記利用可能なアプローチ位置を選択することと、
を含み、
前記モーションプランは、前記選択された利用可能なアプローチ位置に従って前記ターゲットとなる対象をグリップするためのものであり、
前記露出した識別子のセット及び前記代替的な識別子のセットは、それぞれ、前記第1の仮定及び前記第2の仮定に従って、前記グリップ表面の外側に残る前記対象識別子の概算の位置を示す、請求項17に記載の有形の非一時的なコンピュータ可読媒体。
【請求項20】
前記モーションプランを取得することは、
前記露出した識別子のセット及び前記代替的な識別子のセットが、前記ターゲットとなる対象の対向する表面に対応する位置を含むと判定することと、
前記対向する表面に直交する第3の表面に関連する前記利用可能なアプローチ位置を選択することと
を含む、請求項17に記載の有形の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は概して、ロボットシステムを対象とし、より詳細には、対象をスキャンするためのシステム、プロセス、及び技術を対象とする。
【背景技術】
【0002】
多くのロボット(たとえば、自動的に/独立して物理的動作を実行するように構成されたマシン)は、その絶えず向上する性能及び低下するコストにより、現在、多くの分野で広く使用されている。たとえば、ロボットは、製造及び/または組立て、パッキング及び/またはパッケージング、移送及び/または輸送などにおいて、様々な作業(たとえば、空間を通しての対象の操縦または移動)を実行するように使用することができる。作業の実行において、ロボットは、人間の動作を反復することができ、それにより、そうでなければ危険又は反復的な作業を行うことが要求される人間の関与を置き換えたり、低減したりする。
【0003】
しかし、技術的な進歩に関わらず、ロボットはしばしば、より複雑な作業を実行するために必要な人間の感受性及び/または適応性を複製するのに必要な洗練さが欠如している。たとえば、操縦ロボットはしばしば、様々な現実世界の因子から生じ得る逸脱または不確実性に対処するための、実行される動作における粒度(granularity)の細かい制御及び柔軟性が欠如している。したがって、様々な現実世界の因子に関わらず、作業を完了するように、ロボットの様々な態様を制御及び管理するための、向上した技術及びシステムが必要とされている。
【図面の簡単な説明】
【0004】
【
図1】高度化したスキャンメカニズムを有するロボットシステムが作動し得る例示的環境を示す図である。
【
図2】本開示の1つまたは複数の実施形態に係るロボットシステムを示すブロック図である。
【
図4】本開示の1つまたは複数の実施形態に係るロボットシステムによって実行される例示的作業を示す上面図である。
【
図5A】本開示の1つまたは複数の実施形態に係る、
図1のロボットシステムを作動するためのフロー図である。
【
図5B】本開示の1つまたは複数の実施形態に係る、スキャンメトリックに基づくモーションプランを得るためのフロー図である。
【発明を実施するための形態】
【0005】
高度化したスキャンメカニズムを有するロボットシステムのためのシステム及び方法が、本明細書に記載されている。いくつかの実施形態に従って構成されたロボットシステム(たとえば、1つまたは複数の指定された作業を実行するデバイスの統合システム)は、対象の最初のポーズに関連する不確実性に従って、モーションプランを得るとともに実行することにより、高度化したスキャンを提供する。
【0006】
ロボットシステムは、ターゲットとなる対象を操縦すること(たとえば、物理的移動及び/または再度の方向付け)に基づいて、作業を実行するように構成することができる。たとえば、ロボットシステムは、供給元の位置(たとえば、大箱、パレット、またはコンベアベルト)からターゲットとなる対象を取り上げ、それを目的地の位置に移動させることに基づき、様々な対象を並び替え又は置き換えることができる。いくつかの実施形態では、作業には、ターゲットとなる対象の1つまたは複数の特定の位置及び/または表面上に位置する1つまたは複数の識別子(たとえば、バーコードまたはクイックレスポンス(QR)コード(登録商標))をスキャナのセットに提供するなどにより、移送の間にターゲットとなる対象をスキャンすることがさらに含まれ得る。したがって、ロボットシステムは、ターゲットとなる対象をグリップするとともにピックアップし、ターゲットとなる対象を提供位置/向きに移送して識別子をスキャナに提供し、ターゲットとなる対象を、(たとえば、対象を作業位置に移送すること、対象のポーズを調整すること、対象を下げること、及び/または対象を開放することにより)、作業位置に配置するように、モーションプランを得るか又は計算することができる。
【0007】
作業を実行するために、いくつかの実施形態では、ロボットシステムは、ターゲットとなる対象の位置及びポーズ(たとえば、休止している向き)、及び/または、ターゲットとなる対象の周りの環境を識別するために使用される、撮像デバイス(たとえば、カメラ、赤外センサ/カメラ、レーダー、ライダーなど)を備えることができる。いくつかの実施形態では、ロボットシステムは、ポーズに関する信頼基準をさらに計算することができる。信頼基準は、判定されたポーズが、ターゲットとなる対象の実際の現実世界のポーズにマッチすることの確実性または可能性の基準を示し得る。説明の例として、ロボットシステムは、ピックアップエリアから作業エリア(たとえば、移動先の大箱またはパレット)に移送されるように作業がなされる対象の位置及び向きを示す画像(たとえば、供給元の大箱またはパレットなどのピックアップエリアの画像)を得ることができる。ロボットシステムは、ターゲットとなる対象を、所定の順番(たとえば、上から底、及び/または、外側縁及び内側から)に従って、識別または選択するように、画像を処理することができる。ロボットシステムは、(たとえば、隣接するピクセルに対するピクセルの色、輝度、及び/またはそれらの値の変化に従って)対象のラインを識別及びグループ化などすることにより、画像から、最初のポーズをさらに判定することができる。最初のポーズの判定において、ロボットシステムは、所定のプロセス及び/または方程式に従って、信頼基準(たとえば、判定されたポーズに関連する、定量化された確実性の程度)をさらに計算することができる。
【0008】
その位置、ポーズ、信頼基準、またはそれらの組合せに応じて、ロボットシステムは、作業を実行するためのモーションプラン(たとえば、1つまたは複数のリンク及び/またはジョイントを移動させるためのアクチュエータに関する制御のシークエンス)を得るとともに実行することができる。たとえば、ターゲットとなる対象の並び替え及び/または置き換えのために、モーションプランは、最初に供給元の位置でターゲットとなる対象をグリップすること、空間にわたって対象を操縦すること、及び、対象を目的地の位置に置くことに対応することができる。
【0009】
従来のシステムは、対象の判定されたポーズに厳格に基づいて、モーションプランを得るとともに実行する。したがって、従来のシステムは、上流で(たとえば、入力データの収集において)生じ得るあらゆる逸脱、エラー、及び/または不確実性に関わらず、モーションプランを得るとともに実行する。したがって、従来のシステムは、上流でもたらされた欠陥を緩和または修正することができない。このことは、作業の失敗(たとえば、対象の識別の失敗、及び/または、移送の間のピースの損失)につながり、このことは、人間による介入/入力を必要とする。
【0010】
従来のシステムとは異なり、以下に記載の様々な実施形態は、信頼基準に従って、モーションプランを得るとともに実行することができる。換言すると、以下に記載のロボットシステムは、信頼基準に従って、ターゲットとなる対象に対するアプローチを変化させ、ターゲットとなる対象上のグリップ位置を変更し、ターゲットとなる対象の提供のポーズ/位置を変更し、及び/またはモーション経路の他の部分を変更することができる。説明の例として、ロボットシステムは、ターゲットとなる対象として、ピックアップエリアに位置するボックスを選択することができる。この例に関し、ボックスが対応するポーズは、対象頂部表面が概して水平に向くとともに露出し、かつ、対象の側部表面の1つ(すなわち、頂部表面よりも小さい/狭い)が概して垂直に向くとともに露出している。ロボットシステムは、マスターデータにおいて、対象が、1つの識別子を対象底部表面(すなわち、対象頂部表面とは反対側)に有し、かつ、より小さい識別子を対象の側部表面の1つに有していることを含み得る。ロボットシステムが、ターゲットとなる対象の識別においてピックアップ位置の画像を処理する場合、ロボットシステムは、信頼基準を計算することができる。たとえば、信頼基準は、画像において取得されたボックスの1つまたは複数の可視の特性(たとえば、形状、色、画像、デザイン、ロゴ、テキストなど)と、マスターデータ内の所定の情報との間のマッチの基準に対応し得る。信頼基準が閾値を超え、それにより、ロボットシステムが、対象頂部表面がボックスの頂部で露出していることの十分な確実性を認識した場合、ロボットシステムは、エンドエフェクタを、露出した頂部表面の上に配置し、頂部表面をグリップし、スキャナの前に決まった位置で底部表面を提供するように、ターゲットとなる対象を回転させることができる。信頼基準が閾値未満であり、それにより、ロボットシステムが、頂部表面と底部表面とのいずれが露出しているかを認識できない場合、ロボットシステムは、対象の側部表面の1つに沿ってエンドエフェクタを配置し、対象の側部表面をグリップし、対向するスキャナのセットの間を通すように、ターゲットとなる対象を回転させることができる。
【0011】
空間内(たとえば、スタート位置と作業位置との間の位置)でターゲットとなる対象をスキャンすることにより、作業を実行することに関する効率及び速度が向上される。スキャン位置を含むモーションプランであって、対象スキャナと協同もするモーションプランを計算することにより、ロボットシステムは、ターゲットとなる対象を移動するための作業を、ターゲットとなる対象をスキャンするための作業と効果的に組み合わせることができる。さらに、最初の向きの信頼基準に基づくモーションプランの取得により、スキャン作業に関する効率、速度及び精度がさらに向上する。ロボットシステムは、最初のポーズが正確ではないという仮定に対応する代替的な向きに対処するモーションプランを計算することができる。したがって、ロボットシステムは、ポーズの判定のエラー(たとえば、較正エラー、予期しないポーズ、予期しない光の条件などの結果の判定のエラー)を伴う場合であっても、ターゲットとなる対象を正確に/成功的にスキャンする可能性を増大させることができる。正確なスキャンの可能性の増大は、ロボットシステムに関する全体のスループットの増大につながるとともに、操作者の労力/介入をさらに低減することができる。信頼性計算及び関連した経路計算に関する詳細を、以下に記載する。
【0012】
以下の記載では、複数の特定の詳細が、本開示を完全に理解させるために説明される。他の実施形態では、本明細書で導入された技術を、それら特定の詳細を伴わずに実施することができる。他の例では、特定の機能またはルーチンなど、よく知られている機能は、本開示を不要にわかりにくくすることを避けるために詳細には記載されない。本記載における「実施形態(an embodiment)」、「1つの実施形態(one embodiment)」などの参照は、記載の特定の特徴、構造、材料、または特性が、本開示の少なくとも1つの実施形態に含まれていることを意味している。このため、本明細書におけるそのようなフレーズの表示は、必ずしも、すべてが同じ実施形態を参照してはいない。一方、そのような参照は、必ずしも相互に排他的であることもない。さらに、特定の特徴、構造、材料、または特性は、1つまたは複数の実施形態において、任意の適切な方式で組み合わせることができる。図示の様々な実施形態は、説明的表示に過ぎず、必ずしも正寸して示されていないことを理解されたい。
【0013】
よく知られていてかつロボットシステム及びサブシステムとしばしば関連付けられる構造またはプロセスであって、開示の技術のいくつかの顕著な態様を不要に妨げ得る構造またはプロセスを記載するいくつかの詳細は、明確化の目的のために、以下の記載では説明されない。さらに、以下の開示が、本開示の様々な態様のいくつかの実施形態を説明しているが、いくつかの他の実施形態が、このセクションで記載のものとは異なる構成、または異なる構成要素を有することができる。したがって、開示の技術は、追加の要素を伴うか、以下に記載の要素のいくつかを伴わない、他の実施形態を有することができる。
【0014】
以下に記載の、本開示の多くの実施形態または態様は、プログラム可能なコンピュータまたはコントローラによって実行されるルーチンを含み、コンピュータで実行可能であるか又はコントローラで実行可能である命令の形態を取ることができる。関連技術の当業者には、開示の技術が、以下に示すもの及び記載するもの以外のコンピュータまたはコントローラのシステムで実施され得ることを理解されたい。本明細書に記載の技術は、以下に記載のコンピュータで実行可能な1つまたは複数の命令を実行するように、明確にプログラムされたか、構成されたか、構築された、特定用途のコンピュータまたはデータプロセッサ内で実施することができる。したがって、本明細書で通常使用される「コンピュータ(computer)」及び「コントローラ(controller)」との用語は、任意のデータプロセッサに言及し、インターネットの装置及びハンドヘルドデバイス(パームトップ型コンピュータ、ウェアラブルコンピュータ、セルラまたは移動電話、複数プロセッサシステム、プロセッサベースであるかプログラム可能な家庭用電気機械器具、ネットワークコンピュータ、ミニコンピュータなどを含む)を含むことができる。これらコンピュータ及びコントローラによって扱われる情報は、液晶ディスプレイ(LCD)を含む、任意の適切な表示媒体に提供することができる。コンピュータまたはコントローラで実行可能な作業を実行するための命令は、ハードウェア、ファームウェア、またはハードウェアとファームウェアとの組合せを含む、任意の適切なコンピュータ可読媒体に記憶することができる。命令は、たとえば、フラッシュドライブ、及び/または他の適切な媒体を含む、任意の適切なメモリデバイスに包含することができる。
【0015】
「結合された(coupled)」及び「接続された(connected)」との用語は、その派生形とともに、構成要素間の構造的な関係を記載するために、本明細書で使用することができる。これらの用語が、互いに関して同義であることは意図されていないことを理解されたい。むしろ、特定の実施形態では、「接続された(connected)」は、2つ以上の要素が互いに直接接触していることを示すために使用することができる。文脈から別様に明確にされていない限り、「結合された(coupled)」との用語は、2つ以上の要素が直接的か(それらの間に他の介在要素を伴って)間接的に互いに接触していること、または、(たとえば、信号の送信/受信、もしくは、関数呼び出しに関するものなど、因果関係にあるように)2つ以上の要素が互いに協同するか相互作用すること、またはその両方を示すために使用することができる。
【0016】
適切な環境
図1は、高度化したスキャンメカニズムを有するロボットシステム100が作動し得る例示的環境を示す図である。ロボットシステム100は、1つまたは複数の作業を実行するように構成された、1つまたは複数の構造物(たとえば、ロボット)を備えている。高度化したスキャンメカニズムの態様は、様々な構造によって実行または実施することができる。
【0017】
図1に示す例に関し、ロボットシステム100は、倉庫または分配/輸送ハブ内の、荷降しユニット102、移送ユニット104(たとえば、パレットに載せるロボット及び/またはピースピッキングロボット)、輸送ユニット106、荷積みユニット108、またはそれらの組合せを備えることができる。ロボットシステム100における各々のユニットは、1つまたは複数の作業を実行するように構成することができる。これら作業は、倉庫に貯蔵するために、対象をトラックまたはバンから荷降しするか、対象を貯蔵位置から荷降しして、それら対象を輸送のためにトラックまたはバンに荷積みするなど、目的を達成する操作を実施するように、シークエンスにおいて組み合わせることができる。別の例に関し、作業には、1つのコンテナから別のコンテナに対象を移動させることを含むことができる。各々のユニットは、作業を実行するために、作業のシークエンス(たとえば、1つまたは複数の内部の構成要素を操作すること)を実行するように構成することができる。
【0018】
いくつかの実施形態では、作業は、ターゲットとなる対象112(たとえば、操縦に関してターゲットとされる、ボックス、ケース、ケージ、パレットなど)の、スタート位置114から作業位置116への操縦(たとえば、移動及び/または再度の方向付け)を含むことができる。たとえば、荷降しユニット102(たとえば、デバンニングロボット)は、キャリア(たとえば、トラック)内のある位置から、コンベアベルト上のある位置まで、ターゲットとなる対象112を移送するように構成することができる。また、移送ユニット104は、1つの位置(たとえば、コンベアベルト、パレット、または大箱)から別の位置(たとえば、輸送ユニット106上のパレット、大箱、またはケージ)に、ターゲットとなる対象112を移送するように構成することができる。別の例に関し、移送ユニット104(たとえば、ピースピッキングロボット)は、1つのコンテナから別のコンテナに、ターゲットとなる対象112を移送するように構成することができる。操作を完了する際には、輸送ユニット106は、ターゲットとなる対象112を、移送ユニット104に関連するエリアから、荷積みユニット108に関連するエリアに移送することができ、荷積みユニット108は、ターゲットとなる対象112を、(たとえば、ターゲットとなる対象112を載せたパレットを移動することにより)移送ユニット104から貯蔵位置(たとえば、棚上のある位置)に移送することができる。以下に、作業及び関連する動作に関する詳細を記載する。
【0019】
説明の目的のために、ロボットシステム100は、輸送センターの文脈で記載するが、ロボットシステム100は、製造、組立て、パッケージング、ヘルスケア、及び/または他のタイプのオートメーションなどのために、他の環境で/他の目的で作業を実行するように構成することができることを理解されたい。ロボットシステム100が、
図1に示されていない、マニピュレータ、サービスロボット、モジュール式ロボットなどの、他のユニットを含むことができることも理解されたい。たとえば、いくつかの実施形態では、ロボットシステム100は、ケージカートまたはパレットから、コンベアまたは他のパレットに対象を移送するための、パレットから降ろすユニット、1つのコンテナから別のコンテナに対象を移送するためのコンテナ切替えユニット、対象をラッピングするためのパッケージングユニット、対象の1つまたは複数の特性に応じて対象をグループ化するための並び替えユニット、対象の1つまたは複数の特性に応じて様々に対象を操縦するため(たとえば、並び替え、グループ化、及び/または移送のため)のピースピッキングユニット、またはそれらの組合せを含むことができる。
【0020】
適切なシステム
図2は、本開示の1つまたは複数の実施形態に係るロボットシステム100を示すブロック図である。いくつかの実施形態では、たとえば、ロボットシステム100(たとえば、上述のユニット及び/またはロボットの1つまたは複数におけるシステム)は、1つもしくは複数のプロセッサ202、1つもしくは複数のストレージデバイス204、1つもしくは複数の通信デバイス206、1つもしくは複数の入力-出力デバイス208、1つもしくは複数の作動デバイス212、1つもしくは複数の移送モータ214、1つもしくは複数のセンサ216、またはそれらの組合せなどの、電子デバイス/電気デバイスを備えることができる。その様々なデバイスは、有線接続及び/または無線接続を介して互いに結合することができる。たとえば、ロボットシステム100は、システムバス、周辺部品相互接続(PCI)バスまたはPCI-エクスプレスバス、HyperTransportまたは産業標準構成(ISA)バス、小型コンピュータシステムインターフェース(SCSI)バス、ユニバーサルシリアルバス(USB)、IIC(I2C)バス、または電気電子技術者協会(IEEE)規格1394のバス(「Firewire」とも呼ばれる)などのバスを含むことができる。また、たとえば、ロボットシステム100は、デバイス間の有線接続を提供するための、ブリッジ、アダプタ、コントローラ、または他の信号に関するデバイスを含むことができる。無線接続は、たとえば、セルラ通信プロトコル(たとえば、3G、4G、LTE、5Gなど)、無線ローカルエリアネットワーク(LAN)プロトコル(たとえば、忠実な無線通信環境(wireless fidelity(WIFI))、ピアツーピアまたはデバイスツーデバイスの通信プロトコル(たとえば、Bluetooth(登録商標)、Near-Field通信(NFC)など)、モノのインターネット(IoT)プロトコル(たとえば、NB-IoT、LTE-Mなど)、及び/または、他の無線通信プロトコルに基づくものとすることができる。
【0021】
プロセッサ202は、ストレージデバイス204(たとえばコンピュータメモリ)に記憶された命令(たとえば、ソフトウェア命令)を実行するように構成されたデータプロセッサ(たとえば、中央処理ユニット(CPU)、特定用途のコンピュータ、及び/またはオンボードサーバ)を含むことができる。プロセッサ202は、他のデバイスを制御/相互作用するようにプログラム命令を実施することができ、それにより、ロボットシステム100に、動作、作業、及び/または操作を実行させる。
【0022】
ストレージデバイス204は、そこに記憶されたプログラム命令(たとえば、ソフトウェア)を有する非一時的なコンピュータ可読媒体を含むことができる。ストレージデバイス204のいくつかの例には、揮発性メモリ(たとえば、キャッシュ及び/またはランダムアクセスメモリ(RAM))及び/または不揮発性メモリ(たとえば、フラッシュメモリ及び/または磁気ディスクドライブ)を含むことができる。ストレージデバイス204の他の例には、ポータブルメモリドライブ及び/またはクラウドストレージデバイスを含むことができる。
【0023】
いくつかの実施形態では、ストレージデバイス204は、処理結果及び/または所定のデータ/閾値をさらに記憶するとともにアクセスを提供するために使用することができる。たとえば、ストレージデバイス204は、ロボットシステム100によって操縦され得る対象(たとえば、ボックス、ケース、及び/または製品)の記載を含むマスターデータ252を記憶することができる。1つまたは複数の実施形態では、マスターデータ252は、ロボットシステム100によって操縦されると予期される対象に関する、寸法、形状(たとえば、可能性のあるポーズに関するテンプレート、及び/または、異なるポーズの対象を認識するための、コンピュータで生成されたモデル)、カラースキーム、イメージ、識別情報(たとえば、バーコード、クイックレスポンス(QR)コード(登録商標)、ロゴなど、及び/または、それらの予期される位置)、予期される重さ、またはそれらの組合せを含むことができる。いくつかの実施形態では、マスターデータ252は、対象各々の質量中心の位置、1つまたは複数の動作/動きに応じた、予期されるセンサの測定値(たとえば、力、トルク、圧力、及び/または接触基準値に関する)、またはそれらの組合せなどの、対象に関する操縦関連情報を含むことができる。また、たとえば、ストレージデバイス204は、対象追跡データ254を記憶することができる。いくつかの実施形態では、対象追跡データ254には、スキャン又は操縦された対象のログが含まれ得る。いくつかの実施形態では、対象追跡データ254には、1つまたは複数の位置(たとえば、指定されたピックアップ位置またはドロップ位置、及び/またはコンベアベルト)における対象の撮像データ(たとえば、写真、ポイントクラウド、ライブビデオの提供など)が含まれ得る。いくつかの実施形態では、対象追跡データ254には、1つまたは複数の位置における対象の位置及び/または向きが含まれ得る。
【0024】
通信デバイス206は、外部または遠隔のデバイスとネットワークを介して通信するように構成された回路を含むことができる。たとえば、通信デバイス206は、受信機、送信機、調整器/復調器(モデム)、信号検出器、信号エンコーダ/デコーダ、コネクタポート、ネットワークカードなどを含むことができる。通信デバイス206は、1つまたは複数の通信プロトコル(たとえば、インターネットプロトコル(IP)、無線通信プロトコルなど)に応じて電気信号を送信、受信、及び/または処理するように構成することができる。いくつかの実施形態では、ロボットシステム100は、ロボットシステム100のユニット間での情報の交換、及び/または、ロボットシステム100の外のシステムもしくはデバイスとの(たとえば、レポート、データの収集、分析、及び/またはトラブルシューティングの目的のための)情報の交換をするように、通信デバイス206を使用することができる。
【0025】
入力-出力デバイス208は、人間のオペレータとの情報の通信及び/または人間のオペレータからの情報の受信を行うように構成されたユーザインターフェースデバイスを含むことができる。たとえば、入力-出力デバイス208は、人間のオペレータに情報を通信するためのディスプレイ210及び/または他の出力デバイス(たとえば、スピーカ、触覚回路、またはタクティールフィードバックデバイスなど)を含むことができる。また、入力-出力デバイス208は、キーボード、マウス、タッチスクリーン、マイク、ユーザインターフェース(UI)センサ(たとえば、モーションコマンドを受信するためのカメラ)、ウェアラブル入力デバイスなどの、制御または受信デバイスを含むことができる。いくつかの実施形態では、ロボットシステム100は、動作、作業、操作、またはそれらの組合せを実行する際に、入力-出力デバイス208を使用して、人間のオペレータと相互作用することができる。
【0026】
ロボットシステム100は、モーション(たとえば、回転及び/または平行移動の変位)のためにジョイントで接続された、物理的なまたは構造的な部材(たとえば、ロボットマニピュレータアーム)を含むことができる。構造的部材及びジョイントは、ロボットシステム100の使用/操作に応じた1つまたは複数の作業(たとえば、グリップ、スピン、溶接など)を実行するように構成されたエンドエフェクタ(たとえば、グリッパ)を操縦するように構成された運動学上のチェーンを形成することができる。ロボットシステム100は、対応するジョイントの周り又はジョイントにおいて、構造的部材を駆動又は操縦する(たとえば、変位及び/または再度の方向付け)ように構成された作動デバイス212(たとえば、モータ、アクチュエータ、ワイヤ、人工筋、電気活性ポリマなど)を含むことができる。いくつかの実施形態では、ロボットシステム100は、ある位置から位置に、対応するユニット/シャシーを移送するように構成された移送モータ214を含むことができる。
【0027】
ロボットシステム100は、構造的部材を操縦するため、及び/または、ロボットユニットを移送するためなど、作業を実施するために使用される情報を得るように構成されたセンサ216を含むことができる。センサ216は、ロボットシステム100の1つまたは複数の物理的特性(たとえば、1つまたは複数の構造的部材/そのジョイントの状態、条件、及び/または位置)、及び/または、周囲の環境の特性を検出又は測定するように構成されたデバイスを含むことができる。センサ216のいくつかの例は、加速度計、ジャイロスコープ、力センサ、ひずみゲージ、タクティールセンサ、トルクセンサ、位置エンコーダなどを含むことができる。
【0028】
いくつかの実施形態では、たとえば、センサ216は、周囲の環境を検出するように構成された1つまたは複数の撮像デバイス222(たとえば、可視及び/または赤外カメラ、2次元及び/または3次元の撮像カメラ、ライダーまたはレーダーなどの距離測定デバイスなど)を含むことができる。撮像デバイス222は、(たとえば、自動的な検査、ロボットのガイダンス、または他のロボットのアプリケーションのための)マシン/コンピュータの視覚を実行するために使用される、デジタル画像及び/またはポイントクラウドなどの検出環境の表示を生成することができる。以下にさらに詳細に記載するように、ロボットシステム100は、(たとえば、プロセッサ202を介して)、デジタル画像及び/またはポイントクラウドを処理して、
図1のターゲットとなる対象112、
図1のスタート位置114、
図1の作業位置116、ターゲットとなる対象112のポーズ、スタート位置114に関する信頼基準及び/またはポーズ、またはそれらの組合せを識別することができる。
【0029】
ターゲットとなる対象112を操縦するために、ロボットシステム100は、指定されたエリア(たとえば、トラック内またはコンベアベルト上などのピックアップ位置)の画像を(たとえば、様々なユニットを介して)取得及び分析して、ターゲットとなる対象112及びそのスタート位置114を識別することができる。同様に、ロボットシステム100は、別の指定されたエリア(たとえば、コンベアベルト上に対象を配置するためのドロップ位置、コンテナ内に対象を配置するための位置、または、スタックする目的のためのパレット上の位置)の画像を取得及び分析して、作業位置116を識別することができる。たとえば、撮像デバイス222は、ピックアップエリアの画像を生成するように構成された1つまたは複数のカメラ、及び/または、作業エリア(たとえば、ドロップエリア)の画像を生成するように構成された1つまたは複数のカメラを含むことができる。取得された画像に基づき、以下に記載するように、ロボットシステム100は、スタート位置114、作業位置116、関連するポーズ、及び/または信頼基準を判定することができる。
【0030】
いくつかの実施形態では、作業には、輸送/受領のためにアイテムのロギングのためなど、ターゲットとなる対象112をスキャンすることが含まれ得る。作業のうちのスキャン作業部分を達成するために、撮像デバイス222は、輸送の間(たとえば、スタート位置114と作業位置116との間)に識別情報をスキャンするように構成された、1つまたは複数のスキャナ(たとえば、バーコードスキャナ及び/またはQRコードスキャナ(登録商標))を含むことができる。したがって、ロボットシステム100は、1つまたは複数のスキャナに対し、ターゲットとなる対象112の1つまたは複数の部分を提供するためのモーションプランを計算することができる。
【0031】
いくつかの実施形態では、たとえば、センサ216は、構造的部材(たとえば、ロボットアーム及び/またはエンドエフェクタ)、及び/または、ロボットシステム100の対応するジョイントの位置を検出するように構成された位置センサ224(たとえば、位置エンコーダ、ポテンショメータなど)を含むことができる。ロボットシステム100は、作業の実行の間、構造部材及び/またはジョイントの位置及び/または向きを追跡するために、位置センサ224を使用することができる。
【0032】
いくつかの実施形態では、たとえば、センサ216は、複数の物理的構造または表面間の直接の接触に関連する特性を測定するように構成された接触センサ226(たとえば、圧力センサ、力センサ、ひずみゲージ、圧電抵抗性/圧電性センサ、容量性センサ、弾性抵抗性センサ、及び/または他のタクティールセンサ)を含むことができる。接触センサ226は、ターゲットとなる対象112上のエンドエフェクタ(たとえば、グリッパ)のグリップに対応する特性を測定することができる。したがって、接触センサ226は、グリッパとターゲットとなる対象112との間の接触または取付けの程度に対応する、定量化された測定値(たとえば、測定された力、トルク、位置など)を示す接触基準を出力することができる。たとえば、接触基準は、エンドエフェクタによってターゲットとなる対象112に印加された力に関する、1つまたは複数の力またはトルクの読取り値を含むことができる。接触基準に関する詳細を、以下に記載する。
【0033】
最初のポーズ及び不確実性の判定
図3A、
図3B、及び
図3Cは、様々なポーズ(たとえば、第1のポーズ312、第2のポーズ314、及び/または第3のポーズ316)における対象302を示している。ポーズは、対象302の位置及び/または向きを示すことができる。換言すると、ポーズは、ロボットシステム100によって利用されるグリッド系に係る、平行移動の成分及び/または回転の成分を含むことができる。いくつかの実施形態では、ポーズは、ベクトル、角度のセット(たとえば、オイラー角、及び/または、ロール‐ピッチ‐ヨーの角度)、同次変換、またはそれらの組合せによって示すことができる。対象302のその変換には、平行移動の成分、回転の成分、それらの変化、またはそれらの組合せの、組合せの表示を含むことができる。ロボットシステム100は、対象302のポーズを識別するために、撮像出力(たとえば、
図2の撮像デバイス222からの、2次元画像、3次元画像、ポイントクラウド、及び/または他の撮像データ)を処理することができる。たとえば、ロボットシステム100は、内部に位置する対象302(たとえば、
図1のターゲットとなる対象112)のポーズを識別するために、ピックアップエリアに向けられた1つまたは複数のカメラの撮像出力を分析することができる。
【0034】
ポーズを識別するために、ロボットシステム100は、まず、認識メカニズム及び/または規則のセットに従ってパターン撮像データを分析し、対象のアウトライン(たとえば、周囲の縁部または表面)を識別することができる。ロボットシステム100は、さらに、対象の特有の各例に対応するものとして、(たとえば、所定の規則及び/またはポーズのテンプレートに従って)対象のアウトラインのグルーピングを識別することができる。たとえば、ロボットシステム100は、対象のラインにわたり、色、輝度、深さ/位置、またはそれらの組合せにおけるパターン(たとえば、同じ値であるか、既知の割合/パターンで変化する)に対応する、対象のアウトラインのグルーピングを識別することができる。また、たとえば、ロボットシステム100は、
図2のマスターデータ252において規定された所定の形状/ポーズのテンプレートに従って、対象のアウトラインのグルーピングを識別することができる。
【0035】
対象のアウトラインがグループ化されると、ロボットシステム100は、ロボットシステム100によって使用されるグリッドまたは座標系に従うなどして、1つまたは複数の座標系に対する対象302のポーズを識別することができる。たとえば、ロボットシステム100は、1つまたは複数の座標系に従って、対象302の1つまたは複数の表面、縁部、及び/またはポイント、ならびに、それらの向き/位置を識別することができる。
【0036】
いくつかの実施形態では、ロボットシステム100は、撮像データ内の対象302の1つまたは複数の露出表面(たとえば、第1の露出表面304、第2の露出表面306など)を識別することができる。たとえば、ロボットシステム100は、対象のアウトライン及び較正に係る撮像データ、または、撮像デバイス222に関するマッピングデータから、対象302のアウトラインの形状、及び/または、1つもしくは複数の寸法(たとえば、長さ、幅、及び/または高さ)を判定することができる。ロボットシステム100は、判定された寸法を、マスターデータ252内の対応するデータと比較して、対象302を識別することができる。さらに、ロボットシステム100は、露出表面の寸法が識別された対象の長さ及び幅にマッチする場合に、露出表面を、対象頂部表面322、または対象底部表面324として識別することができる。また、ロボットシステム100は、露出表面の寸法の1つが、識別された対象の高さにマッチする場合に、露出表面を、対象外周表面326として識別することができる。
【0037】
いくつかの実施形態では、たとえば、ロボットシステム100は、1つまたは複数の露出表面に表示された1つまたは複数のマーキング(たとえば、文字、数、形状、可視画像、ロゴ、またはそれらの組合せ)に基づき、対象302を識別することができる。ロボットシステム100は、マーキングを、マスターデータ252内の1つまたは複数の所定の画像と比較することに基づき、対象302を識別することができる。たとえば、ロボットシステム100は、パッケージの表面上の製品名、ロゴ、デザイン/画像、またはそれらの組合せの1つまたは複数の画像を、マスターデータ252に含むことができる。ロボットシステム100は、撮像データの一部(たとえば、対象302の対象のアウトライン内の部分)を、マスターデータ252と比較して、対象302を識別することができる。ロボットシステム100は、同様に、表面に特有の所定の画像パターンに対する、撮像データの一部のマッチングに基づき、対象302の向きを識別することができる。
【0038】
説明の例として、
図3A、
図3B、及び
図3Cは、対象302の様々なポーズに対応する例示的な撮像データを示している。
図3Aは、第1の露出表面304(たとえば、上を向いた露出表面)が、対象頂部表面322であり、第2の露出表面306(たとえば、概して撮像データのソースに向いた露出表面)が対象外周表面326の1つである場合の、第1のポーズ312を示している。
【0039】
露出表面の識別において、ロボットシステム100は、
図3Aの撮像データを処理して、第1の露出表面304及び/または第2の露出表面306の寸法(たとえば、ピクセル数)を比較することができる。ロボットシステム100は、所定のカメラの較正またはマッピング機能を使用して、撮像データの測定値を現実世界の寸法にマッピングすることができる。ロボットシステム100は、マッピングされた寸法を、マスターデータ252内の既知の/予期される対象の寸法と比較し、寸法のマッチングに基づき、対象を識別することができる。さらに、ロボットシステム100は、第1の露出表面304の境界を定める一対の交差する対象の縁部が、識別された対象の長さ及び幅にマッチすることから、第1の露出表面304が、対象頂部表面322か対象底部表面324かを識別することができる。同様に、ロボットシステム100は、第2の露出表面306を規定する対象の縁部の1つが、識別された対象の高さにマッチすることから、第2の露出表面306を対象外周表面326として識別することができる。
【0040】
いくつかの実施形態では、ロボットシステム100は、
図3Aの撮像データを処理して、対象の表面に特有の1つまたは複数のマーキングを識別することができる。たとえば、ロボットシステム100は、マスターデータ252内に、上述のような、対象の表面及び/または特有のマーキングの1つまたは複数の画像及び/または他の視覚的特性(たとえば、色、寸法、サイズなど)を含むことができる。
図3Aに示すように、ロボットシステム100は、対象頂部表面322に「A」を有することから、対象を、マスターデータ252に列挙された対象として識別することができる。したがって、ロボットシステム100は、さらに、第1の露出表面304を対象頂部表面322として識別することができる。
【0041】
いくつかの実施形態では、ロボットシステム100は、マスターデータ252内に、対象識別子332(たとえば、対象302に特有の、バーコードまたはQRコード(登録商標)などのコンピュータ可読の可視識別子)に関する情報を含むことができる。たとえば、マスターデータ252は、対象識別子332の画像及び/またはコード化されたメッセージ、表面及び/または縁部のセットに対する識別子の位置334、それらの1つまたは複数の視覚的特性、またはそれらの組合せを含むことができる。
図3Aに示すように、ロボットシステム100は、第2の露出表面306を、表面上の対象識別子332の存在、及び/または、識別子の位置334にマッチするそれらの位置に基づき、対象外周表面326として識別することができる。
【0042】
図3Bは、対象302が
図3Aの方向Bに沿う垂直軸周りに90度回転した第2のポーズ314を示している。たとえば、対象302の基準ポイント「α」は、
図3Aの左下の角、及び、
図3Bの右下の角とすることができる。したがって、第1のポーズ312との比較において、対象頂部表面322は、撮像データにおいて異なる向きに見られ、及び/または、対象識別子332を有する対象外周表面326は、視覚から隠れ得る。
【0043】
ロボットシステム100は、1つまたは複数の視覚的特徴の識別の特定の向きに基づき、様々なポーズを識別することができる。たとえば、ロボットシステム100は、対象の既知の長さにマッチする寸法が撮像データ内で水平に延び、対象の既知の高さにマッチする寸法が撮像データ内で垂直に延び、及び/または対象の既知の幅にマッチする寸法が撮像データ内の深さの軸に沿って延びる場合、第1のポーズ312及び/または第3のポーズ316を判定することができる。同様に、ロボットシステム100は、幅にマッチする寸法が水平に延び、高さにマッチする寸法が垂直に延び、及び/または、長さにマッチする寸法が深さの軸に沿って延びる場合に、第2のポーズ314を判定することができる。また、たとえば、ロボットシステム100は、
図3A及び
図3Bに示す「A」などの視覚的マーキングの向きに基づき、対象302が、第1のポーズ312または第2のポーズ314にあることを判定することができる。また、たとえば、ロボットシステム100は、対象識別子332がマーキング「A」を伴って(すなわち、異なる表面上で)可視である場合など、表面の組合せに見られる視覚的マーキングに従って、対象302が第1のポーズ312内にあることを判定することができる。
【0044】
図3Cは、対象302が
図3Aの方向Cに沿う水平軸周りに180度回転した第3のポーズ316を示している。たとえば、対象302の基準ポイント「α」は、
図3Aの左下前方の角、及び、
図3Cの左上後方の角とすることができる。したがって、第1のポーズ312との比較において、第1の露出表面304は、対象底部表面324であり、また、対象識別子332を有する対象頂部表面322及び対象外周表面326の両方は、視覚から隠れ得る。
【0045】
上述のように、ロボットシステム100は、寸法に基づき、対象302が第1のポーズ312または第3のポーズ316にあることを識別することができる。ロボットシステム100は、頂部表面のマーカ(たとえば、「A」)が可視である場合、対象302が第1のポーズ312にあることを識別することができる。また、ロボットシステム100は、底部表面のマーカ(たとえば、対象識別子332の例)が可視である場合、対象302が第3のポーズ316にあることを識別することができる。
【0046】
対象302のポーズを判定する際、現実世界の状況が、判定の正確さに影響する場合がある。たとえば、光の状況が、反射及び/または陰に起因するなどして、表面のマーキングの視認性を低下させる場合がある。また、対象302の実際の向きは、1つまたは複数の提供された表面の露出または視認角度を低減させる場合があり、それにより、表面上のいずれのマーキングも、識別不可能である場合がある。したがって、いくつかの実施形態では、ロボットシステム100は、判定されたポーズに関する信頼基準を計算することができる。信頼基準は、判定されたポーズの正確さの基準を示すことができる。いくつかの実施形態では、信頼基準は、判定されたポーズが、対象302の実際のポーズにマッチすることの可能性に対応し得る。
【0047】
いくつかの実施形態では、たとえば、ロボットシステム100は、ポーズの判定において使用されるマッチの測定に基づき、信頼基準を計算することができる。たとえば、ロボットシステム100は、画像内の寸法の測定に係る確実性のインターバルに基づき、信頼基準を計算することができる。いくつかの実施形態では、確実性のインターバルは、対象302と撮像元(たとえば、
図2の撮像デバイス222)との間の距離が減少するにつれて、及び/または、対象302の測定された縁部が撮像元から放射する方向に対して直交する方向に近くなるとともに、放射方向に対して平行な方向から離れる際に、増大し得る。また、たとえば、ロボットシステム100は、撮像データ内のマーカまたはデザインと、マスターデータ252内の既知のマーカ/デザインとの間のマッチの程度に基づき、信頼基準を計算することができる。いくつかの実施形態では、ロボットシステム100は、撮像データまたはその一部と、所定のマーカ/画像との間の、重複または逸脱の測定を使用することができる。ロボットシステム100は、最小平均自乗誤差(MMSE)のメカニズムに関するものなど、もっとも大である重複、及び/または、もっとも少ない逸脱の測定に従って、対象及び/または向きを識別することができる。さらに、ロボットシステムは、結果として得られる重複/逸脱の測定に基づき、信頼基準を計算することができる。以下にさらに詳細に記載するように、ロボットシステム100は、信頼基準に従って、モーションの経路を計算することができる。換言すると、ロボットシステム100は、信頼基準に従って、異なるように対象302を移動させることができる。
【0048】
システム操作
図4は、本開示の1つまたは複数の実施形態に係るロボットシステム100によって実行される例示的作業402を示す上面図である。上述のように、作業402は、目的を達成するために、ロボットシステム100によって実行される(たとえば、
図1の移送ユニット104など、上述のユニットの1つによって実行される)動作のシークエンスを示し得る。
図4に示すように、たとえば、作業402は、ターゲットとなる対象112を、スタート位置114(たとえば、受領パレットまたは大箱の上/中の位置)から作業位置116(たとえば、並び替えされたパレットまたは大箱の上/中の位置)に移動することを含み得る。作業402は、さらに、スタート位置114から作業位置116に移動する間に、ターゲットとなる対象112をスキャンすることを含むことができる。したがって、ロボットシステム100は、対象追跡データ254からの、スキャンされた対象の追加、除去、及び/または評価などによる、スキャンされた情報に応じて、
図2の対象追跡データ254をアップデートすることができる。
【0049】
いくつかの実施形態では、ロボットシステム100は、スタート位置114を識別及び/または位置特定するために、所定のエリアを撮像することができる。たとえば、ロボットシステム100は、部品調達用のパレットまたは大箱に関して指定されたエリア、及び/または、コンベアベルトの受領側の領域など、ピックアップエリアに向けられたソーススキャナ412(すなわち、
図2の撮像デバイス222の例)を含むことができる。ロボットシステム100は、指定されたエリアの撮像データ(たとえば、取得された画像及び/またはポイントクラウド)を生成するために、ソーススキャナ412を使用することができる。ロボットシステム100は(たとえば、
図2のプロセッサ202を介して)、指定されたエリアに位置する様々な対象(たとえば、ボックスまたはケース)を識別するために、撮像データについて、コンピュータによる視野処理を実施することができる。対象の識別の詳細を以下に記載する。
【0050】
認識された対象から、ロボットシステム100は、作業402の実行のために、ターゲットとなる対象112として、(たとえば、所定のシークエンスまたは規則のセット、及び/または、対象のアウトラインのテンプレートに応じて)1つの対象を選択することができる。選択されたターゲットとなる対象112に関し、ロボットシステム100は、スタート位置114及び/または最初のポーズを判定するために、撮像データをさらに処理することができる。選択及び位置/ポーズの判定の詳細を以下に記載する。
【0051】
ロボットシステム100は、作業位置116を識別するために、別の所定のエリアをさらに撮像及び処理することができる。いくつかの実施形態では、たとえば、ロボットシステム100は、並び替えされたパレットまたは大箱、及び/または、コンベアベルトの送り側の領域に関して指定されたエリアなど、配置エリアの撮像データを生成するように構成された撮像デバイス222(図示せず)の別の例を含むことができる。撮像結果は、ターゲットとなる対象112を配置するための作業位置116及び/または対応するポーズを識別するために、(たとえば、プロセッサ202を介して)処理することができる。いくつかの実施形態では、ロボットシステム100は、複数の対象をスタック及び/または配置するための所定のシークエンスまたは規則のセットに従って、作業位置116を(撮像結果に基づくか、または、撮像結果に基づくことなく)識別することができる。
【0052】
いくつかの実施形態では、作業402は、製品のロギングの目的のため、及び/または、ターゲットとなる対象112のさらなる識別のために、ターゲットとなる対象112をスキャンすること(たとえば、
図3A及び/または
図3Cの対象識別子332をスキャンすること)を含むことができる。たとえば、ロボットシステム100は、通常はピックアップエリアと配置エリアとの間の、1つまたは複数の位置において、ターゲットとなる対象112をスキャンするように構成された、1つまたは複数の対象スキャナ416(たとえば、バーコードスキャナまたはQRコードスキャナ(登録商標)など、撮像デバイス222のさらなる例)を備えることができる。いくつかの実施形態では、対象スキャナ416は、スキャナに隣接し(たとえば、対応するスキャナ(複数可)の高さに対応する高さにある)且つ垂直に向けられた表面上にあるマークをスキャンするように、水平方向に面することができる。いくつかの実施形態では、対象スキャナ416は、スキャナの上/下にあり且つ水平に向いた表面上にあるマークをスキャンするように、垂直方向に面することができる。いくつかの実施形態では、対象スキャナ416は、それらスキャナが、対象スキャナ416間に置かれた対象の両側をスキャンすることができるように、互いに面することができる。対象スキャナ416の位置及び/またはスキャン方向に従って、ロボットシステム100は、ターゲットとなる対象112を提供位置に置くように、及び/または、ターゲットとなる対象112の1つまたは複数の表面/部分を対象スキャナ416でスキャンするための提供ポーズに従って、ターゲットとなる対象112を操縦することができる。
【0053】
識別されたスタート位置114及び/または作業位置116を使用して、ロボットシステム100は、作業402を実行するために、対応するユニット(たとえば、移送ユニット104)の1つまたは複数の構造(たとえば、ロボットアーム414及び/またはエンドエフェクタ)を操作することができる。したがって、ロボットシステム100は(たとえば、プロセッサ202を介して)、作業402を実行するために対応するユニットによって実施される1つまたは複数の動作に対応する、モーションプランを(たとえば、モーションプランの規則またはアルゴリズムを介して)計算することができる。たとえば、移送ユニット104に関するモーションプランは、アプローチ位置(たとえば、ターゲットとなる対象112に接触及びグリップするためのエンドエフェクタを配置するための位置/場所)にエンドエフェクタを配置すること、ターゲットとなる対象112をグリップすること、ターゲットとなる対象112を持ち上げること、ターゲットとなる対象112をスタート位置114の上からスキャン操作のための提供位置/ポーズに移動すること、ターゲットとなる対象112を提供位置から作業位置116の上に移動すること、ターゲットとなる対象112を下げること、及び、ターゲットとなる対象112を開放することを含むことができる。
【0054】
いくつかの実施形態では、ロボットシステム100は、ロボットアーム414及び/またはエンドエフェクタを操作する
図2の1つまたは複数の作動デバイス212のためのコマンド及び/又は設定のシークエンスを判定することにより、モーションプランを計算することができる。たとえば、ロボットシステム100は、プロセッサ202を使用して、エンドエフェクタ(たとえば、グリッパ)をスタート位置114周りのアプローチ位置に置き、エンドエフェクタでターゲットとなる対象112を係合及び把持し、エンドエフェクタを提供位置周りのスキャン位置(たとえば、指定された位置及び/または向き)に置き、エンドエフェクタを作業位置116周りの特定の位置に置き、ターゲットとなる対象112をエンドエフェクタから開放するように、エンドエフェクタ及びロボットアーム414を操縦するために、作動デバイス212のコマンド及び/または設定を計算することができる。ロボットシステム100は、コマンド及び/または設定の判定されたシークエンスに従って、作動デバイス212を操作することにより、作業402を完了するための操作を実行することができる。
【0055】
いくつかの実施形態では、ロボットシステム100は、判定されたポーズが、ターゲットとなる対象112の実際の現実世界のポーズにマッチすることの確実性または可能性の基準を示す信頼基準に基づいて、モーションプランを得ることができる。たとえば、ロボットシステム100は、信頼基準に従って、異なる表面をグリップ又はカバーするためなど、エンドエフェクタをピックアップのための様々な位置に置くか、ターゲットとなる対象112に関する様々な提供位置/ポーズを計算するか、それらの組合せを行うことができる。
【0056】
説明の例として、ターゲットとなる対象112は、
図3Aの第1のポーズ312に置かれた
図3Aの対象302とすることができる(すなわち、
図3Aの対象頂部表面322が、概して上に向くとともに露出している)。信頼基準が高い(すなわち、確実性の程度が閾値を超え、判定されたポーズが正確である可能性が高い)場合、ロボットシステム100は、第1のアプローチ位置432及び第1の提供位置442を含む第1のモーションプラン422を計算することができる。たとえば、対象頂部表面322が上を向いている(すなわち、
図3Cの対象識別子332を有する
図3Cの対象底部表面324が下を向いている)ことの確実性が十分にあることから、ロボットシステム100は、エンドエフェクタを対象頂部表面322の上に直接置くための、第1のアプローチ位置432を含む、第1のモーションプラン422を計算し得る。したがって、ロボットシステム100は、対象底部表面324が露出するように、対象頂部表面322に接触/カバーするエンドエフェクタで、ターゲットとなる対象112をグリップすることができる。また、ロボットシステム100は、ターゲットとなる対象112が、対象底部表面324に位置する対象識別子332をスキャンする上を向いたスキャナの真上になるための第1の提供位置442を含む、第1のモーションプラン422を計算することができる。
【0057】
一方、信頼基準が低い(すなわち、確実性の程度が閾値未満であり、判定されたポーズが正確である可能性が低い)場合、ロボットシステム100は、第2のアプローチ位置434及び1つまたは複数の第2の提供位置444を含む、第2のモーションプラン424(すなわち、第1のモーションプラン422とは異なる)を計算することができる。たとえば、ロボットシステム100は、ターゲットとなる対象112の寸法を測定するとともに比較し、対象が
図3Aの第1のポーズ312または
図3Cの第3のポーズ316にあることを(たとえば、測定の確実性のレベルが所定の閾値を超える場合)判定することができる。しかし、ロボットシステム100には、ターゲットとなる対象112の表面上にプリントされたマークを撮像/処理するのに困難な場合があり、その結果、判定されたポーズに関する信頼基準が閾値未満となり得る。換言すると、ロボットシステム100は、上に向いた露出表面が対象頂部表面322である(たとえば、第1のポーズ312)か、あるいは、対象底部表面324(たとえば、第3のポーズ316)であるかを、十分に確信していない場合がある。
【0058】
不確実性の程度が高いために、ロボットシステム100は、
図3Aの対象外周表面326の1つに隣接して(たとえば、対象頂部表面322及び/または対象底部表面324に対して平行な方向に整列する、及び/または面している)エンドエフェクタを配置するための第2のアプローチ位置434を含む第2のモーションプラン424を計算し得る。したがって、ロボットシステム100は、対象外周表面326の1つに接触/カバーすると共に対象頂部表面322及び対象底部表面324の両方を露出させるエンドエフェクタで、ターゲットとなる対象112をグリップすることができる。ロボットシステム100は、対象スキャナ416の前(たとえば、スキャンフィールド内、及び/またはスキャンフィールドに面して)に、対象頂部表面322及び対象底部表面324を同時または連続して提供又は置くことができる。ターゲットとなる対象112がスキャンのための位置にある場合、ロボットシステム100は、対象スキャナ416(たとえば、少なくとも、対象頂部表面322及び対象底部表面324を向いたスキャナ)を操作して、提供された表面を同時に及び/または連続してスキャンし、その上の対象識別子(複数可)332を取得することができる。
【0059】
また、ロボットシステム100は、第2のモーションプラン424を計算することができる。この第2のモーションプラン424は、最初は下を向いていた表面(対象底部表面324)を水平に、かつ、上を向いたスキャナの真上に配置するため、及び/または、最初は上を向いていた表面(対象頂部表面322)を垂直に、かつ、水平に向いたスキャナのすぐ前方に置くための、第2の提供位置(複数可)444を含んでいる。第2のモーションプラン424は、2つの提供位置/ポーズを提供するために、再度の方向付け/回転の動作(たとえば、破線の中空の円で示したような動作)を含むことができ、それにより、直交して向けられたスキャナを使用して、両側の頂部/底部表面の両方をスキャンする。たとえば、ロボットシステム100は、連続して、対象頂部表面322を上に向いたスキャナに提供するとともにスキャンし、次いで、ターゲットとなる対象112を90度回転させて、対象底部表面324を、スキャンのために水平に向いたスキャナに提供することができる。いくつかの実施形態では、再度の方向付け/回転の動作は、第1のスキャンが対象識別子332を読み取ることを失敗した場合、ロボットシステム100が対応するコマンドを実施するように、条件付きのものとすることができる。
【0060】
代替的には、一例として、ロボットシステム100は、信頼基準が低い場合に、ターゲットとなる対象112の幅に沿う対象外周表面326の1つをグリップ/カバーするために、モーションプラン(図示せず)を計算することができる。ロボットシステム100は、水平に対向した一対の対象スキャナ416の間でターゲットとなる対象112を移動して、ターゲットとなる対象112の長さに沿って対象外周表面326を提供し、(たとえば、
図3Aに示すように)そのような外周表面の1つの上の対象識別子332をスキャンすることができる。信頼基準に基づくモーションプランに関する詳細を、以下に記載する。
【0061】
作業402に関する動作を実行するために、ロボットシステム100は、ターゲットとなる対象112の現在の位置(たとえば、ロボットシステム100によって使用されるグリッドに対応する座標のセット)、及び/または現在のポーズを追跡することができる。たとえば、ロボットシステム100は(たとえば、プロセッサ202を介して)、
図2の位置センサ224からのデータに従って、現在の位置/ポーズを追跡することができる。ロボットシステム100は、位置センサ224からのデータに従って、運動学上のチェーンにおいて、ロボットアーム414の1つまたは複数の部分(たとえば、構造部的材及び/またはそれらのジョイント)を配置することができる。ロボットシステム100は、ロボットアーム414の位置及び向きに基づき、エンドエフェクタの位置/ポーズをさらに計算することができ、それにより、エンドエフェクタによって保持されるターゲットとなる対象112の現在の位置を計算することができる。また、ロボットシステム100は、推測メカニズムに従って、他のセンサの読取り値(たとえば、力の読取り値または加速度計の読取り値)の処理、実行された作動コマンド/設定、及び/または、関連するタイミング、またはそれらの組合せに基づき、現在の位置を追跡することができる。
【0062】
操作フロー
図5Aは、本開示の1つまたは複数の実施形態に係る、
図1のロボットシステム100を操作する方法500のフロー図である。方法500は、最初のポーズの判定に関連する信頼基準に従って、
図4の作業402を実行するためのものとすることができる。方法500は、信頼基準に基づくモーションプランの取得/計算、及び実施のためのものとすることができる。方法500は、
図2の1つまたは複数のプロセッサ202で、
図2の1つまたは複数のストレージデバイス204に記憶された命令を実行することに基づいて、実施することができる。
【0063】
ブロック501では、ロボットシステム100は、
図2の1つまたは複数の撮像デバイス222のスキャンフィールドを識別することができる。たとえば、ロボットシステム100は(たとえば、1つまたは複数のプロセッサ202を介して)、
図4のソーススキャナ412及び/または
図4の対象スキャナ416などの、1つまたは複数の撮像デバイス222によってスキャンされ得る空間を識別することができる。いくつかの実施形態では、ロボットシステム100は、対象スキャナ416の向きに従って、逆向きの方向(opposite directions)及び/または直交した方向に向けられたスキャンフィールドを識別することができる。
図4に示すように、いくつかの実施形態では、対象スキャナ416は、水平方向の両側、または、垂直方向の両側など、互いに反対側に、及び/または互いに面して配置することができる。また、いくつかの実施形態では、対象スキャナ416は、1つが上または下に向き、別のものが水平方向を向くなど、互いに垂直に配置することができる。
【0064】
いくつかの実施形態では、たとえば、ロボットシステム100は、マスターデータ252に従ってスキャンフィールドを識別することができる。マスターデータ252は、撮像デバイス222及び/または対応するスキャンフィールドを示す、グリッド位置、座標、及び/または他のマーカを含むことができる。マスターデータ252は、撮像デバイス222のレイアウト及び/または物理的配置、撮像デバイス222の能力、環境的因子(たとえば、光の条件、及び/または遮蔽物/構造)、またはそれらの組合せに従って、予め判定することができる。いくつかの実施形態では、ロボットシステム100は、スキャンフィールドを識別するために、較正プロセスを実施することができる。たとえば、ロボットシステム100は、
図1の移送ユニット104を使用して、位置のセットに既知のマークまたはコードを配置し、対応する撮像デバイスが既知のマークを正確にスキャンしたかを判定することができる。ロボットシステム100は、正確なスキャン結果となった既知のマークの位置に基づいて、スキャンフィールドを識別することができる。
【0065】
ブロック502では、ロボットシステム100は、指定されたエリアをスキャンすることができる。いくつかの実施形態では、ロボットシステム100は、1つまたは複数の撮像デバイス222(たとえば、
図4のソーススキャナ412及び/または他のエリアスキャナ)を(たとえば、プロセッサ202によって送信されたコマンド/プロンプトを介して)使用して、ピックアップエリア及び/またはドロップエリアなど(たとえば、供給元のパレット/大箱/コンベア、及び/または、作業のパレット/大箱/コンベア)の1つまたは複数の指定されたエリアの撮像データ(たとえば、取得されたデジタル画像及び/またはポイントクラウド)を生成することができる。撮像データは、撮像デバイス222から1つまたは複数のプロセッサ202に通信することができる。したがって、1つまたは複数のプロセッサ202は、さらなる処理のために、ピックアップエリア(たとえば、作業の実行前の対象を含む)、及び/または、ドロップエリア(たとえば、作業の実行後の対象を含む)を示す撮像データを受信することができる。
【0066】
ブロック504では、ロボットシステム100は、
図1のターゲットとなる対象112及び関連する位置(たとえば、
図1のスタート位置114、及び/または、
図1の作業位置116)、及び/または向き(たとえば、最初のポーズ)を識別することができる。いくつかの実施形態では、たとえば、ロボットシステム100(たとえば、プロセッサ202を介する)は、対象のアウトライン(たとえば、周囲の縁部及び/または表面)を識別するために、パターン認識メカニズム及び/または規則のセットに従って、撮像データを分析することができる。ロボットシステム100は、さらに、対象の特有の例の各々に対応するような、(たとえば、所定の規則及び/またはポーズのテンプレートに従って)対象のアウトライン及び/または表面のグルーピングを識別することができる。たとえば、ロボットシステム100は、対象のラインにわたり、色、輝度、深さ/位置、またはそれらの組合せにおけるパターン(たとえば、同じ値であるか、既知の割合/パターンで変化する)に対応する、対象のアウトラインのグルーピングを識別することができる。また、たとえば、ロボットシステム100は、マスターデータ252において規定された所定の形状/ポーズのテンプレート、画像、またはそれらの組合せに従って、対象のアウトライン及び/または表面のグルーピングを識別することができる。
【0067】
ピックアップ位置で認識された対象から、ロボットシステム100は、ターゲットとなる対象112として、(たとえば、所定のシークエンスまたは規則のセット、及び/または、対象のアウトラインのテンプレートに従って)1つを選択することができる。たとえば、ロボットシステム100は、(ソーススキャナ412の既知の位置に対する距離/位置を示す)ポイントクラウドに従うなどして、頂部に位置する対象として、ターゲットとなる対象112を選択することができる。また、たとえば、ロボットシステム100は、角/縁部に位置し、撮像結果に露出する/示される2つ以上の表面を有する対象として、ターゲットとなる対象112を選択することができる。さらに、ロボットシステム100は、所定のパターンまたはシークエンス(たとえば、基準位置に対し、左から右へ、もっとも近くからもっとも遠くへなど)に従って、ターゲットとなる対象112を選択することができる。
【0068】
選択されたターゲットとなる対象112に関し、ロボットシステム100は、スタート位置114及び/または最初のポーズを判定するために、撮像結果をさらに処理することができる。たとえば、ロボットシステム100は、撮像結果の中のターゲットとなる対象112の位置(たとえば、判定されたポーズに関する所定の基準ポイント)を、ロボットシステム100によって使用されるグリッド内の位置へマッピングすることによりスタート位置114を判定することができる。ロボットシステム100は、所定の較正マップに従って位置をマッピングすることができる。
【0069】
いくつかの実施形態では、ロボットシステム100は、ドロップエリアの撮像結果を処理して、対象間のあいているスペースを判定することができる。ロボットシステム100は、画像の位置を、現実の位置及び/またはシステムによって使用される座標にマッピングする所定の較正マップに従って、対象のラインをマッピングすることに基づいて、前記あいているスペースを判定することができる。ロボットシステム100は、異なるグルーピング/対象に属する対象のライン(そしてひいては、対象の表面)間の空間として、あいているスペースを判定することができる。いくつかの実施形態では、ロボットシステム100は、あいているスペースの1つまたは複数の寸法を測定し、測定された寸法をターゲットとなる対象112の1つまたは複数の寸法(たとえば、
図2のマスターデータ252に記憶されているようなもの)と比較することに基づいて、ターゲットとなる対象112にとって適切なあいているスペースを判定することができる。ロボットシステム100は、所定のパターン(たとえば、基準位置に対し、左から右へ、もっとも近くからもっとも遠くへ、底部から頂部へなど)に従って、適切な/あいているスペースの1つを、作業位置116として選択することができる。
【0070】
いくつかの実施形態では、ロボットシステム100は、撮像結果を処理せずにまたは処理することに加えて、作業位置116を判定することができる。たとえば、ロボットシステム100は、エリアを撮像することなく、所定の動作のシークエンス及び位置に従って、配置エリアに対象を配置することができる。また、たとえば、ロボットシステム100は、複数の作業(たとえば、スタックの共通の層/列に位置する対象に関するものなど、複数の対象を移動すること)を実施するために、撮像結果を処理することができる。
【0071】
ブロック522では、たとえば、ロボットシステム100は、撮像データ(たとえば、ソーススキャナ412からの撮像データ)の処理に基づき、最初のポーズ(たとえば、ピックアップ位置におけるターゲットとなる対象112の停止した向きの推定)を判定することができる。いくつかの実施形態では、ロボットシステム100は、対象のアウトラインと、マスターデータ252の所定のポーズのテンプレートにおけるアウトラインとを比較すること(たとえば、ピクセル値を比較すること)に基づいて、ターゲットとなる対象112の最初のポーズを判定することができる。所定のポーズのテンプレートには、たとえば、予期される対象の対応する向きに係る、対象のアウトラインの異なる可能性のある配置を含むことができる。ロボットシステム100は、ターゲットとなる対象112として選択された対象と前に関連付けられた、対象のアウトラインのセット(たとえば、
図3A及び/または
図3Cの第1の露出表面304、及び/または、
図3Aの第2の露出表面306などの、露出表面の縁部)を識別することができる。ロボットシステム100は、比較された対象のアウトライン間の、もっとも少ない差異の測定に対応する、ポーズのテンプレートの1つを選択することに基づき、最初のポーズを判定することができる。
【0072】
いくつかの実施形態では、さらなる例に関し、ロボットシステム100は、ターゲットとなる対象112の物理的寸法に基づき、ターゲットとなる対象112の最初のポーズを判定することができる。ロボットシステム100は、撮像データで取得された露出表面の寸法に基づき、ターゲットとなる対象112の物理的寸法を概算することができる。ロボットシステム100は、撮像データの対象のアウトラインの各々に関する長さ及び/または角度を測定し、次いで、較正マップ、変換テーブルもしくはプロセス、所定の方程式、またはそれらの組合せを使用して、測定された長さを現実世界の長さまたは標準的な長さにマッピング又は変換することができる。ロボットシステム100は、物理的寸法に対応する、ターゲットとなる対象112及び/または露出表面(複数可)を識別するための測定された寸法を使用することができる。ロボットシステム100は、概算された物理的寸法を、マスターデータ252内の対象の既知の寸法のセット(たとえば、高さ、長さ、及び/または幅)ならびにその表面と比較することに基づき、対象及び/または露出表面(複数可)を識別することができる。ロボットシステム100は、マッチした寸法のセットを使用して、露出表面(複数可)及び対応する向きを識別することができる。たとえば、ロボットシステム100は、露出表面の寸法が、予期された対象に関する長さ及び幅にマッチする場合に、露出表面を、
図3Aの対象頂部表面322、または、
図3Bの対象底部表面324(たとえば、一対の両側の表面)として識別することができる。露出表面の向きに基づき、ロボットシステム100は、最初のポーズ(たとえば、露出表面が上を向いている場合、第1のポーズ312または第3のポーズ316)を判定することができる。
【0073】
いくつかの実施形態では、たとえば、ロボットシステム100は、ターゲットとなる対象112の1つまたは複数の表面、及び/または、その1つまたは複数のマーキングの可視画像に基づき、ターゲットとなる対象112の最初のポーズを判定することができる。ロボットシステム100は、接続されたアウトラインのセットのピクセル値を、マスターデータ252の、所定のマーキングベースのポーズのテンプレートと比較することができる。マーキングベースのポーズのテンプレートには、たとえば、様々な異なる向きの予期される対象の、1つまたは複数の特有のマーキングが含まれ得る。ロボットシステム100は、比較された画像に関するもっとも少ない差異の測定の結果となる、表面、表面の向き、及び/または対応するポーズの1つを選択することに基づいて、最初のポーズを判定することができる。
【0074】
ブロック524では、ロボットシステム100は、最初のポーズに関する信頼基準を計算することができる。信頼基準は、最初のポーズが、ターゲットとなる対象112の実際の現実世界のポーズにマッチすることの確実性または可能性の基準を示し得る。いくつかの実施形態では、ロボットシステム100は、最初のポーズを判定することの一部として、信頼基準を計算することができる。たとえば、信頼基準は、対象のアウトラインと、上述の選択されたテンプレートのアウトラインとの間の差異の基準に対応し得る。また、たとえば、信頼基準は、上述の概算された物理的寸法及び/または角度に関連する公差レベルに対応し得る。また、たとえば、信頼基準は、撮像データ内の可視マーキングと、上述のテンプレートの画像との間の差異の基準に対応し得る。
【0075】
ブロック506では、ロボットシステム100は、ターゲットとなる対象112に関する作業402を実行するためのモーションプラン(たとえば、
図4の第1のモーションプラン422及び/または
図4の第2のモーションプラン424)を計算することができる。たとえば、ロボットシステム100は、
図4のロボットアーム414及び/またはエンドエフェクタを操作する、
図2の作動デバイス212に関する、コマンドもしくは設定のシークエンス、またはそれらの組合せを計算することに基づいて、モーションプランを計算することができる。いくつかの作業に関し、ロボットシステム100は、ロボットアーム414及び/またはエンドエフェクタを操縦して、ターゲットとなる対象112をスタート位置114から作業位置116に移動する、シークエンス及び設定値を計算することができる。ロボットシステム100は、1つまたは複数の規制、ゴール、及び/または規則に従って、空間内の経路を計算するように構成されたモーションプランメカニズム(たとえば、処理、機能、方程式、アルゴリズム、コンピュータで生成された/読取り可能なモデル、またはそれらの組合せ)を実施することができる。たとえば、ロボットシステム100は、ターゲットとなる対象112をスタート位置114から作業位置116に、1つまたは複数の提供のポーズ/位置(たとえば、エンドエフェクタのための1つまたは複数の対応するスキャン位置)を通して移動するために、空間を通る経路を計算するように、A*アルゴリズム、D*アルゴリズム、及び/または他のグリッドに基づく検索を使用することができる。モーションプランメカニズムは、さらなる処理、機能、もしくは方程式、及び/またはマッピングテーブルを使用して、経路を、作動デバイス212に関するコマンドもしくは設定のシークエンス、またはそれらの組合せに変換することができる。モーションプランメカニズムを使用する際、ロボットシステム100は、ロボットアーム414及び/またはエンドエフェクタを操作し、ターゲットとなる対象112に計算された経路をたどらせる、シークエンスを計算することができる。
【0076】
いくつかの実施形態では、ロボットシステム100は、信頼基準に基づき、モーションプランを選択的に計算/取得することができる。ロボットシステム100は、信頼基準に従って、アプローチ位置(たとえば、
図4の第1のアプローチ位置432及び/または
図4の第2のアプローチ位置434)、1つまたは複数のスキャン位置(たとえば、
図4の第1の提供位置442及び/または
図4の第2の提供位置444)、またはそれらの組合せを含むモーションプランを計算することができる。たとえば、ロボットシステム100は、信頼基準を十分性閾値と比較することの結果に基づいて、メトリック(たとえば、性能のメトリック、及び/または、スキャンのメトリック)に係る、アプローチ位置及び/またはスキャン位置を計算することができる。スキャン位置は、1つまたは複数の対象識別子332をスキャンするものである1つまたは複数の対応する対象スキャナ416の前(すなわち、そのスキャンフィールド)に、ターゲットとなる対象112の1つまたは複数の表面を与えるように、エンドエフェクタを配置するためのものとすることができる。
【0077】
ブロック532では、ロボットシステム100(たとえば、プロセッサ202を介する)は、利用可能なアプローチ位置のセットを計算することができる。利用可能なアプローチ位置は、エンドエフェクタを配置するのに十分な、スタート位置114周りに開放されているか又は占められていない空間に対応するものとすることができる。以下にさらに記載するように、ロボットシステム100は、他の対象を妨げることなく、ターゲットとなる対象112に接触及びグリップするために、選択されたアプローチ位置にエンドエフェクタを置くことができる。
【0078】
いくつかの実施形態では、たとえば、ロボットシステム100は、ターゲットとなる対象112の対象アウトラインと、隣接する対象の対象アウトラインとの間の分離距離を計算することに基づいて、利用可能なアプローチ位置のセットを計算することができる。ロボットシステム100は、分離距離を、エンドエフェクタの物理的サイズ/形状、及び/または、それらの様々な向きに対応する、所定の距離のセットと比較することができる。ロボットシステムは、対応する分離距離が、エンドエフェクタのサイズに対応する距離の所定のセットを超える場合、利用可能なアプローチ位置の各々を識別することができる。
【0079】
決定ブロック534では、ロボットシステム100は、信頼基準を1つまたは複数の十分性条件(たとえば、1つまたは複数の閾値)と比較して、これらが満たされているか否かを判定することができる。ブロック536で示されるものなど、信頼基準が十分性条件を満たす場合(たとえば、信頼基準が必要とされる閾値を超える場合)、ロボットシステム100は、性能のメトリックに基づき、モーションプラン(たとえば、第1のモーションプラン422)を計算することができる。いくつかの実施形態では、信頼基準が十分性条件を満たす場合、ロボットシステム100は、最初のポーズが適切であると推定し、少なくとも1つの対象識別子をスキャンすることに関する可能性、及び/または、最初のポーズが不正確である場合があることの可能性に対応する、スキャンのメトリックを考慮することなく、モーションプランを計算することができる。
【0080】
説明の例として、いくつかの実施形態では、ロボットシステム100は、ブロック542において、候補のプランを計算することができる。候補のプランの各々は、利用可能なアプローチ位置とスキャン位置との特有の組合せ(たとえば、ターゲットとなる対象112に関する、対応する提供位置/向き)に対応する、モーションプランの例とすることができる。いくつかの実施形態では、ロボットシステム100は、マスターデータ252内の、識別子の位置(複数可)334または対応するモデル/ポーズを回転させるなどにより、最初のポーズに従って、識別子の位置(複数可)334を計算することができる。ロボットシステム100は、エンドエフェクタに識別子の位置(複数可)334をカバーさせる(たとえば、直上、前方、及び/または閾値の距離内に置く)、利用可能なアプローチ位置を除去することができる。
【0081】
ロボットシステム100は、セット内の残りの利用可能なアプローチ位置(たとえば、ブロック532の計算結果)の各々に関し、候補のプランを計算することができる。候補のプランの各々に関し、ロボットシステム100は、利用可能なアプローチ位置に従って、特有のスキャン位置をさらに計算することができる。いくつかの実施形態では、ロボットシステム100は、ターゲットとなる対象112のモデルの回転及び/または移動に基づき、スキャン位置を計算することができ、それにより、識別子の位置334に対応する表面が、スキャンフィールド内にあるとともに、対応する対象スキャナに面する。ロボットシステム100は、所定のプロセス、方程式、関数などに従って、モデルを回転及び/または移動することができる。
【0082】
ブロック544では、ロボットシステム100は、各候補のプランに関する性能のメトリックを計算することができる。ロボットシステム100は、作業402を完了することに関するスループット率に対応する性能のメトリックを計算することができる。たとえば、性能のメトリックは、候補のプランに関する、ターゲットとなる対象112が移動する距離、概算される移動時間、作動デバイス212に関するコマンド及び/または設定の変更の数、達成率(すなわち、ピースロスの量と相補的である)、またはそれらの組合せに関連し得る。ロボットシステム100は、1つまたは複数の、測定された又は既知のデータ(たとえば、設定/コマンドに関連する加速度/速度、及び/または、グリップ表面及び/または動きに関連するピースロスの割合)、ならびに、所定の計算プロセス、方程式、関数などを使用して、候補のモーションプランに関する対応する値を計算することができる。
【0083】
ブロック546では、ロボットシステム100は、モーションプランとして、最大の性能のメトリックをもった候補のプラン(すなわち、対応するアプローチ位置を伴う)を選択することができる。たとえば、ロボットシステム100は、モーションプランとして、候補のプランのセットの中で、もっとも高い達成率、もっとも短い移動距離、もっとも少ないコマンド及び/または設定の変更の数、もっとも速い移動の持続時間、またはそれらの組合せに対応する、候補のプランを選択することができる。したがって、ロボットシステム100は、アプローチ位置として、もっとも高い性能のメトリックに対応する、セット内の利用可能なアプローチ位置を選択することができる。
【0084】
比較すると、ロボットシステム100は、信頼基準が十分性条件を満たさない(たとえば、信頼基準が必要な閾値未満である)場合、異なる基準に従って、候補のプランを計算することができる。いくつかの実施形態では、ブロック538で示すように、ロボットシステム100は、スキャンのメトリックに基づき、モーションプラン(たとえば、第2のモーションプラン424)を計算することができる。スキャンのメトリックは、対象識別子332の少なくとも1つが、最初のポーズが正確であるかに関わらず、エンドエフェクタによってカバーされないままであり、かつ、スキャン可能であることの可能性に対応する値(たとえば、2要素の値、又は、2要素ではないスコア/パーセンテージ)である。いくつかの実施形態では、たとえば、ロボットシステム100は、信頼基準が十分性条件を満たさない場合、性能のメトリックに対してスキャンのメトリックを優先させる(たとえば、最初に満たす及び/またはより重い重要度を与える)ことができる。したがって、ロボットシステム100は、1つまたは複数の対象スキャナの前に、少なくとも1つのカバーされていない対象識別子を提供するための1つまたは複数のスキャン位置(すなわち、スキャンフィールド内にある、及び/または、対応するスキャナに向いている)を含むモーションプランを計算することができる。さらに詳細なプロセスの説明において、
図5Bは、本開示の1つまたは複数の実施形態に係る、スキャンメトリックに基づき、モーションプラン(たとえば、エンドエフェクタのための1つまたは複数の位置)を選択的に計算するためのフロー
図538を示している。
【0085】
いくつかの実施形態では、スキャンのメトリックに基づき、モーションプランを計算することには、ブロック552に示したように、露出した識別子の位置のセットを計算することを含むことができる。ロボットシステム100は、最初のポーズに対し、露出した識別子の位置のセット(たとえば、グリップ位置において、エンドエフェクタでスキャン可能なままであり得る識別子の位置334)を計算することができる。ロボットシステム100は、利用可能なアプローチ位置の各々に関する、露出した識別子の位置を計算することができる。露出した識別子の位置は、最初のポーズが正確であるとの仮定に従って、対応するアプローチ位置において、エンドエフェクタでカバーされないままである対象識別子332の位置に対応するものとすることができる。
【0086】
(ブロック542に関して)上述したように、いくつかの実施形態では、マスターデータ252は、予期される対象の各々に関する識別子の位置334を記載する、コンピュータモデルまたはテンプレート(たとえば、1つまたは複数の対象の縁部及び/または画像に対してのオフセットの測定)を含むことができる。ロボットシステム100は、最初のポーズにマッチするように、マスターデータ252内の所定のモデル/テンプレートを回転及び/または移動させることに基づき、露出した識別子の位置のセットを計算することができる。いくつかの実施形態では、ロボットシステム100は、エンドエフェクタに識別子の位置334をカバーさせる(たとえば、直上、前方、及び/または閾値の距離内に置く)、アプローチ位置を除去することができる。換言すると、ロボットシステム100は、識別子の位置334の直上、前方、及び/または閾値の距離内にある、利用可能なアプローチ位置を除去することができる。
【0087】
ブロック554では、ロボットシステム100は、代替的な識別子の位置のセットを計算することができる。ロボットシステム100は、最初のポーズの代替のポーズに関し、代替的な識別子の位置のセット(たとえば、識別子の位置334)を計算することができる。利用可能なアプローチ位置の各々に関し、ロボットシステム100は、代替的ポーズを計算することができ、代替的ポーズの各々に関し、ロボットシステム100は、代替的な識別子の位置を計算することができる。したがって、代替的な識別子の位置は、最初のポーズが正確ではないとの仮定に従って、対応するアプローチ位置において、エンドエフェクタでカバーされないままである対象識別子332の位置に対応するものとすることができる。露出した識別子の位置に関して上述したように、ロボットシステム100は、代替的なポーズに従って、マスターデータ252内の所定のモデル/テンプレートを回転及び/または移動させることに基づいて、代替的な識別子の位置を計算することができる。
【0088】
ブロック556では、ロボットシステム100は、アプローチ位置の各々、代替的ポーズの各々、対象識別子の各々、またはそれらの組合せに関する露出の可能性を計算することができる。露出の可能性は、1つまたは複数の対象識別子が、露出したままであるとともに、対応するアプローチ位置から、ターゲットとなる対象112をグリップしているエンドエフェクタでスキャン可能のままである可能性を示している。露出の可能性は、最初のポーズが正確であるシナリオと、最初のポーズが正確ではないシナリオとの両方を示すことができる。換言すると、露出の可能性は、最初のポーズが正確ではない場合であっても、1つまたは複数の対象識別子が、露出したままであるとともにスキャン可能なままである可能性を示すことができる。
【0089】
いくつかの実施形態では、たとえば、ロボットシステム100は、特定の条件(たとえば、アプローチ位置、代替的なポーズ、対象識別子、またはそれらの組合せの特有の例)に対応する確率的な値など、条件に関する確実性として、露出の可能性を計算することができる。いくつかの実施形態では、ロボットシステム100は、条件に関する確実性を、特定の条件が真であることの確実性/可能性(たとえば、信頼基準に近い値)と合わせること(たとえば、追加及び/または複数倍することを介する)に基づき、露出の可能性を計算することができる。いくつかの実施形態では、ロボットシステム100は、複数の識別子が、考慮されるアプローチ位置及び/または考慮されるポーズに関して露出した際に、露出していると思われる識別子の各々に関する確実性を付加することに基づき、露出の可能性を計算することができる。
【0090】
いくつかの実施形態では、ロボットシステム100は、考慮されるアプローチ位置に関する潜在的なポーズの各々など、露出した識別子の位置と代替的な識別子の位置とに基づく確実性の値を組み合わせることに基づいて、露出の可能性を計算することができる。たとえば、ロボットシステム100は、露出した識別子の位置と、逆の符号(たとえば、正及び負)を有する代替的な識別子の位置とに関する確実性を使用して、露出の可能性を計算することができる。ロボットシステム100は、2つの確実性の大きさを加えること、及び/または、符号を伴う確実性を加えることに基づき、露出の可能性を計算することができる。全体の大きさは、1つまたは複数の対象識別子がスキャン可能なままであることの全体の可能性を示し得、符号が付された/ベクトルの可能性は、1つまたは複数の対象識別子が、最初のポーズが正確ではない場合であっても、スキャン可能なままであることの可能性を示し得る。したがって、最初のポーズの正確さに関わらず、対象識別子がスキャン可能であることの類似の可能性を示すためなど、アプローチ位置は、全体の大きさがより大である場合に理想的であり、符号が付された/ベクトルの可能性が、ゼロに近くなる。
【0091】
ブロック558では、ロボットシステム100は、アプローチ位置を選択することができる。いくつかの実施形態では、ロボットシステム100は、アプローチ位置として、露出された識別子のセット(たとえば、最初のポーズが正確であることの仮定に従う、対象識別子の概算の位置のセット)と、代替的な識別子のセット(たとえば、最初のポーズが正確ではないことの仮定に従う、対象識別子の概算の位置の1つまたは複数のセット)との両方に、カバーされていない識別子の位置を含む、利用可能なアプローチ位置を選択することができる。換言すると、ロボットシステム100は、最初のポーズの正確さに関わらず、露出した、スキャン可能である少なくとも1つの対象識別子を残すアプローチ位置を選択することができる。いくつかの実施形態では、ロボットシステム100は、アプローチ位置として、全体の大きさがもっとも大であるもの、及び/または、符号が付された/ベクトルの可能性がゼロにより近いものなど、ターゲットとされる条件にマッチする、及び/またはもっとも近い露出の可能性に対応する、利用可能なアプローチ位置を選択することができる。
【0092】
いくつかの実施形態では、ロボットシステム100は、露出の可能性に基づき、スキャンの可能性(たとえば、露出した対象識別子が、成功してスキャンされる可能性)を計算することができる。たとえば、ロボットシステム100は、露出の可能性を、対応する露出した対象識別子に関連する評価値(たとえば、成功したスキャンの追跡の割合、物理的サイズ、及び/または識別子のタイプ)と組み合わせることができる。ロボットシステム100は、アプローチ位置として、もっとも高いスキャンの可能性に対応する、利用可能なアプローチ位置を選択することができる。
【0093】
いくつかの実施形態では、ロボットシステム100は、露出した識別子のセットを、代替的な識別子のセットと比較して、露出した識別子のセット及び代替的な識別子のセットが、ターゲットとなる対象112の対向する表面の位置(たとえば、第1のポーズ312と第3のポーズ316との間)を含むかを判定することができる。したがって、ロボットシステム100は、2つの対向する表面と直交する、第3の表面(たとえば、対象外周表面326の1つ)に対応する利用可能なアプローチ位置を選択することができる。
【0094】
ブロック560では、信頼基準が十分性閾値を満たさないなどの場合、ロボットシステム100は、選択されたアプローチ位置に基づいて、候補となるモーションプランを計算することができる。ロボットシステム100は、対象識別子を、露出した識別子のセットと代替的な識別子のセットとの両方に置く1つまたは複数の提供位置/向きに対応する、エンドエフェクタに関する1つまたは複数のスキャン位置を含む、候補となるモーションプランを計算することができる。換言すると、ロボットシステム100は、最初のポーズの正確さに関わらず、ターゲットとなる対象112をスキャンすることができる、候補となるモーションプランを計算することができる。
【0095】
いくつかの実施形態では、ロボットシステム100は、露出した識別子のセットと、代替的な識別子のセットとの両方において、識別子の位置に対処する、候補となるモーションプランを計算することができる。たとえば、ロボットシステム100は、対向する及び/または直交する表面の、可能性のある識別子の位置に対処する、候補となるモーションプランを計算することができる。したがって、ロボットシステム100は、最初のポーズに加え、逆向きのポーズ(たとえば、ターゲットとなる対象のアウトラインが視認位置/角度から同じに置かれている、逆方向に向いたポーズ)、及び/または、回転された他のポーズに対処することができる。説明の例として
図3A及び
図3Cを再び参照すると、ロボットシステム100は、グリップ位置が対象外周表面326の1つに対応する場合、第1のポーズ312と第3のポーズ316との両方に対処する、候補となるモーションプランを計算することができる。
【0096】
複数の可能性のあるポーズに対処する(たとえば、最初のポーズにおけるエラーの概算)ために、ロボットシステム100は、対象識別子を、露出した識別子のセットと、代替的な識別子のセットとの両方に置く、スキャンポーズを計算することができる。いくつかの実施形態では、ブロック562で示すように、ロボットシステム100は、スキャンフィールド内またはスキャンフィールドを通して、ターゲットとなる対象112に関する候補のポーズのセットを計算することができる。アプローチ位置が選択されると、ロボットシステム100は、スキャンフィールド内に識別子の位置334を配置するように識別子の位置のモデルを回転及び/または移動させることなどにより、ブロック542に関して上述したように、候補となるスキャン位置を計算することができる。
【0097】
ブロック564では、ロボットシステム100は、露出した識別子のセットと、代替的な識別子のセットとを、候補となるスキャン位置の各々にマッピングすることができる。ロボットシステム100は、最初のポーズを始点とし、識別子の位置のモデルを回転させることに基づき、露出した識別子のセットをマッピングすることができる。ロボットシステム100は、代替的なポーズの1つ(たとえば、逆向きのポーズ)を始点とし、識別子の位置のモデルを回転させることに基づき、代替的な識別子のセットをマッピングすることができる。
【0098】
識別子の位置がマッピングされると、ブロック568において、ロボットシステム100は、露出した識別子のセットと、代替的な識別子のセットとの両方における対象識別子の位置及び/または向きを、スキャンフィールドと比較することができる。決定ブロック570では、ロボットシステム100は、候補のポーズが、露出した識別子のセットと、代替的な識別子のセットとの両方における対象識別子を対象スキャナに同時に提供したかを判定することができる。
【0099】
ブロック572では、ロボットシステム100は、露出した識別子のセットと代替的な識別子のセットとの両方における対象識別子を、異なる対象スキャナ/スキャンフィールドに同時に提供する候補のポーズを、スキャンポーズとして、識別することができる。たとえば、露出した識別子のセットと代替的な識別子のセットとにおける対象位置が対向する表面上にある状態で、グリップ位置が対象外周表面326の1つに対応する場合、ロボットシステム100は、ターゲットとなる対象112の両側の表面の各々が対象スキャナの1つに向いた状態で、対向/対面している一対の対象スキャナの間にターゲットとなる対象112を置くスキャンポーズを識別することができる。
【0100】
ブロック574では、候補のポーズのどれも、露出した識別子のセットと代替的な識別子のセットとの両方において、対象識別子を同時に提供しない場合、ロボットシステム100は、露出した識別子のセット及び代替的な識別子のセットから、各々が少なくとも1つの対象識別子を提供する、複数のスキャン位置(たとえば、第1のスキャン位置及び第2のスキャン位置)を計算することができる。たとえば、第1のスキャン位置は、露出した識別子のセット内の1つまたは複数の対象識別子の位置を、対象スキャナの1つに提供することができ、第2のスキャン位置は、代替的な識別子のセット内の1つまたは複数の対象識別子の位置を、対象スキャナの1つに提供することができる。第2のスキャン位置は、第1のスキャン位置から、エンドエフェクタを軸周りに回転させること、エンドエフェクタを平行移動すること、またはそれらの組合せに関連し得る。
【0101】
ふたたび
図4に示す例を参照すると、第2のモーションプラン424は、上述のように、2つの対向する表面(たとえば、第1のポーズ312及び第3のポーズ316に関する)に直交する第3の表面(たとえば、対象外周表面326の1つ)に対応する、第2のアプローチ位置434に対応するものとすることができる。したがって、第1のスキャン位置は、最初のポーズ(たとえば、第1のポーズ312)に対応する表面(たとえば、対象底部表面324であると概算される)を、上に向いた対象スキャナ416の上であるとともにこのスキャナに向く、第2の提供位置444の一つの第1の位置に対応し得る。第2のスキャン位置は、ターゲットとなる対象112を90度だけ、(たとえば、概してスタート位置114から作業位置116への)全体の移動方向に対して反時計回りの方向に回転させた、第2の提供位置444の一つの第2の位置に対応するものとすることができる。したがって、第2のスキャン位置は、代替的なポーズ(たとえば、第3のポーズ316)に対応する表面(たとえば、対象底部表面324であると判断される)を、水平に向いた対象スキャナ416の前方及びこのスキャナに向く垂直な向きに配置する、第2の提供位置444に対応するものとすることができる。
【0102】
結果として得られるスキャンポーズ及び/またはスキャン位置のセットに従って、ロボットシステム100は、候補のプランを計算することができる。ロボットシステム100は、上述の1つまたは複数のメカニズム(たとえば、A*メカニズム)を使用して、エンドエフェクタを選択されたアプローチ位置に置き、それに応じてターゲットとなる対象112に接触及びグリップし、また、ターゲットとなる対象112を、識別されたスキャンポーズ及び/またはスキャン位置のセットまで、持ち上げるとともに移動する、候補のプランを計算することができる。たとえば、スキャンポーズが識別されると、ロボットシステム100は、候補のプランを計算して、スキャンフィールド内またはスキャンフィールドを通るターゲットとなる対象112に関するスキャンポーズを確立することができる。ロボットシステム100がスキャンポーズを識別しない場合、ロボットシステム100は、候補のプランを計算して、複数のスキャン位置のセットを連続して通るようにエンドエフェクタを移動/方向付けすることができ、それにより、複数の提供位置/向きに従って、ターゲットとなる対象112を連続して移動/回転させる。
【0103】
ブロック576では、ロボットシステム100は、候補のモーションプランの各々に関するスキャンの可能性を再計算またはアップデートすることができる。ロボットシステム100は、ブロック544に関して上述した様々な可能性及び/または優先度(たとえば、アプローチ位置、スキャン位置、利用される対象スキャナ、露出していると思われる識別子、関連するエラー、及び/または損失率、またはそれらの組合せに関する、可能性及び/またはスコア)を組み合わせることに基づくが、性能のメトリックの代わりに、スキャンのメトリックに関して、スキャンの可能性をアップデートすることができる。
【0104】
ブロック578では、ロボットシステム100は、スキャンの可能性に従って、候補のプランの選択に基づき、モーションプランを計算することができる。ロボットシステム100は、モーションプランとして、候補のプランの中でスキャンの可能性が最大である候補のプランを選択することができる。たとえば、ロボットシステム100は、(たとえば、スタート位置114と作業位置116との間の空間のスキャンのための)ターゲットとなる対象112の移動の間、1つまたは複数のスキャンフィールド(すなわち、1つまたは複数の対象スキャナの前)における、露出した識別子の位置の少なくとも1つ及び代替的な識別子の位置の少なくとも1つを配置することの可能性がもっとも高い、候補のプランを選択することができる。
【0105】
比較的小さい差異の値(たとえば、所定の閾値)内で、2つ以上の候補のプランがスキャンの可能性に対応する場合、ロボットシステム100は、対応する候補のプランに対応する性能のメトリックを(たとえば、ブロック544及びブロック546に関して上述したように)計算及び評価することができる。ロボットシステム100は、モーションプランとして、ターゲットとされる条件にもっとも近い候補のプランを選択することができる。
【0106】
いくつかの実施形態では、ロボットシステム100は、図示の例示的フローから外れることができる。たとえば、ロボットシステム100は、上述のように、アプローチ位置を選択することができる。選択されたアプローチ位置に基づき、ロボットシステム100は、ターゲットとなる対象112をグリップし、持ち上げ、再度の方向付け、水平移動、下に戻すとともに開放する、またはそれらの組合せなど、動きの所定のセットを実施することができる。動きの所定のセットの間または後に、ロボットシステム100は、(たとえば、ブロック502に戻るようにループすることを介して)ピックアップエリアを再度撮像またはスキャンし、最初のポーズ及び信頼基準(たとえば、ブロック522及びブロック524を介する)を再度判定することができる。
【0107】
図5Aに戻ると、ブロック508において、ロボットシステム100は、結果としてのモーションプランの実施を開始することができる。ロボットシステム100は、モーションプランのコマンド及び/または設定を他のデバイス(たとえば、対応する作動デバイス212及び/または他のプロセッサ)に送信して、作業402を実行するように1つまたは複数のプロセッサ202を操作することに基づくモーションプランを実施することができる。したがって、ロボットシステム100は、コマンドもしくは設定、またはそれらの組合せのシークエンスに応じて、作動デバイス212を操作することにより、モーションプランを実行することができる。たとえば、ロボットシステム100は、作動デバイス212を操作して、エンドエフェクタをスタート位置114周りのアプローチ位置に配置すること、ターゲットとなる対象112に接触及びグリップすること、またはそれらの組合せを行うことができる。
【0108】
ブロック582では、ロボットシステム100は、エンドエフェクタをスキャン位置に移動することができ、それにより、ターゲットとなる対象112を提供位置/向きに移動する。たとえば、ターゲットとなる対象112をスタート位置114から持ち上げた後、または持ち上げるのに伴い、ロボットシステム100は、エンドエフェクタを移動して、ターゲットとなる対象112に関するスキャンポーズを確立することができる。また、ロボットシステム100は、エンドエフェクタを第1のスキャン位置に移動することができる。
【0109】
ブロック584では、ロボットシステム100は、対象スキャナ416を操作して、ターゲットとなる対象112をスキャンすることができる。たとえば、1つまたは複数のプロセッサ202は、コマンドを対象スキャナ416に送信して、スキャンを実施する、及び/または、質問を対象スキャナ416に送信して、スキャンステータス及び/またはスキャンされた値を受信することができる。ブロック585などにおいて、モーションプランがスキャンポーズを含む場合、ロボットシステム100は、モーションプランを実施して、スキャンフィールドの向きに直交する方向に、スキャンフィールドにわたって、スキャンポーズのターゲットとなる対象112を移動することができる。ターゲットとなる対象112が移動される間、対象スキャナ416は、対象識別子332の複数の可能性のある位置に関する複数の表面を(同時に、及び/または連続して)スキャンすることができる。
【0110】
決定ブロック586では、ロボットシステム100は、スキャン結果(たとえば、ステータス及び/またはスキャンされた値)を評価して、ターゲットとなる対象112がスキャンされたかどうかを判定することができる。たとえば、ロボットシステム100は、モーションプランを、第1のスキャン位置まで実施した後に、スキャン結果を評価することができる。ブロック588などにおいて、スキャン結果が、ターゲットとなる対象112のスキャンが成功したことを示す(たとえば、ステータスが、有効なコード/識別子の検出に対応する、及び/または、スキャンされた値が、識別された/予期された対象にマッチする)場合、ロボットシステム100は、ターゲットとなる対象112を作業位置116に移動することができる。いくつかの実施形態では、スキャンが成功したことに基づき、ロボットシステム100は、任意の後のスキャン位置(たとえば、第2のスキャン位置)を無視し、ターゲットとなる対象112を作業位置116に直接移動することができる。
【0111】
スキャン結果が、スキャンが成功しなかったことを示す場合、ロボットシステム100は、決定ブロック590において、現在のスキャン位置が、モーションプランにおける最後のものであるかどうかを判定することができる。最後のモーションプランではない場合、ロボットシステム100は、ブロック582へ戻るループによって示されるように、ターゲットとなる対象112を次の提供位置/向きに移動することができる。
【0112】
現在のスキャン位置が、モーションプランにおける最後のものである場合、ロボットシステム100は、ブロック592で示すように、1つまたは複数の改善作業を実施することができる。いくつかの実施形態では、ロボットシステム100は、モーションプランにおけるスキャン位置のすべてに関するスキャン結果が、スキャンの失敗を示す場合、モーションプランを停止及び/またはキャンセルすることができる。いくつかの実施形態では、ロボットシステム100は、オペレータに知らせるためのエラーのステータス/メッセージを生成することができる。いくつかの実施形態では、ロボットシステム100は、スキャンが失敗した対象に関して指定されたエリア内(すなわち、スタート位置114及び作業位置116とは異なる位置)に、ターゲットとなる対象112を配置することができる。
【0113】
作業402(すなわち、ターゲットとなる対象112のスキャンを成功し、作業位置116に置くこと)を成功して完了したか、あるいは改善作業を実施したかに基づき、ロボットシステム100は、次の作業/対象に移動することができる。いくつかの実施形態では、ロボットシステム100は、ブロック502に戻るループによって示すように、指定されたエリアを再スキャンすることができる。いくつかの実施形態では、ロボットシステム100は、ブロック504に戻るループによって示すように、既存の撮像データを使用して、次の対象を、ターゲットとなる対象112として選択することができる。
【0114】
空間内(たとえば、スタート位置114と作業位置116との間の位置)でターゲットとなる対象112をスキャンすることにより、作業402を実行することに関する効率及び速度が向上される。スキャン位置を含むモーションプランであって、対象スキャナ416と協同もするモーションプランを計算することにより、ロボットシステム100は、ターゲットとなる対象を移動するための作業を、ターゲットとなる対象をスキャンするための作業と効果的に組み合わせることができる。さらに、最初の向きの信頼基準に従ってモーションプランを計算することにより、スキャン作業に関する効率、速度、及び精度がさらに向上する。上述のように、ロボットシステム100は、最初のポーズが正確ではないというシナリオに対応する代替的な向きに対処するモーションプランを計算することができる。したがって、ロボットシステム100は、較正エラー、予期しないポーズ、予期しない光の条件などに起因するものなど、ポーズの判定のエラーを伴う場合であっても、ターゲットとなる対象を正確に/成功的にスキャンする可能性を増大させることができる。正確なスキャンの可能性の増大は、ロボットシステム100に関する全体のスループットの増大につながるとともに、操作者の労力/介入をさらに低減することができる。
【0115】
まとめ
本開示の実施例の上述の発明を実施するための形態は、排他的であるか、本開示を上記に開示の明確な形態に限定されることは意図されていない。本開示に関する特定の実施例が、説明の目的のために上述されているが、様々な均等の変形形態が、当業者が認識することになるように、本開示の範囲内で可能である。たとえば、プロセスまたはブロックが所与の順番で提供されているが、代替的な実施態様により、異なる順番で、ステップを有するルーチンを実施するか、ブロックを有するシステムを採用する場合があり、また、いくつかのプロセスまたはブロックは、削除、移動、追加、細分化、結合、及び/または変形されて、代替的またはサブの組合せを提供する場合がある。これらプロセスまたはブロックの各々は、様々な異なる方法で実施される場合がある。また、プロセスまたはブロックが、図示の時点で、連続して実施されるものであるが、これらプロセスまたはブロックは、代わりに、並行して実施されるか実行される場合があり、あるいは、異なる時間に実施される場合がある。さらに、本明細書に示されたあらゆる特定の数は、実施例にすぎず、代替的実施態様では、異なる値またはレンジが採用される場合がある。
【0116】
これら及び他の変更は、上述の発明を実施するための形態に照らして、本開示に行うことができる。発明を実施するための形態には、本開示の特定の実施例と、想定されるベストモードとが記載されているが、本開示は、上述の説明が、テキストにおいてどれだけ詳細に示されるかに関わらず、多くの方法で実施することができる。本システムの詳細は、その特定の実施態様において、著しく変化する場合があるが、依然として、本明細書に開示の技術に包含されている。上述のように、本開示の特定の特徴または態様を記載する際に使用された特定の用語は、その用語が、用語が関連付けられた本開示の特定の特性、特徴、または態様のいずれにも限定されるように本明細書で再定義されることを暗示するものとは取られないものとする。したがって、本発明は、添付の特許請求の範囲によるものを除き、限定されない。概して、添付の特許請求の範囲で使用される用語は、上述の発明を実施するための形態のセクションが、そのような用語を明示的に規定していない限り、本開示を、明細書に開示の特定の実施例に制限するようには解釈されないものとする。
【0117】
本発明の特定の態様が、特定の特許請求の範囲の形態で添付のように与えられているが、本出願人は、任意の数の請求項の形態で、本発明の様々な態様を想定している。したがって、本出願人は、本出願または継続出願において、本出願を出願した後に、さらなる特許請求の範囲を実行する権利を留保して、そのような追加の請求項の形態を実行する。