IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ボストン ダイナミクス,インコーポレイテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-29
(45)【発行日】2023-07-07
(54)【発明の名称】ボックスの検出
(51)【国際特許分類】
   G06T 7/70 20170101AFI20230630BHJP
【FI】
G06T7/70 Z
【請求項の数】 25
(21)【出願番号】P 2021551959
(86)(22)【出願日】2020-03-13
(65)【公表番号】
(43)【公表日】2022-05-11
(86)【国際出願番号】 US2020022545
(87)【国際公開番号】W WO2020190678
(87)【国際公開日】2020-09-24
【審査請求日】2021-10-29
(31)【優先権主張番号】16/358,275
(32)【優先日】2019-03-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518096722
【氏名又は名称】ボストン ダイナミクス,インコーポレイテッド
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】パーキンス,アレクサンダー ダグラス
(72)【発明者】
【氏名】デュハッドウェイ,チャールズ
(72)【発明者】
【氏名】アンダーソン-シュプレッヒャー,ペーター
【審査官】伊知地 和之
(56)【参考文献】
【文献】米国特許出願公開第2015/0352721(US,A1)
【文献】米国特許出願公開第2018/0137642(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00 - 7/90
G06V 10/00 - 20/90
G06V 30/418
G06V 40/16
G06V 40/20
CSDB(日本国特許庁)
(57)【特許請求の範囲】
【請求項1】
方法(400)であって、
データ処理ハードウェア(142)で、関心領域に対応する複数の画像フレームペア(Fab1-n)を受信することであって、前記関心領域が、少なくとも1つのボックス(202)を含み、前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)が、それぞれのタイムスタンプと関連付けられ、それぞれの単眼画像フレーム(176a、F)およびそれぞれの深度画像フレーム(176b、F)を含む、前記複数の画像フレームペアを受信することと、
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、
前記データ処理ハードウェア(142)によって、前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)に対応する1つ以上のコーナー(214)の1つ以上の二次元座標を決定することと、
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標に基づいて、
前記データ処理ハードウェア(142)によって、前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)上でエッジ検出を実行することと、
前記データ処理ハードウェア(142)によって、前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)の1つ以上の面(224)を決定することと、
前記データ処理ハードウェア(142)によって、前記それぞれの深度画像フレーム(176b、F)から1つ以上の平面(226)を抽出することと、
前記データ処理ハードウェア(142)によって、前記少なくとも1つのボックス(202)の前記1つ以上の面(224)を、前記1つ以上の平面(226)に一致させて、1つ以上の一致した面(224)を得ることと、
前記データ処理ハードウェア(142)によって、前記1つ以上のコーナー(214)、前記エッジ検出、および前記1つ以上の一致した面(224)に基づいて、前記少なくとも1つのボックス(222)の推定を生成することと、を含む、方法。
【請求項2】
前記データ処理ハードウェア(142)によって、前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの前記推定(222)を集約して、前記少なくとも1つのボックスの調整された推定(222)を決定することをさらに含む、請求項1に記載の方法。
【請求項3】
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの前記推定(222)を集約することが、
前記複数の画像フレームペア(Fab1-n)の第1の画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの第1の推定(222、222a)を、前記複数の画像フレームペア(Fab1-n)の第2の画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの第2の推定(222、222b)と比較することと、
前記第1の推定(222、222a)を前記第2の推定(222、222b)に比較することに基づいて、前記少なくとも1つのボックスの前記推定(222)を調整することと、を含む、請求項2に記載の方法。
【請求項4】
前記データ処理ハードウェア(142)によって、ロボット(100)のビジョンシステム(146)と関連付けられた投影として前記少なくとも1つのボックスの前記推定(222)を表示することをさらに含む、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記データ処理ハードウェア(142)によって、ロボット(100)のビジョンシステム(146)と関連付けられた投影として前記少なくとも1つのボックスの前記推定(222)を表示することをさらに含み、前記投影が、前記少なくとも1つのボックスの前記推定(222)に対する信頼区間を示す色で前記少なくとも1つのボックス(202)を表す、請求項1から3のいずれか一項に記載の方法。
【請求項6】
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標を決定することが、機械学習モデルを使用して、前記1つ以上のコーナー(214)の前記1つ以上の二次元座標を決定することを含む、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記機械学習モデルが、訓練された深層学習ニューラルネットワークを含む、請求項6に記載の方法。
【請求項8】
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、前記データ処理ハードウェア(142)によって、前記それぞれの単眼画像フレーム(176a、F)および前記それぞれの深度画像フレーム(176b、F)をトリミングして、前記関心領域内の前記少なくとも1つのボックス(202)を分離することさらに含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、前記データ処理ハードウェア(142)によって、前記それぞれの単眼画像フレーム(176a、F)と関連付けられた角度歪みを補正することをさらに含む、請求項1から8のいずれか一項に記載の方法。
【請求項10】
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標が、勾配上昇オプティマイザに入力される初期シードを含み、前記勾配上昇オプティマイザが、前記1つ以上の面(224)を前記1つ以上の平面(226)に一致させ、前記エッジ検出を実行するように構成されている、請求項1から9のいずれか一項に記載の方法。
【請求項11】
各それぞれの深度画像フレーム(176b、F)が、深度センサー(172)から得られ、前記深度センサー(172)が、ステレオカメラ、走査光検出と測距(LIDAR)センサー、飛行時間センサー、または走査レーザー検出と測距(LADAR)センサーのうちの1つ以上を備える、請求項1から10のいずれか一項に記載の方法。
【請求項12】
前記データ処理ハードウェア(142)が、移動ロボット(100)のデータ処理ハードウェアを含む、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記それぞれの単眼画像フレーム(176a、F)および前記それぞれの深度画像フレーム(176b、F)が、ロボット(100)の関節式アーム(150)上に取り付けられた1つ以上のセンサー(172)からキャプチャされる、請求項1から12のいずれか一項に記載の方法。
【請求項14】
ロボット(100)であって、
センサーシステム(170)と、
データ処理ハードウェア(142)と、
前記データ処理ハードウェア(142)と通信するメモリハードウェア(144)と、
を備え、前記メモリハードウェア(144)が、前記データ処理ハードウェア(142)上で実行されると、前記データ処理ハードウェア(142)に、
前記センサーシステム(170)から、関心領域に対応する複数の画像フレームペア(Fab1-n)を受信することであって、前記関心領域が、少なくとも1つのボックス(202)を含み、前記複数の画像フレームペア(Fab1-n)の各画像フレーム(Fab)が、それぞれのタイムスタンプと関連付けられ、それぞれの単眼画像フレーム(176a、F)およびそれぞれの深度画像フレーム(176b、F)を含む、前記複数の画像フレームペアを受信することと、
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、
前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)に対応する1つ以上のコーナー(214)の1つ以上の二次元座標を決定することと、
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標に基づいて、
前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)上でエッジ検出を実行することと、
前記それぞれの単眼画像フレーム(176a、F)内において、前記少なくとも1つのボックス(202)の1つ以上の面(224)を決定することと、
前記それぞれの深度画像フレーム(176b、F)から1つ以上の平面(226)を抽出することと、
前記少なくとも1つのボックス(202)の前記1つ以上の面(224)を、前記1つ以上の平面(226)に一致させ、1つ以上の一致した面(224)を得ることと、
前記1つ以上のコーナー(214)、前記エッジ検出、および前記1つ以上の一致した面(224)に基づいて、前記少なくとも1つのボックスの推定(222)を生成することと、を含む、動作を実行させる命令を格納する、ロボット。
【請求項15】
前記動作が、前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの前記推定(222)を集約して、前記少なくとも1つのボックスの調整された推定(222)を決定することをさらに含む、請求項14に記載のロボット。
【請求項16】
前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)に対して生成された前記1つ以上のボックスの前記推定(222)を集約することが、
前記複数の画像フレームペア(Fab1-n)の第1の画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの第1の推定(222、222a)を、前記複数の画像フレームペア(Fab1-n)の第2の画像フレームペア(Fab)に対して生成された前記少なくとも1つのボックスの第2の推定(222、222b)と比較することと、
前記第1の推定(222、222a)を前記第2の推定(222、222b)と比較することに基づいて、前記少なくとも1つのボックスの前記推定(222)を調整することと、を含む、請求項15に記載のロボット。
【請求項17】
前記動作が、ロボット(100)のビジョンシステム(146)と関連付けられた投影として、前記少なくとも1つのボックスの前記推定(222)を表示することをさらに含む、請求項14から16のいずれか一項に記載のロボット。
【請求項18】
前記動作が、ロボット(100)のビジョンシステム(146)と関連付けられた投影として前記少なくとも1つのボックスの前記推定(222)を表示することをさらに含み、前記投影が、前記少なくとも1つのボックスの前記推定(222)に対する信頼区間を示す色で前記少なくとも1つのボックス(202)を表す、請求項14から16のいずれか一項に記載のロボット。
【請求項19】
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標を決定することが、機械学習モデルを使用して、前記1つ以上のコーナー(214)の前記1つ以上の二次元配置を決定すること含む、請求項14から18のいずれか一項に記載のロボット。
【請求項20】
前記機械学習モデルが、訓練された深層学習ニューラルネットワークを含む、請求項19に記載のロボット。
【請求項21】
前記動作が、前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、前記それぞれの単眼画像フレーム(176a、F)および前記それぞれの深度画像フレーム(176b、F)をトリミングして、前記関心領域内の前記少なくとも1つのボックス(202)を分離することをさらに含む、請求項14から20のいずれか一項に記載のロボット。
【請求項22】
前記動作が、前記複数の画像フレームペア(Fab1-n)の各画像フレームペア(Fab)について、前記それぞれの単眼画像フレーム(176a、F)と関連付けられた角度歪みを補正することをさらに含む、請求項14から21のいずれか一項に記載のロボット。
【請求項23】
前記1つ以上のコーナー(214)の前記1つ以上の二次元座標が、勾配上昇オプティマイザに入力される初期シードを含み、前記勾配上昇オプティマイザが、前記1つ以上の面(224)を前記1つ以上の平面(226)に一致させ、前記エッジ検出を実行するように構成されている、請求項14から22のいずれか一項に記載のロボット。
【請求項24】
各それぞれの深度画像フレーム(176b、F)が、深度センサー(172)から得られ、前記深度センサー(172)が、ステレオカメラ、走査光検出と測距(LIDAR)センサー、飛行時間センサー、または走査レーザー検出と測距(LADAR)センサーのうちの1つ以上を備える、請求項14から23のいずれか一項に記載のロボット。
【請求項25】
関節式アーム(150)をさらに備え、前記センサーシステム(170)の少なくとも一部分が、前記関節式アーム(150)上に取り付けられている、請求項14から24のいずれか一項に記載のロボット。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ボックスの検出に関する。
【背景技術】
【0002】
ロボットは、一般に、タスクを実行するために、可変のプログラムされた動作を介して材料、部品、ツール、または特殊なデバイスを移動するように設計された再プログラム可能な多機能マニピュレータとして定義される。ロボットは、物理的に固定されたマニピュレータ(例えば、産業用ロボットアーム)、(例えば、脚、車輪、もしくは牽引ベースのメカニズムを使用して)環境全体を移動する移動ロボット、またはマニピュレータと移動ロボットとの何らかの組み合わせであり得る。ロボットは、例えば、製造、輸送、危険な環境、探査、およびヘルスケアを含む、様々な産業で利用される。そのため、ロボットの周りの環境内の形状や物体を認識する能力は、ロボットの機能を強化し、これらの産業にさらなる利益を提供する可能性がある。
【発明の概要】
【0003】
本開示の一態様は、ボックスを検出するための方法を提供する。本方法は、データ処理ハードウェアで、ある期間にわたって関心領域について複数の画像フレームペアを受信することを含み、関心領域は、少なくとも1つのターゲットボックスを含み、複数の画像フレームペアの各画像フレームペアは、その期間中にそれぞれのタイムスタンプと関連付けられ、単眼画像フレームおよびそれぞれの深度画像フレームを含む。各画像フレームペアについて、本方法はまた、データ処理ハードウェアによって、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスに対応する長方形のコーナーを決定することを含む。それぞれの単眼画像フレーム内の長方形の決定されたコーナーに基づいて、本方法は、データ処理ハードウェアによって、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックス上でエッジ検出を実行することと、データ処理ハードウェアによって、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスの面を決定することと、データ処理ハードウェアによって、それぞれの深度画像フレームから平面を抽出することであって、それぞれの深度画像フレームから抽出された平面が少なくとも1つのターゲットボックスに対応する、平面を抽出することと、を追加的に含む。本方法は、データ処理ハードウェアによって、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスの決定された面を、それぞれの深度画像フレームから抽出された平面に一致させることをさらに含む。本方法はまた、データ処理ハードウェアによって、決定されたコーナー、実行されたエッジ検出、および少なくとも1つのターゲットボックスの一致した面に基づいて、ボックス推定を生成することを含む。
【0004】
本開示の実装例は、以下の任意選択の特徴のうちの1つ以上を含み得る。いくつかの実施例では、本方法は、データ処理ハードウェアによって、各画像フレームペアに対して生成されたボックス推定を集約して、少なくとも1つのターゲットボックスについて期間にわたって調整されたボックス推定を決定することを含む。各画像フレームペアに対して生成されたボックス推定を集約することは、第1の画像フレームペアに対して生成された少なくとも1つのターゲットボックスの第1のボックス推定を、第2の画像フレームペアに対して生成された少なくとも1つのターゲットボックスの第2のボックス推定と比較すること、および、第1のボックス推定と第2のボックス推定との間の比較に基づいて、期間にわたってボックス推定を調整すること、を含み得る。
【0005】
いくつかの実装例では、本方法は、各フレームペアについて、データ処理ハードウェアによって、それぞれの単眼画像フレームおよび深度画像フレームをトリミングして、少なくとも1つのターゲットボックスに対応する関心領域を分離することをさらに含む。いくつかの実施例では、本方法はまた、各フレームペアについて、データ処理ハードウェアによって、それぞれの単眼画像フレームと関連付けられた角度歪みを補正することを含む。いくつかの構成では、本方法は、データ処理ハードウェアによって、ロボットのビジョンシステム内のホモグラフィック投影としてボックス推定を表示することを含む。いくつかの実施例では、本方法は、データ処理ハードウェアによって、ロボットのビジョンシステム内の投影としてボックス推定を表示することを含み得る。ここで、射影は、ボックス推定の信頼区間を示す色で少なくとも1つのターゲットボックスを表す。
【0006】
いくつかの実装例では、それぞれの単眼画像フレーム内の長方形のコーナーを決定することは、機械学習モデルを使用して、それぞれの単眼画像フレーム内の長方形のコーナーを決定することを含む。機械学習モデルは、訓練された深層学習ニューラルネットワークであり得る。それぞれの単眼画像フレーム内の長方形の決定されたコーナーは、勾配上昇オプティマイザへの初期シードであり得、ここで、勾配上昇オプティマイザは、面を一致させ、エッジ検出を実行するように構成される。任意選択で、各それぞれの深度画像フレームは、ステレオカメラ、走査光検出と測距(LIDAR)センサー、飛行時間センサー、または走査レーザー検出と測距(LADAR)センサーのうちの1つ以上を含む深度センサーから得ることができる。単眼画像フレームおよび深度画像フレームは、ロボットの関節式アームに取り付けられた1つ以上のセンサーからキャプチャすることができる。いくつかの実施例では、データ処理ハードウェアは、関心領域内の移動ロボット上にある。
【0007】
本開示の別の態様は、ボックスを検出するためのロボットを提供する。ロボットは、データ処理ハードウェアと通信するセンサーシステム、データ処理ハードウェア、およびメモリハードウェアを含む。メモリハードウェアは、データ処理ハードウェア上で実行されると、データ処理ハードウェアに動作を実行させる命令を格納する。動作は、センサーシステムから、ある期間にわたって関心領域について複数の画像フレームペアを受信することを含み、ここで、関心領域は、少なくとも1つのターゲットボックスを含み、複数の画像フレームペアの各画像フレームペアは、その期間中にそれぞれのタイムスタンプと関連付けられ、単眼画像フレームおよびそれぞれの深度画像フレームを含む。各画像フレームペアについて、動作はまた、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスに対応する長方形のコーナーを決定することを含む。それぞれの単眼画像フレーム内の長方形の決定されたコーナーに基づいて、動作は、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックス上でエッジ検出を実行することと、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスの面を決定することと、それぞれの深度画像フレームから平面を抽出することであって、それぞれの深度画像フレームから抽出された平面が少なくとも1つのターゲットボックスに対応する、平面を抽出することと、を追加的に含む。動作は、それぞれの単眼画像フレーム内の少なくとも1つのターゲットボックスの決定された面を、それぞれの深度画像フレームから抽出された平面に一致させることをさらに含む。動作はまた、決定されたコーナー、実行されたエッジ検出、および少なくとも1つのターゲットボックスの一致した面に基づいてボックス推定を生成することを含む。
【0008】
本開示の実装例は、以下の任意選択の特徴のうちの1つ以上を含み得る。いくつかの実施例では、動作は、各画像フレームペアに対して生成されたボックス推定を集約して、少なくとも1つのターゲットボックスについて期間にわたって調整されたボックス推定を決定することを含む。各画像フレームペアに対して生成されたボックス推定を集約することは、第1の画像フレームペアに対して生成された少なくとも1つのターゲットボックスの第1のボックス推定を、第2の画像フレームペアに対して生成された少なくとも1つのターゲットボックスの第2のボックス推定と比較すること、および、第1のボックス推定と第2のボックス推定との間の比較に基づいて、期間にわたってボックス推定を調整すること、を含み得る。
【0009】
いくつかの実装例では、動作は、各フレームペアについて、それぞれの単眼画像フレームおよび深度画像フレームをトリミングして、少なくとも1つのターゲットボックスに対応する関心領域を分離することをさらに含む。いくつかの実施例では、動作はまた、各フレームペアについて、それぞれの単眼画像フレームと関連付けられた角度歪みを補正することを含む。いくつかの構成では、動作は、ロボットのビジョンシステム内のホモグラフィック投影としてボックス推定を表示することを含む。いくつかの実施例では、動作は、ロボットのビジョンシステム内の投影としてボックス推定を表示することを含み得る。ここで、射影は、ボックス推定の信頼区間を示す色で少なくとも1つのターゲットボックスを表す。
【0010】
いくつかの実装例では、それぞれの単眼画像フレーム内の長方形のコーナーを決定することは、機械学習モデルを使用して、それぞれの単眼画像フレーム内の長方形のコーナーを決定することを含む。機械学習モデルは、訓練された深層学習ニューラルネットワークであり得る。それぞれの単眼画像フレーム内の長方形の決定されたコーナーは、勾配上昇オプティマイザへの初期シードであり得、ここで、勾配上昇オプティマイザは、面を一致させ、エッジ検出を実行するように構成される。任意選択で、各それぞれの深度画像フレームは、センサーシステムの深度センサーから得ることができ、ここで、深度センサーは、ステレオカメラ、走査光検出と測距(LIDAR)センサー、飛行時間センサー、または走査レーザー検出と測距(LADAR)センサーのうちの1つ以上を含む。ロボットはまた、センサーシステムの少なくとも一部分が関節式アームに取り付けられているロボットの関節式アームを含み得る。
【0011】
本開示の1つ以上の実装例の詳細は、添付図面および以下の説明において記述される。他の態様、特徴および利点は、本明細書および図面から、ならびに特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0012】
図1A】作業環境内の例示的なロボットの斜視図である。
図1B図1Aのロボットのシステムの例示的な配置の概略図である。
図2A図1Aのロボット用の例示的な画像処理システムの概略図である。
図2B図2Aの画像処理のための例示的な画像の斜視図である。
図2C図2Aの画像処理のための例示的な画像の斜視図である。
図2D図2Aの画像処理のための例示的な画像の斜視図である。
図2E図2Aの画像処理のための例示的な画像の斜視図である。
図2F図2Aの画像処理のための例示的な画像の斜視図である。
図3図2Aの画像処理システムを使用した図1Aのロボットのための例示的なビジョンシステムの斜視図である。
図4】ロボットが作業環境内のボックスを検出するための動作の例示的な配置である。
図5】本明細書に記載のシステムおよび方法を実装するために使用され得る例示的なコンピューティングデバイスの概略図である。
【0013】
様々な図面中の同様の参照符号は、同様の要素を示す。
【発明を実施するための形態】
【0014】
ロジスティクスは、あらゆる形状およびサイズの商品を梱包および/または出荷するように進化した。この進化に伴い、ボックスなどの、ますます多くのパッケージ商品が、様々なロジスティックチャネルを動き回る。特に、ここ数十年で、とりわけオンラインショッピングの増加により、パッケージ商品に対する消費者の需要が大幅に増加した。今日、大手運送会社は、毎日数百万のパッケージを出荷すると見積もっている。出荷ロジスティクスの一環として、多くの場合、カウント、仕分け、輸送、パレット積載等、などのボックスに関連する特定のタスクを実行する必要がある。これらのタスクは、様々なビジネス、倉庫、フルフィルメントセンター等のための入庫および/または出庫施設の両方で必要になり得る。現在、パッケージ商品のボックスに関連するタスクは、数え切れない量の人的労力および時間を費やしている。さらに、速度と精度が重要になり得る一方で、これらのタスクは、単調で、退屈で、時間がかかり、および/または骨の折れることがよくある。
【0015】
人間固有の疲労の性質および人間の精度への悪影響のため、これらのタスクは概してロボットにより適している。ロボットは、疲労に悩まされることなく、繰り返し可能および/または信頼性の高い様態でボックス関連のタスクを実行し得る。有利なことに、出荷ロジスティクスのいくつかの側面は、すでに機械および/または機械処理に関わっている。例えば、出荷環境は、通常、コンピュータ、スキャナー、はかり、コンベヤ、フォークリフトなどの機器を含んでいる。ロボットを使用してボックスに対するタスクを実行することにより、ロボットは、この機器の役割を統合するように機能し得る。場合によっては、ロボットは、この機器および/または関連するロジスティックシステムとより簡単に統合することができることがある。これらのおよびその他の利点に基づいて、作業環境内のボックスを正確かつ効率的に検出し得るロボットは、進化するロジスティクス分野に大きな利益をもたらす可能性がある。
【0016】
図1Aは、少なくとも1つのボックス20を含む作業環境10内で動作するロボット100の例である。ここで、作業環境10は、地面12上にあるパレット30上に積み重ねられた複数のボックス20、20a~nを含む。一般に、ボックス20は、保護、輸送の容易さ、積み重ね可能性等のために商品を包装するために使用される。ボックス20は、通常、長方形プリズムまたは直方体に似た構造を有する。ボックス20は、面26の2つのエッジ24が交差するコーナー22を含む。長方形プリズムとして、ボックス20は、6つの面26を含み、各面26は、4つのエッジ24の境界によって形成される長方形である。各面26は、2つの平面の交差がエッジ24を形成する空間平面に対応する。コーナー22は、2つのエッジ24が一般に90度の角度(すなわち、直角)で交差する点または頂点を指す。ボックス20は、8つのコーナー22(すなわち、頂点)および12個のエッジ24を有する。ロジスティクスでは、ボックス20は、ボックス20内に含まれる商品のための在庫商品識別番号(SKU)(例えば、バーコードの形態で)を含むことが多い。パレット化される(すなわち、パレット30上に積み重ねられる)とき、SKUまたはバーコードは、露出されているボックス20の面26上に配置されるのが一般的である。
【0017】
作業環境10は、例えば、保管施設、流通センター、またはフルフィルメントセンターを含み得る。ロボット100は、作業環境10内のボックス20を検出および/または操作するために、地面12を横切って移動(例えば、駆動)し得る。例えば、パレット30は、ロボット100がロードまたはアンロードする配送トラックに対応し得る。ロボット100は、ロボット100が、ボックス20をパレット化するか、またはロジスティクスのフルフィルメントまたは在庫管理のためにボックス20を検出する、ロジスティクスの出荷および/または受け取り段階と関連付けられ得る。例えば、ロボット100は、ボックス20を検出し、この検出に基づいて、入ってくるまたは出て行く在庫についてボックス20をスキャンまたは処理する。いくつかの実装例では、ロボット100は、作業環境10について1つ以上のボックス20を操作し得る。
【0018】
ロボット100は、重力方向に沿った垂直重力軸Vと、ロボット100が質量のゼロサム分布を有する点である質量中心CMを有する。ロボット100は、垂直重力軸Vに対するCMに基づいたポーズPをさらに有して、ロボット100によって採られる特定のポーズまたはスタンスを定義する。ロボット100の姿勢は、空間における物体の向きまたは角度位置によって定義され得る。
【0019】
ロボット100は、一般に、ボディー110および1つ以上の脚120を含む。ロボット100のボディー110は、作業環境10で実行されるタスクに応じて、単一構造またはより複雑な設計であり得る。ボディー110は、ロボット100のバランスを取り、作業環境10について感知し、ロボット100に電力を供給し、作業環境10内のタスクを支援し、またはロボット100の他の構成要素を支持することを可能にし得る。いくつかの実施例では、ロボット100は、2つの部分からなるボディー110を含む。例えば、ロボット100は、倒立振子ボディー(IPB)110、110a(すなわち、ロボット100の胴体110aと呼ばれる)およびIPB110a上に配設されたカウンタバランスボディー(CBB)110、110b(すなわち、ロボット100のテール110bと呼ばれる)を含む。
【0020】
ボディー110(例えば、IPB110aまたはCBB110b)は、第1の端部112および第2の端部114を有する。例えば、IPB110aは、第1の端部112aおよび第2の端部114aを有し、一方、CBB110bは、第1の端部112bおよび第2の端部114bを有する。いくつかの実装例では、CBB110bは、IPB110aの第2の端部114a上に配設され、IPB110aに対して移動するように構成される。いくつかの実施例では、カウンタバランスボディー110bは、ロボット100に電力を供給するのに役立つ電池を含む。後部関節Jは、CBB110bをIPB110aの第2の端部114aに回転可能に結合して、CBB110bがIPB110aに対して回転することを可能にすることができる。後部関節Jは、ピッチ関節と呼ばれることがある。示される例では、後部関節Jは、CBB110bを支持して、CBB110bが、重力垂直軸Vおよびロボット100の前後軸(x軸)に垂直に延びる横軸(y軸)の周りを移動/ピッチすることを可能にする。前後軸(x軸)は、ロボット100による現在の進行方向を示し得る。IPB110aに対するCBB110bによる移動は、垂直重力軸Vに対してロボット100のCMを移動させることによって、ロボット100のポーズPを変える。回転アクチュエータまたは後部関節アクチュエータA、A(例えば、テールアクチュエータまたはカウンタバランスボディーアクチュエータ)は、横軸(y軸)の周りのCBB110b(例えば、テール)による動きを制御するために、後部関節Jまたはその近くに位置決めされ得る。回転アクチュエータAは、電気モーター、電気油圧サーボ、圧電アクチュエータ、ソレノイドアクチュエータ、空気圧アクチュエータ、またはIPB110aに対するCBB110bの動きを正確にもたらすのに好適な他のアクチュエータ技術を含み得る。
【0021】
IPB110aに対するCBB110bによる回転運動は、ロボット100を直立位置にバランスをとって維持するために、ロボット100のポーズPを変える。例えば、従来の倒立振子フライホイールにおけるフライホイールによる回転と同様に、重力垂直軸Vに対するCBB110bによる回転は、後部関節JでモーメントMCBBを生成し/分け与えてロボット100のポーズPを変える。CBB110bをIPB110aに対して移動させてロボット100のポーズPを変えることにより、ロボット100のCMは、重力垂直軸Vgに対して移動して、ロボット100が移動している、および/または荷物を運んでいるシナリオにおいて、ロボット100を直立位置にバランスをとって維持する。しかしながら、モーメント点を中心とした質量を有する従来の倒立振子フライホイールにおけるフライホイール部分とは対照的に、CBB110bは、いくつかの構成で、後部関節Jに与えられたモーメントからオフセットされた対応する質量を含み、後部関節Jに配設されたジャイロスコープをCBB110bの代わりに後部関節を使用して、ロボット100を直立位置にバランスをとって維持するためのモーメント(回転力)をスピンさせて与えることができる。
【0022】
CBB110bは、時計回りおよび反時計回りの両方向(例えば、「ピッチ方向」のy軸の周り)に後部関節Jの周りを回転(例えば、ピッチ)して、振動(例えば、揺れ)運動を作り出すことができる。位置間のIPB110aに対するCBB110bによる動きは、ロボット100のCMをシフトさせる(例えば、地面12に向かってより低く、または地面12からより高く離れて)。CBB110bは、動きの間で振動して、揺れる動きを作り出すことができる。IPB110aに対して動くときのCBB110bの回転速度は、ロボット100を動的にバランスさせるためにロボット100のポーズPをどれだけ速く変える必要があるかに応じて、一定または変化(加速または減速)し得る。
【0023】
脚120は、作業環境10の周りでロボット100を動かすように構成された移動ベースの構造(例えば、脚および/または車輪)である。ロボット100は、任意の数の脚120を有し得る(例えば、4本の脚を備えた四足歩行、2本の脚を備えた二足歩行、6本の脚を備えた六脚、8本の脚を備えたクモのようなロボット等)。ここでは、簡単にするために、ロボット100は、一般に、2つの脚120、120a~bで示され、説明されている。
【0024】
二足歩行ロボット100として、ロボットは、第1の脚120、120aおよび第2の脚120、120bを含む。いくつかの実施例では、各脚120は、第1の端部122および第2の端部124を含む。第2の端部124は、ロボット100が作業環境10を横断し得るように、表面(例えば、地面)に接触するロボット100の部材に接触するか、または近接する脚120の端部に対応する。例えば、第2の端部124は、歩行パターンに従って移動するロボット100の足に対応する。いくつかの実装例では、ロボット100は、転がり運動に従って移動し、そのためロボット100は駆動輪130を含む。駆動輪130は、ロボット100の足のような部材に追加するか、またはその代わりであり得る。例えば、ロボット100は、歩行運動および/または転がり運動に従って移動することができる。ここで、図1Aに示されるロボット100は、ボディー110に(例えば、IPB110aで)結合された第1の端部122を図示し、一方、第2の端部124は、駆動輪130に結合されている。駆動輪130を脚120の第2の端部124に結合することにより、駆動輪130は、結合の軸の周りを回転して、ロボット100を作業環境10の周りで動かすことができる。
【0025】
ボディー110の各側の股関節J(例えば、ロボット100の矢状面Pに関して対称な第1の股関節J、JHaおよび第2の股関節J、JHb)は、脚120の第1の端部122をボディー110の第2の端部114に回転可能に結合して、脚120の少なくとも一部分がボディー110に対して横軸(y軸)の周りを移動/ピッチすることを可能にし得る。例えば、脚120の(例えば、第1の脚120aまたは第2の脚120bの)第1の端部122は、股関節JでIPB110aの第2の端部114aに結合して、脚120の少なくとも一部分が、IPB110aに対して横軸(y軸)の周りを移動/ピッチすることを可能にする。
【0026】
脚アクチュエータA、Aは、各股関節Jと関連付けられ得る(例えば、第1の脚アクチュエータA、ALaおよび第2の脚アクチュエータA、ALb)。股関節Jと関連付けられた脚アクチュエータAは、脚120の上部126(例えば、第1の脚120aまたは第2の脚120b)を、ボディー110(例えば、IPB110a)に対して横軸(y軸)の周りで移動/ピッチングさせ得る。いくつかの構成では、各脚120は、対応する上部126および対応する下部128を含む。上部126は、第1の端部122の股関節Jから対応する膝関節Jまで延在することができ、下部128は、膝関節Jから第2の端部124まで延在することができる。膝関節Jと関連付けられた膝アクチュエータA、Aは、脚120の下部128を、脚120の上部126に対して横軸(y軸)の周りで移動/ピッチさせ得る。
【0027】
各脚120は、駆動輪130を脚120の第2の端部124に回転可能に結合するように構成された対応する足首関節Jを含み得る。例えば、第1の脚120aは、第1の足首関節J、JAaを含み、第2の脚120bは、第2の足首関節J、JAbを含む。ここで、足首関節Jは、駆動輪130と共通の回転のために結合され、横軸(y軸)に実質的に平行に延在する輪軸と関連付けられ得る。駆動輪130は、足首関節Jの周りで駆動輪130を回転させるための対応する車軸トルクを適用して、駆動輪130を、前後軸(x軸)に沿って地面12(交換可能に作業面12と呼ばれる場合がある)を横切って移動させるように構成された、対応するトルクアクチュエータ(駆動モーター)A、Aを含み得る。例えば、車軸トルクは、ロボット100を前後軸(x軸)に沿って前進方向に移動させるために駆動輪130を第1の方向に回転させ得、および/またはロボット100を前後軸(x軸)に沿って後方に移動させるために駆動輪130を反対の第2の方向に回転させ得る。
【0028】
いくつかの実施形態では、脚120は、各脚120の長さが、股関節Jの近位の対応するアクチュエータ(例えば、脚アクチュエータA)、股関節Jおよび膝関節Jの近位に配設された一対のプーリ(図示せず)、およびプーリの回転を同期させるタイミングベルト(図示せず)を介して拡張および収縮し得るように、ボディー110(例えば、IPB110a)にプリズム状に結合されている。各脚アクチュエータAは、線形アクチュエータまたは回転アクチュエータを含み得る。ここで、コントローラー142(例えば、図1Bに示される)を備えた制御システム140は、各脚120と関連付けられたアクチュエータを作動させて、ボディー110(例えば、IPB110a)に対して対応する上部126を時計回り方向または反時計回り方向の一方に回転させて、対応する下部128を、時計回り方向または反時計回り方向の他方に上部126に対して対応する膝関節Jの周りで回転させることによって脚120の長さをプリズム状に伸張/拡張し得る。任意選択で、2リンク脚の代わりに、少なくとも1つの脚120は、脚120の第2の端部124が線形レールに沿ってボディー110(例えば、IPB110a)にプリズム状に離れて/向かって移動するように、プリズム状に直線的に伸長/収縮する単一のリンクを含み得る。他の構成では、膝関節Jは、同期プーリの対の代わりに、上部126に対して下部128を回転させるための膝アクチュエータAとして対応する回転アクチュエータを使用し得る。
【0029】
駆動輪130(例えば、第1の脚120aと関連付けられる第1の駆動輪130、130aおよび第2の脚120bと関連付けられる第2の駆動輪130、130b)の各々に加えられる対応する車軸トルクは、地面12を横切ってロボット100を操縦するために変化し得る。例えば、第2の駆動輪130bに加えられる車軸トルクよりも大きい第1の駆動輪130aに加えられる車軸トルクは、ロボット100を左に回転させ得、一方、第1の駆動輪130よりも第2の駆動輪130bにより大きな車軸トルクを加えることは、ロボット100を右に回転させ得る。同様に、駆動輪130の各々に実質的に同じ大きさの車軸トルクを加えることは、ロボット100を、地面12を横切って順方向または逆方向のいずれかに実質的に真っ直ぐに移動させ得る。駆動輪130の各々に加えられる車軸トルクの大きさはまた、前後軸(x軸)に沿ったロボット100の速度を制御する。任意選択で、駆動輪130は、反対方向に回転して、ロボット100が地面12上で旋回することによって向きを変えることを可能にし得る。こうして、各車軸トルクは、他の駆動輪130に加えられる車軸トルク(もしあれば)とは独立して、対応する駆動輪130に加えられ得る。
【0030】
いくつかの実施例では、ボディー110(例えば、CBB110bで)はまた、少なくとも1つの非駆動輪(図示せず)を含む。非駆動輪は、一般に受動的(例えば、受動キャスタ車輪)であり、ボディー110(例えば、CBB110b)が地面によって支持されるポーズPにボディー110が移動しない限り、地面12に接触しない。
【0031】
いくつかの実装例では、ロボット100は、ボディー110(例えば、IPB110a)上に配設され、ボディー110に対して動くように構成された関節式アーム150(アームまたはマニピュレータアームとも呼ばれる)などの、1つ以上の付属物をさらに含む。関節式アーム150は、1以上の自由度を有し得る(例えば、比較的固定されたものから、作業環境10において幅広いタスクを実行することができるものまでの範囲)。ここで、図1Aに例示された関節式アーム150は、5自由度を有する。図1Aは、ボディー110(例えば、IPB110a)の第1の端部112上に配設された関節式アーム150を示しているが、関節式アーム150は、他の構成ではボディー110の任意の部分に配設されてもよい。例えば、関節式アーム150は、CBB110b上またはIPB110aの第2の端部114a上に配設される。
【0032】
関節式アーム150は、近位の第1の端部152と遠位の第2の端部154との間に延在する。アーム150は、第1の端部152と第2の端部154との間に1つ以上のアーム関節Jを含み得、各アーム関節Jは、アーム150が作業環境10で関節運動することを可能にするように構成されている。これらのアーム関節Jは、アーム150のアーム部材156をボディー110に結合するか、2つ以上のアーム部材156を一緒に結合し得る。例えば、第1の端部152は、第1の関節式アーム関節JA1(例えば、肩関節に似ている)でボディー110(例えば、IPB110a)に接続する。いくつかの構成において、第1の関節式アーム関節JA1は、股関節Jの間に配設される(例えば、ボディー110の中心でロボット100の矢状面Pに沿って整列される)。いくつかの実施例では、第1の関節式アーム関節JA1は、アーム150の近位第1の端部152をボディー110(例えば、IPB110a)に回転可能に結合して、アーム150がボディー110(例えば、IPB110a)に対して回転することを可能にする。例えば、アーム150は、ボディー110に対して横軸(y軸)を中心に移動/ピッチすることができる。
【0033】
図1などのいくつかの実装例では、アーム150は、第2のアーム関節JA2(例えば、肘関節に似ている)および第3のアーム関節JA3(例えば、手首関節に似ている)を含む。第2のアーム関節JA2は、第1のアーム部材156aを第2のアーム部材156bに結合し、その結果、これらの部材156a~bは、互いに対して、かつまたボディー110(例えば、IPB110)に対しても回転可能である。アーム150の長さに応じて、アーム150の第2の端部154は、アーム部材156の端部と一致する。例えば、アーム150は、任意の数のアーム部材156を有することができるが、図1Aは、第2のアーム部材156bの端部がアーム150の第2の端部154と一致するように、2つのアーム部材156a~bを有するアーム150を示す。ここで、アーム150の第2の端部154において、アーム150は、作業環境10内でタスクを実行するように構成されたエンドエフェクタ160を含む。エンドエフェクタ160は、アーム関節J(例えば、第3のアーム関節JA3)でアーム150の第2の端部154上に配設され得、エンドエフェクタ160が動作中に複数の自由度を有することを可能にする。エンドエフェクタ160は、物体を把持/把握するための1つ以上のエンドエフェクタアクチュエータA、AEEを含み得る。例えば、エンドエフェクタ160は、エンドエフェクタ160とターゲット物体、例えば、ターゲットボックス202との間に真空シールを提供することによって物体を把握または把持するためのエンドエフェクタアクチュエータAEEとして1つ以上の吸盤を含む。
【0034】
関節式アーム150は、ボディー110(例えば、IPB110a)に対して横軸(y軸)の周りを移動/ピッチすることができる。例えば、関節式アーム150は、ボディー110に対して横軸(y軸)を中心に重力方向に回転して、回転操作を実行している間にロボット100のCMを下げることができる。CBB120bはまた、IPB110に対して横軸(y軸)を中心に重力方向に同時に回転して、ロボット100のCMを下げるのを助けることができる。ここで、関節式アーム150およびCBB110bは、ロボット100のCMの前後軸(x軸)に沿った前後方向へのシフトをキャンセルし得、一方、ロボット100のCMが地面12により近く下方にシフトすることを依然として果たす。
【0035】
図1Bを参照して、ロボット100は、ロボット100の動作を監視および制御するように構成された制御システム140を含む。いくつかの実装例では、ロボット100は、自律的および/または半自律的に動作するように構成される。しかしながら、ユーザはまた、ロボット100にコマンド/指示を提供することによってロボットを動作させ得る。示される実施例では、制御システム140は、コントローラー142(例えば、データ処理ハードウェア)およびメモリハードウェア144を含む。コントローラー142は、それ自体のメモリハードウェアを含んでもよく、または制御システム140のメモリハードウェア144を利用してもよい。いくつかの実施例では、制御システム140(例えば、コントローラー142を備えた)は、ロボット100が作業環境10の周りを移動することを可能にするために、アクチュエータA(例えば、後部アクチュエータA、脚アクチュエータA、膝アクチュエータA、駆動ベルトアクチュエータ、回転アクチュエータ、エンドエフェクタアクチュエータAEE等)と通信(例えば、コマンド動作)するように構成される。制御システム140は、示される構成要素に限定されず、本開示の範囲から逸脱することなく、追加の(例えば、電源)またはより少ない構成要素を含み得る。構成要素は、無線または有線接続によって通信することができ、ロボット100の複数の場所に分散させることができる。いくつかの構成では、制御システム140は、リモートコンピューティングデバイスおよび/またはユーザとインターフェースする。例えば、制御システム140は、リモートコンピューティングデバイスおよび/またはユーザからの入力を受信し、リモートコンピューティングデバイスおよび/またはユーザにフィードバックを提供するために、ジョイスティック、ボタン、送信機/受信機、有線通信ポート、および/または無線通信ポートなど、ロボット100と通信するための様々な構成要素を含み得る。
【0036】
コントローラー142は、1つ以上の汎用プロセッサ、デジタル信号プロセッサ、および/または特定用途向け集積回路(ASIC)を含み得るデータ処理ハードウェアに対応する。いくつかの実装例では、コントローラー142は、ロボット100の1つ以上のサブシステムで特定の動作を実行するように構成された専用の組み込みデバイスである。メモリハードウェア144は、コントローラー142と通信しており、揮発性および/または不揮発性ストレージコンポーネントなどの1つ以上の非一時的なコンピュータ可読ストレージ媒体を含み得る。例えば、メモリハードウェア144は、互いに通信している1つ以上の物理デバイスと関連付けられ得、光学的、磁気的、有機的、または他のタイプのメモリまたはストレージを含み得る。メモリハードウェア144は、とりわけ、命令(例えば、コンピュータ可読プログラム命令)を格納するように構成され、コントローラー142によって実行されると、コントローラー142に、限定はしないが、バランスを維持するためのロボット100のポーズPの変更、ロボット100の操縦、物体の検出、物体の輸送、および/または作業環境10内の他のタスクの実行などの多数の動作を実行させる。コントローラー142は、センサーシステム170との直接的または間接的な相互作用に基づいて動作を実行し得る。
【0037】
センサーシステム170は、1つ以上のセンサー172、172a~nを含む。センサー172は、視覚/画像センサー、慣性センサー(例えば、慣性測定ユニット(IMU))、および/または運動学的センサーを含み得る。画像/視覚センサー172のいくつかの例としては、単眼カメラまたはステレオカメラなどのカメラ、飛行時間(TOF)深度センサー、走査光検出と測距(LIDAR)センサー、または走査レーザー検出と測距(LADAR)センサーが挙げられる。より一般的には、センサー172は、力センサー、トルクセンサー、速度センサー、加速度センサー、位置センサー(線形および/または回転位置センサー)、運動センサー、場所センサー、負荷センサー、温度センサー、タッチセンサー、深度センサー、超音波距離センサー、赤外線センサー、および/または物体センサーのうちの1つ以上を含み得る。いくつかの実施例では、センサー172は、センサー172に対応する感知範囲または領域を定義する、対応する視野を有する。各センサー172は、センサー172が、例えば、1つ以上の軸(例えば、x軸、y軸、または地面12に対するz軸)の周りの視野を変更し得るように、枢動可能および/または回転可能であり得る。いくつかの実装例では、ロボット100のボディー110は、ロボット100の周りのすべての方向でセンサーデータ174を収集するために、ボディーの周りに複数のセンサー172を有するセンサーシステム170を含む。追加的または代替的に、センサーシステム170のセンサー172は、ロボット100のアーム150に取り付けられ得る(例えば、ボディー110に取り付けられた1つ以上のセンサー172と併せて)。ロボット100は、ロボット100の周りの作業環境10のセンサーデータ172を生成するために、センサーシステム170の一部として任意の数のセンサー172を含み得る。例えば、ロボット100が作業環境10の周りを動いているとき、センサーシステム170は、慣性測定データ(例えば、IMUによって測定された)を含むロボット100のポーズデータを収集する。いくつかの実施例では、ポーズデータは、ロボット100に関する運動学的データおよび/または向きデータを含む。
【0038】
センサー172を用いて視野を調査する場合、センサーシステム170は、視野に対応するセンサーデータ174(画像データ174とも呼ばれる)を生成する。画像/視覚センサー172の場合、センサー172は、センサーデータ174が時間間隔で視野に対応するフレームFを含むように、特定の周波数でセンサーデータ174として画像176をキャプチャし得る。センサーシステム170が複数の視覚センサー172を含む構成では、センサーシステム170は、画像センサー172に対応する1つを超える視野が重なって、異なるタイプの画像データ174を一緒に画像処理に使用できるように、各センサー172の方向(例えば、視野)を制御するように構成され得る。いくつかの実施例では、センサーシステム170は、第1のセンサー172、172aとして少なくとも1つの単眼カメラと、第2のセンサー172、172bとして少なくとも1つの深度センサー(例えば、ステレオカメラ、LIDAR、TOF等)とを含む。センサー172a~bは、それらの視野が重複しても良い。重複する視野を用いて、センサー172a-bは、作業環境10の同じ視野(またはセンサーの取り付け位置に応じてほぼ同じ視野)に対して同じ時間のインスタンスでの、単眼画像176、176a(すなわち、二次元)および深度画像176、176b(すなわち、三次元)をキャプチャする。これは、一致するフレームFごとに(すなわち、同じ時間のインスタンスでの)異なるセンサーデータ174を有する同一またはほぼ同一のフレームFをもたらす。各一致するフレームFは、時間のインスタンスに対応するそれぞれのタイムスタンプと関連付けられ得る。例えば、第1のセンサー172aなどの単眼カメラは、単眼画像176aのフレームFについてのセンサーデータ174をキャプチャ/生成し、第2のセンサー172bなどの深度センサーは、三次元体積点群に対応する深度画像176bのフレームFについてのセンサーデータ174をキャプチャ/生成する。単眼画像176aの各フレームFは「単眼画像フレーム」と呼ばれ得、深度画像176bの各フレームFは「深度画像フレーム」と呼ばれ得る。
【0039】
ロボット環境10に関する、画像データ、ポーズデータ、慣性データ、運動学的データ、等などの、センサーシステム170によって収集されたセンサーデータ174は、ロボット100の制御システム140(例えば、コントローラー142および/またはメモリハードウェア144)に通信され得る。いくつかの実施例では、センサーシステム170は、センサーデータ174を収集および格納する(例えば、メモリハードウェア144またはロボット100と通信するリモートリソースに関連するメモリハードウェア内に)。他の実施例では、センサーシステム170は、センサーデータ174をリアルタイムで収集し、センサーデータ174を生で(すなわち、未処理で)格納せずに、センサーデータ174を処理する。さらに他の実施例では、コントローラーシステム140および/またはリモートリソースは、処理されたセンサーデータ174および生のセンサーデータ174の両方を格納する。センサー172からのセンサーデータ174は、ロボット100のシステムがロボット100に関する状態を検出および/または分析することを可能にし得る。例えば、センサーデータ174は、制御システム140がロボット100を操縦し、ロボット100のポーズPを変更し、および/またはロボット100の機械的構成要素を移動/回転させるための様々なアクチュエータAを作動させることを可能にし得る。
【0040】
図2Aに示されるように、ロボット100は、センサーシステム170のセンサー172によってキャプチャされた画像176に対応するセンサーデータ174を処理するように構成された画像処理システム200を含む。センサーデータ174に基づいて、画像処理システム200は、ロボット100に関する作業環境10内の1つ以上のボックス20に対応する形状を検出するように構成される。1つ以上のボックス20を検出することにより、ロボット100は、ボックス20を操作するか、または各ターゲットボックス20の他の処理を容易にすることができる。いくつかの実施例では、ロボット100は、1つ以上のボックス20を検出し、ボックス20の場所を別のエンティティ(例えば、作業者、別のロボット、ボックス20の所有者等)に通信する。例えば、ロボット100がボックス20(例えば、ボックス20のパレット30)を検出すると、ロボット100は、ボックス20の場所をフォークリフトオペレータに伝達することができる。いくつかの構成では、画像処理システム200を用いて、ロボット100は、ロボット100がボックス20に関連するタスクについて支援を必要とし得る時を認識し得る。言い換えれば、ロボット100は、ロボット100の強度またはロボット100が操作することができるボックス20のサイズなどの制約を認識し得る。
【0041】
画像処理システム200は、関心領域の画像176の複数のフレームFに対応するセンサーデータ174を受信する。センサーシステム170が画像176のフレームFをキャプチャするとき、センサーシステム170は、1つ以上のターゲットボックス202を含む関心領域に対応する1つ以上のセンサー172の視野を整列させる。より具体的には、画像処理システム200は、ある期間にわたって関心領域について複数の画像フレームペア176a、176b、Fabに対応するセンサーデータ174を受信し、それにより、各画像フレームペアFabは、その期間中、それぞれのタイムスタンプ(画像フレームFとして示される)と関連付けられ、関心領域についてそれぞれの単眼画像フレーム176a、Fおよびそれぞれの深度画像フレーム176b、Fを含む。簡単にするために、図2A図2Fは、それぞれのタイムスタンプと関連付けられた単一の画像フレームペアFab1を示している。フレームFを処理するために、画像処理システム200は、一般に、モデラー210および推定器220を含む。図2B図2Fは、画像処理システム200の構成要素(例えば、検出器210、モデラー210、および推定器220)によって実行される画像処理機能の例を図示する。
【0042】
いくつかの実施例では、ロボット100は、センサーシステム170からのセンサーデータ174により作業環境10がボックス20を含み得ることを画像処理システム200に示す(すなわち、ターゲットボックス202の可能性を示す)。例えば、センサーデータ174は、一般に、ロボット100の周りの領域内の物体を示す(すなわち、感知する)(例えば、物体がボックス20に対応し得ることを知らなくても)。いくつかの実装例では、ロボット100は、関心領域がボックス20を有する可能性があるという入力(すなわち、ターゲットボックス202を示す入力)をリモートコンピューティングデバイスおよび/またはユーザから受信する。いずれの場合も、センサーシステム170は、画像処理システム200と通信して、関心領域の画像データ174をキャプチャする。ターゲットボックス202を示す入力に基づいて、画像処理システム200は、ボックス検出を開始するように初期化され得る。
【0043】
いくつかの実施例では、画像処理システム200が、関心領域の画像フレームペアFab(例えば、単眼画像フレーム176aおよび深度画像フレーム176b)を受信するとき、各画像176a~bは、ボックス20以外の作業環境10内の物体または特徴に対する画像データ174を含む。例えば、作業環境10が倉庫である場合、画像176a~bは、床、天井、壁、等などの特徴を含み得る。画像処理システム200は、これらの非ボックス特徴を認識し、これらの非ボックス特徴に対応する画像データ174を除去するように構成される。言い換えれば、画像176a~bは、ターゲットボックス202を含む関心領域を分離するためにトリミングされ得る。例えば、図2Cは、図2Bの単眼画像フレーム176a、Fから非ボックス特徴に対応する画像データ174を切り抜いた後の単眼画像フレーム176a、Fを示し、それにより、関心領域を分離し、図2Bと比較したとき、作業環境10のより少ないものを明らかにしている。画像処理システム200は、センサー172によってキャプチャされた画像176全体を処理することができるが、非ボックス特徴の除去は、画像処理システム200によって処理される必要がある画像データ174の量を合理化(例えば、削減)し得る。
【0044】
いくつかの実装例では、画像処理システム200は、歪んだ画像176(例えば、単眼画像176aまたは深度画像176b)を受信する。歪んだ画像は、概して、直線セグメントを有する対象(すなわち、直線からなる対象)をキャプチャしようとする画像176を指すが、キャプチャされた画像は、曲線セグメント(すなわち、非直線からなる対象)をもたらす。歪みのいくつかの例は、バレル歪み(すなわち、画像176の中心に向かって凹線を伴う歪み)、ピンクッション歪み(すなわち、画像176の中心に向かって凸線を伴う歪み)、または角度歪み(すなわち、直線ではなく角度のある線を伴う歪み)である。いくつかの構成では、画像176の歪みは、画像176をキャプチャするセンサー172によるものである。センサー172は、センサー172がロボット100にどのように取り付けられるかに基づいて、ある程度の傾斜を有し得る。例えば、センサー172は、ロボット100の曲面に取り付けられる場合がある。画像処理システム200が歪みのある画像176を受信すると、画像処理システム200は、画像補正を実行して、歪みのある画像176を直線投影に変換する。ボックス20(例えば、ボックスの側面および面)は、概して直線セグメントから形成されるので、補正された画像は、画像処理システム200がより効率的に画像176を処理してボックス20を検出することを可能にし得る。
【0045】
モデラー210は、少なくとも1つのターゲットボックス202を含む単眼画像フレーム176a、F(例えば、図2Bに示されるような単眼画像176aに関連する画像データ174)を受信するように構成される。追加的または代替的に、モデラー210は、単眼画像176aのフレームFの画像データ174が、ターゲットボックス202として少なくとも1つのボックス20を含むことを検出し得る。各画像フレームペアFabについて、モデラー210は、受信された単眼画像フレーム176a、Fに基づいて、少なくとも1つのターゲットボックス202と関連付けられた長方形のコーナー214を決定するように構成される。簡単にするために、図2Aは、それぞれのフレームFa1と関連付けられた1つの単眼画像176aを受信するモデラー210を示している。モデラー210は、単眼画像176aからの少なくとも1つのターゲットボックス202と関連付けられた長方形のコーナー214(すなわち、ボックス20のコーナー22のデジタル表現)を決定するモデル222を含む。例えば、図2Cは、モデラー210が単眼画像176a内の25個のコーナー214、214a~yを識別した、単眼画像176aを図示している。いくつかの実施例では、モデル222は、訓練データセットと同様の入力データに基づいて、推論中に出力216を予測するために、入力データセットおよび出力結果セットで訓練された機械学習モデルである。訓練中に、モデル222は、1つ以上のボックス20を有するフレームFを含む訓練データセットを受信する。ここで、訓練データセットの各フレームFは、フレームF内の各訓練ボックスのコーナー214を識別するラベルを有する。通常、訓練の目的で、データは訓練データセットと評価データセットとに分離され(例えば、90%の訓練および10%の評価)、モデル222は、評価セットでのモデル222のパフォーマンスの低下が止まるまで訓練される。評価セットでのパフォーマンスの低下が止まると、モデル222は、単眼画像176a内の少なくとも1つのターゲットボックス202と関連付けられた長方形のコーナー214を決定するための推論の準備ができている可能性がある。いくつかの実装例では、モデル222は、深層学習ニューラルネットワークなどのニューラルネットワークである。いくつかの実施例では、ニューラルネットワークはリカレントニューラルネットワークである。訓練されると、モデル222は、単眼画像176aを受信し、出力216としてターゲットボックス202のコーナー214を生成する。ここで、単眼画像176aは二次元であるため、モデル222からの出力216は、二次元のみである(例えば、ターゲットボックス202のコーナー214の二次元座標位置)。モデラー210は、ターゲットボックス202のコーナー214を推定器220に通信するように構成される。
【0046】
ロボット100は三次元作業環境10で動作しているので、モデラー210の出力216からのコーナー214は、三次元ボックス検出に変換するために画像処理システム200によるさらなる処理を必要とする。さらに、二次元情報(すなわち、モデラー210から識別されたコーナー214)を三次元に直接変換することは、不正確さに悩まされる可能性がある。例えば、ターゲットボックス202のコーナー214は、ボックス20のエッジ24の画像データ174が交差する二次元空間内の単一の点に対応する。さらに、単一点を正確に決定することは、画像176および/またはセンサー172の品質のために困難であることが判明する可能性がある。例えば、ターゲットボックス202のコーナー214は、画像176のサブピクセル品質で最もよく検出され得るが、センサー品質または作業環境10内の照明などの制限は、モデラー210による次善のコーナー決定をもたらす。したがって、モデラー210によって決定されたコーナー214は、深度画像176bと併せて使用されて、ボックス検出の精度を高め、二次元コーナー情報を、ロボット100に対する1つ以上のターゲットボックス202についての三次元情報に変換し得る。
【0047】
推定器220は、単眼画像176aのフレームF(すなわち、単眼画像フレーム176a、F)内のターゲットボックス202のコーナー214を含む出力216を受信する。コーナー214は、単眼画像176a内で識別され得るか、またはデータ(例えば、座標データ)として単眼画像176aとは別に提供され得る。推定器220はまた、コーナー214が決定された単眼画像フレーム176a、Fを含む対応する画像フレームペアFabのそれぞれの深度画像フレーム176b、Fを受け取る。対応する画像フレームペアFabに対してそれぞれの単眼画像フレーム176a、Fおよびそれぞれの深度画像フレーム176b、Fの両方を使用して、推定器220は、モデラー210からのコーナー214に基づいて2段階のボックス検出を実行し得る。これらの段階は、ボックス20に対応する幾可学的形状を利用して、画像処理システム200によってボックス検出を実行するときに、推定器220が正確なボックス推定222を生成することを確実にする。
【0048】
第1の段階では、推定器220は、単眼画像176a内の少なくとも1つのターゲットボックス202の同様の幾可学的形状を深度画像176bに一致させるように構成される。いくつかの実施例では、コーナー214に基づいて、推定器220は、単眼画像176a内の少なくとも1つのターゲットボックス202の面を、深度画像176b内の少なくとも1つのターゲットボックス202の平面に一致させる。言い換えれば、推定器220は、ターゲットボックス202の二次元特徴(すなわち、面214)を、ターゲットボックス202の同様の三次元特徴(すなわち、平面216)に一致させ、ここで、各次元において、これらの特徴は、モデラー210によって決定されたコーナー214に基づいている。いくつかの実装例では、推定器220は、ターゲットボックス202のコーナー214に基づいて、ターゲットボックス202の推定面224を識別するように構成される。推定面224は、推定器220が単眼画像176aから(例えば、画像データ174から)面として推定する、作業環境10内のボックス20の実際の面26の推定された表現を指す。推定器220は、ターゲットボックス202の4つのコーナー214を境界付けて、ターゲットボックス202の推定面224を表す長方形または正方形を形成することによって、推定面224を識別し得る。図2Dは、9つの推定面224、224a~iを有する単眼画像フレーム176a、Fの例を示す。
【0049】
推定器220は、深度画像フレーム176b、Fに同様の処理を実行し得る。ここで、推定器220は、ターゲットボックス202の同じ4つのコーナー214を境界付けることによって、深度画像176bの画像データ174から平面226を構築する。推定器220は、境界内の深度画像データ174(例えば、点のクラスター)を抽出することによって平面226を抽出し得る。いくつかの実施例では、推定器220は、単眼画像176a内の少なくとも1つのターゲットボックス202の推定面224と、深度画像176b内の少なくとも1つのターゲットボックス202の平面226との間で一致する画像データ174から検出された面224を決定する。図2Eは、画像データ174を有する深度画像176bの例である。図2Eでは、推定器220は、モデラー210からのコーナー214に基づいて、深度画像176bから2つの平面226、226a~bを決定した。これらの平面226a~bは、深度画像176bの画像データ174を形成する点群の縁の近くの白い点線として示されている。
【0050】
第2の段階では、推定器220は、単眼画像フレーム176a、F内の少なくとも1つのターゲットボックス202上でエッジ検出を実行するように構成される。エッジ検出を実行するために、推定器220は、モデラー210からのコーナー214に基づく従来のエッジ検出アルゴリズムを使用してもよい。エッジ検出アルゴリズムは、画像176内の変化(例えば、画像強度の有意な変化)を検出するように構成される。エッジ検出アルゴリズムのいくつかの例としては、キャニー(Canny)エッジ検出、ソーベル(Sobel)エッジ検出、プレウィット(Prewitt)エッジ検出、ラプラシアン(Laplacian)エッジ検出、ロバーツ(Roberts)エッジ検出、キルシュ(Kirsch)エッジ検出、ロビンソン(Robinson)エッジ検出、マーヒルドレス(Marr-Hildreth)エッジ検出等がある。推定器220によるエッジ検出プロセスの結果として、推定器220は、ターゲットボックス202について検出されたエッジ228を識別する。例えば、図2Dはまた、推定面224の境界を形成する検出されたエッジ228、228a~aaを示す。
【0051】
いくつかの実施例では、推定器220は、画像処理システム200のボックス推定222を生成して、ターゲットボックス202の幾可学的形状を定義するように構成される。これらの例では、推定器220は、コーナー214、検出された面224、および検出されたエッジ228に基づいて、ターゲットボックス202についてのボックス推定222を生成する。一例として、対応する画像フレームペアFabのそれぞれの単眼画像176aおよびそれぞれの深度画像176bに基づいて、図2Fは、パレット30上のボックス20のスタックの第1の行および第1の列でボックス20が欠落している(すなわち、ボックススタックの右上でボックスが欠落している)ような、画像フレームペア176、176a~b、Fabの背景に向かって後退する第3のボックス推定222、222cを生成する推定器220を示す。推定器220は、図2Cおよび図2Dの単眼画像フレーム176a、Fが、ボックス20がボックス20のスタックの第1の行および第1の列に存在し得ることを示す(すなわち、推定器220は、ボックス20のスタックの右上隅にあるターゲットボックス202の面224、224cおよびエッジ228を決定する)としても、図2Fにおける第3のボックス推定222、222cについてのこの決定を行うことができる。いくつかの構成では、推定器220は、勾配上昇オプティマイザを使用してボックス推定222を生成する。ここで、勾配上昇オプティマイザは、ボックス推定222を生成するための初期シード(すなわち、入力)としてモデラー210によって決定されたコーナー214を受け取ることができる。これらの構成では、勾配上昇オプティマイザは、それぞれの単眼画像176aから決定されたコーナー214を使用して、深度画像176bをそれぞれの単眼画像176aに適合させる。最適化中に、勾配上昇オプティマイザは、検出されたエッジ224および検出された面224を決定して、各画像フレームペアFabについてのボックス推定222を生成し得る。
【0052】
いくつかの実装例では、画像176をキャプチャするセンサー172は、フレームレート(すなわち、フレーム/秒(fps))で画像176をキャプチャし、複数のフレームFは、各フレームFがそれぞれのタイムスタンプを示すように、短期間でキャプチャされる。センサー172は、短期間に複数のフレームFをキャプチャするので(例えば、15fps、30fps、または60fpsのフレームレート)、同様の期間からのこれらのフレームFは、フレームF間で最小の変動(すなわち、ボックス検出の目的のためのわずかな変動)を有し得る。推定器220は、追加の画像データから得られたこれらのフレーム類似性を利用して、期間にわたってボックス推定222を微調整/調整し得る。より具体的には、推定器220は、各画像フレームペアFabに対して生成されたボックス推定222、222A~Nを集約することによって、各ターゲットボックス202について調整されたボックス推定222を決定する。ここで、各画像フレームペアFabは、複数のフレームF、F1-nのうちのそれぞれ1つに対応するそれぞれのタイムスタンプと関連付けられている。例えば、推定器220は、それぞれのタイムスタンプと関連付けられた第1の画像フレームペアFab1のターゲットボックス202の第1のボックス推定222、222Aと、それぞれのタイムスタンプと関連付けられた第2の画像フレームペアFab2の第2のボックス推定222、222Bとを生成する。ここで、第1の画像フレームペアFab2のフレームFおよび第2の画像フレームペアFab2のフレームFは、近接するフレーム(すなわち、隣接するフレーム)または最小の主題変動を有する比較的近接するフレームであり得る。第1の画像フレームペアFab1内の第1のボックス推定222aの場所および第2の画像フレームペアFab2内の第2のボックス推定222bの場所は、各フレームF内の同様の場所に対応する。これらの例では、推定器220は、フレームFからのこれらの推定222a~bを比較し、比較に基づいて、期間にわたってそのボックス推定222を調整するように構成される。例えば、調整は、ボックス推定222間の統計分析(例えば、平均値、中央値、最頻値等)に基づくことができる。この例は2つのフレームペアFab1、2を比較するが、推定器220は、任意の数のボックス推定222を集約することに基づいて、その調整されたボックス推定222を微調整/決定するように構成される。
【0053】
単眼画像176aおよび深度画像176bを使用することにより、画像処理システム200は、他の機械ビジョン技術との問題を回避し得る。例えば、単眼画像176aのみを使用する機械ビジョン技術は、ボックス20の深度またはボックス20の向きなどの不正確さに悩まされている。言い換えれば、ボックス20のスタック(例えば、パレット30上の)の場合、単眼画像176aのみを使用する技術は、ボックス20のスタックから後退または除去されたボックス20を正確に識別しない可能性がある。一例として、単眼画像176aのみを使用する機械ビジョン技術は、図2Aのボックス20のスタックの右上隅にあるボックス20を正確に検出するのが難しいであろう。単眼画像176aのかみ合わせまたは部分的かみ合わせは、これらの機械ビジョン技術にとってしばしば問題となる。言い換えれば、図2Fの第3のボックス推定222、222cは、おそらく不正確であろう。
【0054】
画像処理システム200はまた、他の画像処理技術と比較して、ボックス推定222をより効率的に生成し得る。例えば、画像処理システム200は、ボックス推定222を生成するための処理時間について慎重であるように構成される。単眼画像176aからのいくつかの幾何学的特徴および深度画像176bからのいくつかの特徴を戦略的に検出することによって、画像処理システム200は、処理時間を短縮し得る。より具体的には、画像処理システム200は、単眼画像176aが関連する深度画像176bよりも少ない画像データ174を含み得るので、単眼画像176aをいくつかの処理ステップに利用して、ターゲットボックス202の幾何学的特徴を生成する(例えば、コーナーの決定214、エッジの検出228、面の推定224等)。より少ない画像データ174で、画像処理システム200は、ボックス検出精度を保証するために、深度画像176bからの画像データ174を依然として利用しながら、単眼画像176aを効率的に利用し得る。したがって、このハイブリッド画像アプローチは、他の技術(例えば、単一のタイプの画像176のみを使用するか、または各画像176のすべての幾何学的特徴を決定する)と比較して、精度を提供しながら処理時間を短縮し得る。
【0055】
図1Bに戻ると、いくつかの実装例では、ロボット100の制御システム140は、ビジョンシステム146を含む。ビジョンシステム146は、ロボット100および/またはロボット100のオペレータのためにガイダンスを提供するように構成される。ここで、ガイダンスは、画像処理システム200がボックス推定222を用いて識別するボックス20に関連する作業環境10において、ロボット100がタスクを実行することを可能にし得る。例えば、ビジョンシステム146は、ボックス推定222の視覚的表現(すなわち、投影)を生成する。いくつかの実施例では、視覚的表現は、ロボット100の視覚内(すなわち、センサー172の視野内)のボックス20と、ボックス20に対応するボックス推定222との間の画像レジストレーション(例えば、自動認識)を可能にし得る。いくつかの構成では、ビジョンシステム146は、ロボット100のホモグラフィック投影としてボックス推定222を表示する。例えば、図3は、ボックス20の輪郭としてのホモグラフィック投影を示す(例えば、第1のボックス推定222aの実線輪郭、または第2のボックス推定222bのセグメント化された十字輪郭)。
【0056】
追加的または代替的に、視覚的表現は、画像処理システム200のボックス推定222の信頼区間または信頼水準を示すために色分けされ得る。信頼区間は、ボックス推定222が正確である確率(すなわち、尤度)を指す(例えば、作業環境10内の実際のボックス20の場所および/または幾可学的形状に関して)。ロボット100が作業環境10の周りを移動するとき、ビジョンシステム146は、ボックス推定222のために視覚的表現の色を変えることができる。言い換えれば、リアルタイムでロボット100は、視覚処理システム200で、ボックス推定222を更新または修正する画像データ174を受信して、ビジョンシステム146に、ボックス推定222と関連付けられた信頼水準、したがって色を変更させ得る。いくつかの実施例では、ロボット100またはロボット100のオペレータは、ボックス20のボックス推定222に対する信頼水準が閾値に達したときに、ボックス20に関連するタスク(例えば、ボックス20の操作またはボックス20の処理)を実行する。一例として、ビジョンシステム146は、ボックス推定222を、赤、黄、および緑の3色で表す。ここで、赤、黄、および緑の色は、ボックス推定222に対する信頼度の昇順でランク付けされ、赤い色は、所与のボックス20に対してボックス推定222があるが、ボックス推定222に対する信頼度が低いことを示し、黄色は、ボックス推定222に対する中程度の信頼度を示し、緑色は、ボックス推定222に対する最高レベルの信頼度を示す。単なる例として、信頼水準が3色より多くまたは少なく含まれ得るように、色の数が変化してもよい。
【0057】
ターゲットボックス202に対する信頼区間および/または投影を説明するために、図3は、ビジョンシステム146の非カラーの例(例えば、ビジョンシステム146のディスプレイ)を示す。ここで、画像処理システム200によって検出されたボックス20は、太字の実線の輪郭(例えば、第1の推定ボックス222a)またはセグメント化された十字輪郭(例えば、第2の推定ボックス222b)のいずれかを有する。太字の実線の輪郭は、信頼水準が低い第1のボックス推定222aを有する第1のボックス20aを視覚的に表し、一方、セグメント化された十字輪郭は、信頼水準が高い第2のボックス推定222bを有する第2のボックス20bを視覚的に表す。
【0058】
図4は、ボックスを検出するための方法400である。動作402において、方法400は、ある期間にわたって、関心領域について複数の画像フレームペアFab1-nを受信し、ここで、関心領域は、少なくとも1つのターゲットボックス202を含む。ここで、複数の画像フレームペアFab1-nの各画像フレームペアFabは、期間中のそれぞれのタイムスタンプと関連付けられ、単眼画像フレーム176a、Fおよびそれぞれの深度画像フレーム176b、Fを含む。方法400は、各画像フレームペアFabに対して動作404~410を実行する。動作404において、方法400は、単眼画像フレーム176a、F内の少なくとも1つのターゲットボックス202と関連付けられた長方形のコーナー214を決定する。決定されたコーナー214に基づいて、方法400は、動作406、406a~bを実行する。動作406aにおいて、方法400は、それぞれの単眼画像フレーム176a、F内の少なくとも1つのターゲットボックス202上でエッジ検出を実行し、それぞれの単眼画像フレーム176a、F内の少なくとも1つのターゲットボックス202の面224を決定する。動作406bにおいて、方法400は、それぞれの深度画像フレーム176b、Fから平面226を抽出し、ここで、それぞれの深度画像フレーム176b、Fから抽出された平面226は、少なくとも1つのターゲットボックス202に対応する。動作410において、方法400は、単眼画像フレーム176a、F内の少なくとも1つのターゲットボックス202の決定された面224を、深度画像176b、Fから抽出された平面226に一致させる。動作410において、方法400は、決定されたコーナー214、実行されたエッジ検出228、および少なくとも1つのターゲットボックス202の一致した面224に基づいて、ボックス推定222を生成する。
【0059】
任意選択で、方法400はさらに動作する。例えば、方法400は、各画像フレームペアFabに対して生成されたボックス推定222を集約して、少なくとも1つのターゲットボックス202について期間にわたって調整されたボックス推定222を決定する。各画像フレームペアFabに対して生成されたボックス推定222を集約することは、第1の画像フレームペアFab1に対して生成された少なくとも1つのターゲットボックス202の第1のボックス推定222aを、第2の画像フレームペアFab2に対して生成された少なくとも1つのターゲットボックス202の第2のボックス推定222bと比較すること、および、第1のボックス推定222aと第2のボックス推定222bとの間の比較に基づいて、期間にわたってボックス推定222を調整すること、を含み得る。
【0060】
図5は、本文書に記載されているシステム(例えば、制御システム140、センサーシステム170、ビジョンシステム146、画像処理システム200等)および方法(例えば、方法400)を実装するために使用され得る、例示的なコンピューティングデバイス500の概略図である。コンピューティングデバイス500は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの様々な形態のデジタルコンピュータを表すことが意図される。本明細書に示されている構成要素、それらの接続および関係、ならびにそれらの機能は、例示のみを意図しており、本明細書で説明および/または特許請求されている本発明の実装を制限することを意味するものではない。
【0061】
コンピューティングデバイス500は、プロセッサ510と、メモリ520と、ストレージデバイス530と、メモリ520および高速拡張ポート550に接続する高速インターフェース/コントローラー540と、低速バス570およびストレージデバイス530に接続する低速インターフェース/コントローラー560と、を含む。構成要素510、520、530、540、550、および560の各々は、様々なバスを使用して相互接続されており、共通のマザーボードに、または必要に応じて他の様態で取り付けられ得る。プロセッサ510は、グラフィカルユーザインターフェース(GUI)のためのグラフィカル情報を、高速インターフェース540に結合されたディスプレイ580などの外部入出力デバイス上に表示するために、メモリ520内またはストレージデバイス530上に格納された命令を含む、コンピューティングデバイス500内で実行するための命令を処理し得る。他の実装例では、必要に応じて、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数のタイプのメモリとともに使用され得る。また、複数のコンピューティングデバイス500が、各デバイスが必要な動作の部分を提供する状態で(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)、接続され得る。
【0062】
メモリ520は、コンピューティングデバイス500内に非一時的に情報を格納する。メモリ520は、コンピュータ可読媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ520は、コンピューティングデバイス500で使用するために、プログラム(例えば、命令のシーケンス)またはデータ(例えば、プログラム状態情報)を一時的または永続的に格納するために使用される物理デバイスであり得る。不揮発性メモリの例としては、以下に限定されないが、フラッシュメモリおよび読み取り専用メモリ(ROM)/プログラム可能な読み取り専用メモリ(PROM)/消去可能なプログラム可能な読み取り専用メモリ(EPROM)/電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)(例えば、通常、ブートプログラムなどのファームウェアに使用される)が挙げられる。揮発性メモリの例としては、以下に限定されないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、ならびにディスクまたはテープが挙げられる。
【0063】
ストレージデバイス530は、コンピューティングデバイス500に大容量ストレージを提供し得る。いくつかの実装例では、ストレージデバイス530は、コンピュータ可読媒体である。様々な異なる実装例では、ストレージデバイス530は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成のデバイスを含むデバイスのアレイであり得る。追加の実装例では、コンピュータプログラム製品は、情報担体内に実体的に具体化される。コンピュータプログラム製品は、実行されると、上記のような1つ以上の方法を実行する命令を含む。情報担体は、メモリ520、ストレージデバイス530、またはプロセッサ510上のメモリなどの、コンピュータ可読媒体または機械可読媒体である。
【0064】
高速コントローラー540が、コンピューティングデバイス500の帯域幅集中動作を管理する一方で、低速コントローラー560は、より低い帯域幅集中動作を管理する。そのようなデューティの割り当ては、例示にすぎない。いくつかの実装例では、高速コントローラー540は、メモリ520と、ディスプレイ580(例えば、グラフィックプロセッサまたはアクセラレータを介して)と、様々な拡張カード(図示せず)を受容する高速拡張ポート550と、に結合されている。いくつかの実装例では、低速コントローラー560は、ストレージデバイス530と、低速拡張ポート590と、に結合されている。様々な通信ポート(例えば、USB、Bluetooth、イーサネット、ワイヤレスイーサネット)を含み得る低速拡張ポート590は、キーボード、ポインティングデバイス、スキャナーなどの1つ以上の入出力デバイスに、または、例えば、ネットワークアダプタを介して、スイッチもしくはルータなどのネットワーキングデバイスに結合され得る。
【0065】
コンピューティングデバイス500は、図に示すように、いくつかの異なる形態で実装され得る。例えば、コンピューティングデバイス500は、標準のサーバ500aとして、もしくはそのようなサーバ500aのグループ内に複数回、ラップトップコンピューター500bとして、またはラックサーバシステム500cの一部として実装され得る。
【0066】
本明細書に記載のシステムおよび技術の様々な実装は、デジタル電子および/もしくは光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、ならびに/またはそれらの組み合わせで実現され得る。これらの様々な実装は、データおよび命令をストレージシステムから受信するため、かつデータおよび命令をストレージシステムに送信するために結合された、専用または汎用であってもよい、少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスと、を含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラム内での実装を含み得る。
【0067】
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラマブルプロセッサ用の機械命令を含み、高レベル手続き型および/もしくはオブジェクト指向プログラミング言語で、ならびに/またはアセンブリ言語/機械語で実装され得る。本明細書で使用される場合、「機械可読媒体」および「コンピュータ可読媒体」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指し、機械命令を機械可読信号として受け取る機械可読媒体を含む。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
【0068】
本明細書で説明されるプロセスおよびロジックフローは、入力データを処理して出力を生成することによって機能を実行するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行され得る。プロセスおよびロジックフローはまた、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路によっても実行され得る。コンピュータプログラムの実行に好適なプロセッサには、例として、汎用および専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータのうちの任意の1つ以上のプロセッサが含まれる。概して、プロセッサは、読み取り専用メモリもしくはランダムアクセスメモリ、またはその両方から命令および/またはデータを受信することになる。コンピュータの必須要素は、命令を実行するためのプロセッサ、ならびに命令およびデータを格納するための1つ以上のメモリデバイスである。概して、コンピュータはまた、データを格納するための1つ以上の大容量ストレージデバイス、例えば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または大容量ストレージデバイスからデータを受信、もしくはデータを転送、またはその両方を行うように動作可能に結合される。しかしながら、コンピュータは必ずしもそのようなデバイスを有する必要はない。コンピュータプログラム命令およびデータを格納するための好適なコンピュータ可読媒体には、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスが含まれ、例としては、例えば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、例えば、内蔵ハードディスクまたは取り外し可能ディスクなどの磁気ディスク、光磁気ディスク、ならびにCD ROMディスクおよびDVD-ROMディスクが挙げられる。プロセッサおよびメモリは、専用論理回路によって補足されるか、または専用論理回路に組み込まれ得る。
【0069】
ユーザとの相互作用を提供するために、本開示の1つ以上の態様は、ユーザに情報を表示するための、例えば、CRT(陰極線管)、LCD(液晶ディスプレイ)モニタ、もしくはタッチスクリーンなどの表示デバイス、ならびに任意選択で、ユーザがコンピュータに入力を提供することができるキーボード、および、例えば、マウスもしくはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装され得る。他の種類のデバイスを使用して、ユーザとの相互作用を提供することもでき、例えば、ユーザに提供されるフィードバックは、例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックなどの任意の形態の感覚フィードバックであり得、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受け取ることができる。さらに、コンピュータは、ユーザによって使用されるデバイスにドキュメントを送信し、当該デバイスからドキュメントを受信することによって、例えば、ウェブブラウザから受信された要求に応答して、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと相互作用することができる。
【0070】
多数の実装例が説明されてきた。それでもなお、本発明の趣旨および範囲から逸脱することなく、様々な修正が行われ得ることが理解されよう。したがって、他の実装例は、以下の特許請求の範囲の範囲内にある。
図1A
図1B
図2A
図2B
図2C
図2D
図2E
図2F
図3
図4
図5