(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-15
(45)【発行日】2024-01-23
(54)【発明の名称】スケーラブル位置追跡システムを用いた位置の追跡
(51)【国際特許分類】
G06V 40/20 20220101AFI20240116BHJP
G06T 7/20 20170101ALI20240116BHJP
H04N 7/18 20060101ALI20240116BHJP
【FI】
G06V40/20
G06T7/20 300
H04N7/18 D
H04N7/18 K
(21)【出願番号】P 2022523941
(86)(22)【出願日】2020-10-23
(86)【国際出願番号】 US2020057075
(87)【国際公開番号】W WO2021081332
(87)【国際公開日】2021-04-29
【審査請求日】2023-10-23
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】520068870
【氏名又は名称】セブン-イレブン インコーポレイテッド
【氏名又は名称原語表記】7-Eleven, Inc.
【住所又は居所原語表記】3200 Hackberry Road, Irving TX 75063 US
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】クリシュナムルティ,サイレシュ バーラスワージ
(72)【発明者】
【氏名】ヴァカチャーラ,サラス
(72)【発明者】
【氏名】グエン,トロン ギア
(72)【発明者】
【氏名】ミルザ,シャーメール アリ
(72)【発明者】
【氏名】チンナム,マダン,モハン
(72)【発明者】
【氏名】ボウリオ,カレブ,オースティン
(72)【発明者】
【氏名】ポール,ディーパンジャン
(72)【発明者】
【氏名】ミルザ,ファハド
(72)【発明者】
【氏名】ストロング,ライアン,ロバート
【審査官】真木 健彦
(56)【参考文献】
【文献】特開2005-347905(JP,A)
【文献】特開2009-017416(JP,A)
【文献】特開2009-055139(JP,A)
【文献】特開2017-040983(JP,A)
【文献】特開2017-123026(JP,A)
【文献】特許第5438861(JP,B1)
【文献】特許第5506990(JP,B1)
【文献】特許第6195331(JP,B1)
【文献】特許第6206857(JP,B1)
【文献】米国特許第7613322(US,B2)
【文献】米国特許第10104345(US,B2)
【文献】米国特許第10230866(US,B1)
【文献】米国特許第10332089(US,B1)
【文献】国際公開第2016/201683(WO,A1)
【文献】米国特許出願公開第2013/155229(US,A1)
【文献】米国特許第8457354(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06V 40/20
G06T 7/20
G06T 7/00
G06T 1/00
H04N 7/18
G08B 13/196
G08B 25/00
(57)【特許請求の範囲】
【請求項1】
システムであって、
空間の上方に配置されたカメラのアレイと、
第1のカメラクライアントと、
第2のカメラクライアントと、
前記第1のカメラクライアントおよび前記第2のカメラクライアントとは別個のカメラサーバと
を備え、
前記カメラのアレイの各カメラは前記空間の一部のビデオをキャプチャするように構成され、前記空間が人物を含み、
前記第1のカメラクライアントは、
前記カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信することと、ここで、前記第1の複数のフレームの各フレームが前記空間内の前記人物を示し、
前記第1の複数のフレームのうちの第1のフレームについて、
前記第1のフレームに示される前記人物の周りの第1の境界エリアを決定することと、
前記第1のフレームが前記第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成することと、
前記第1の複数のフレームのうちの第2のフレームについて、
前記第2のフレームに示される前記人物の周りの第2の境界エリアを決定することと、
前記第2のフレームが前記第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成することと、
前記第1の複数のフレームのうちの第3のフレームについて、
前記第3のフレームに示される前記人物の周りの第3の境界エリアを決定することと、
前記第3のフレームが前記第1のカメラクライアントによって受信されたときの第3のタイムスタンプを生成することと
を行うように構成され、
前記第2のカメラクライアントは、
前記カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信することと、ここで、前記第2の複数のフレームの各フレームが前記空間内の前記人物を示し、
前記第2の複数のフレームのうちの第4のフレームについて、
前記第4のフレームに示される前記人物の周りの第4の境界エリアを決定することと、
前記第4のフレームが前記第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成することと、
前記第2の複数のフレームのうちの第5のフレームについて、
前記第5のフレームに示される前記人物の周りの第5の境界エリアを決定することと、
前記第5のフレームが前記第2のカメラクライアントによって受信されたときの第5のタイムスタンプを生成することと
を行うように構成され、
前記カメラサーバは、
前記第1のタイムスタンプが第1の時間窓内に入ると決定することと、
前記第1のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第1の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することと、
前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第2の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第3のタイムスタンプが前記第1の時間窓に続く第2の時間窓内に入ると決定することと、
前記第3のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記第3の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することと、
前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第4の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することと、
前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記第5の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第1の時間窓に割り当てられた前記座標を、
前記第1の境界エリアを画定する前記座標と前記第2の境界エリアを画定する前記座標とに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の結合座標を計算すること、および
前記第4の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の結合座標を計算すること
によって処理することと、
前記第1の時間窓に割り当てられた前記座標を処理した後に、前記第2の時間窓に割り当てられた前記座標を、
前記第3の境界エリアを画定する前記座標に少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第2の時間窓中の前記人物の結合座標を計算すること、および
前記第5の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第2の時間窓中の前記人物の結合座標を計算すること
によって処理することと
を行うように構成される、
システム。
【請求項2】
前記カメラサーバは、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の前記結合座標と、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の前記結合座標とに少なくとも基づいて、前記第1の時間窓中の前記空間内の前記人物の位置を決定するようにさらに構成される、請求項1に記載のシステム。
【請求項3】
前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の前記結合座標は、前記第1の境界エリアを画定する前記座標と前記第2の境界エリアを画定する前記座標との平均を含む、請求項1に記載のシステム。
【請求項4】
前記第1の時間窓に割り当てられた前記座標を処理することは、
前記第1の時間窓に割り当てられた座標が、前記カメラのアレイ内のいくつかのカメラからのフレームからの座標を含むと決定すること、および
カメラの数がしきい値を超えると決定すること
に応答して実行される、請求項1に記載のシステム。
【請求項5】
前記第1の時間窓に割り当てられた前記座標を処理することは、
前記第2の時間窓に割り当てられた座標が、前記カメラのアレイ内のいくつかのカメラからのフレームからの座標を含むと決定すること、および
カメラの数がしきい値を超えると決定すること
に応答して実行される、請求項1に記載のシステム。
【請求項6】
前記第1の時間窓に割り当てられた前記座標を処理することは、前記第1の時間窓に割り当てられた座標が、タイムアウトを超える時間期間にわたって処理されなかったと決定することに応答して実行される、請求項1に記載のシステム。
【請求項7】
前記カメラサーバは、
第1の時間窓に割り当てられた座標が、前記タイムアウトを超える前記時間期間にわたって処理されなかったと決定することに応答して、
前記第2の時間窓に割り当てられた座標が、前記カメラのアレイ内の第1の数のカメラからのフレームからの座標を含むと決定すること、および
しきい値を前記第1の数に下げること
を行うことと、
第3の時間窓に割り当てられた座標が、前記カメラのアレイ内の第2の数のカメラからのフレームからの座標を含むと決定することと、
前記第2の数が前記第1の数を上回ると決定することと、
前記第2の数が前記第1の数を上回ると決定することに応答して、前記しきい値を前記第2の数に増加させることと
を行うようにさらに構成される、請求項6に記載のシステム。
【請求項8】
前記第1の時間窓に割り当てられた座標が処理されるべきであると決定することは、前記第2の時間窓中に前記カメラのアレイ内の各カメラからフレームが受信されたと決定することを含む、請求項1に記載のシステム。
【請求項9】
前記第1のカメラクライアントは、前記第1の時間窓中に、前記第1のカメラクライアントが、前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイ内の各カメラからフレームを受信したと決定したことに応答して、前記第1の境界エリアを画定する前記座標および前記第2の境界エリアを画定する前記座標をバッチとして前記カメラサーバに通信するようにさらに構成される、請求項1に記載のシステム。
【請求項10】
前記第1のカメラクライアントは、前記第1のフレームに示される前記人物の高さ、前記第2のフレームに示される前記人物の高さ、および前記第3のフレームに示される前記人物の高さを受信するようにさらに構成され、
前記第2のカメラクライアントは、前記第4のフレームに示される前記人物の高さおよび前記第5のフレームに示される前記人物の高さを受信するようにさらに構成され、
前記カメラサーバは、
前記第1のフレームに示される前記人物の前記高さと前記第2のフレームに示される前記人物の前記高さとに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の結合高さを計算することと、
前記第4のフレームに示される前記人物の高さに少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の結合高さを計算することと
を行うようにさらに構成される、請求項1に記載のシステム。
【請求項11】
前記第1のカメラクライアントは、前記第1のタイムスタンプおよび前記第2のタイムスタンプを生成するために使用される第1のクロックを実装し、
前記第2のカメラクライアントは、前記第4のタイムスタンプおよび前記第5のタイムスタンプを生成するために使用される第2のクロックを実装し、
前記カメラサーバは第3のクロックを実装し、ここで、前記第1のクロック、前記第2のクロック、および前記第3のクロックは、クロック同期プロトコルを使用して同期される、
請求項1に記載のシステム。
【請求項12】
前記カメラのアレイは、
前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイの各カメラが、グリッドの同じ行または同じ列において、前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイの別のカメラに直接隣接しないように、および
前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイのカメラが、前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイの別のカメラに対して前記グリッド内で対角になるように、
グリッド状に配置される、請求項1に記載のシステム。
【請求項13】
前記空間は第2の人物をさらに含み、前記第1の複数のフレームおよび前記第2の複数のフレームの各フレームは前記第2の人物を示し、
前記第1のカメラクライアントは、
前記第1のフレームに示される前記第2の人物の周りの第6の境界エリアを決定することと、
前記第2のフレームに示される前記第2の人物の周りの第7の境界エリアを決定することと、
前記第3のフレームに示される前記第2の人物の周りの第8の境界エリアを決定することと
を行うようにさらに構成され、
前記第2のカメラクライアントは、
前記第4のフレームに示される前記第2の人物の周りの第9の境界エリアを決定することと、
前記第5のフレームに示される前記第2の人物の周りの第10の境界エリアを決定することと
を行うようにさらに構成され、
前記カメラサーバは、
前記第1のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第6の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第7の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第3のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記第8の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記第9の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記第10の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第1の時間窓に割り当てられた座標を、
前記第6の境界エリアを画定する前記座標と前記第7の境界エリアを画定する前記座標とに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記第2の人物の結合座標を計算すること、および
前記第9の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記第2の人物の結合座標を計算すること
によってさらに処理することと、
前記第2の時間窓に割り当てられた座標を、
前記第8の境界エリアを画定する前記座標に少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第2の時間窓中の前記第2の人物の結合座標を計算すること、および
前記第10の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第2の時間窓中の前記第2の人物の結合座標を計算すること
によってさらに処理することと
を行うようにさらに構成される、請求項1に記載のシステム。
【請求項14】
方法であって、
第1のカメラクライアントによって、カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信することと、ここで、前記カメラのアレイは空間の上方に配置され、前記カメラのアレイの各カメラは前記空間の一部のビデオをキャプチャするように構成され、前記空間が人物を含み、前記第1の複数のフレームの各フレームが前記空間内の前記人物を示し、
前記第1の複数のフレームのうちの第1のフレームについて、
前記第1のカメラクライアントによって、前記第1のフレームに示される前記人物の周りの第1の境界エリアを決定することと、
前記第1のカメラクライアントによって、前記第1のフレームが前記第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成することと、
前記第1の複数のフレームのうちの第2のフレームについて、
前記第1のカメラクライアントによって、前記第2のフレームに示される前記人物の周りの第2の境界エリアを決定することと、
前記第1のカメラクライアントによって、前記第2のフレームが前記第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成することと、
前記第1の複数のフレームのうちの第3のフレームについて、
前記第1のカメラクライアントによって、前記第3のフレームに示される前記人物の周りの第3の境界エリアを決定することと、
前記第1のカメラクライアントによって、前記第3のフレームが前記第1のカメラクライアントによって受信されたときの第3のタイムスタンプを生成することと、
前記第1のカメラクライアントとは別個の第2のカメラクライアントによって、前記カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信することと、ここで、前記第2の複数のフレームの各フレームが前記空間内の前記人物を示し、
前記第2の複数のフレームのうちの第4のフレームについて、
前記第2のカメラクライアントによって、前記第4のフレームに示される前記人物の周りの第4の境界エリアを決定することと、
前記第2のカメラクライアントによって、前記第4のフレームが前記第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成することと、
前記第2の複数のフレームのうちの第5のフレームについて、
前記第2のカメラクライアントによって、前記第5のフレームに示される前記人物の周りの第5の境界エリアを決定することと、
前記第2のカメラクライアントによって、前記第5のフレームが前記第2のカメラクライアントによって受信されたときの第5のタイムスタンプを生成することと、
前記第1のカメラクライアントおよび前記第2のカメラクライアントとは別個のカメラサーバによって、前記第1のタイムスタンプが第1の時間窓内に入ると決定することと、
前記第1のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第1の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記カメラサーバによって、前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することと、
前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第2の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記カメラサーバによって、前記第3のタイムスタンプが前記第1の時間窓に続く第2の時間窓内に入ると決定することと、
前記第3のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第3の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記カメラサーバによって、前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することと、
前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第4の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記カメラサーバによって、前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することと、
前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第5の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記カメラサーバによって、前記第1の時間窓に割り当てられた前記座標を、
前記カメラサーバによって、前記第1の境界エリアを画定する前記座標と前記第2の境界エリアを画定する前記座標とに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の結合座標を計算すること、および
前記カメラサーバによって、前記第4の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の結合座標を計算すること
によって処理することと、
前記第1の時間窓に割り当てられた前記座標を処理した後に、前記第2の時間窓に割り当てられた前記座標を、
前記カメラサーバによって、前記第3の境界エリアを画定する前記座標に少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第2の時間窓中の前記人物の結合座標を計算することと、
前記カメラサーバによって、前記第5の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第2の時間窓中の前記人物の結合座標を計算すること
によって処理することと
を含む方法。
【請求項15】
前記カメラサーバによって、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の前記結合座標と、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の前記結合座標とに少なくとも基づいて、前記第1の時間窓中の前記空間内の前記人物の位置を決定することをさらに含む、請求項14に記載の方法。
【請求項16】
前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の前記結合座標は、前記第1の境界エリアを画定する前記座標と前記第2の境界エリアを画定する前記座標との平均を含む、請求項14に記載の方法。
【請求項17】
前記第1の時間窓に割り当てられた前記座標を処理することは、
前記第1の時間窓に割り当てられた座標が、前記カメラのアレイ内のいくつかのカメラからのフレームからの座標を含むと決定すること、および
カメラの数がしきい値を超えると決定すること
に応答して実行される、請求項14に記載の方法。
【請求項18】
前記第1の時間窓に割り当てられた座標
を処理することは、
前記第2の時間窓に割り当てられた座標が、前記カメラのアレイ内のいくつかのカメラからのフレームからの座標を含むと決定すること、および
カメラの数がしきい値を超えると決定すること
に応答して実行される、請求項14に記載の方法。
【請求項19】
前記第1の時間窓に割り当てられた前記座標を処理することは、前記第1の時間窓に割り当てられた座標が、タイムアウトを超える時間期間にわたって処理されなかったと決定することに応答して実行される、請求項14に記載の方法。
【請求項20】
第1の時間窓に割り当てられた座標が、前記タイムアウトを超える前記時間期間にわたって処理されなかったと決定することに応答して、
前記第2の時間窓に割り当てられた座標が、前記カメラのアレイ内の第1の数のカメラからのフレームからの座標を含むと決定すること、および
しきい値を前記第1の数に下げること
を行うことと、
第3の時間窓に割り当てられた座標が、前記カメラのアレイ内の第2の数のカメラからのフレームからの座標を含むと決定することと、
前記第2の数が前記第1の数を上回ると決定することと、
前記第2の数が前記第1の数を上回ると決定することに応答して、前記しきい値を前記第2の数に増加させることと
をさらに含む、請求項19に記載の方法。
【請求項21】
前記第1の時間窓に割り当てられた座標が処理されるべきであると決定することは、前記第2の時間窓中に前記カメラのアレイ内の各カメラからフレームが受信されたと決定することを含む、請求項14に記載の方法。
【請求項22】
前記第1の時間窓中に、前記第1のカメラクライアントが、前記第1のカメラクライアントに通信可能に結合された前記カメラのアレイ内の各カメラからフレームを受信したと決定したことに応答して、前記第1のカメラクライアントによって、前記第1の境界エリアを画定する前記座標および前記第2の境界エリアを画定する前記座標をバッチとして前記カメラサーバに通信することをさらに含む、請求項14に記載の方法。
【請求項23】
前記第1のカメラクライアントによって、前記第1のフレームに示される前記人物の高さ、前記第2のフレームに示される前記人物の高さ、および前記第3のフレームに示される前記人物の高さを受信することと、
前記第2のカメラクライアントによって、前記第4のフレームに示される前記人物の高さおよび前記第5のフレームに示される前記人物の高さを受信することと、
前記カメラサーバによって、前記第1のフレームに示される前記人物の前記高さと前記第2のフレームに示される前記人物の前記高さとに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記人物の結合高さを計算することと、
前記カメラサーバによって、前記第4のフレームに示される前記人物の高さに少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記人物の結合高さを計算することと
をさらに含む、請求項14に記載の方法。
【請求項24】
前記第1のカメラクライアントによって、前記第1のタイムスタンプおよび前記第2のタイムスタンプを生成するために使用される第1のクロックを実装することと、
前記第2のカメラクライアントによって、前記第4のタイムスタンプおよび前記第5のタイムスタンプを生成するために使用される第2のクロックを実装することと、
前記カメラサーバによって、第3のクロックを実装することと
をさらに含み、ここで、前記第1のクロック、前記第2のクロック、および前記第3のクロックは、クロック同期プロトコルを使用して同期される、
請求項14に記載の方法。
【請求項25】
前記カメラのアレイは、
前記第1のカメラクライアントに通信可能に結合された各カメラが、グリッド内で、前記第1のカメラクライアントに通信可能に結合された別のカメラに直接隣接しないように、および
前記第1のカメラクライアントに通信可能に結合されたカメラが、前記第1のカメラクライアントに通信可能に結合された別のカメラに対して前記グリッド内で対角になるように、
グリッド状に配置される、請求項14に記載の方法。
【請求項26】
前記第1のカメラクライアントによって、前記第1のフレームに示される第2の人物の周りの第6の境界エリアを決定することと、
前記第1のカメラクライアントによって、前記第2のフレームに示される前記第2の人物の周りの第7の境界エリアを決定することと、
前記第1のカメラクライアントによって、前記第3のフレームに示される前記第2の人物の周りの第8の境界エリアを決定することと、
前記第2のカメラクライアントによって、前記第4のフレームに示される前記第2の人物の周りの第9の境界エリアを決定することと、
前記第2のカメラクライアントによって、前記第5のフレームに示される前記第2の人物の周りの第10の境界エリアを決定することと、
前記第1のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第6の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第2のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第7の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第3のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第8の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第4のタイムスタンプが前記第1の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第9の境界エリアを画定する座標を前記第1の時間窓に割り当てることと、
前記第5のタイムスタンプが前記第2の時間窓内に入ると決定することに応答して、前記カメラサーバによって、前記第10の境界エリアを画定する座標を前記第2の時間窓に割り当てることと、
前記第1の時間窓に割り当てられた座標を、
前記カメラサーバによって、前記第6の境界エリアを画定する前記座標と前記第7の境界エリアを画定する前記座標とに少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第1の時間窓中の前記第2の人物の結合座標を計算すること、および
前記カメラサーバによって、前記第9の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第1の時間窓中の前記第2の人物の結合座標を計算すること
によってさらに処理することと、
前記第2の時間窓に割り当てられた座標を、
前記カメラサーバによって、前記第8の境界エリアを画定する前記座標に少なくとも基づいて、前記第1のカメラからの前記第1のビデオに対する前記第2の時間窓中の前記第2の人物の結合座標を計算すること、および
前記カメラサーバによって、前記第10の境界エリアを画定する前記座標に少なくとも基づいて、前記第2のカメラからの前記第2のビデオに対する前記第2の時間窓中の前記第2の人物の結合座標を計算すること
によってさらに処理することと
をさらに含む、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、一般に、人物および物体の物理的位置を追跡するための分散システムに関する。
【背景技術】
【0002】
位置追跡システムは、人物および/または物体の物理的位置を追跡するために使用される。
【発明の概要】
【0003】
位置追跡システムは、物理的空間(例えば、店舗)において人物および/または物体の物理的位置を追跡するために使用される。これらのシステムでは、典型的には、人物および/または物体の存在を検出するセンサ(例えば、カメラ)と、センサからの信号に基づいて人物および/または物体の物理的位置を決定するコンピュータとが使用される。店舗環境では、他のタイプのセンサを設置して、店舗内の在庫の動きを追跡することができる。例えば、重量センサをラックおよび棚に設置して、商品がいつこれらのラックおよび棚から取り出されたかを決定することができる。店舗内の人物の位置と、いつ商品が棚から取り出されたかの両方を追跡することによって、コンピュータは、店舗内のどのユーザが商品を取り出したかを決定し、レジで商品を打つ必要なしにそのユーザに商品の代金を請求することができる。換言すれば、人物は、店舗に歩いて入り、商品を取り、従来の精算プロセスのために立ち寄ることなく店から出ることができる。
【0004】
より大きな物理的空間(例えば、コンビニエンスストアおよび食料品店)の場合、追加のセンサを空間全体に設置して、人物および/または物体はその空間を動き回るときにそれらの位置を追跡することができる。例えば、追加のカメラを増設してより大きな空間内の位置を追跡したり、追加の重量センサを増設して追加の商品および棚を追跡したりすることができる。しかしながら、コンピュータの計算能力に達するまで追加することができるセンサの数には限りがある。結果として、コンピュータの計算能力は、追跡システムのカバレッジエリアを制限する。
【0005】
より大きな空間を扱うようにこれらのシステムをスケーリングする1つの方法は、追加のコンピュータを増設し、これらのコンピュータ間でセンサを分割して、各コンピュータがセンサのサブセットからの信号を処理することができるようにする方法である。しかしながら、複数のコンピュータ間でセンサを分割すると、同期の問題が生じる。例えば、センサは、信号をそれぞれのコンピュータに一緒にまたは同時には通信しない可能性がある。別の例として、センサは、それぞれのコンピュータとの待ち時間が異なる場合があり、したがって、1つのセンサからの信号がコンピュータに到達するのに、別のセンサからの信号よりも長い時間がかかる場合がある。結果として、センサおよびコンピュータは互いに非同期化の状態になり、コンピュータが、空間における人物または物体の位置といつ商品が取り出されたかとを一貫して決定することがより困難になる。
【0006】
本開示は、より大きな空間を扱うようにスケーリングすることができる従来にない分散型追跡システムを企図する。システムは、カメラのアレイ、複数のカメラクライアント、カメラサーバ、重量センサ、重量サーバ、および中央サーバを使用して、空間内のどの人物が商品を取り、その商品の代金を請求されるべきかを決定する。カメラクライアントはそれぞれ、カメラのアレイのカメラの異なるサブセットからのビデオのフレームを処理する。各カメラクライアントは、フレーム内で検出された人物の座標を決定し、次いで、フレームがいつカメラクライアントによって受信されたかに基づいて、これらの座標にタイムスタンプを付ける。次いで、カメラクライアントは、カメラクライアントからの情報を調整することを担うカメラサーバに座標およびタイムスタンプを通信する。カメラサーバは、カメラクライアントからの座標およびタイムスタンプに基づいて、空間内の人物の位置を決定する。重量サーバは、重量センサからの信号を処理して、商品がいつ空間内の棚から取り出されたかを決定する。中央サーバは、カメラサーバからの空間内の人物の位置と、商品がいつ棚から取り出されたかについての重量サーバからの決定とを使用して、空間内のどの人物がどの商品を取ったか、そしてその代金が請求されるべきかを決定する。
【0007】
一般に、カメラサーバは、タイムスタンプに基づいて複数のカメラクライアントからの座標を時間窓に割り当てることによって、非同期化を防ぐ。次に、カメラサーバは、特定の時間窓に割り当てられた座標を処理して、その時間窓中の空間内の人物の全体的な座標を決定する。時間窓の持続時間は、非同期化の影響を軽減するために、発生すると予想される非同期化よりも長くなるように設定され得る。例えば、カメラおよびカメラクライアントが数ミリ秒だけ非同期化すると予想される場合、非同期化を打ち消すために時間窓を100ミリ秒持続するように設定することができる。このように、カメラおよびカメラクライアントの数を増加させて、任意の好適な空間を扱うようにシステムをスケーリングすることができる。
【0008】
本開示はまた、カメラのアレイ内のカメラをカメラクライアントに配線する従来にない方法を企図する。カメラは、空間の上方に矩形グリッドとして配置される。グリッド内の各カメラは、特定の規則にしたがって特定のカメラクライアントに配線される。例えば、グリッドの同じ行または列において互いに直接隣接するカメラで同じカメラクライアントに配線されるものはない。別の例として、グリッド内で対角線に沿って配置されたカメラは、同じカメラクライアントに配線される。このように、グリッドの小さなエリアには、システム内の各カメラクライアントに配線されたカメラが含まれるべきである。結果として、1つのカメラクライアントがオフラインになったとしても(例えば、メンテナンス、エラー、またはクラッシュ)、残りのカメラクライアントから、この小さいエリア内の人物の位置を追跡するのに十分なカバレッジが依然として存在することになる。したがって、カメラのこの配置は、システムの回復力を高める。
【0009】
本開示はさらに、商品がいつラックおよび棚から取り出されたかを追跡するための重量センサを統合する、従来にないラックおよび棚の設計を企図する。一般に、ラックは、ベースと、垂直パネルと、棚とを含む。ベースは、プリント回路基板が配置された密閉空間を形成し、ベースは、密閉空間および回路基板へのアクセスを提供するために開く引き出しを含む。垂直パネルはベースに取り付けられ、棚は垂直パネルに取り付けられる。重量センサが棚内に配置される。ベース、パネル、および棚は、それぞれキャビティを画定する。棚のキャビティおよびパネルのキャビティは、少なくとも部分的に位置合わせされる。各重量センサは、その重量センサから、棚のキャビティ、パネルのキャビティ、およびベースのキャビティを通って回路基板まで延びるワイヤを介してプリント回路基板に信号を通信する。
【0010】
特定の実施形態は、空間内の人物および/または物体の位置を追跡するために異なる機能を実行する別個の構成要素(例えば、カメラクライアント、カメラサーバ、重量サーバ、および中央サーバ)を含む従来にない追跡システムを含む。システムの機能をこれらの様々な構成要素の間に広げることによって、システムは、より多くのセンサ(例えば、カメラおよび重量センサ)からの信号を処理することができる。センサの数の増加により、システムは、より大きな空間内の人物および/または物体を追跡することができる。結果として、システムは、(例えば、追加のカメラクライアントを増設することによって)より大きな空間を扱うようにスケーリングされ得る。追跡システムの特定の実施形態を以下に説明する。
【0011】
一実施形態によれば、システムは、カメラのアレイと、第1のカメラクライアントと、第2のカメラクライアントと、カメラサーバと、複数の重量センサと、重量サーバと、中央サーバとを含む。カメラのアレイは、空間の上方に配置される。カメラのアレイの各カメラは、空間の一部のビデオをキャプチャする。空間の中には人物がいる。第1のカメラクライアントは、カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信する。第1の複数のフレームの各フレームは、空間内の人物を示す。第1の複数のフレームのうちの第1のフレームについて、第1のカメラクライアントは、第1のフレームに示される人物の周りの第1の境界エリアを決定し、第1のフレームが第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成する。第1の複数のフレームのうちの第2のフレームについて、第1のカメラクライアントは、第2のフレームに示される人物の周りの第2の境界エリアを決定し、第2のフレームが第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成する。第2のカメラクライアントは、第1のカメラクライアントとは別個である。第2のカメラクライアントは、カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信する。第2の複数のフレームの各フレームは、空間内の人物を示す。第2の複数のフレームのうちの第3のフレームについて、第2のカメラクライアントは、第3のフレームに示される人物の周りの第3の境界エリアを決定し、第3のフレームが第2のカメラクライアントによって受信されたときの第3のタイムスタンプを生成する。第2の複数のフレームのうちの第4のフレームについて、第2のカメラクライアントは、第4のフレームに示される人物の周りの第4の境界エリアを決定し、第4のフレームが第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成する。
【0012】
カメラサーバは、第1および第2のカメラクライアントとは別個である。カメラサーバは、第1のタイムスタンプが第1の時間窓内に入ると決定し、第1のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第1の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバはまた、第2のタイムスタンプが第1の時間窓内に入ると決定し、第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第2の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバはさらに、第3のタイムスタンプが第1の時間窓内に入ると決定し、第3のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第3の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバは、第4のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定し、第4のタイムスタンプが第2の時間窓内に入ると決定することに応答して、第4の境界エリアを画定する座標を第2の時間窓に割り当てる。
【0013】
カメラサーバはまた、第1の時間窓に割り当てられた座標が処理されるべきであると決定し、第1の時間窓に割り当てられた座標が処理されるべきであると決定することに応答して、カメラサーバは、第1の境界エリアを画定する座標と第2の境界エリアを画定する座標とに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標(combined coordinate)を計算し、第3の境界エリアを画定する座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算する。カメラサーバはまた、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標と、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標とに少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定する。
【0014】
複数の重量センサは空間内に配置される。複数の重量センサの各重量センサは、その重量センサが経験する重量を示す信号を生成する。重量サーバは、第1および第2のカメラクライアントならびにカメラサーバとは別個である。重量サーバは、複数の重量センサのうちの第1の重量センサによって生成された信号に少なくとも基づいて、第1の重量センサの上方に配置された商品が取り出されたと決定する。中央サーバは、第1および第2のカメラクライアント、カメラサーバ、ならびに重量サーバとは別個である。中央サーバは、第1の時間窓中の空間内の人物の位置に少なくとも基づいて、人物が商品を取り出したと決定する。第1の人物が商品を取り出したという決定に少なくとも基づいて、その人物は、その人物が空間を出るときに商品の代金を請求される。
【0015】
別の実施形態によれば、システムは、カメラのアレイと、第1のカメラクライアントと、第2のカメラクライアントと、カメラサーバと、複数の重量センサと、重量サーバと、中央サーバとを含む。カメラのアレイは、空間の上方に配置される。カメラのアレイの各カメラは、空間の一部のビデオをキャプチャする。空間の中には人物がいる。第1のカメラクライアントは、カメラのアレイの第1のカメラから受信される第1のビデオの各フレームについて、第1のビデオのそのフレームに示される人物の周りの境界エリアを決定し、第1のビデオのそのフレームが第1のカメラクライアントによって受信されたときのタイムスタンプを生成する。第2のカメラクライアントは、カメラのアレイの第2のカメラから受信される第2のビデオの各フレームについて、第2のビデオのそのフレームに示される人物の周りの境界エリアを決定し、第2のビデオのそのフレームが第2のカメラクライアントによって受信されたときのタイムスタンプを生成する。
【0016】
カメラサーバは、第1および第2のカメラクライアントとは別個である。カメラサーバは、第1のビデオの各フレームについて、そのフレームが第1のカメラクライアントによって受信されたときのタイムスタンプに少なくとも基づいて、そのフレームに示される人物の周りの境界エリアを画定する座標を複数の時間窓のうちの1つに割り当てる。第2の複数のフレームの各フレームについて、カメラサーバは、そのフレームが第2のカメラクライアントによって受信されたときのタイムスタンプに少なくとも基づいて、そのフレームに示される人物の周りの境界エリアを画定する座標を複数の時間窓のうちの1つに割り当てる。複数の時間窓のうちの第1の時間窓について、カメラサーバは、(1)第1の複数のフレームに示される人物の周りの境界エリアを画定し、(2)第1の時間窓に割り当てられる座標に少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標を計算し、(1)第2の複数のフレームに示される人物の周りの境界エリアを画定し、(2)第1の時間窓に割り当てられる座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算する。カメラサーバは、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標と、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標とに少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定する。
【0017】
複数の重量センサは空間内に配置される。重量サーバは、第1および第2のカメラクライアントならびにカメラサーバとは別個である。重量サーバは、複数の重量センサのうちの第1の重量センサによって生成された信号に少なくとも基づいて、第1の重量センサの上方に配置された商品が取り出されたと決定する。中央サーバは、第1および第2のカメラクライアント、カメラサーバ、ならびに重量サーバとは別個である。中央サーバは、第1の時間窓中の空間内の人物の位置に少なくとも基づいて、人物が商品を取り出したと決定する。
【0018】
追跡システムの特定の実施形態は、システムの構成要素(例えば、カメラクライアントおよびカメラサーバ)の間で多少の非同期化を許容にする従来にない追跡プロセスを実行する。一般に、システムは、時間窓にしたがって情報を処理する。これらの時間窓は、システムに存在すると予想される非同期化よりも長くなるように設定され得る。時間窓に割り当てられた情報は一緒に処理される。したがって、その情報の間に多少の非同期化が存在していても、同じ時間窓内で一緒に処理される。このように、追跡システムは、非同期化の量の増加、特に、システムがより大きな空間を扱うことができるようにシステムがより多くの構成要素を含むようにスケーリングされた結果として生じる非同期化を扱うことができる。結果として、システムは、信頼性および精度を維持しながら、より大きな空間を扱うようにスケーリングすることができる。追跡プロセスの特定の実施形態を以下に説明する。
【0019】
一実施形態によれば、システムは、カメラのアレイと、第1のカメラクライアントと、第2のカメラクライアントと、カメラサーバとを含む。カメラのアレイは、空間の上方に配置される。カメラのアレイの各カメラは、空間の一部のビデオをキャプチャする。空間の中には人物がいる。第1のカメラクライアントは、カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信する。第1の複数のフレームの各フレームは、空間内の人物を示す。第1の複数のフレームのうちの第1のフレームについて、第1のカメラクライアントは、第1のフレームに示される人物の周りの第1の境界エリアを決定し、第1のフレームが第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成する。第1の複数のフレームのうちの第2のフレームについて、第1のカメラクライアントは、第2のフレームに示される人物の周りの第2の境界エリアを決定し、第2のフレームが第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成する。第1の複数のフレームのうちの第3のフレームについて、第1のカメラクライアントは、第3のフレームに示される人物の周りの第3の境界エリアを決定し、第3のフレームが第1のカメラクライアントによって受信されたときの第3のタイムスタンプを生成する。
【0020】
第2のカメラクライアントは、カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信する。第2の複数のフレームの各フレームは、空間内の人物を示す。第2の複数のフレームのうちの第4のフレームについて、第2のカメラクライアントは、第4のフレームに示される人物の周りの第4の境界エリアを決定し、第4のフレームが第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成する。第2の複数のフレームのうちの第5のフレームについて、第2のカメラクライアントは、第5のフレームに示される人物の周りの第5の境界エリアを決定し、第5のフレームが第2のカメラクライアントによって受信されたときの第5のタイムスタンプを生成する。
【0021】
カメラサーバは、第1および第2のカメラクライアントとは別個である。カメラサーバは、第1のタイムスタンプが第1の時間窓内に入ると決定し、第1のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第1の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバはまた、第2のタイムスタンプが第1の時間窓内に入ると決定し、第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第2の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバはさらに、第3のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定し、第3のタイムスタンプが第2の時間窓内に入ると決定することに応答して、第3の境界エリアを画定する座標を第2の時間窓に割り当てる。カメラサーバはまた、第4のタイムスタンプが第1の時間窓内に入ると決定し、第4のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第4の境界エリアを画定する座標を第1の時間窓に割り当てる。カメラサーバはさらに、第5のタイムスタンプが第2の時間窓内に入ると決定し、第5のタイムスタンプが第2の時間窓内に入ると決定することに応答して、第5の境界エリアを画定する座標を第2の時間窓に割り当てる。
【0022】
カメラサーバはまた、第1の時間窓に割り当てられた座標が処理されるべきであると決定し、第1の時間窓に割り当てられた座標が処理されるべきであると決定することに応答して、カメラサーバは、第1の境界エリアを画定する座標と第2の境界エリアを画定する座標とに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標を計算し、第4の境界エリアを画定する座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算する。第1の時間窓に割り当てられた座標が処理されるべきであると決定した後、カメラサーバは、第2の時間窓に割り当てられた座標が処理されるべきであると決定し、第2の時間窓に割り当てられた座標が処理されるべきであると決定したことに応答して、カメラサーバは、第3の境界エリアを画定する座標に少なくとも基づいて、第1のカメラからの第1のビデオに対する第2の時間窓中の人物の結合座標を計算し、第5の境界エリアを画定する座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第2の時間窓中の人物の結合座標を計算する。
【0023】
別の実施形態によれば、システムは、カメラのアレイと、第1のカメラクライアントと、第2のカメラクライアントと、カメラサーバとを含む。カメラのアレイは、空間の上方に配置される。カメラのアレイの各カメラは、空間の一部のビデオをキャプチャする。空間の中には人物がいる。第1のカメラクライアントは、カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信する。第1の複数のフレームの各フレームは、空間内の人物を示す。第1の複数のフレームの各フレームについて、第1のカメラクライアントは、そのフレームに示される人物の周りの境界エリアを決定し、そのフレームが第1のカメラクライアントによって受信されたときのタイムスタンプを生成する。第2のカメラクライアントは、カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信する。第2の複数のフレームの各フレームは、空間内の人物を示す。第2の複数のフレームの各フレームについて、第2のカメラクライアントは、そのフレームに示される人物の周りの境界エリアを決定し、そのフレームが第2のカメラクライアントによって受信されたときのタイムスタンプを生成する。
【0024】
カメラサーバは、第1および第2のカメラクライアントとは別個である。カメラサーバは、第1の複数のフレームの各フレームについて、そのフレームが第1のカメラクライアントによって受信されたときのタイムスタンプに少なくとも基づいて、そのフレームに示される人物の周りの境界エリアを画定する座標を複数の時間窓のうちの1つに割り当て、第2の複数のフレームの各フレームについて、そのフレームが第2のカメラクライアントによって受信されたときのタイムスタンプに少なくとも基づいて、そのフレームに示される人物の周りの境界エリアを画定する座標を複数の時間窓のうちの1つに割り当てる。
【0025】
カメラサーバはまた、複数の時間窓のうちの第1の時間窓に割り当てられた座標が処理されるべきであると決定し、第1の時間窓に割り当てられた座標が処理されるべきであると決定することに応答して、(1)第1の複数のフレームに示される人物の周りの境界エリアを画定し、(2)第1の時間窓に割り当てられる座標に少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標を計算し、(1)第2の複数のフレームに示される人物の周りの境界エリアを画定し、(2)第1の時間窓に割り当てられる座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算する。
【0026】
特定の実施形態は、カメラシステムの回復力を高めるカメラおよびカメラクライアントの従来にない配置を含む。一般に、カメラは、物理的空間にカバレッジを提供する矩形グリッド状に配置され、各カメラは、1つのカメラクライアントに通信可能に結合される。グリッドの同じ行または列において、同じカメラクライアントに通信可能に結合された別のカメラに直接隣接するカメラはない。グリッドの対角線に沿って配置されたカメラは、同じカメラクライアントに通信可能に結合される。このように、システム内の1つのカメラクライアントがオフラインになったとしても、グリッドは依然として物理的空間に十分なカバレッジを提供する。結果として、カメラのこの配置は、システムの回復力を高める。カメラ配置の特定の実施形態を以下に説明する。
【0027】
一実施形態によれば、システムは、第1のカメラクライアントと、第2のカメラクライアントと、第3のカメラクライアントと、カメラのアレイとを含む。第2のカメラクライアントは、第1のカメラクライアントとは別個である。第3のカメラクライアントは、第1および第2のカメラクライアントとは別個である。カメラのアレイは、空間の上方に配置される。カメラのアレイ内のカメラは、第1の行、第2の行、第3の行、第1の列、第2の列、および第3の列を含む矩形グリッドとして配置される。アレイは、第1、第2、第3、第4、第5、および第6のカメラを含む。
【0028】
第1のカメラは、グリッドの第1の行および第1の列に配置される。第1のカメラは、第1のカメラクライアントに通信可能に結合される。第1のカメラは、空間の第1の部分のビデオを第1のカメラクライアントに通信する。第2のカメラは、第2のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第1の行および第2の列に配置される。第2のカメラは、第2のカメラクライアントに通信可能に結合される。第2のカメラは、空間の第2の部分のビデオを第2のカメラクライアントに通信する。第3のカメラは、第3のカメラがグリッド内で第2のカメラに直接隣接するようにグリッドの第1の行および第3の列に配置される。第3のカメラは、第3のカメラクライアントに通信可能に結合される。第3のカメラは、空間の第3の部分のビデオを第3のカメラクライアントに通信する。第4のカメラは、第4のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第2の行および第1の列に配置される。第4のカメラは、第2のカメラクライアントに通信可能に結合される。第4のカメラは、空間の第4の部分のビデオを第2のカメラクライアントに通信する。第5のカメラは、第5のカメラがグリッド内で第4のカメラおよび第2のカメラに直接隣接するようにグリッドの第2の行および第2の列に配置される。第5のカメラは、第3のカメラクライアントに通信可能に結合される。第5のカメラは、空間の第5の部分のビデオを第3のカメラクライアントに通信する。第6のカメラは、第6のカメラがグリッド内で第4のカメラに直接隣接するようにグリッドの第3の行および第1の列に配置される。第6のカメラは、第3のカメラクライアントに通信可能に結合される。第6のカメラは、空間の第6の部分のビデオを第3のカメラクライアントに通信する。
【0029】
別の実施形態によれば、システムは、複数のカメラクライアントと、カメラのアレイとを含む。複数のカメラクライアントは、いくつかのカメラクライアントを含む。カメラのアレイは、空間の上方に配置される。カメラのアレイ内の各カメラは、空間の一部のビデオを複数のカメラクライアントのうちの1つのカメラクライアントのみに通信する。カメラのアレイ内のカメラは、複数のカメラクライアントの各カメラクライアントがアレイのN×N部分内の少なくとも1つのカメラに通信可能に結合されるように配置される。Nは、複数のカメラクライアント内のカメラクライアントの数から1を引いたものである。
【0030】
特定の実施形態は、商品を保持するための従来にないラックを含む。ラックは、棚および重量センサを保持するためのベースおよびパネルを含む。重量センサは、ベース内の引き出しに位置する回路基板に配線される。ワイヤは、重量センサから、棚、パネル、およびベースによって画定されるキャビティおよび空間を通って延びる。ラックの特定の実施形態を以下に説明する。
【0031】
一実施形態によれば、システムは、回路基板とラックとを含む。ラックは、ベースと、パネルと、棚と、第1の重量センサと、第2の重量センサと、第1のワイヤと、第2のワイヤとを含む。ベースは、底面と、第1の側面と、第2の側面と、第3の側面と、上面と、引き出しとを含む。第1の側面は、ベースの底面に結合される。ベースの第1の側面は、ベースの底面から上方に延在する。第2の側面は、ベースの底面および第1の側面に結合される。ベースの第2の側面は、ベースの底面から上方に延在する。第3の側面は、ベースの底面および第2の側面に結合される。ベースの第3の側面は、ベースの底面から上方に延在する。上面は、ベースの底面および上面、ならびにベースの第1の側面、第2の側面、および第3の側面が空間を画定するように、ベースの第1の側面、第2の側面、および第3の側面に結合される。ベースの上面は、空間への第1の開口部を画定する。引き出しは空間内に配置される。回路基板は引き出し内に配置される。
【0032】
パネルはベースに結合され、ベースから上方に延在する。パネルは、パネルの幅に沿って延在する第2の開口部を画定する。棚は、棚がベースよりも垂直方向に高く位置付けられるように、かつ棚がパネルから離れる方向に延在するようにパネルに結合される。棚は、底面と、棚の底面から上方に延在する前面と、棚の底面から上方に延在する背面とを含む。棚の背面はパネルに結合される。棚の背面は第3の開口部を画定する。第3の開口部の一部は、第2の開口部の一部と位置合わせされる。
【0033】
第1の重量センサは、棚の底面に結合され、棚の前面と棚の背面との間に配置される。第2の重量センサは、棚の底面に結合され、棚の前面と棚の背面との間に配置される。第1のワイヤは、第1の重量センサおよび回路基板に結合される。第1のワイヤは、第1の重量センサから、第2および第3の開口部を通り、第1の開口部を通って空間内に下方に延在する。第2のワイヤは、第2の重量センサおよび回路基板に結合される。第2のワイヤは、第2の重量センサから第2および第3の開口部を通り、第1の開口部を通って空間内に下方に延在する。
【0034】
特定の実施形態は、上述した上記の技術的利点のいずれも含まないか、いくつかまたはすべてを含むことができる。1つまたは複数の他の技術的利点は、本明細書に含まれる図、説明、および特許請求の範囲から当業者には容易に明らかになり得る。
【図面の簡単な説明】
【0035】
本開示をより完全に理解するために、添付の図面と併せて以下の説明を参照する。
【
図1A】物理的空間を定義する例示的な店舗を示す。
【
図1B】物理的空間を定義する例示的な店舗を示す。
【
図1C】物理的空間を定義する例示的な店舗を示す。
【
図2】物理的な店舗で使用するための例示的な追跡システムのブロック図を示す。
【
図3A】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3B】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3C】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3D】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3E】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3F】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3G】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3H】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3I】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3J】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3K】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3L】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3M】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3N】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3O】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3P】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3Q】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3R】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3S】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図3T】追跡システムにおける例示的なカメラサブシステムおよびその動作を示す。
【
図4A】追跡システムにおける例示的な光検出および測距サブシステムならびにその動作を示す。
【
図4B】追跡システムにおける例示的な光検出および測距サブシステムならびにその動作を示す。
【
図4C】追跡システムにおける例示的な光検出および測距サブシステムならびにその動作を示す。
【
図4D】追跡システムにおける例示的な光検出および測距サブシステムならびにその動作を示す。
【
図5A】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5B】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5C】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5D】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5E】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5F】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5G】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5H】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5I】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図5J】追跡システムにおける例示的な重量サブシステムおよびその動作を示す。
【
図6A】追跡システムと共に使用するための例示的な中央サーバの動作を示す。
【
図6B】追跡システムと共に使用するための例示的な中央サーバの動作を示す。
【
図6C】追跡システムと共に使用するための例示的な中央サーバの動作を示す。
【発明を実施するための形態】
【0036】
本開示の実施形態およびその利点は、同様の数字が様々な図面の同様のおよび対応する部分に使用される図面の
図1A~
図7を参照することによって最もよく理解される。さらなる情報は、「Customer-Based Video Feed」と題する米国特許出願第_____号(代理人整理番号第090278.0187号)および「Topview Object Tracking Using a Sensor Array」と題する米国特許出願第_____号(代理人整理番号第090278.0180号)に開示されており、これらは両方とも、その全体が再現されているかのように参照により本明細書に組み込まれる。
【0037】
位置追跡システムは、物理的空間(例えば、店舗)において人物および/または物体の物理的位置を追跡するために使用される。これらのシステムでは、典型的には、人物および/または物体の存在を検出するセンサ(例えば、カメラ)と、センサからの信号に基づいて人物および/または物体の物理的位置を決定するコンピュータとが使用される。店舗環境では、他のタイプのセンサを設置して、店舗内の在庫の動きを追跡することができる。例えば、重量センサをラックおよび棚に設置して、商品がいつこれらのラックおよび棚から取り出されたかを決定することができる。店舗内の人物の位置と、いつ商品が棚から取り出されたかの両方を追跡することによって、コンピュータは、店舗内のどのユーザが商品を取り出したかを決定し、レジで商品を打つ必要なしにそのユーザに商品の代金を請求することができる。換言すれば、人物は、店舗に歩いて入り、商品を取り、従来の精算プロセスのために立ち寄ることなく店から出ることができる。
【0038】
より大きな物理的空間(例えば、コンビニエンスストアおよび食料品店)の場合、追加のセンサを空間全体に設置して、人物および/または物体はその空間を動き回るときにそれらの位置を追跡することができる。例えば、追加のカメラを増設してより大きな空間内の位置を追跡したり、追加の重量センサを増設して追加の商品および棚を追跡したりすることができる。しかしながら、コンピュータの計算能力に達するまで追加することができるセンサの数には限りがある。結果として、コンピュータの計算能力は、追跡システムのカバレッジエリアを制限する。
【0039】
より大きな空間を扱うようにこれらのシステムをスケーリングする1つの方法は、追加のコンピュータを増設し、これらのコンピュータ間でセンサを分割して、各コンピュータがセンサのサブセットからの信号を処理することができるようにする方法である。しかしながら、複数のコンピュータ間でセンサを分割すると、同期の問題が生じる。例えば、センサは、信号をそれぞれのコンピュータに一緒にまたは同時には通信しない可能性がある。別の例として、センサは、それぞれのコンピュータとの待ち時間が異なる場合があり、したがって、1つのセンサからの信号がコンピュータに到達するのに、別のセンサからの信号よりも長い時間がかかる場合がある。結果として、センサおよびコンピュータは互いに非同期化の状態になり、コンピュータが、空間における人物または物体の位置といつ商品が取り出されたかとを一貫して決定することがより困難になる。
【0040】
本開示は、より大きな空間を扱うようにスケーリングすることができる従来にない分散型追跡システムを企図する。システムは、カメラのアレイ、複数のカメラクライアント、カメラサーバ、重量センサ、重量サーバ、および中央サーバを使用して、空間内のどの人物が、商品を取り、その商品の代金を請求されるべきかを決定する。カメラクライアントはそれぞれ、カメラのアレイのカメラの異なるサブセットからのビデオのフレームを処理する。各カメラクライアントは、フレーム内で検出された人物の座標を決定し、次いで、フレームがカメラクライアントによって受信されたときに基づいて、これらの座標にタイムスタンプを付ける。次いで、カメラクライアントは、カメラクライアントからの情報を調整することを担うカメラサーバに座標およびタイムスタンプを通信する。カメラサーバは、カメラクライアントからの座標およびタイムスタンプに基づいて、空間内の人物の位置を決定する。重量サーバは、重量センサからの信号を処理して、商品がいつ空間内の棚から取り出されたかを決定する。中央サーバは、カメラサーバからの空間内の人物の位置と、商品がいつ棚から取り出されたかについての重量サーバからの決定とを使用して、空間内のどの人物がどの商品を取ったか、そしてその代金が請求されるべきかを決定する。
図1A~
図7を使用してシステムをより詳細に説明する。
【0041】
一般に、カメラサーバは、タイムスタンプに基づいて複数のカメラクライアントからの座標を時間窓に割り当てることによって、非同期化を防ぐ。次に、カメラサーバは、特定の時間窓に割り当てられた座標を処理して、その時間窓中の空間内の人物の全体的な座標を決定する。時間窓の持続時間は、非同期化の影響を軽減するために、発生すると予想される非同期化よりも長くなるように設定され得る。例えば、カメラおよびカメラクライアントが数ミリ秒だけ非同期化すると予想される場合、非同期化を打ち消すために時間窓を100ミリ秒持続するように設定することができる。このように、カメラおよびカメラクライアントの数を増加させて、任意の好適な空間を扱うようにシステムをスケーリングすることができる。カメラ、カメラクライアント、およびカメラサーバについては、
図1A~
図3Qを使用してより詳細に説明する。
【0042】
本開示はまた、カメラのアレイ内のカメラをカメラクライアントに配線する従来にない方法を企図する。カメラは、空間の上方に矩形グリッドとして配置される。グリッド内の各カメラは、特定の規則にしたがって特定のカメラクライアントに配線される。例えば、グリッドの同じ行または列において互いに直接隣接するカメラで同じカメラクライアントに配線されるものはない。別の例として、グリッド内で対角線に沿って配置されたカメラは、同じカメラクライアントに配線される。このように、グリッドの小さなエリアには、システム内の各カメラクライアントに配線されたカメラが含まれるべきである。結果として、1つのカメラクライアントがオフラインになったとしても(例えば、メンテナンス、エラー、またはクラッシュ)、残りのカメラクライアントから、この小さいエリア内の人物の位置を追跡するのに十分なカバレッジが依然として存在することになる。したがって、カメラのこの配置は、システムの復元性を高める。カメラアレイについては、
図3A~
図3Eを使用してより詳細に説明する。
【0043】
本開示はさらに、商品がいつラックおよび棚から取り出されたかを追跡するための重量センサを統合する、従来にないラックおよび棚の設計を企図する。一般に、ラックは、ベースと、垂直パネルと、棚とを含む。ベースは、プリント回路基板が配置された密閉空間を形成し、ベースは、密閉空間および回路基板へのアクセスを提供するために開く引き出しを含む。垂直パネルはベースに取り付けられ、棚は垂直パネルに取り付けられる。重量センサが棚内に配置される。ベース、パネル、および棚は、それぞれキャビティを画定する。棚のキャビティおよびパネルのキャビティは、少なくとも部分的に位置合わせされる。各重量センサは、その重量センサから、棚のキャビティ、パネルのキャビティ、およびベースのキャビティを通って回路基板まで延びるワイヤを介してプリント回路基板に信号を通信する。ラックおよび棚の設計については、
図5A~
図5Kを使用してより詳細に説明する。
【0044】
システムはまた、
図4A~
図4Dを使用してより詳細に説明する光検出および測距(LiDAR)サブシステムを含み得る。システムはまた、カメラサブシステム、重量サブシステム、およびLiDARサブシステムを互いに結び付ける中央サーバを含む。中央サーバについては、
図6A~6Cを使用してより詳細に説明する。
【0045】
I.システムの概要
図1A~
図1Dは、例示的な店舗空間に設置される追跡システムを示す。上述したように、買物客が従来の精算プロセスを行う必要がないように、追跡システムが店舗空間に設置され得る。本開示では店舗空間の例が使用されるが、本開示は、追跡システムが任意のタイプの物理的空間(例えば、倉庫、保管センター、アミューズメントパーク、空港、オフィスビルなど)に設置され、使用され得ることを企図する。一般に、追跡システム(またはその構成要素)は、任意の好適な目的で、これらの空間内の人物および/または物体の位置を追跡するために使用される。例えば、空港では、追跡システムは、セキュリティ目的で旅行者および従業員の位置を追跡することができる。別の例として、アミューズメントパークでは、追跡システムは、アトラクションの人気を把握するためにパークゲストの位置を追跡することができる。さらに別の例として、オフィスビルでは、追跡システムは、生産性レベルを監視するために従業員およびスタッフの位置を追跡することができる。
【0046】
図1Aは、例示的な店舗100を示す。店舗100は、買物客が商品を購入することができる物理的空間である。
図1Aに見られるように、店舗100は、買物客が店舗100に出入りすることができる出入口を含む物理的な建物である。買物客が従来の精算プロセスを行う必要なく店舗100から商品を購入することができるように、追跡システムが店舗100に設置され得る。本開示は、店舗100が任意の好適な物理的空間であり得ることを企図する。例えば、店舗100は、コンビニエンスストアまたは食料品店であり得る。本開示はまた、店舗100が物理的な建物ではなく、買物客が買い物をすることができる物理的空間または環境であってもよいことを企図する。例えば、店舗100は、空港にあるグラブアンドゴーパントリー、オフィスビルにあるキオスク、公園にある屋外市場などであってもよい。
【0047】
図1Bは、店舗100の内部の一部を示す。
図1Bに見られるように、店舗100は、買物客105と、ラック115と、ゲート125とを含む。買物客105は、店舗100への出入りを可能にするゲート125のうちの1つを通して店舗100に入り得る。ゲート125が開かれていない限り、ゲート125によって買物客105は店舗に出入りすることができない。
【0048】
ゲート125は、スキャナ110および120を含み得る。スキャナ110および120は、QRコード(登録商標)スキャナ、バーコードスキャナ、または買物客105を一意に識別する情報などの情報が埋め込まれた電子コードを受信することができる任意の他の好適なタイプのスキャナを含み得る。買物客105は、店舗100に入るためにスキャナ110上でパーソナルデバイス(例えば、スマートフォン)をスキャンし得る。買物客105がスキャナ110上でパーソナルデバイスをスキャンすると、パーソナルデバイスは、買物客105を一意に識別する電子コードをスキャナ110に提供し得る。買物客105が識別および/または認証されると、スキャナ110を含むゲート125が開いて買物客105は店舗100に入ることができる。各買物客105は、パーソナルデバイスのための識別コードを受信するために店舗100にアカウントを登録している可能性がある。
【0049】
店舗100に入った後、買物客105は、店舗100の内部を動き回り得る。買物客105は、空間全体を移動しながら、ラック115から商品130を取り出すことによって商品130の買い物を行い得る。
図1Bに見られるように、店舗100は、商品130を保持するラック115を含む。買物客105が特定の商品130を購入したい場合、買物客105は、ラック115からその商品130を取り出すことができる。買物客105は、店舗100から複数の商品130を取り出して、それらの商品130を購入することができる。
【0050】
買物客105が商品130の買い物を完了すると、買物客105はゲート125に近づく。特定の実施形態では、ゲート125は、買物客105が店舗100から出ることができるように自動的に開く。他の実施形態では、買物客105がスキャナ120上でパーソナルデバイスをスキャンした後に、ゲート125が開いて、買物客105は店舗100から出ることができる。買物客105がスキャナ120上でパーソナルデバイスをスキャンすると、パーソナルデバイスは、買物客105が店舗100から出ることを示すために、買物客105を一意に識別する電子コードを提供し得る。買物客105が店舗100を出るとき、買物客105のアカウントに対して、買物客105が店舗100から取り出した商品130の代金が請求される。
【0051】
図1Cは、店舗100の内部を、買物客105が従来の精算プロセスを行うことなく単に商品130を持って店舗100から出ることを可能にする追跡システム132と共に示す。
図1Cに見られるように、追跡システム132は、店舗100の天井に配置されたセンサ135のアレイを含む。センサ135のアレイは、店舗100の内部空間にカバレッジを提供し得る。センサ135は、
図3A~
図3Eに関してさらに詳細に説明するように、店舗100の天井にわたってグリッドパターンで配置される。センサ135は、店舗100の空間内の買物客105の位置を追跡するために使用され得る。本開示は、センサ135が任意の好適なセンサ(例えば、カメラ、光検出および測距センサ、ミリ波センサなど)であることを企図する。
【0052】
追跡システム132はまた、ラック115上に配置された重量センサ140を含む。重量センサ140は、ラック115上に配置された商品130の重量を検出することができる。商品130がラック115から取り出されると、重量センサ140は重量の減少を検出し得る。追跡システム132は、その情報を使用して、特定の商品130がラック115から取り出されたと決定し得る。
【0053】
追跡システム132は、コンピュータシステム145を含む。コンピュータシステム145は、どの買物客105がどの商品130をラック115から取ったかを決定するために一緒に動作する複数のコンピュータを含み得る。コンピュータシステム145の構成要素およびそれらの動作については、
図2~
図7を使用してより詳細に説明する。一般に、コンピュータシステム145は、センサ135および重量センサ140からの情報を使用して、どの買物客105がどの商品130を店舗100から持って行ったかを決定する。このように、買物客105は、買物客105がゲート125を通って店舗100を出るときに、商品130の代金を自動的に請求され得る。
【0054】
図2は、店舗100で使用するための例示的な追跡システム132のブロック図を示す。
図2に見られるように、追跡システム132は、カメラサブシステム202と、光検出および測距(LiDAR)サブシステム204と、重量サブシステム206とを含む。追跡システム132は、カメラ205、光検出および測距(LiDAR)センサ210、ならびに重量センサ215などの様々なセンサ135を含む。これらのセンサ135は、コンピュータシステム145の様々なコンピュータに通信可能に結合される。例えば、カメラサブシステム202は、1つまたは複数のカメラクライアント220に通信可能に結合されたカメラ205を含む。これらのカメラクライアント220は、カメラサーバ225に通信可能に結合される。LiDARサブシステム204は、LiDARサーバ230に通信可能に結合されたLiDARセンサ210を含む。重量サブシステム206は、重量サーバ235に通信可能に結合された重量センサ215を含む。カメラサーバ225、LiDARサーバ230、および重量サーバ235は、中央サーバ240に通信可能に結合される。
【0055】
一般に、カメラ205は、空間の内部の部分のビデオを生成する。これらのビデオは、空間内の買物客105のフレームまたは画像を含み得る。カメラクライアント220は、カメラ205からのフレームを処理して、フレーム内の買物客105を検出し、これらの買物客105にフレーム座標を割り当てる。カメラサーバ225は、一般に、カメラクライアント220からのフレームデータを処理して、空間内の買物客105の物理的位置を決定する。LiDARセンサ210は、一般に、空間内の買物客105の座標を生成する。LiDARサーバ230は、これらの座標を処理して、空間内の買物客105の位置を決定する。重量センサ215は、空間内のラック115上の商品130の重量を検出する。重量サーバ235は、これらの重量を処理して、特定の商品130がいつラック115から取り出されたかを決定する。
【0056】
中央サーバ240は、カメラサーバ225およびLiDARサーバ230からの買物客105の位置情報と、重量サーバ235からの重量情報とを処理して、どの買物客105がどの商品130をラック115から取り出したかを決定する。次いで、これらの買物客105は、買物客105が空間を出るときに、それらの商品130の料金を請求され得る。これらの構成要素の動作については、
図3A~
図6Cを使用してより詳細に説明する。
【0057】
一実施形態では、追跡システム132の構成要素の各々(例えば、カメラクライアント220、カメラサーバ225、LiDARサーバ230、重量サーバ235、および中央サーバ240)は、追跡システム132の他の構成要素とは別個の異なるコンピューティングデバイスである。例えば、これらの構成要素の各々は、それ自体のプロセッサと、メモリと、物理的ハウジングとを含み得る。このように、追跡システム132の構成要素は、1つのコンピュータのみを含む追跡システムに対して追加の計算能力(computing power)を提供するように分散される。
【0058】
II.カメラサブシステム
図3A~
図3Rは、例示的なカメラサブシステム202および追跡システム132におけるその動作を示す。上述したように、カメラサブシステム202は、カメラ205と、カメラクライアント220と、カメラサーバ225とを含む。一般に、カメラ205は、空間のビデオをキャプチャし、そのビデオを処理のためにカメラクライアント220に送る。これらのビデオは、空間のフレームまたは画像のシーケンスである。カメラクライアント220は、フレーム内の人物(例えば、買物客105)の存在を検出し、それらの人物についてフレーム内の座標(「フレーム座標」とも呼ばれ得る)を決定する。カメラサーバ225は、各カメラクライアント220からのフレーム座標を分析して、空間内の人物の物理的位置を決定する。
【0059】
1.カメラアレイ
図3Aは、例示的なカメラアレイ300を示す。
図3Aに示すように、カメラアレイ300は、複数のカメラ305を含む。本開示は、12個のカメラ305を含むカメラアレイ300を示すが、カメラアレイ300は、任意の好適な数のカメラ305を含んでもよい。一般に、カメラアレイ300は、カメラ305が空間の一部の俯瞰ビデオをキャプチャすることができるように、空間の上方に配置される。次いで、これらのビデオは、カメラサブシステム202の他の構成要素によって処理され、空間内の人物(例えば、買物客105)の物理的位置が決定され得る。
図3Aの例では、カメラアレイ300は、カメラ305A、305B、305C、305D、305E、305F、305G、305H、305I、305J、305K、および305Lを含む。
【0060】
一般に、カメラアレイ300内のカメラ305は、矩形アレイを形成するように配列される。
図3Aの例では、カメラアレイ300は、カメラ305の3×4アレイ(例えば、カメラ305の3つの行および4つの列)である。カメラアレイ300は、任意の好適な寸法のアレイに配列された任意の好適な数のカメラ305を含み得る。
【0061】
カメラアレイ300の各カメラ305は、カメラクライアント220に通信可能に結合される。
図3Aの例では、カメラアレイ300の各カメラ305は、カメラクライアント1 220A、カメラクライアント2 220B、またはカメラクライアント3 220Cのうちの1つに通信可能に結合される。各カメラ305は、キャプチャされたビデオを、カメラ305が通信可能に結合されるカメラクライアント220に通信する。カメラ305は、追跡システム132の回復力を高めるために、特定の規則にしたがってカメラクライアント220に通信可能に結合される。一般に、1つのカメラクライアント220がオフラインになったとしても、残りのカメラクライアント220に通信可能に結合されたカメラ305によって提供される物理的空間のカバレッジで、追跡システム132が空間内の人物の位置を追跡し続けるに十分となるように、カメラ305は、これらのカメラクライアント220に通信可能に結合される。
【0062】
カメラ305は、任意の好適な媒体を使用してカメラクライアント220に通信可能である。例えば、カメラ305はカメラクライアント220に配線接続され得る。別の例として、カメラ305は、任意の好適なワイヤレスプロトコル(例えば、WiFi)を使用してカメラクライアント220にワイヤレスに結合し得る。カメラ305は、キャプチャされたビデオを、通信媒体を通してカメラクライアント220に通信する。
【0063】
カメラ305は、空間のビデオをキャプチャするための任意の好適なデバイスであり得る。例えば、カメラ305は、空間の2次元ビデオ(例えば、x-y平面)をキャプチャすることができ、ビデオ内の人物および/または物体の高さ(例えば、z平面)も検出することができる3次元カメラであり得る。別の例として、カメラ305は、空間の2次元ビデオをキャプチャする2次元カメラであってもよい。カメラアレイ300は、異なるタイプのカメラ305の混合物を含み得る。
【0064】
図3Bは、カメラアレイ300のカメラ305によって提供されるカバレッジを示す。
図3Bに見られるように、床空間は、異なる視野310によってカバーされる。各視野310は、カメラアレイ300のカメラ305によって提供される。例えば、視野310Aはカメラ305Aによって提供される。視野310Bはカメラ305Bによって提供される。視野310Cはカメラ305Cによって提供され、以下同様である。各視野310は、形状がほぼ矩形であり、床空間の一部をカバーする。各カメラ305は、そのカメラ305の視野310によってカバーされる床空間の一部のビデオをキャプチャする。例えば、カメラ305Aは、視野310Aによってカバーされる床空間の一部のビデオをキャプチャする。カメラ305Bは、視野310Bによってカバーされる床空間の一部のビデオをキャプチャする。カメラ305Cは、視野310Cによってカバーされる床空間の一部のビデオをキャプチャし、以下同様である。
【0065】
視野310を区別するために、各視野310は、その隣接する視野とは異なる陰影が付けられている。視野310A、310C、310I、および310Kは、右に向かって下方に傾斜する線を用いて陰影が付けられている。視野310B、310D、310J、および310Lは、右に向かって上方に傾斜する線を使用して陰影が付けられている。視野310Eおよび310Gは、水平線を使用して陰影が付けられており、視野310Fおよび310Hは、垂直線を使用して陰影が付けられている。各視野310の陰影は、その視野310を他の直接隣接する視野310から区別するためのものである。陰影は、視野310の特定の特性を示すことを意味しない。換言すれば、特定の視野310が同じ陰影を共有していても、類似の陰影は、これらの視野310が特定の特性(例えば、サイズ、カバレッジ、持続時間、および/または形状)を共有することを示すものではない。視野310は、それらの個々の陰影にかかわらず、これらの特性のうちの1つまたは複数を共有し得る。
【0066】
図3Bに見られるように、各視野310は、他の視野310と重複する。例えば、視野310Aは、視野310B、310E、および310Fと重複する。別の例として、視野310Fは、視野310A、310B、310C、310E、310G、310I、310J、および310Kと重複する。視野310Aおよび310Fと同様に、他の視野310(例えば、視野310B、310C、310D、310E、310G、310H、310I、310J、310K、および310L)もまた、隣接する視野310と重複する。重複する領域における陰影は、重複する領域を形成する個々の視野における陰影の組合せである。例えば、視野310Aおよび310Bによって形成される重複する領域は、反対方向に走る斜線を含む。別の例として、視野310A、310B、310E、および310Fによって形成される重複する領域は、反対方向に走る斜線と、水平線と、垂直線とを含む。
【0067】
重複する視野310は、カメラアレイ300においてカメラ305が互いに近接している結果であり得る。一般に、視野310を重複させることによって、床空間の特定の部分を、カメラアレイ300の複数のカメラ305によってキャプチャすることができる。結果として、特定のカメラ305がオフラインになっても、残りのカメラ305によって提供されるカバレッジで、追跡システム132が動作するのに依然として十分であり得る。追加的に、重複する視野310は、人物(例えば、買物客105)が空間を動き回るときの位置の追跡を改善し得る。
【0068】
図3Cは、例示的なカメラグリッド315を示す。
図3Cに見られるように、カメラグリッド315は、カメラアレイ300内の行および列の数に対応するいくつかの行およびいくつかの列を含む。カメラグリッド315の各ボックスは、カメラアレイ300のカメラ305を表す。カメラグリッド315は、カメラアレイ300のカメラ305がカメラクライアント220にどのように通信可能に結合されるかを示す。前の
図3Aの例を使用すると、カメラグリッド315は、カメラ305A、305D、305G、および305Jがカメラクライアント1 220Aに通信可能に結合されることを示す。カメラグリッド315はまた、カメラ305B、305E、305H、および305Kがカメラクライアント2 220Bに通信可能に結合されることを示す。カメラグリッド315は、カメラ305C、305F、305I、および305Lがカメラクライアント3 220Cに通信可能に結合されることをさらに示す。
【0069】
カメラグリッド315は、カメラ305が特定の規則にしたがってカメラクライアント220に通信可能に結合されることを示す。例えば、特定のカメラクライアント220に通信可能に結合されたカメラ305は、カメラグリッド315の同じ行または同じ列において、同じカメラクライアント220に通信可能に結合された別のカメラ305に直接隣接しない。
図3Cに見られるように、例えば、カメラ305Aは、カメラグリッド315の同じ行または同じ列において、カメラ305Bおよび305Eに直接隣接する。カメラ305Aがカメラクライアント1 220Aに通信可能に結合される一方で、カメラ305Bおよび305Eはカメラクライアント2 220Bに通信可能に結合される。カメラ305Fは、カメラグリッド315の同じ行または同じ列においてカメラ305B、305E、305G、および305Jに直接隣接する。カメラ305Fがカメラクライアント3 220Cに通信可能である一方で、カメラ305B、305E、305G、および305Jはカメラクライアント1 220Aまたはカメラクライアント2 220Bに通信可能に結合される。
【0070】
別の例として、特定のカメラクライアント220に通信可能に結合されたカメラ305は、同じカメラクライアント220に通信可能に結合された別のカメラ305に対してカメラグリッド315内で対角にある。
図3Cに見られるように、例えば、カメラ305D、305G、および305Jは、互いに対角にあり、カメラクライアント1 220Aに通信可能に結合される。カメラ305C、305F、および305Iは、互いに対角にあり、すべてがカメラクライアント3 220Cに通信可能に結合される。
【0071】
このようにカメラ305を配置することで、各カメラクライアント220は、カメラグリッド315の一部における少なくとも1つのカメラ305に通信可能に結合されることとなる。
図3Cの例に見られるように、カメラクライアント1 220A、カメラクライアント2 220B、およびカメラクライアント3 220Cの各々は、カメラグリッド315の任意の2×2部分内の少なくとも1つのカメラに通信可能に結合される。結果として、1つのカメラクライアント220がオフラインになったとしても、2×2部分内の他のカメラで、追跡システム132が動作することを可能にするのに十分なその2×2部分のカバレッジを依然として提供することができる。したがって、追跡システム132の回復力が高まる。
【0072】
前の例は、特定の数のカメラ305および特定の数のカメラクライアント220を使用したが、追跡システム132は、任意の好適な数のカメラ305および任意の好適な数のカメラクライアント220を使用して、所望のレベルの重複、スケーラビリティ、および回復力を提供してもよい。
図3Dは、追加のカメラ305を含む例示的なカメラアレイ300を示す。
図3Dの例はまた、追加のカメラクライアント220:カメラクライアント1 220A~カメラクライアントN 220Dを含む。カメラアレイ300内のカメラ305は、
図3A~
図3Cで説明した同じ規則または原理にしたがって、カメラクライアント220に通信可能に結合され得る。
【0073】
図3Eは、カメラ305がどのようにしてカメラクライアント220に通信可能に結合し得るかを示す。
図3Eに見られるように、カメラグリッド315は、いくつかの行およびいくつかの列を含む。行にわたって、カメラ305は、連続的にカメラクライアント220に通信可能に結合される。カメラ305がカメラクライアントN 220dに通信可能に結合された後、列の最後に達するまでシーケンスが繰り返される。同様に、列内のカメラ305は、カメラクライアント220に順次結合される。カメラ305がカメラクライアントN 220dに通信可能に結合された後、パターンが繰り返される。
【0074】
図3Dおよび3Eに示されるように、追跡システム132は、任意の数のカメラ305および任意の数のカメラクライアント220を含むようにスケーリングされ得る。一般に、特定のカメラクライアント220に通信可能に結合されたカメラ305は、カメラグリッド315の同じ行または同じ列において、同じカメラクライアント220に通信可能に結合された別のカメラ305に直接隣接しない。追加的に、カメラグリッド315の対角線に沿ったカメラ305は、同じカメラクライアント220に通信可能に結合される。さらに、各カメラクライアント220は、カメラグリッド315の一部内の少なくとも1つのカメラ305に通信可能に結合される。この部分の寸法は、追跡システム132内のカメラクライアント220の数に依存し得る。一般に、この部分の寸法は、追跡システム132内のカメラクライアント220の数より1つ少ない。そのため、
図3Dおよび
図3Eの例では、この部分の寸法は、(N-1)×(N-1)である。
【0075】
2.初期化
図3Fは、カメラサブシステム202の初期化を示す。
図3Fに見られるように、カメラサブシステム202は、カメラアレイ300と、カメラクライアント1 220Aと、カメラクライアント2 220Bと、カメラクライアント3 220Cと、カメラサーバ225とを含む。カメラサブシステム202は、任意の好適な数のカメラアレイ300、カメラクライアント220、およびカメラサーバ225を含み得る。一般に、初期化の間に、カメラアレイ300のカメラ305が起動し、カメラクライアント220にビデオ302を送り始める。追加的に、カメラクライアント220およびカメラサーバ225が内部クロック304を同期させる。カメラアレイ300内のカメラ305が起動した後かつ内部クロック304が同期された後、カメラクライアント220は、カメラサブシステム202の追跡動作を実行するために、ビデオ302の処理およびカメラサーバ225への情報の通信を開始し得る。
【0076】
初期化の間に、カメラアレイ300のカメラ305は、電源オンし、スタートアップシーケンスを実行し得る。例えば、カメラ305の構成要素は、ブートアップおよび/またはウォームアップし得る。次いで、カメラ305は、ビデオ映像をキャプチャし、ビデオ302をそれぞれのカメラクライアント220に通信し始め得る。カメラアレイ300のカメラ305は、初期化するために異なる量の時間を要し得る。例えば、特定のカメラ305は、初期化に要する時間が、カメラアレイ300の他のカメラ305より短い場合も長く場合もある。カメラアレイ300のカメラ305は、カメラアレイ300の他のカメラ305が初期化を完了するのを待ってからカメラクライアント220にビデオ302を送るわけではないので、カメラアレイ300のカメラ305はそれぞれ、異なる時間にカメラクライアント220にビデオ302を送り始め得る。結果として、ビデオ302、特にビデオ302のフレームは、他のビデオ302のフレームから非同期化される可能性がある。換言すれば、これらのビデオ302のフレームは、それらのそれぞれのカメラ305によって同時にまたは一緒にキャプチャされて送られるわけではない。その結果として、これらのビデオ302のフレームは、カメラクライアント220に同時にまたは一緒に到着しない。
【0077】
初期化の間、カメラクライアント220およびカメラサーバ225は、電源オンおよび/またはブートアップシーケンスを実行する。ブートアップの後、カメラクライアント220およびカメラサーバ225は、それらの内部クロック304を同期させる。
図3Fの例では、カメラクライアント1 220Aは内部クロック1 304Aを有する。カメラクライアント2 220Bは内部クロック2 304Bを有する。カメラクライアント3 220Cは内部クロック3 304Cを有する。カメラサーバ225は内部クロック4 304Dを有する。カメラクライアント220およびカメラサーバ225は、任意の好適な方法でそれらの内部クロック304を同期させ得る。例えば、カメラクライアント220およびカメラサーバ225は、Network Time Protocol(NTP)またはPrecision Time Protocol(PTP)などの同期プロトコルを使用して、それらの内部クロック304を同期させ得る。カメラクライアント220およびカメラサーバ225の内部クロック304を同期させるために同期プロトコルが使用され得るが、これは、これらの内部クロック304が正確に同じ時間を示すこと、または互いに完全に同期していることを意味するものではない。結果として、カメラクライアント220およびカメラサーバ225間には、依然としてある程度の非同期が存在し得る。
【0078】
カメラクライアント220は、どのカメラ305がビデオ302をカメラクライアント220に通信したかを追跡することによって、初期化を完了したカメラアレイ300のカメラ305を追跡し得る。カメラアレイ300の各カメラ305がカメラクライアント220にビデオ302を送り始めたことをカメラクライアント220が決定すると、カメラクライアント220は、カメラアレイ300が初期化を終了したと決定し得る。その決定に応答して、カメラクライアント220は、ビデオ302のフレームの処理およびそれらのフレームからの情報のカメラサーバ225への通信を開始し得る。次いで、カメラサーバ225は、カメラクライアント220からの情報を分析して、空間内の人物および/または物体の物理的位置を決定し得る。
【0079】
3.カメラクライアント
図3G~
図3Iは、カメラサブシステム202におけるカメラクライアント220の動作を示す。一般に、カメラクライアント320は、カメラ305からのビデオ302を処理する。カメラクライアント320は、これらのビデオ302のフレーム320内の人物または物体を識別し、これらの人物または物体の座標322を決定し得る。カメラクライアント320はまた、カメラクライアント320がいつ特定のフレーム320を受信したかを示すタイムスタンプ324を(例えば、内部クロック304を使用することによって)生成し得る。カメラクライアント320は、さらなる処理のために、これらのタイムスタンプ324および座標322をカメラサーバ225に通信する。
【0080】
図3G~
図3Iは、店舗100での事象が展開する場合のカメラクライアント210の動作を示す。この事象中、例えば、第1の買物客105(例えば、男性)が店舗100内の棚から商品130を取り出し、第2の買物客105(例えば、女性)がその棚に向かって移動する。カメラクライアント320は、ビデオ302のフレーム320を分析して、フレーム320内の男性および女性の座標322を決定する。
【0081】
図3Gに見られるように、男性は棚の近くに立っており、女性は棚から離れたところに立っている。2つのカメラ305Aおよび305Bは、空間の上方に配置され、男性と女性および棚のビデオ302をキャプチャする。これらのカメラ305Aおよび305Bは、それらのビデオ302を2つの異なるカメラクライアント220Aおよび220Bに送る。カメラ305Aは、ビデオ305をカメラクライアント220Aに送る。カメラ305Bは、ビデオ305をカメラクライアント220Bに送る。
【0082】
カメラクライアント220Aは、カメラ305Aから、ビデオ305、具体的にはそのビデオ305のフレーム320Aを受信する。カメラクライアント220Aは、フレーム320Aを処理する。フレーム320Aに見られるように、男性は棚の近くに立っており、女性は棚から離れたところに立っている。カメラクライアント220Aは、フレーム320Aを処理して、男性および女性の周りの境界エリア325Aおよび325Bを決定する。
図3Gの例では、境界エリア325Aおよび325Bは、それぞれ男性および女性を囲む矩形エリアである。境界エリア325Aおよび325Bは、フレーム内の男性および女性の位置を近似する。本開示は、カメラクライアント220が任意の好適な形状および任意の好適なサイズの境界エリア325を決定することを企図する。例えば、境界エリア325は、円形であってもよく、または(例えば、フレーム320内の買物客105の輪郭に従うように)不規則な形状であってもよい。
【0083】
カメラクライアント220Aは、フレーム320Aおよび320B内の境界エリア325Aおよび325Bを画定する座標322(「フレーム座標」とも呼ばれる)を決定する。
図3Gの例では、カメラクライアント228は、境界エリア325Aの座標322(x
1,y
1)および(x
2,y
2)と、境界エリア325Bの座標322(x
3,y
3)および(x
4,y
4)とを決定する。これらの座標322は、物理的空間における絶対座標を表すのではなく、フレーム320A内の座標を表す。カメラクライアント220は、境界エリア325の任意の好適な数の座標322を決定し得る。
【0084】
次いで、カメラクライアント220Aは、フレーム320Aに関する情報を含むフレームデータ330Aを生成する。
図3Gに見られるように、フレームデータ330Aは、カメラ305Aの識別子(例えば、カメラ=1」)を含む。カメラクライアント220Aはまた、フレーム320Aがいつカメラクライアント220Aによって受信されたかを示すタイムスタンプ324を(例えば、内部クロック304を使用して)生成し得る。
図3Gの例では、そのタイムスタンプ324はt
1である。フレームデータ320Aはまた、フレーム320A内の人物または物体に関する情報を含む。
図3Gの例では、フレームデータ330Aは、物体1および物体2に関する情報を含む。物体1は男性に対応し、物体2は女性に対応する。フレームデータ330Aは、男性の座標322(x
1,y
1)および(x
2,y
2)を、男性の高さz
1と共に示す。前述したように、カメラ305は、物体および/または人物の高さを検出することができる3次元カメラであり得る。カメラ305は、男性および女性の高さをカメラクライアント320に提供していてもよい。
図3Gの例では、カメラ305Aは、男性および女性の高さがそれぞれz
1およびz
2であることを検出している可能性がある。フレームデータ330Aはまた、座標322(x
3,y
3)および(x
4,y
4)ならびに高さz
2などの女性についての情報を含む。カメラクライアント220Aは、フレームデータ330Aの準備ができると、フレームデータ330Aをカメラサーバ225に通信し得る。
【0085】
対応する方法で、カメラクライアント220Bは、カメラ305Bからのビデオ302を処理し得る。
図3Gに見られるように、カメラクライアント220Bは、カメラ305Bからフレーム320Bを受信する。カメラ305Bはカメラ305Aとは異なる位置にあるので、フレーム320Bは、フレーム320Aとはわずかに異なる視点で店舗100内の事象を示す。カメラクライアント220Bは、それぞれ男性および女性の周りの境界エリア325Cおよび325Dを決定する。カメラクライアント220Bは、境界エリア325Cのフレーム座標322(x
1,y
1)および(x
2,y
2)と、境界エリア325Dのフレーム座標322(x
3,y
3)および(x
4,y
4)とを決定する。カメラクライアント220Bはまた、カメラクライアント220Bがいつフレーム320Bを受信したかを示すタイムスタンプ324 t
2を(例えば、内部クロック304を使用して)決定および生成する。次いで、カメラクライアント220Bは、フレーム320Bのフレームデータ330Bを生成する。フレームデータ330Bは、フレーム320Bがカメラ305Bによって生成され、t
2でカメラクライアント220Bによって受信されたことを示す。フレームデータ330Bはまた、男性および女性がフレーム320Bにおいて検出されたことを示す。男性は、座標322(x
1,y
1)および(x
2,y
2)に対応し、高さz
1を有する。女性は、座標322(x
3,y
3)および(x
4,y
4)に対応し、高さz
2を有する。カメラクライアント220Bは、フレームデータ320Bの準備ができると、フレームデータ320Bをカメラサーバ225に通信する。
【0086】
フレームデータ330Aおよび330Bに対してカメラクライアント220Aおよび220Bによって生成される座標322は、物理的空間内の座標でなく、特定のフレーム320内の座標であり得る。追加的に、フレームデータ330Aおよび330B内の座標322には同じ下付き文字が用いられているが、これらの座標322が同じであることを意味するものではない。むしろ、カメラ305Aおよび305Bは異なる位置にあるので、フレーム330A内の座標322がフレームデータ330B内の座標322と異なる可能性は高い。カメラクライアント220Aおよび220Bは、物理的空間内ではなくフレーム320内の境界エリア325の座標322を決定している。カメラクライアント220Aおよび220Bは、互いに独立してこれらのローカル座標322を決定する。下付き文字は、個々のカメラクライアント220によって生成された座標322のシーケンスを示す。例えば、(x1,y1)は、カメラクライアント220Aによって生成された第1の座標322と、カメラクライアント220Bによって生成された第1の座標322とを示し、これらは異なる値であってもよい。
【0087】
図3Hでは、店舗100内の事象が進行している。男性はまだ棚のそばに立っており、女性は棚の近くに移動している。カメラクライアント220Aおよび220Bは、カメラ305Aおよび305Bから追加のフレーム320Cおよび320Dを受信する。カメラクライアント220Aは、男性および女性それぞれの境界エリア325Cおよび325Dならびにこれらの境界エリア325の座標322を再び決定する。カメラクライアント220Aは、境界エリア325Cの座標322(x
5,y
5)および(x
6,y
6)ならびに境界エリア325Dの座標322(x
7,y
7)および(x
8,y
8)を決定する。カメラクライアント220Aはまた、フレーム320Cが時間t
3に受信されたことを示すタイムスタンプ324を生成する。カメラクライアント220Aは、フレーム320Cがカメラ305Aによって生成され、t
3にカメラクライアント220Aによって受信されたことを示すフレームデータ330Cを生成する。フレームデータ330Cはまた、フレーム320Cにおいて、男性が座標322(x
5,y
5)および(x
6,y
6)に対応し、高さz
3を有すること、およびフレーム320Cにおいて、女性が座標322(x
7,y
7)および(x
8,y
8)に対応し、高さz
4を有することを示す。
【0088】
同様に、カメラクライアント220Bは、カメラ305Bからフレーム320Dを受信する。カメラクライアント220Bは、それぞれ男性および女性の境界エリア325Eおよび325Fを決定する。次いで、カメラクライアント220Bは、境界エリア325Eの座標322(x5,y5)および(x6,y6)ならびに境界エリア325Fの座標322(x7,y7)および(x8,y8)を決定する。カメラクライアント220Bは、フレーム320Dが時間t4に受信されたことを示すタイムスタンプ324を生成する。カメラクライアント220Bは、フレーム320Dがカメラ305Bによって生成され、t4にカメラクライアント220Bによって受信されたことを示すフレームデータ330Dを生成する。フレームデータ330Dは、フレーム320Dにおいて、男性が座標322(x5,y5)および(x6,y6)に対応し、高さz3を有することを示す。フレームデータ330Dはまた、フレーム320Dにおいて、女性が座標322(x7,y7)および(x8,y8)に対応し、高さz4を有することを示す。カメラクライアント220Aおよび220Bは、フレームデータ330Cおよび330Dの準備ができると、フレームデータ330Cおよび330Dをカメラサーバ225に通信する。
【0089】
図3Iでは、店舗100における事象がさらに進行しており、男性が棚から商品130を取り出している。カメラクライアント220Aは、カメラ305Aからフレーム320Eを受信する。カメラクライアント220Aは、それぞれ男性および女性の周りの境界エリア325Gおよび325Hを決定する。カメラクライアント220Aは、境界エリア325Gの座標322(x
9,y
9)および(x
10,y
10)ならびに境界エリア325Hの座標322(x
11,y
11)および(x
12,y
12)を決定する。カメラクライアント220Aは、フレーム320Eがいつカメラクライアント220Aによって受信されたかを示すタイムスタンプ324を(例えば、内部クロック304を使用することによって)生成する。カメラクライアント220Aは、フレーム320Eがカメラ305Aによって生成され、t
5にカメラクライアント220Aによって受信されたことを示すフレームデータ330Eを生成する。フレームデータ330Eは、フレーム320E内で、男性が座標322(x
9,y
9)および(x
10,y
10)に対応し、高さz
5を有することを示す。フレームデータ330Eはまた、フレーム320Eにおいて、女性が座標322(x
11,y
11)および(x
12,y
12)に対応し、高さz
6を有することを示す。
【0090】
カメラクライアント220Bは、カメラ305Bからフレーム320Fを受信する。カメラクライアント220Bは、それぞれ男性および女性の周りの境界エリア325Iおよび325Jを決定する。カメラクライアント220BAは、境界エリア325Iについて座標322(x9,y9)および(x10,y10)を決定し、境界エリア325Jについて座標322(x11,y11)および(x12,y12)を決定する。カメラクライアント220Bは、フレーム320Fがいつカメラクライアント220Bによって受信されたかを示すタイムスタンプ324を(例えば、内部クロック304を使用することによって)生成する。次いで、カメラクライアント220Bは、フレーム320Fがカメラ305Bによって生成され、t6にカメラクライアント220Bによって受信されたことを示すフレームデータ330Fを生成する。フレームデータ330Fは、フレーム320Fにおいて、男性が座標322(x9,y9)および(x10,y10)に対応し、高さz5を有することを示す。フレームデータ330Fはまた、フレーム320Fにおいて、女性が座標322(x11,y11)および(x12,y12)に対応し、高さz6を有することを示す。カメラクライアント220Aおよび220Bは、フレームデータ330Eおよび330Fの準備ができると、それらをカメラサーバ225に通信する。
【0091】
4.カメラサーバ
図3J~
図3Pは、カメラサブシステム202内のカメラサーバ225の動作を示す。一般に、カメラサーバ225は、カメラサブシステム202内のカメラクライアント220からフレームデータ330(例えば、330A~330F)を受信する。カメラサーバ225は、フレームデータ330内のタイムスタンプ324に基づいて、フレームデータ330を特定の時間窓332に同期および/または割り当てる。次いで、カメラサーバ225は、特定の時間窓に割り当てられた情報を処理して、それらの時間窓332の間の空間内の人物および/または物体の物理的位置を決定する。
【0092】
図3Jでは、カメラサーバ225は、カメラサブシステム202内のカメラクライアント220からフレームデータ330を受信する。カメラサーバ225は、フレームデータ330内のタイムスタンプ324に応じて、フレームデータ330を時間窓332に割り当てる。前の例を使用して、カメラサーバ225は、タイムスタンプ324 t
1、t
2、およびt
3が第1の時間窓322A内(例えば、時間T0とT1との間)に入り、タイムスタンプ324 t
4、t
5、およびt
6が後続の時間窓332B内(例えば、時間T1とT2との間)に入ると決定し得る。結果として、カメラサーバ225は、フレーム320A、320B、および320Cのフレームデータ330を時間窓1 332Aに割り当て、フレーム320D、320E、および320Fのフレームデータ330を時間窓2 332Bに割り当てる。
【0093】
フレームデータ330を時間窓332に割り当てることによって、カメラサーバ225は、カメラサブシステム202内のカメラ305、カメラクライアント220、およびカメラサーバ225の間で発生する非同期化を考慮し得る。時間窓332の持続時間は、非同期化の影響を軽減するために、発生すると予想される非同期化よりも長くなるように設定され得る。例えば、カメラ305およびカメラクライアント220が数ミリ秒だけ非同期化すると予想される場合、非同期化を打ち消すために、時間窓332を100ミリ秒持続するように設定することができる。このように、カメラサーバ225は、カメラサブシステム202がより多くのカメラ305およびカメラクライアント220を含むことによってより大きな空間を扱うようにスケーリングされるので、非同期化の影響を軽減することができる。
図3Jの例では、カメラサーバ225は、時間窓1 332Aの持続時間をT0からT1までに設定し、時間窓2 332Bの持続時間をT1からT2までに設定する。カメラサーバ225は、非同期化の影響を軽減するために、時間窓332の持続時間を任意の好適な量に設定することができる。特定の実施形態では、T0は、カメラサブシステム202内のカメラ305が初期化を終了した時間であり得る。
【0094】
図3Kは、カメラサーバ225がカーソル335を使用してフレームデータ330を時間窓332に割り当てる実施形態を示す。各カーソル335は、カメラサブシステム202内の特定のカメラクライアント220に対応し得る。
図3Kの例では、カーソル335Aはカメラクライアント1 220Aに対応し、カーソル335Bはカメラクライアント3 220Cに対応し、カーソル335Cはカメラクライアント2 220Bに対応する。各カーソル335は、特定の時間窓332を指す。フレームデータ330がカメラクライアント220から受信されると、そのフレームデータ330は、一般に、そのカメラクライアント220のカーソル335が指す時間窓332に割り当てられる。例えば、フレームデータ330がカメラクライアント1 220Aから受信される場合、そのフレームデータ330は一般に、カーソル335Aが時間窓1 332Aを指し示しているので、時間窓1 332Aに割り当てられる。
【0095】
カメラサーバ225は、カーソル335に対応するカメラクライアント220からフレームデータ330が受信されたとき、カーソル335Aを進めるべきかを決定し得る。そのフレームデータ330が、後続の時間窓332に属するタイムスタンプ324を有する場合、カメラサーバ225は、カーソル335をその時間窓332に進め、それによって、カメラサーバ225が、以前の時間窓332に属するカメラクライアント220からフレームデータ330をこれ以上受信することを期待していないことを示し得る。このように、カメラサーバ225は、フレームデータ330が受信されるときにすべての時間窓332をチェックすることなく、フレームデータ330を時間窓332に迅速かつ効率的に割り当てることができる。例えば、カメラクライアント2 220Bがカメラクライアント1 220Aおよびカメラクライアント3 220Cよりも情報を送るのが速い場合、カーソル335Cはカーソル335Aおよび335Bよりもはるかに先に進むことができる。カメラサーバ225がカメラクライアント2 220Bからフレームデータ330を受信するとき、カメラサーバ225は、フレームデータ330がどの時間窓332に割り当てられるべきかを決定するために、時間窓1 332Aから始まるすべての時間窓332をチェックする必要はない。むしろ、カメラサーバ225は、カーソル335Cが指し示す時間窓332から開始することができる。換言すれば、カメラサーバ225は、最初に、カメラクライアント2 220Bからのフレームデータ330内のタイムスタンプ324が時間窓1 332A内に入る時間を示すかどうかをチェックして、次いで、その時間が時間窓2 332B内に入るかどうかをチェックする必要はない。代わりに、カメラサーバ225は、最初に、その時間が時間窓3 332C内に入るかどうかをチェックし、その時間が時間窓1 332Aおよび時間窓2 332B内に入るかどうかのチェックを無視することができる。結果として、フレームデータ330は、正しい時間窓332に迅速かつ効率的に割り当てられる。
【0096】
図3Lは、カメラサーバ225が、特定の時間窓332に割り当てられているフレームデータ330の処理に移っている様子を示す。一般に、カメラサーバ225は、特定の時間窓332に割り当てられたフレームデータ330が処理の準備ができていると決定し得る。この決定に応答して、カメラサーバ225は、フレームデータ330を特定の時間窓332からタスクキュー336に移動させ得る。次いで、タスクキュー336内の情報が処理されて、特定の時間窓332中の空間内の人物または物体の物理的位置が決定される。
【0097】
カメラサーバ225は、特定の時間窓332に割り当てられたフレームデータ330が、任意の好適な方法での処理の準備ができていると決定する。例えば、カメラサーバ225は、特定の時間窓332が十分な数のカメラ305からのフレーム320に対するフレームデータ330を有するときに、その時間窓332が処理の準備ができていると決定し得る。カメラサーバ225は、この決定を行うためにしきい値338を使用し得る。特定の時間窓332に、しきい値338を超える数のカメラ305からのフレーム320に対するフレームデータ330が割り当てられている場合、カメラサーバ225は、その時間窓332が処理の準備ができていると決定し、その時間窓332の情報をタスクキュー336に移動させ得る。例えば、しきい値338は、時間窓332が処理の準備ができる前に12台のカメラ305のアレイ300のうちの10台のカメラ305からのフレーム320に対するフレームデータ330が受信される必要があることを示すと仮定する。時間窓332が8台のカメラ305のみからのフレーム320に対するフレームデータ330を含む場合、カメラサーバ225は、時間窓332が処理の準備ができていないと決定し、結果として、時間窓332は、追加のカメラ305からのフレーム320に対するフレームデータ330が割り当てられるのを待つ。時間窓332が10台以上のカメラ305からのフレーム320に対するフレームデータ330を受信すると、カメラサーバ225は、時間窓332が処理の準備ができていると決定し、時間窓332内のフレームデータ330をタスクキュー336に移動させる。
【0098】
カメラサーバ225はまた、後続の時間窓332が、しきい値338を超える数のカメラ305からのフレーム320に対するフレームデータ330を受信したときに、特定の時間窓332が処理の準備ができていると決定し得る。前の例を使用すると、時間窓1 332Aが8台のカメラからのフレーム320に対するフレームデータ330を割り当てられていたとしても、カメラサーバ225は、時間窓2 332Bが10台以上のカメラ305からの(例えば、カメラアレイ300内のすべてのカメラ305からの)フレーム320に対するフレームデータ330を割り当てられているときには、時間窓1 332Aが処理の準備ができていると決定し得る。このシナリオでは、カメラサーバ225は、十分な数のカメラ305からのフレーム320に対するフレームデータ330が後続の時間窓2 332Bに割り当てられているので、追加のフレームデータ330が時間窓1 332Aに割り当てられないと仮定し得る。これに応答して、カメラサーバ225は、時間窓1 332A内のフレームデータ330をタスクキュー336に移動させる。
【0099】
カメラサーバ225はまた、特定の時間窓332が特定の時間期間の間処理を待っているとき、その時間窓332が処理の準備ができていると決定し得る。例えば、エラーまたはバグがシステム内で発生し、いくつかのカメラ305からのフレーム320が送られなかったり失われたりした場合、時間窓332は、十分な数のカメラ305からのフレーム320に対するフレームデータ330を受信しない可能性がある。結果として、その時間窓332に対する処理は、停滞するか、または遅延する可能性がある。カメラサーバ225は、タイムアウトまたはエージアウトを使用し得、時間窓332は、これを超えて処理を待つことはない。したがって、時間窓332がタイムアウトまたはエージアウトを超える特定時間期間の間処理されなかった場合、カメラサーバ225は、その時間窓332内のフレームデータ330をタスクキュー336に送り得る。前の例を使用して、タイムアウトが200ミリ秒であると仮定する。時間窓1 332Aが200ミリ秒を超えて8台のカメラ305からのフレーム320のフレームデータ330で止まっている場合、カメラサーバ225は、時間窓1 332Aが追加のフレームデータ330を十分長く待っており、時間窓1 332Aが処理の準備ができていると決定し得る。これに応答して、カメラサーバ225は、時間窓1 332A内のフレームデータ330をタスクキュー336に移動させる。
【0100】
特定の実施形態では、時間窓332がタイムアウトまたはエージアウトすると、カメラサーバ225は、将来の時間窓332がタイムアウトまたはエージアウトする可能性が低くなるように、しきい値338を調整し得る。例えば、カメラサーバ225は、時間窓332がタイムアウトまたはエージアウトしたとき、しきい値338を下げ得る。同様に、カメラサーバ225は、後続の時間窓332がタイムアウトまたはエージアウトしないとき、しきい値338を増加させ得る。カメラサーバ225は、特定の時間窓332について情報を送ったカメラ305の数に基づいてしきい値338を調整し得る。例えば、特定の時間窓332が、8台のカメラ305からのフレーム320に対するフレームデータ330を有し、しきい値338が10台のカメラ305であるときにタイムアウトまたはエージアウトした場合、カメラサーバ225は、しきい値338を8台のカメラにより近い値に下げ得る。結果として、その時間窓332は、十分な数のカメラ305からのフレーム320に対するフレームデータ330を有し、タスクキュー336に移動され得る。後続の時間窓332が、9台のカメラ305からのフレーム320に対するフレームデータ330を受信したためにタイムアウトしないとき、カメラサーバ225は、9台のカメラ305に合わせてしきい値338を調整し得る。このように、カメラサーバ225は、しきい値338を動的に調整して、バグ、エラー、および/または待ち時間がカメラサブシステム202において遅延を引き起こすことを防止し得る。
【0101】
特定の実施形態では、カメラサーバ225は、時間窓332を順次処理する。換言すれば、カメラサーバ225は、前の時間窓332が処理の準備ができるまで、後続の時間窓332を処理しない。
図3Lの例では、カメラサーバ225は、時間窓1 332Aがタスクキュー336に入れられるまで、時間窓2 332Bをタスクキュー336に入れられないであろう。このように、店舗100内の事象の進行が順次(例えば、事象が展開するにつれて)評価され、これにより、店舗100内の人物の位置を適切に追跡することができる。時間窓332が順次評価されなかった場合、追跡システム132には、店舗100内の事象が異なる誤った順序で進行したように見える可能性がある。
【0102】
図3Mは、カメラサーバ225のタスクキュー336を示す。
図3Mに示すように、タスクキュー336は、2つの時間窓332からのフレームデータ330を含む。タスクキュー336の先頭には、フレーム320A、320Bおよび320Cに対するフレームデータ330がある。タスクキュー336においてフレーム320D、320Eおよび320Fに対するフレームデータ330が続く。カメラサーバ225は、タスクキュー336内のエントリを順番に処理することができる。したがって、カメラサーバ225は、最初にタスクキュー336の第1のエントリを処理し、フレーム320A、320B、および320Cに対するフレームデータ330を処理し得る。カメラサーバ225は、タスクキュー336のエントリを処理し、次いで、そのエントリを結果キューに移動させる。
【0103】
タスクキュー336のエントリを処理するために、カメラサーバ225は、同じカメラ320によって検出された同じ物体の座標322を結合またはクラスタ化して、その物体の結合座標332を計算し得る。この処理の結果、各時間窓332は、カメラ305別に物体あたり1セットの座標322のみを含むはずである。この処理の後、結合座標322は、結果キューに入れられる。
図3Nは、カメラサーバ225の結果キュー340を示す。
図3Nに見られるように、結果キュー340は、2つの時間窓332についての結合座標332を含む。
【0104】
一例として、カメラサーバ225は、最初に、フレーム320A、320B、および320Cに対するフレームデータ330を含む、タスクキュー336内の第1のエントリを処理する。フレーム320Aおよび320Cは、同じカメラ320Aからのものである。結果として、カメラサーバ225は、フレーム320Aおよび320Cに対するフレームデータ330Aおよび330Cを使用して、カメラ320Aによって検出された人物または物体の結合座標322を計算し得る。
図3Nに見られるように、カメラサーバ225は、カメラ1 305Aによって検出された物体1の結合座標322(x
13,y
13)および(x
14,y
14)ならびに結合高さ(combined height)z
7と、カメラ1 305Aによって検出された物体2の結合座標322(x
15,y
15)および(x
16,y
16)ならびに結合高さz
8とを決定している。これらの結合座標322および結合高さは、第1の時間窓332A中にカメラ305Aによって受信されたビデオフレーム302における男性および女性の結合座標322および結合高さである。同様に、カメラサーバ225は、第1の時間窓332A中にカメラ2 305Bによって検出された物体の結合座標322および結合高さを決定し得る。例えば、カメラサーバ225は、フレーム320Bに対するフレームデータ330B(および第1の時間窓332A中にカメラ2 305Bによって受信された任意の他のフレーム320に対するフレームデータ330)を使用して、カメラ2 305Bによって検出された物体1の結合座標322(x
13,y
13)および(x
14,y
14)ならびに結合高さz
7と、カメラ2 305Bによって検出された物体2の結合座標322(x
15,y
15)および(x
16,y
16)ならびに結合高さz
8とを決定し得る。カメラサーバ225は、このように、第1の時間窓332Aにおいてカメラ305によって検出された各物体の結合座標322を決定し得る。
【0105】
次いで、カメラサーバ225は、第2の時間窓332B中にカメラ305によって検出された物体の結合座標322を同様に決定する。例えば、カメラサーバ225は、フレーム320Eに対するフレームデータ330E(および第2の時間窓332B中にカメラ1 305Aによって受信された任意の他のフレーム320に対するフレームデータ330)を使用して、カメラ1 305Aによって検出された物体1の結合座標322(x
17,y
17)および(x
18,y
18)ならびに結合高さz
9と、カメラ1 305Aによって検出された物体2の結合座標322(x
19,y
19)および(x
20,y
20)ならびに結合高さz
10とを決定し得る。カメラサーバ225はまた、フレーム320Dおよび320Fに対するフレームデータ330Dおよび330Fを使用して、カメラ2 305Bによって検出された物体1の結合座標322(x
17,y
17)および(x
18,y
18)ならびに結合高さz
9と、カメラ2 305Bによって検出された物体2の結合座標322(x
19,y
19)および(x
20,y
20)ならびに結合高さz
10とを決定し得る。カメラサーバ225は、任意の好適な方法で結合座標322および結合高さを計算する。例えば、カメラサーバ225は、特定の時間窓332において同じカメラ305によって検出された特定の物体の座標322および高さの平均をとることによって、結合座標322および結合高さを計算し得る。
図3Mの例を使用すると、カメラサーバ225は、フレームデータ330Aおよび330Cからの座標322(x
1,y
1)および(x
5,y
5)の平均をとることによって、カメラ1 305Aについての結合座標322(x
13,y
13)を計算し得る。同様に、カメラサーバ225は、フレームデータ330Aおよび330Cからの座標322(x
2,y
2)および(x
6,y
6)の平均をとることによって、カメラ1 305Aについての結合座標322(x
14,y
14)を決定し得る。カメラサーバ225は、フレームデータ330Aおよび330Cからの高さz
1およびz
3の平均をとることによって、カメラ1 305Aについての結合高さz
7を決定し得る。同様に、カメラサーバ225は、フレームデータ330Dおよび330Fからの座標322(x
5,y
5)および(x
9,y
9)の平均をとることによって、カメラ2 305Bについての結合座標322(x
17,y
17)を決定し得る。同様に、カメラサーバ225は、フレームデータ330Dおよび330Fからの座標322(x
6,y
6)および(x
10,y
10)の平均をとることによって、カメラ2 305Bについての結合座標322(x
18,y
18)を決定し得る。カメラサーバ225は、フレームデータ330Dおよび330Fからの高さz
3およびz
5の平均をとることによって、カメラ2 305Bについての結合高さz
9を決定し得る。カメラサーバ225がこれらの平均をとるのは、これらが同じ時間窓332中に同じカメラ305によって決定された同じ物体の座標322および高さであるからである。
【0106】
カメラサーバ225は、同様のプロセスにしたがって、カメラ1 305Aおよび2 305Bによって検出された物体2の結合座標を決定または計算し得る。カメラサーバ225は、フレームデータ330Aおよび330Cからの座標322(x3,y3)および(x7,y7)の平均をとることによって、カメラ1 305Aについての結合座標322(x15,y15)を計算し得る。同様に、カメラサーバ225は、フレームデータ330Aおよび330Cからの座標322(x4,y4)および(x8,y8)の平均をとることによって、カメラ1 305Aについての結合座標322(x16,y16)を決定し得る。カメラサーバ225は、フレームデータ330Aおよび330Cからの高さz2およびz4の平均をとることによって、カメラ1 305Aについての結合高さz8を決定し得る。同様に、カメラサーバ225は、フレームデータ330Dおよび330Fからの座標322(x7,y7)および(x11,y11)の平均をとることによって、カメラ2 305Bについての結合座標322(x19,y19)を決定し得る。同様に、カメラサーバ225は、フレームデータ330Dおよび330Fからの座標322(x8,y8)および(x12,y12)の平均をとることによって、カメラ2 305Bについての結合座標322(x20,y20)を決定し得る。カメラサーバ225は、フレームデータ330Dおよび330Fからの高さz4およびz6の平均をとることによって、カメラ2 305Bについての結合高さz10を決定し得る。
【0107】
カメラサーバ225は、任意の他の好適な計算を使用して、結合座標および結合高さを計算する。例えば、カメラサーバ225は、時間窓332中に同じカメラ305によって検出された物体の座標322および高さの中央値をとり得る。カメラサーバ225はまた、クラスタリングプロセスを使用して、結合座標322および結合高さを計算し得る。例えば、カメラサーバ225は、K平均法(K-means clustering)、DBSCAN(Density-based spatial clustering of applications with noise)、k-medoids法、混合ガウスモデル、および階層クラスタリングを使用して、結合座標322および結合高さを計算し得る。
【0108】
カメラサーバ225が結合座標322および結合高さを計算した後に、カメラサーバ225は、時間窓332中に各カメラ305によって検出された各物体の座標322を決定している。しかしながら、カメラサーバ225は、異なるカメラ305によって検出された物体が同じ物体であるかどうかを決定するために追加の処理を実行し得る。カメラサーバ225は、リンク付けおよびホモグラフィを使用して、どのカメラ305によって検出されたどの物体が実際に空間内の同じ人物または物体であるかを決定し得る。次いで、カメラサーバ225は、異なるカメラ305からそれらの物体の結合座標322を取り、ホモグラフィを使用して、時間窓332中の物理的空間内のその人物または物体の物理的位置を決定することができる。このプロセスの実施形態は、「Topview Object Tracking Using a Sensor Array」と題する米国特許出願第_____号(代理人整理番号第090278.0180号)に記載されており、その内容は、その全体が参照により本明細書に組み込まれる。このように、カメラサーバ225は、特定の時間窓332中の空間内の人物および/または物体の物理的位置を決定する。
【0109】
特定の実施形態では、カメラクライアント220はまた、カメラサーバ225と同じ時間窓332を使用して、フレームデータ330をバッチでカメラサーバ225に通信し得る。
図3Oに見られるように、カメラクライアント220は、フレームデータ330内のタイムスタンプ324に基づいてフレームデータ330を時間窓332に割り当てる。カメラクライアント220は、時間窓332が処理の準備ができているとカメラサーバ225が決定するのと同様の方法で、特定の時間窓332がカメラサーバ225に通信される準備ができていると決定し得る。特定の時間窓332の準備ができているとカメラクライアント220が決定すると(例えば、カメラクライアント220に通信可能に結合された各カメラ305がその時間窓332においてフレームを通信したとき)、カメラクライアント220は、その時間窓332に割り当てられたフレームデータ330をバッチとしてカメラサーバ225に通信する。このように、カメラサーバ225がカメラクライアント220からバッチとして時間窓332についてのフレームデータ330を受信するので、カメラサーバ225は、時間窓332にフレームデータ330をより迅速かつ効率的に割り当て得る。
【0110】
特定の実施形態では、カメラサーバ225とカメラクライアント220とが同期していない場合であっても、カメラサーバ225は、(例えば、非同期化された内部クロック302によって、カメラクライアント220からカメラサーバ225までの待ち時間の差によって、カメラクライアント220間の処理速度の差によってなど)発生する非同期化を、フレームデータ330内のタイムスタンプ324を調整することによって考慮することができる。
図3Pは、カメラサーバ225がタイムスタンプ324を調整する様子を示す。前述したように、フレームデータ330は、カメラクライアント220がいつフレーム320を受信したかを示す、カメラクライアント220によって生成されたタイムスタンプ324を含む。
図3Pの例では、フレームデータ330は、カメラクライアント220が時間t
1にフレーム320を受信したことを示す。カメラクライアント220およびカメラサーバ225が同期していない場合、カメラサーバ225は、異なるカメラクライアント220からのタイムスタンプ324が互いに対して正確であることを保証することができないので、タイムスタンプ324 t
1はカメラサーバ225にとって比較的無意味である。したがって、異なるおよび/または複数のカメラクライアント220からのフレームデータ330を正確に分析することは、不可能ではないとしても困難である。
【0111】
カメラサーバ225は、非同期化を考慮するために特定のカメラ305についてのタイムスタンプ324を調整することができる。一般に、カメラサーバ225は、各カメラ305についての遅延を、そのカメラ305からの前のフレーム320の遅延を追跡することによって決定する。次いで、カメラサーバ225は、決定された遅延によって、そのカメラ305からのフレーム320に対するフレームデータ330についてのタイムスタンプ324を調整する。
図3Pの例では、カメラサーバ225は、カメラ1からの各フレーム320(x)について、そのフレーム320に対するフレームデータ330に示されるタイムスタンプ324(t
xとラベル付けされる)とカメラサーバ225がフレームデータ330を受信した時間(T
xとラベル付けされる)との時間差(Δ
xとラベル付けされる)を決定することによって、カメラ1 305Aについての遅延を決定する。カメラサーバ225は、前のいくつかのフレーム320に対する時間差(Δ
x)を平均することによって平均遅延(Δとラベル付けされる)を計算する。
図3Pの例では、カメラサーバ225は、平均遅延を決定するために、前の30個のフレーム320の時間差を平均する。次いで、カメラサーバは、平均遅延(Δ)をフレームデータ330についてのタイムスタンプ324に加算して、タイムスタンプ324を調整して、非同期化を考慮する。このように、カメラサーバ225および追跡システム132は、カメラクライアント220およびカメラサーバ225が(例えば、クロック同期プロトコルにしたがって)同期されていない場合であっても、適切に機能することができる。
【0112】
5.例示的な方法
図3Qおよび
図3Rは、カメラサブシステム202を動作させる例示的な方法342を示すフローチャートである。特定の実施形態では、カメラサブシステム202の様々な構成要素が方法342のステップを実行する。一般に、方法342を実行することによって、カメラサブシステム202は、空間内の人物または物体の物理的位置を決定する。
【0113】
図3Qに見られるように、方法342Aは、カメラ305Aおよび305Bがフレーム320Aおよび320Dを生成し、それぞれカメラクライアント220Aおよび220Bに通信することから始まる。カメラクライアント220Aおよび220Bは、フレーム320Aおよび320Bにおいて検出された2人の人物の座標322を決定する。これらの座標は、これらの人物の周りの境界エリア325を画定し得る。
【0114】
次いで、カメラ305Aは、フレーム320Bを生成し、フレーム320Bをカメラクライアント220Aに通信する。カメラクライアント220Aは、フレーム320Bに示される2人の人物の座標322を生成する。そのプロセスの間、カメラ305Bはフレーム320Eを生成し、フレーム320Eをカメラクライアント220Bに通信する。次いで、カメラクライアント220Bは、フレーム320Eにおいて検出された2人の人物の座標322を決定する。次いで、カメラ305Aはフレーム320Cを生成し、フレーム320Cをカメラクライアント220Aに通信する。カメラクライアント220Aは、フレーム320Cにおいて検出された2人の人物の座標322を決定する。重要なことに、
図3Qは、カメラ305Aおよび305Bからのフレームが同時にまたは同期して生成および通信されない可能性があることを示す。追加的に、フレーム320において検出された人物の座標は、カメラクライアント220Aおよび220Bにおいて同時にまたは同期して生成されない可能性がある。
【0115】
図3Rは、
図3Qの方法342Aから続く方法342Bを示す。
図3Rに示すように、カメラクライアント220Aは、フレーム320Aにおいて検出された2人の人物の座標322からフレームデータ330を生成する。同様に、カメラクライアント220Bは、フレーム320Dにおいて検出された2人の人物の座標322を用いてフレームデータ330を生成する。カメラクライアント220Aおよび220Bは、フレームデータ330をカメラサーバ225に通信する。カメラクライアント220Aは、フレーム320Bにおいて検出された2人の人物の座標322を使用して追加のフレームデータ330を生成する。次いで、カメラクライアント220Aは、そのフレームデータ330をカメラサーバ225に通信する。カメラサーバ225は、フレームデータ330を時間窓332に割り当て得る。カメラサーバ225は、ステップ344において、その時間窓332が処理の準備ができていると決定し、それに応答して、ステップ346において、その時間窓332におけるフレームデータ330をタスクキュー336内に入れ得る。次いで、カメラサーバ225は、ステップ348において、その時間窓322における座標322を結合またはクラスタ化して、結合座標322を決定し得る。例えば、カメラサーバ225は、その時間窓における座標322を平均して、その時間窓332中に異なるカメラ305によって検出された人物の結合座標322を決定し得る。次いで、カメラサーバ225は、ステップ350において、異なるカメラ305によって検出された人物を空間内の人物にマッピングし得る。次いで、カメラサーバ225は、ステップ352において、その時間窓332中の人物の位置を決定し得る。カメラサーバ225は、これらの決定された位置を中央サーバ240に通信する。
【0116】
図3Qおよび
図3Rに示す方法342に修正、追加、または省略を行ってもよい。方法342は、より多くの、より少ない、または他のステップを含んでもよい。例えば、ステップは、並行してまたは任意の好適な順序で実行され得る。ステップを実行するカメラサブシステム202の特定の構成要素として説明したが、カメラサブシステム202の任意の好適な構成要素が、方法の1つまたは複数のステップを実行してもよい。
【0117】
6.他の特徴
特定の実施形態では、カメラサブシステム202は、カメラサブシステム202の第1のカメラアレイ300と連携して動作する第2のカメラアレイを含み得る。
図3Sは、2つのカメラアレイ300および354を含む実施形態を示す。カメラアレイ300はカメラ305Mを含む。カメラアレイ354はカメラ305Nを含む。カメラ305Nは、カメラ305Mと同様に動作し、
図3A~
図3Rを使用して説明した技法と同じ技法を使用して空間内の物体および/または人物の位置を決定するために使用され得る。
【0118】
各カメラ305Nは、カメラアレイ300のカメラ305 Mからわずかにオフセットされて配置される。このように、カメラ305Mは、カメラ305Nによってキャプチャされたビデオと同様のビデオをキャプチャする。特定の実施形態では、カメラ305Nと比べて、カメラ305Mは異なるバージョンのソフトウェアを使用し得るか、またはカメラ305Mからのビデオを処理するために異なるバージョンのソフトウェアが使用され得る。このように、カメラ305Nに対してより新しいソフトウェアを実行して、そのソフトウェアの有効性をテストすることができる。カメラ305Mが、以前のソフトウェアを依然として使用し得ると同時に、カメラ305N上で実行される新しいソフトウェアの動作と比較するためのベースラインとしても機能するので、そのソフトウェアのテストはカメラサブシステム202の動作を中断しない。例えば、新しいソフトウェアによって提供される位置追跡の精度を決定し、古いソフトウェアによって提供される精度と比較することができる。新しいソフトウェアが古いソフトウェアよりも精度が低い場合、古いソフトウェアを使用し続けるべきである。
【0119】
特定の実施形態では、カメラサーバ225がカメラクライアント220からのフレームデータ330に基づいて人物の位置を決定することができない場合、カメラサーバ225は、カメラクライアント220または共有メモリからビデオ映像を取り出すことができる。
図3Tは、カメラサーバ225がカメラクライアント220および/または共有メモリ356からビデオ302を取り出す様子を示す。一般に、カメラクライアント220は、カメラから受信したビデオをローカルにまたは共有メモリ356に記憶する。カメラサーバ225がフレームデータ330に基づいて人物の位置を決定することができない場合、そのビデオ302はカメラサーバ225に利用可能にされる。カメラサーバ225は、ビデオ302を分析して、空間内の人物の位置を決定し得る。カメラサーバ225は、生のビデオ映像をカメラクライアント220よりも良好で正確に分析し得、したがって、カメラサーバ225は、カメラクライアント220よりも正確なフレームデータ330を生成し得る。いくつかの実施形態では、カメラサーバ225は、別のカメラクライアント220からのフレームデータ330と
競合するかまたは揃わない、1つのカメラクライアント220からのフレームデータ330を有し得る。カメラサーバ225は、生のビデオ映像を取り出して、どのフレームデータ330を受け入れて使用すべきかを決定することができる。
図3Tの例では、カメラクライアント220Aは、ビデオ302Aをローカルにまたは共有メモリ356に記憶する。カメラクライアント220Bは、ビデオ302Bをローカルにまたは共有メモリ356に記憶する。カメラサーバ225がフレームデータ330に基づいて人物の位置を決定できない場合、カメラサーバ225は、カメラクライアント220Aおよび/または共有メモリ356に要求358を送る。それに応答して、カメラクライアント220Aおよび/または共有メモリ356は、ビデオ302Aをカメラサーバ225に送る。次いで、カメラサーバ225は、ビデオ302Aを分析して、空間内の人物の位置を決定し得る。
【0120】
III.光検出および測距(LiDAR)サブシステム
追跡システム132の特定の実施形態は、LiDARサブシステム204を含む。
図4A~
図4Dは、LiDARサブシステム204および追跡システム132内のその動作を示す。一般に、LiDARサブシステム204は、LiDARセンサおよびLiDARサーバを使用して、物理的空間内の人物および/または物体の位置を追跡する。LiDARサブシステム204は、空間内の人物および/または物体の位置を追跡するために、単独で、または他のサブシステム(例えば、カメラサブシステム202)と併せて使用され得る。
【0121】
図4Aは、例示的なLiDARサブシステム204を示す。
図4Aに見られるように、LiDARサブシステム204は、LiDARアレイ400とLiDARサーバ230とを含む。一般に、LiDARアレイ400内のLiDARセンサ405は、空間内の人物および/または物体の存在を検出し、これらの人物および/または物体の座標を決定する。LiDARサーバ230は、これらの座標を処理して、空間内の人物および/または物体の物理的位置を決定する。
【0122】
LiDARアレイ400は、LiDARセンサ405のアレイである。LiDARアレイ400は、空間内の人物および/または物体の存在および位置を検出するために、物理的空間の上方に配置され得る。
図4Aの例では、LiDARアレイ400は、LiDARセンサ405の3×4アレイである。LiDARアレイ400は、任意の好適な寸法のアレイに配置された任意の好適な数のLiDARセンサ405を含む。
【0123】
各LiDARセンサ405は、物理的空間の一部内の人物および/または物体の存在を検出する。一般に、LiDARセンサ405は、空間内に光パルスを放出する。これらの光パルスは、光パルスが空間内の人物および/または物体に接触すると、LiDARセンサ405に向かって反射される。LiDARセンサ405は、光パルスの戻り時間および戻り光パルスの波長などの反射された光パルスの特性を追跡して、物理的空間内の人物および/または物体の存在を検出する。LiDARセンサ405はまた、検出された人物および/または物体の座標を決定し得る。LiDARセンサ405は、検出された人物および/または物体の座標をLiDARサーバ230に通信する。
【0124】
LiDARセンサ405は、任意の好適な方法でLiDARサーバ230に通信可能に結合され得る。例えば、LiDARセンサ405は、LiDARサーバ230に配線接続され得る。別の例として、LiDARセンサ405は、任意の好適な無線規格(例えば、WiFi)を使用してLiDARサーバ230にワイヤレスに結合され得る。LiDARセンサ405は、検出された人物および/または物体の座標を、通信媒体を通してLiDARサーバ230に通信する。
【0125】
図4Bは、LiDARセンサ405がLiDARサーバ230に座標410を通信する様子を示す。一般に、LiDARセンサ405は、反射された光パルスの特性を分析して、空間内の人物および/または物体の座標410を決定する。LiDARセンサ405は、さらなる処理のために、これらの座標410をLiDARサーバ230に通信する。
図4Bの例では、LiDARセンサ405は、空間内の少なくとも2人の人物および/または物体の座標410を検出する。これらの人物および/または物体の座標410は、(x
1,y
1)および(x
2,y
2)である。LiDARセンサ405は、さらなる処理のために、これらの座標410をLiDARサーバ230に通信する。
【0126】
図4Cは、LiDARサーバ230の一般的な動作を示す。
図4Cに見られるように、LiDARサーバ230は、LiDARセンサ405から受信した座標410を処理する。LiDARサーバ230は、カメラサーバ225がフレームデータ330を時間窓332に割り当てるのと同様に、座標410を時間窓332に割り当てる。例えば、LiDARサーバ230は、LiDARサーバ230がLiDARセンサ405から座標410を受信した時間に基づいて、座標410を特定の時間窓332に割り当て得る。
【0127】
LiDARサーバ230は、時間窓332に割り当てられた座標410を処理して、空間内の人物および/または物体の物理的位置を決定し得る。
図4Cの例では、LiDARサーバ230は、2つの異なるLiDARセンサ405から2人の人物の座標410を受信する。あるLiDARセンサ405は、2人の人物の座標410(x
1,y
1)および(x
2,y
2)をそれぞれ提供する。別のLiDARセンサ405は、同じ2人の人物の座標410(x
1,y
1)および(x
2,y
2)をそれぞれ提供する。カメラクライアント220およびカメラサーバ225と同様に、これらの座標410の下付き文字は、これらの座標410が同じ値を有することを示すことを意味するのではなく、むしろ、これらが特定のLiDARセンサ405によって提供される第1および第2の座標410であることを意味する。
【0128】
LiDARサーバ230は、これらの座標410を使用して、空間内の人物の物理的位置を決定する。カメラサーバ225と同様に、LiDARサーバ230は、2つの異なるLiDARセンサ405によって提供された座標410が物理的空間内の同じ人物に対応すると決定し得る。それに応答して、LiDARサーバ230は、これらの座標410を取りホモグラフィを使用して、特定の時間窓332における物理的空間内の人物の位置を決定し得る。
図4Cの例では、LiDARサーバ230は、座標410を使用して、時間窓332中の第1の人物の位置が(x
3,y
3)であると決定する。LiDARサーバ230はまた、座標410を使用して、時間窓332中の第2の人物の物理的位置が(x
4,y
4)であると決定する。LiDARサーバ230は、さらなる処理のために、これらの物理的位置を中央サーバ240に通信する。
【0129】
図4Dは、追跡システム132におけるLiDARサブシステム204の動作のための方法415を示す。一般に、LiDARサブシステム204は、物理的空間内の人物および/または物体の位置を決定するために、方法415を実行する。
【0130】
LiDARセンサ405は、検出された人物の座標410を決定し、これらの座標410をLiDARサーバ230に通信する。LiDARセンサ405は、光パルスを放出し、光パルスが反射されてLiDARセンサ405に戻ったときにその光パルスの特性を分析することによって、これらの座標410を決定し得る。例えば、LiDARセンサ405は、反射された光パルスの戻り時間および/または反射された光パルスの波長を分析して、人物が物理的空間に存在するかどうか、およびその人物の座標410を決定し得る。
【0131】
LiDARサーバ230は、ステップ416において、LiDARセンサ405からの座標410を分析して、第1の時間窓332中の物理的空間内の人物の位置を決定する。次いで、LiDARサーバ230は、これらの位置を中央サーバ240に通信する。LiDARセンサ405は、その後、検出された人物の座標410を決定し、これらの座標410をLiDARサーバ230に通信し得る。LiDARサーバ230は、ステップ418において、後続の時間窓332におけるこれらの人物の位置を再び決定し、これらの位置を中央サーバ240に通信し得る。
【0132】
カメラサブシステム202と同様に、中央サーバ240は、これらの位置を使用して、どの人物が特定の時間窓332中に空間から商品130を取り出したかを決定し得る。中央サーバ240の動作については、
図6Aから
図6Cを使用してより詳細に説明する。
【0133】
図4Dに示される方法415に修正、追加、または省略を行ってもよい。方法415は、より多くの、より少ない、または他のステップを含んでもよい。例えば、ステップは、並行してまたは任意の好適な順序で実行され得る。LiDARサブシステム204の構成要素がステップを実行するものとして説明したが、例えば中央サーバ240などの追跡システム132の任意の好適な構成要素が、方法の1つまたは複数のステップを実行してもよい。
【0134】
IV.重量サブシステム
追跡システム132は、重量センサ215および重量サーバ235を含む重量サブシステム206を含む。一般に、重量センサ215は、重量センサ215の上方または近傍に配置された商品の重量を検出する。重量センサ215は、商品を保持する従来いないラック115上に配置されてもよい。重量サーバ235は、重量センサ215によって検出された重量を追跡して、商品130がラック115から取り出されたかどうかおよびいつ取り出されたかを決定する。重量センサ215、ラック115、および重量サーバ235は、
図5Aから
図5Jを使用してより詳細に説明される。
【0135】
図5Aは、重量サブシステム206の例示的な重量センサ500を示す。
図5Aに見られるように、重量センサ500は、プレート510Aおよび510Bと、ロードセル505A、505B、505C、および505Dと、ワイヤ515A、515B、515C、515D、および520とを含む。一般に、重量センサ500の構成要素は、重量センサ500が重量センサ500の上方または近傍に配置された商品130の重量を検出することができるように組み立てられる。
【0136】
プレート510は、表面にわたって商品130の重量を分散させる表面を形成する。プレート510は、例えば、金属および/またはプラスチックなどの任意の好適な材料から作製され得る。商品130は、プレート510の上方または近傍に配置され得、これらの商品130の重量はプレート510にわたって分散され得る。
【0137】
ロードセル505は、プレート510Aと510Bとの間に配置される。ロードセル505は、ロードセル505が経験する重量に基づいて電気信号を生成する。例えば、ロードセル505は、入力された機械力(例えば、重量、張力、圧縮、圧力、またはトルク)を出力電気信号(例えば、電流または電圧)に変換するトランスデューサであり得る。入力される力が増加するにつれて、比例して出力電気信号が増加し得る。ロードセル505は、任意の好適なタイプのロードセル(例えば、油圧式、空気圧式、および歪みゲージ)であってもよい。ロードセル1310は、形状が円筒形であるように図示されているが、それらは、企図される特定の実装形態に適した任意の好適なサイズおよび形状であってもよい。
【0138】
ロードセル505からの信号を分析して、重量センサ500の上方または近傍に配置された商品130の総重量を決定し得る。ロードセル505は、重量センサ500の上方または近傍に配置された商品130の重量が各ロードセル505に均等に分散されるように配置され得る。
図5Aの例では、ロードセル505は、プレート510Aおよび510Bのコーナーから実質的に等距離に配置される。例えば、ロードセル505Aは、プレート510Aおよび510Bのコーナーから距離d1に配置される。ロードセル505Bは、プレート510Aおよび510Bのコーナーから距離d2に配置される。ロードセル505Cは、プレート510Aおよび510Bのコーナーから距離d3に配置される。ロードセル505Dは、プレート510Aおよび510Bのコーナーから距離d4に配置される。距離d1、d2、d3およびd4は、互いに実質的に等しくてもよい。本開示では、距離が5~10ミリメートルだけ異なっても互いに実質的に等しいと考えられることを企図する。ロードセル505をプレート510Aおよび510Bのコーナーから実質的に等距離に配置することによって、重量センサ500の上方または近傍に配置された商品の重量は、ロードセル505にわたって均等に分散される。結果として、重量センサ500の上方または近傍に配置された商品の総重量は、個々のロードセル505が経験する重量を合計することによって決定され得る。
【0139】
ロードセル505は、ロードセル505が経験する重量を示す電気信号を通信する。例えば、ロードセル505は、ロードセル505が経験する重量または力に応じて変化する電流を生成し得る。各ロードセル505は、電気信号を搬送するワイヤ515に結合される。
図5Aの例では、ロードセル505Aはワイヤ515Aに結合され、ロードセル505Bはワイヤ515Bに結合され、ロードセル505Cはワイヤ515Cに結合され、ロードセル505Dはワイヤ515Dに結合される。ワイヤ515は、まとめられ、重量センサ500から離れる方向に延在するワイヤ520を形成する。ワイヤ520は、ロードセル505によって生成された電気信号を回路基板に搬送し、回路基板は、その信号を重量サーバ235に通信する。
【0140】
重量センサ500は、商品を保持するように設計された従来にないラック115に配置され得る。
図5Bは、例示的なラック525を示す。
図5Bに見られるように、ラック525は、ベース530と、1つまたは複数のパネル535と、1つまたは複数の棚540とを含む。一般に、ベース530はラック525の底部にあり、ラック525の他の構成要素のための土台を形成する。パネル535は、ベース530から垂直上方に延在する。棚540は、パネル535および/またはベース530に結合する。例えば、2つの棚540は、パネル535に結合しており、パネル535から離れる方向に延在し得る。一般に、パネル535およびベース530は、棚540が棚540上に配置された商品の重量を保持することを可能にする。重量センサ500は、棚540上に配置された商品の重量を検出するために、棚540内に配置され得る。
【0141】
図5Cは、ラック525の分解図を示す。
図5Cに見られるように、ベース530は、いくつかの表面532を使用して形成される。表面532Aは、ベース530の底面を形成する。表面532Bおよび532Dは、ベース530の側面を形成する。表面532Cは、ベース530の背面を形成する。表面532Eは、ベース530の上面を形成する。本開示は、ベース530が、例えば、木材、金属、ガラス、および/またはプラスチックなどの任意の好適な材料を使用して形成されることを企図する。表面532Aは、表面532B、532C、および532Dに結合され得る。表面532Bは、表面532A、532E、および532Cに結合され得る。表面532Cは、表面532A、532B、532D、および532Eに結合され得る。表面532Dは、表面532A、532C、および532Eに結合され得る。表面532Eは、表面532B、532C、および532Dに結合され得る。表面532B、532Cおよび532Dは、表面532Aから上方に延在する。一般に、表面532A、532B、532C、532D、および532Eは、空間542の周りに箱型構造を形成する。ベース530は、その空間542へのアクセスを可能にするために開くことができる引き出し545を含む。引き出し545は、空間542内に配置される。引き出し545が閉じられているとき、ベース530は、空間542の周りに筐体を形成し得る。引き出し545が開いているとき、空間542へのアクセスは、開いた引き出し545を通して提供され得る。特定の実施形態では、引き出し545ではなく、ドアを使用して空間542へのアクセスを提供することができる。
【0142】
表面532Eは、空間542内へのアクセスも可能にするキャビティ534を画定する。一般に、キャビティ534は、重量センサ500からのワイヤ520が空間542内に延びることを可能にする。
【0143】
パネル535はベース530から上方に延在する。パネル535は、例えば、木材、金属、および/またはプラスチックなどの任意の好適な材料を使用して形成され得る。
図5Cに見られるように、パネル535は、パネル535の幅に沿って延在する1つまたは複数のキャビティ550を画定する。キャビティ550は、重量センサ500からのワイヤ520が、パネル535によって画定された空間552内に延びることを可能にする。一般に、空間552は、パネル535の中空内部である。ワイヤ520は、キャビティ550を通って空間552を下ってキャビティ534に向かって延びている。このように、ワイヤ520は、重量センサ500からベース530内の空間542まで下方に延び得る。各キャビティ550は、パネル535に結合する棚540に対応し得る。
【0144】
各棚540は、パネル535および/またはベース530に結合する。棚540には、重量センサ500が設置されている。棚540は、棚540内に配置された重量センサ500のワイヤ520が重量センサ500からキャビティ550を通って空間552内に延びることができるように、パネル535に結合され得る。次いで、これらのワイヤ520は、空間552を下り、キャビティ534を通って空間542内へと延びる。
【0145】
図5Dおよび
図5Eは、例示的な棚540を示す。
図5Dは、棚540の正面図を示す。
図5Dに見られるように、棚540は、底面560Aと、前面560Bと、背面560Cとを含む。底面560Aは、前面560Bおよび背面560Cに結合される。前面560Bおよび背面560Cは、底面560Aから上方に延在する。複数の重量センサ500は、前面560Bと背面560Cとの間の底面560A上に配置される。各重量センサ500は、棚540の特定の領域555内に配置された商品130の重量を検出するように配置される。各領域555は、仕切り558を使用して指定され得る。特定の領域555内に配置された商品は、その領域555の重量センサ500によって検出され、計量される。本開示は、棚540が、例えば、木材、金属、ガラス、および/またはプラスチックなどの任意の好適な材料を使用して作製されることを企図する。棚540の構造を明確に示すことができるようにワイヤ515および520は
図5Dには図示されていないが、
図5Dからのそれらの省略は、それらの除去と解釈されるべきではない。本開示は、
図5Dの例において、ワイヤ515および520が存在し、重量センサ500に接続されることを企図する。
【0146】
図5Eは、棚540の背面図を示す。
図5Eに見られるように、背面560Cは、キャビティ562を画定する。重量センサ500のワイヤ520は、重量センサ500からキャビティ562を通って延在する。一般に、棚540の背面560Cは、キャビティ562がパネル535のキャビティ550と少なくとも部分的に位置合わせされるようにパネル535に結合される。このように、ワイヤ520は、重量センサ500からキャビティ562およびキャビティ550を通って延びることができる。
【0147】
特定の実施形態では、重量センサ500は、棚540の特定の領域555内に配置された商品の重量を重量センサ500が検出するように、棚540内に配置される。
図5Dおよび
図5Eの例に見られるように、棚540は、4つの重量センサ500の上方に配置された4つの領域555を含む。各重量センサ500は、対応する領域555内に配置された商品の重量を検出する。重量センサ500の配置により、重量センサ500は、その重量センサ500に対応しない領域555に配置された商品130の重量の影響を受けない場合がある。
【0148】
図5Fは、例示的なベース530を示す。
図5Fに見られるように、ベース530はまた、重量センサ500を収容し得る。例えば、重量センサ500は、ベース530の上面532Eに配置され得る。これらの重量センサ500用のワイヤ520は、重量センサ500からキャビティ534を通って空間542内に延び得る。結果として、商品がベース530上に配置され得、それらの重量が重量センサ500によって検出され得る。
【0149】
回路基板565が空間542に配置される。回路基板565は、ラック525の重量センサ500からのワイヤ520が接続するポートを含む。換言すれば、回路基板565は、ベース530上および棚540上に配置された重量センサ500からのワイヤ520に接続する。これらのワイヤ520は、キャビティ534を通って空間542に入り、回路基板565に接続する。回路基板565は、重量センサ500のロードセル505によって生成された電気信号を受信する。次いで、回路基板565は、重量センサ500によって検出された重量を示す信号を重量サーバ235に通信する。引き出し545は、空間542および回路基板565へのアクセスを可能にするために開き得る。例えば、引き出し545を開いて、回路基板565を点検および/または修理することができる。
【0150】
図5Gは、例示的な回路基板565を示す。
図5Gに見られるように、回路基板565は、プロセッサ566と、複数のポート568とを含む。一般に、ポート568は、重量センサ500からのワイヤ520に結合する。本開示は、回路基板565が、ラック525の重量センサ500からのワイヤ520に接続するための任意の好適な数のポート568を含むことを企図する。プロセッサ566は、ポート568から信号を受信して処理する。
【0151】
回路基板565は、任意の好適な媒体を通して重量サーバ235に信号を通信し得る。例えば、回路基板565は、イーサネット接続、ワイヤレス接続(例えば、WiFi)、ユニバーサルシリアルバス接続、および/またはBluetooth接続を通して、重量サーバ230に信号を通信し得る。回路基板565は、重量サーバ235に信号を通信するための接続を自動的に選択することができる。回路基板565は、優先順位に基づいて接続を選択し得る。例えば、イーサネット接続がアクティブである場合、回路基板565は、イーサネット接続を選択して重量サーバ235と通信し得る。イーサネット接続がダウンし、ワイヤレス接続がアクティブである場合、回路基板565は、ワイヤレス接続を選択して重量サーバ235と通信し得る。イーサネット接続およびワイヤレス接続がダウンし、ユニバーサルシリアルバス接続がアクティブである場合、回路基板565は、ユニバーサルシリアルバス接続を選択して重量サーバ235と通信し得る。イーサネット接続、ワイヤレス接続、およびユニバーサルシリアルバス接続がダウンし、Bluetooth接続がアクティブである場合、回路基板565は、Bluetooth接続を選択して重量サーバ235と通信し得る。このように、回路基板565は、特定の通信接続がダウンした場合であっても重量サーバ235と通信し続けることができるので、回路基板565は、回復力が高められている。
【0152】
回路基板565は、様々な接続を介して電力を受け取ることができる。例えば、回路基板565は、回路基板565に電力を供給する電力ポート570を含み得る。電気コンセントに差し込む電気ケーブルは、回路基板565に電力を供給するために電力ポート570に結合し得る。回路基板565はまた、イーサネット接続および/またはユニバーサルシリアルバス接続を通して電力を受け取ってもよい。
【0153】
図5Hは、重量センサ500によって生成された信号572を示す。
図5Hに見られるように、信号572は、重量センサ500によって検出された特定の重量を示すことから開始する。時間t
1頃に、重量センサ500の上方に位置する商品が取られる。結果として、重量センサ500は重量の低下を検出し、信号572は対応する低下を経験する。時間t
1を超えると、信号572は、商品130が取り出されたので、より低い重量の周囲を推移し続ける。本開示は、信号572が環境によって導入されたノイズを含み得るため、信号572が完全に直線的または平滑な信号ではないことを企図する。
【0154】
図5Iは、重量サーバ235の例示的な動作を示す。
図5Iに見られるように、重量サーバ235は、時間t
0において重量センサ500から重量w
0を示す信号572を受信する。カメラサーバ225と同様に、重量サーバ235は、示された時間t
0に基づいて、この情報を特定の時間窓332Aに割り当て得る。後に、重量サーバ235は、時間t
1で新しい重量w
1が検出されたことを示す重量センサ500からの信号572を受信し得る。重量w
1は、重量w
0より小さい場合があり、それによって、商品130が取り出された可能性があることを示す。重量サーバ235は、t
1で示された時間に基づいて、情報を後続の時間窓332Cに割り当てる。
【0155】
重量サーバ235は、追跡システム132の他の構成要素(例えば、カメラクライアント220、カメラサーバ225、および中央サーバ240)の内部クロック304と同期される内部クロック304Eを実装し得る。重量サーバ235は、クロック同期プロトコル(例えば、Network Time Protocolおよび/またはPrecision Time Protocol)を使用して内部クロック304Eを同期させ得る。重量サーバ235は、クロック304Eを使用して、重量センサ500からの信号572が受信された時間を決定し、これらの信号572をそれらの適切な時間窓332に割り当て得る。
【0156】
特定の実施形態では、重量サーバ235における時間窓332は、カメラクライアント220、カメラサーバ225、および/または中央サーバ240における時間窓332と位置合わせされる。例えば、重量サーバ235における時間窓332Aは、
図3Jの例におけるカメラサーバ225での時間窓332Aと開始時間(T0)および終了時間(T1)が同じであり得る。このように、追跡システム132の異なるサブシステムからの情報は、同じ時間窓332にしたがってグループ化され得、これにより、この情報を時間的に互いに相関させることができる。
【0157】
カメラサーバ225と同様に、重量サーバ235は、時間窓332が処理の準備ができると、時間窓332内の情報を順次処理し得る。重量サーバ235は、各時間窓332内の情報を処理して、商品130がその特定の時間窓332中に取り出されたかどうかを決定し得る。
図5Iの例では、重量サーバ235が第3の時間窓332Cを処理するとき、重量サーバ235は、時間窓3 332C中に2つの商品が取られ、それによって、w
0からw
1への重量低下が生じたことをセンサ1 500が検出したと決定し得る。重量サーバ235は、w
0とw
1との差を決定することによってこの決定を行い得る。重量サーバ235はまた、重量センサ500の上方または近傍に配置された商品130の重量を(例えば、ルックアップテーブルを通して)知り得る。重量サーバ235は、w
0とw
1との差を除算して、取り出された商品130の数を決定することができる。重量サーバ235は、さらなる処理のために、この情報を中央サーバ240に通信し得る。中央サーバ240は、この情報を、空間内の人物の追跡された位置と共に使用して、空間内のどの人物が商品130を取り出したかを決定し得る。
【0158】
図5Jは、重量サブシステム206を動作させるための例示的な方法580を示す。一般に、重量サブシステム206の様々な構成要素は、特定の商品130がいつ取られたかを決定するために、方法580を実行する。
【0159】
重量センサ215は、重量センサ215の上方または周囲で経験する重量582を検出し、検出された重量582を、電気信号572を通して重量サーバ235に通信する。重量サーバ235は、重量センサ215からの信号572を分析して、第1の時間窓332中に取られた商品130の数584を決定し得る。重量サーバ235は、この決定を中央サーバ240に通信し得る。重量センサ215は、その後、重量センサ215が経験する重量586を検出し、その重量586を重量サーバ235に通信し得る。重量サーバ235は、重量586を分析して、第2の時間窓332中に取られた商品130の数588を決定し得る。重量サーバ235は、この決定を中央サーバ240に通信し得る。中央サーバ240は、商品130が特定の時間窓332中に取られたかどうかを追跡し得る。そうである場合、中央サーバ240は、空間内のどの人物がそれらの商品130を取ったかを決定し得る。
図5Jに示される方法580に修正、追加、または省略を行ってもよい。方法580は、より多くの、より少ない、または他のステップを含んでもよい。例えば、ステップは、並行してまたは任意の好適な順序で実行され得る。重量サブシステム206の様々な構成要素がステップを実行するものとして説明したが、例えば、中央サーバ240などの追跡システム132の任意の好適な構成要素が、方法の1つまたは複数のステップを実行してもよい。
【0160】
V.中央サーバ
図6A~
図6Cは、中央サーバ240の動作を示す。一般に、中央サーバ240は、様々なサブシステム(例えば、カメラサブシステム202、LiDARサブシステム204、重量サブシステム206など)からの情報を分析し、空間内のどの人物がどの商品を空間から取り出したかを決定する。前述したように、これらのサブシステムは、サブシステムにわたって位置合わせされた時間窓332に情報をグループ化する。位置合わせされた時間窓332へと情報をグループ化することによって、中央サーバ240は、異種のサブシステムからの情報間の関係を見出し、追加情報(例えば、どの人物がどの商品130を取り出したか)を集めることができる。いくつかの実施形態では、中央サーバ240はまた、人物が店舗100から出るときに、空間から取り出した商品の代金を請求する。
【0161】
図6Aおよび
図6Bは、中央サーバ240の例示的な動作を示す。
図6Aに見られるように、中央サーバ240は、特定の時間窓中に様々なサーバから情報を受信する。
図6Aの例では、中央サーバ240は、第1の時間窓332A中にカメラサーバ225から空間内の2人の人物の物理的位置を受信する。本開示は、大文字「X」および大文字「Y」を使用して、空間内の人物または物体の物理座標602を示し、カメラサーバ225およびLiDARサーバ230によって決定された空間内の人物または物体の物理座標602を、他の構成要素によって決定されたローカル座標(例えば、カメラクライアント220によって決定された座標322およびLiDARセンサ405によって決定された座標410)と区別する。
【0162】
カメラサーバ225によれば、第1の人物は物理座標602(X1,Y1)におり、第2の人物は物理座標602(X2,Y2)にいる。加えて、中央サーバ240は、LiDARサーバ230から2人の人物の物理的位置を受信する。LiDARサーバ230によれば、第1の人物は座標602(X7,Y7)におり、第2の人物は座標602(X8,Y8)にいる。さらに、中央サーバ240はまた、第1の時間窓332A中に重量サーバ235から情報を受信する。重量サーバ235によれば、第1の時間窓332A中に商品130は取られていない。
【0163】
本開示は、中央サーバ240がカメラサーバ225およびLiDARサーバ230から人物の物理的位置を分析するために任意の好適なプロセスを使用することを企図する。カメラサーバ225およびLiDARサーバ230によって提供される座標602は互いに異なり得るが、中央サーバ240は、これらの差異を調整するために任意の適切なプロセスを使用し得る。例えば、中央サーバ240は、LiDARサーバ230によって提供された座標602がカメラサーバ225によって提供された座標602としきい値を超える量だけ異ならない場合、カメラサーバ225によって提供された座標602を使用し得る。このように、LiDARサーバ230によって提供される座標602は、カメラサーバ225によって提供される座標602に対するチェックとして機能する。
【0164】
第2の時間窓332B中に、中央サーバ240は、カメラサーバ225から2人の人物の物理座標602を受信する。カメラサーバ225によれば、第2の時間窓332B中、第1の人物は座標602(X3,Y3)におり、第2の人物は座標602(X4,Y4)にいた。第2の時間窓332B中に、カメラサーバ240はまた、LiDARサーバ230から2人の人物の物理座標602を受信する。LiDARサーバ230によれば、第2の時間窓332B中、第1の人物は座標602(X9,Y9)におり、第2の人物は座標602(X10,Y10)にいる。追加的に、中央サーバ240は、第2の時間窓332B中に、商品130が取られなかったことを重量サーバ235から学習する。
【0165】
第3の時間窓332C中に、カメラサーバ240は、2人の人物の物理座標602をカメラサーバ225から受信する。カメラサーバ225によれば、第1の人物は座標602(X5,Y5)におり、第2の人物は座標602(X6,Y6)にいる。中央サーバ240はまた、第3の時間窓332C中に、LiDARサーバ230から2人の人物の物理座標602を受信する。LiDARサーバ230によれば、第3の時間窓332C中、第1の人物は座標602(X11,Y11)におり、第2の人物は座標602(X12,Y12)にいる。追加的に、中央サーバ240は、特定の重量センサ500が、第3の時間窓332C中に2つの商品130が取られたことを検出したことを重量サーバ235から学習する。
【0166】
2つの商品130が取られたことを重量センサ500が検出したことを学習したことに応答して、中央サーバ240は、どの人物がそれらの2つの商品130を取ったかを決定するために追加の分析を受け得る。中央サーバ240は、どの人物が商品130を取ったかを決定するための任意の好適なプロセスを実行する。これらのプロセスのいくつかは、「Topview Object Tracking Using a Sensor Array」と題する米国特許出願第_____号(代理人整理番号第(090278.0180)号)に開示されており、その内容は、参照により本明細書に組み込まれる。
【0167】
図6Bは、どの人物が商品130を取ったかを決定するために中央サーバ240が例示的な分析を実行する様子を示す。
図6Bに見られるように、中央サーバ240は、最初に、第3の時間窓332C中の2人の人物の物理座標602を決定する。中央サーバ240は、第1の人物が第3の時間窓332C中に座標602(X
5,Y
5)におり、第2の人物が第3の時間窓332C中に座標602(X
6,Y
6)にいたと決定する。中央サーバ240はまた、取られた商品を検出した重量センサ500の物理的位置を決定する。
図6Bの例では、中央サーバ240は、重量センサ500が座標602(X
13,Y
13)に位置していると決定する。
【0168】
次いで、中央サーバ240は、各人物から重量センサ500までの距離を決定する。中央サーバ240は、第1の人物が重量センサ500から距離1におり、第2の人物が重量センサ500から距離2にいると決定する。次いで、中央サーバ240は、どの人物が重量センサ500により近かったかを決定する。
図4Bの例では、中央サーバ240は、距離1が距離2よりも小さく、したがって、第1の人物が第2の人物よりも重量センサ500に近かったと決定する。結果として、中央サーバ240は、第1の人物が第3の時間窓332C中に2つの商品130を取ったことと、第1の人物がこれらの2つの商品130の代金を請求されるべきであることとを決定する。
【0169】
図6Cは、中央サーバ240を動作させるための例示的な方法600を示す。特定の実施形態では、中央サーバ240は、空間内のどの人物が商品130を取ったかを決定するために、方法600のステップを実行する。
【0170】
中央サーバ240は、ステップ605において、時間窓332中の空間内の第1の人物の座標602を受信することによって開始する。ステップ610において、中央サーバ240は、時間窓332中の空間内の第2の人物の座標602を受信する。中央サーバ240は、ステップ615において、商品130が時間窓332中に取られたという指示を受信する。その指示を受信することに応答して、中央サーバ240は、情報を分析して、どの人物がその商品130を取ったかを決定する。
【0171】
ステップ620において、中央サーバ240は、時間窓332中、第1の人物が第2の人物よりも商品130に近かったと決定する。中央サーバ240は、人物と、商品130が取り出されたことを検出した重量センサ500との間の決定された距離に基づいて、この決定を行い得る。ステップ625において、中央サーバ240は、第1の人物が第2の人物よりも商品130に近いと決定したことに応答して、第1の人物が時間窓332中に商品130を取ったと決定する。次いで、第1の人物は、第1の人物が店舗100を出るときに商品130の代金を請求され得る。
【0172】
図6Cに示す方法600に修正、追加、または省略を行ってもよい。方法600は、より多くの、より少ない、または他のステップを含んでもよい。例えば、ステップは、並行してまたは任意の好適な順序で実行され得る。中央サーバ240がステップを実行するものとして説明したが、追跡システム132の任意の好適な構成要素が、方法の1つまたは複数のステップを実行してもよい。
【0173】
VI.ハードウェア
図7は、追跡システム132で使用される例示的なコンピュータ700を示す。一般に、コンピュータ700を使用して、追跡システム132の構成要素を実装することができる。例えば、コンピュータ700を使用して、カメラクライアント220、カメラサーバ225、LiDARサーバ230、重量サーバ235、および/または中央サーバ240を実装することができる。
図7に見られるように、コンピュータ700は、プロセッサ705、メモリ710、グラフィックスプロセッサ715、入力/出力ポート720、通信インターフェース725、およびバス730などの様々なハードウェア構成要素を含む。本開示は、コンピュータ700の構成要素が、本明細書で説明したカメラクライアント220、カメラサーバ225、LiDARサーバ230、重量サーバ235、および/または中央サーバ240の機能のいずれかを実行するように構成されることを企図する。回路基板565はまた、コンピュータ700の特定の構成要素を含み得る。
【0174】
プロセッサ705は、メモリ710に通信可能に結合し、コンピュータ700の動作を制御する、マイクロプロセッサ、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、および/またはステートマシンを含むがこれらに限定されない任意の電子回路である。プロセッサ705は、8ビット、16ビット、32ビット、64ビットであるか、または任意の他の好適なアーキテクチャであり得る。プロセッサ705は、算術演算および論理演算を実行するための論理演算装置(ALU)と、ALUにオペランドを供給し、ALU演算の結果を記憶するプロセッサレジスタと、メモリから命令をフェッチし、ALU、レジスタ、および他の構成要素の協調動作を指示することによって命令を実行する制御装置とを含み得る。プロセッサ705は、情報を制御および処理するためにソフトウェアを動作させる他のハードウェアを含み得る。プロセッサ705は、本明細書で説明される機能のいずれかを実行するために、メモリに記憶されたソフトウェアを実行する。プロセッサ705は、メモリ710および/または他のコンピュータ700から受け取った情報を処理することによって、コンピュータ700の動作および管理を制御する。プロセッサ705は、プログラマブル論理デバイス、マイクロコントローラ、マイクロプロセッサ、任意の好適な処理デバイス、またはこれらの任意の好適な組合せであってもよい。プロセッサ705は、単一の処理デバイスに限定されず、複数の処理デバイスを包含してもよい。
【0175】
メモリ710は、プロセッサ705のためのデータ、運用ソフトウェア、または他の情報を永久的にまたは一時的に記憶し得る。メモリ710は、情報を記憶するのに好適な揮発性または不揮発性のローカルまたはリモートデバイスのいずれか1つまたは組合せを含み得る。例えば、メモリ710は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、磁気記憶デバイス、光学記憶デバイス、もしくは任意の他の好適な情報記憶デバイス、またはこれらのデバイスの組合せを含み得る。ソフトウェアは、コンピュータ可読記憶媒体に具現化された命令、論理、またはコードの任意の好適なセットを表す。例えば、ソフトウェアは、メモリ710、ディスク、CD、またはフラッシュドライブにおいて具現化され得る。特定の実施形態では、ソフトウェアは、本明細書で説明する機能のうちの1つまたは複数を実行するためにプロセッサ705によって実行可能なアプリケーションを含み得る。
【0176】
グラフィックスプロセッサ715は、ビデオデータを受信および分析する、マイクロプロセッサ、特定用途向け集積回路(ASIC)、特定用途向け命令セットプロセッサ(ASIP)、および/またはステートマシンを含むがこれらに限定されない任意の電子回路であり得る。例えば、グラフィックスプロセッサ715は、ディスプレイが適切な画像を表示することができるように、ディスプレイに送るべき適切な信号を決定するためにビデオデータを処理し得る。グラフィックスプロセッサ715はまた、ビデオデータを処理して、ビデオ内の特定の特徴(例えば、人物または物体)を識別し得る。グラフィックスプロセッサ715は、コンピュータ700にインストールされるビデオカードの構成要素であってもよい。
【0177】
入力/出力ポート720は、周辺デバイスがコンピュータ700に接続することを可能にする。ポート720は、パラレルポート、シリアルポート、光ポート、ビデオポート、ネットワークポートなどの任意の好適なポートであり得る。キーボード、マウス、ジョイスティック、光学追跡デバイス、トラックパッド、タッチパッドなどの周辺デバイスは、ポート720を通してコンピュータ700に接続することができる。入出力信号は、ポート720を通してコンピュータ700と周辺デバイスとの間で通信される。
【0178】
通信インターフェース725は、ネットワーク上で通信するための任意の好適なハードウェアおよび/またはソフトウェアを含む。例えば、通信インターフェース725は、モード、ネットワークカード、イーサネットポート/コントローラ、ワイヤレス無線機/コントローラ、セルラー無線機/コントローラ、および/またはユニバーサルシリアルバスポート/コントローラを含み得る。コンピュータ700は、通信インターフェース725を使用して、通信ネットワーク上で他のデバイスと通信することができる。
【0179】
バス730は、コンピュータ700の構成要素が互いに通信することを可能にする。コンピュータ700は、バス730を介した通信を管理するバスコントローラ730を含み得る。
【0180】
本開示はいくつかの実施形態を含むが、無数の変更、変形、代替、変換、および修正が当業者に示唆され得、本開示が、添付の特許請求の範囲内に入るそのような変更、変形、代替、変換、および修正を包含することは意図される。
【0181】
条項(CLAUSE):
【0182】
条項1.
システムであって、
空間の上方に配置されたカメラのアレイと、
第1のカメラクライアントと、
第1のカメラクライアントとは別個の第2のカメラクライアントと、
第1のカメラクライアントおよび第2のカメラクライアントとは別個のカメラサーバと、
空間内に配置される複数の重量センサと、
第1のカメラクライアント、第2のカメラクライアント、およびカメラサーバとは別個の重量サーバと、
第1のカメラクライアント、第2のカメラクライアント、カメラサーバ、および重量サーバとは別個の中央サーバと
を備え、
ここで、カメラのアレイの各カメラは空間の一部のビデオをキャプチャするように構成され、空間が人物を含み、
第1のカメラクライアントは、
カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信することと、ここで、第1の複数のフレームの各フレームが空間内の人物を示し、
第1の複数のフレームのうちの第1のフレームについて、
第1のフレームに示される人物の周りの第1の境界エリアを決定することと、
第1のフレームが第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成することと、
第1の複数のフレームのうちの第2のフレームについて、
第2のフレームに示される人物の周りの第2の境界エリアを決定することと、
第2のフレームが第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成することと
を行うように構成され、
第2のカメラクライアントは、
カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信することと、ここで、第2の複数のフレームの各フレームが空間内の人物を示し、
第2の複数のフレームのうちの第3のフレームについて、
第3のフレームに示される人物の周りの第3の境界エリアを決定することと、
第3のフレームが第2のカメラクライアントによって受信されたときの第3のタイムスタンプを生成することと、
第2の複数のフレームのうちの第4のフレームについて、
第4のフレームに示される人物の周りの第4の境界エリアを決定することと、
第4のフレームが第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成することと
を行うように構成され、
カメラサーバは、
第1のタイムスタンプが第1の時間窓内に入ると決定することと、
第1のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第1の境界エリアを画定する座標を第1の時間窓に割り当てることと、
第2のタイムスタンプが第1の時間窓内に入ると決定することと、
第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第2の境界エリアを画定する座標を第1の時間窓に割り当てることと、
第3のタイムスタンプが第1の時間窓内に入ると決定することと、
第3のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第3の境界エリアを画定する座標を第1の時間窓に割り当てることと、
第4のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定することと、
第4のタイムスタンプが第2の時間窓内に入ると決定することに応答して、第4の境界エリアを画定する座標を第2の時間窓に割り当てることと、
第1の時間窓に割り当てられた座標が処理されるべきであると決定することと、
第1の時間窓に割り当てられた座標が処理されるべきであると決定することに応答して、
第1の境界エリアを画定する座標と第2の境界エリアを画定する座標とに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標を計算すること、および
第3の境界エリアを画定する座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算すること
を行うことと、
第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標と、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標とに少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定することと、
を行うように構成され、
複数の重量センサの各重量センサは、その重量センサが経験する重量を示す信号を生成するように構成され、
重量サーバは、複数の重量センサのうちの第1の重量センサによって生成された信号に少なくとも基づいて、第1の重量センサの上方に配置された商品が取り出されたと決定するように構成され、
中央サーバは、第1の時間窓中の空間内の人物の位置に少なくとも基づいて、人物が商品を取り出したと決定するように構成され、ここにおいて、第1の人物が商品を取り出したという決定に少なくとも基づいて、人物が空間を出るときに人物は商品に対して課金される、
システム。
【0183】
条項2.
空間の上方に配置された光検出および測距(LiDAR)センサのアレイと、
第1のカメラクライアント、第2のカメラクライアント、カメラサーバ、重量サーバ、および中央サーバとは別個のLiDARサーバと
をさらに備え、ここで、LiDARサーバは、LiDARセンサのアレイのLiDARセンサから受信された座標に少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定するように構成される、
条項1に記載のシステム。
【0184】
条項3.
第1の人物が商品を取り出したという決定は、(1)空間内の人物の位置と空間内の第1の重量センサの位置との間の距離、および(2)第1の重量センサによって生成された信号が重量サーバによって受信された時間が第1の時間窓内に入ることに少なくとも基づく、条項1に記載のシステム。
【0185】
条項4.
第1のカメラクライアントは、第1のフレームに示される人物の高さおよび第2のフレームに示される人物の高さを受信するようにさらに構成され、
第2のカメラクライアントは、第3のフレームに示される人物の高さおよび第4のフレームに示される人物の高さを受信するようにさらに構成され、
カメラサーバは、
第1のフレームに示される人物の高さと第2のフレームに示される人物の高さとに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合高さを計算することと、
第3のフレームに示される人物の高さに少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算することと
を行うようにさらに構成される、条項1に記載のシステム。
【0186】
条項5.
第1のカメラクライアントは、第1のタイムスタンプおよび第2のタイムスタンプを生成するために使用される第1のクロックを実装し、
第2のカメラクライアントは、第3のタイムスタンプおよび第4のタイムスタンプを生成するために使用される第2のクロックを実装し、
カメラサーバは第3のクロックを実装し、ここで、第1のクロック、第2のクロック、および第3のクロックは、クロック同期プロトコルを使用して同期される、
条項1に記載のシステム。
【0187】
条項6.
重量サーバは、クロック同期プロトコルを使用して第1のクロック、第2のクロック、および第3のクロックと同期される第4のクロックを実装する、条項5に記載のシステム。
【0188】
条項7.
第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標は、第1の境界エリアを画定する座標と第2の境界エリアを画定する座標との平均を含む、条項1に記載のシステム。
【0189】
条項8.
カメラのアレイは、第1のカメラクライアントに通信可能に結合されたカメラが、グリッドの同じ行または同じ列において、第1のカメラクライアントに通信可能に結合された別のカメラと直接隣接しないようにグリッド状に配置される、条項1に記載のシステム。
【0190】
条項9.
空間内のラックと、
引き出し内に配置された回路基板と
を備え、
ラックは、棚と、引き出しを備えたベースとを備え、ベースは棚よりも垂直方向下方に配置され、棚は第1の領域と第2の領域とに分割され、複数の重量センサのうちの第1の重量センサは、第1の領域内に配置され、第1の重量センサが経験する第1の領域内の重量に少なくとも基づいて第1の信号を生成するように構成され、複数の重量センサのうちの第2の重量センサは、第2の領域内に配置され、第2の重量センサが経験する第2の領域内の重量に少なくとも基づいて第2の信号を生成するように構成され、複数の重量センサの各重量センサは複数のロードセルを備え、
回路基板は、第1の重量センサおよび第2の重量センサに通信可能に結合され、回路基板は、
第1の信号および第2の信号を受信することと、
第1の重量センサが経験する重量を示す信号を重量サーバに通信することと、
第2の重量センサが経験する重量を示す信号を重量サーバに通信することと
を行うように構成される、
条項1に記載のシステム。
【0191】
条項10.
カメラサーバは、第1のカメラクライアントに第1のフレームを、第2のカメラクライアントに第3のフレームを要求するようにさらに構成され、人物の位置の決定は、さらに、第1のフレームおよび第3のフレームに少なくとも基づく、条項1に記載のシステム。
【0192】
条項11.
方法であって、
第1のカメラクライアントによって、カメラのアレイの第1のカメラから第1のビデオの第1の複数のフレームを受信することと、ここで、カメラのアレイは空間の上方に配置され、カメラのアレイの各カメラは空間の一部のビデオをキャプチャするように構成され、空間が人物を含み、第1の複数のフレームの各フレームが空間内の人物を示し、
第1の複数のフレームのうちの第1のフレームについて、
第1のカメラクライアントによって、第1のフレームに示される人物の周りの第1の境界エリアを決定することと、
第1のカメラクライアントによって、第1のフレームが第1のカメラクライアントによって受信されたときの第1のタイムスタンプを生成することと、
第1の複数のフレームのうちの第2のフレームについて、
第1のカメラクライアントによって、第2のフレームに示される人物の周りの第2の境界エリアを決定することと、
第1のカメラクライアントによって、第2のフレームが第1のカメラクライアントによって受信されたときの第2のタイムスタンプを生成することと、
第1のカメラクライアントとは別個の第2のカメラクライアントによって、カメラのアレイの第2のカメラから第2のビデオの第2の複数のフレームを受信することと、ここで、第2の複数のフレームの各フレームが空間内の人物を示し、
第2の複数のフレームのうちの第3のフレームについて、
第2のカメラクライアントによって、第3のフレームに示される人物の周りの第3の境界エリアを決定することと、
第2のカメラクライアントによって、第3のフレームが第2のカメラクライアントによって受信されたときの第3のタイムスタンプを生成することと、
第2の複数のフレームのうちの第4のフレームについて、
第2のカメラクライアントによって、第4のフレームに示される人物の周りの第4の境界エリアを決定することと、
第2のカメラクライアントによって、第4のフレームが第2のカメラクライアントによって受信されたときの第4のタイムスタンプを生成することと、
第1のカメラクライアントおよび第2のカメラクライアントとは別個のカメラサーバによって、第1のタイムスタンプが第1の時間窓内に入ると決定することと、
第1のタイムスタンプが第1の時間窓内に入ると決定することに応答して、カメラサーバによって、第1の境界エリアを画定する座標を第1の時間窓に割り当てることと、
カメラサーバによって、第2のタイムスタンプが第1の時間窓内に入ると決定することと、
第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、カメラサーバによって、第2の境界エリアを画定する座標を第1の時間窓に割り当てることと、
カメラサーバによって、第3のタイムスタンプが第1の時間窓内に入ると決定することと、
第3のタイムスタンプが第1の時間窓内に入ると決定することに応答して、カメラサーバによって、第3の境界エリアを画定する座標を第1の時間窓に割り当てることと、
カメラサーバによって、第4のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定することと、
第4のタイムスタンプが第2の時間窓内に入ると決定することに応答して、カメラサーバによって、第4の境界エリアを画定する座標を第2の時間窓に割り当てることと、
カメラサーバによって、第1の時間窓に割り当てられた座標が処理されるべきであると決定することと、
第1の時間窓に割り当てられた座標が処理されるべきであると決定することに応答して、
カメラサーバによって、第1の境界エリアを画定する座標と第2の境界エリアを画定する座標とに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標を計算することと、
カメラサーバによって、第3の境界エリアを画定する座標に少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算することと、
カメラサーバによって、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標と、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標とに少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定することと、
空間内に配置された複数の重量センサによって、複数の重量センサが経験する重量を示す信号を生成することと、
第1のカメラクライアント、第2のカメラクライアント、およびカメラサーバとは別個の重量サーバによって、複数の重量センサのうちの第1の重量センサによって生成された信号に少なくとも基づいて、第1の重量センサの上方に配置された商品が取り出されたと決定することと、
第1のカメラクライアント、第2のカメラクライアント、カメラサーバ、および重量サーバとは別個の中央サーバによって、第1の時間窓中の空間内の人物の位置に少なくとも基づいて、人物が商品を取り出したと決定することと、ここにおいて、第1の人物が商品を取り出したという決定に少なくとも基づいて、人物が空間を出るときに人物は商品に対して課金される、
を含む方法。
【0193】
条項12.
第1のカメラクライアント、第2のカメラクライアント、カメラサーバ、重量サーバ、および中央サーバとは別個の光検出および測距(LiDAR)サーバによって、空間の上方に配置されたLiDARセンサのアレイのLiDARセンサから受信された座標に少なくとも基づいて、第1の時間窓中の空間内の人物の位置を決定することをさらに含む、条項11に記載の方法。
【0194】
条項13.
第1の人物が商品を取り出したという決定は、(1)空間内の人物の位置と空間内の第1の重量センサの位置との間の距離、および(2)第1の重量センサによって生成された信号が重量サーバによって受信された時間が第1の時間窓内に入ることに少なくとも基づく、条項11に記載の方法。
【0195】
条項14.
第1のカメラクライアントによって、第1のフレームに示される人物の高さおよび第2のフレームに示される人物の高さを受信することと、
第2のカメラクライアントによって、第3のフレームに示される人物の高さおよび第4のフレームに示される人物の高さを受信することと、
カメラサーバによって、第1のフレームに示される人物の高さと第2のフレームに示される人物の高さとに少なくとも基づいて、第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合高さを計算することと、
カメラサーバによって、第3のフレームに示される人物の高さに少なくとも基づいて、第2のカメラからの第2のビデオに対する第1の時間窓中の人物の結合座標を計算することと
をさらに含む、条項11に記載の方法。
【0196】
条項15.
第1のカメラクライアントによって、第1のタイムスタンプおよび第2のタイムスタンプを生成するために使用される第1のクロックを実装することと、
第2のカメラクライアントによって、第3のタイムスタンプおよび第4のタイムスタンプを生成するために使用される第2のクロックを実装することと、
カメラサーバによって、第3のクロックを実装することと、
をさらに含み、ここで、第1のクロック、第2のクロック、および第3のクロックは、クロック同期プロトコルを使用して同期される、
条項11に記載の方法。
【0197】
条項16.
重量サーバによって、クロック同期プロトコルを使用して第1のクロック、第2のクロック、および第3のクロックと同期される第4のクロックを実装することをさらに含む、条項15に記載の方法。
【0198】
条項17.
第1のカメラからの第1のビデオに対する第1の時間窓中の人物の結合座標は、第1の境界エリアを画定する座標と第2の境界エリアを画定する座標との平均を含む、条項11に記載の方法。
【0199】
条項18.
カメラのアレイは、第1のカメラクライアントに通信可能に結合されたカメラが、グリッドの同じ行または同じ列において、第1のカメラクライアントに通信可能に結合された別のカメラと直接隣接しないようにグリッド状に配置される、条項11に記載の方法。
【0200】
条項19.
回路基板によって、複数の重量センサのうちの第1の重量センサから第1の信号を受信することと、ここで、回路基板は、空間内に配置されたラックの引き出し内に配置され、ラックは棚とベースとを備え、ベースは引き出しを備え、ベースは棚よりも垂直方向下方に配置され、棚は第1の領域と第2の領域とに分割され、第1の重量センサは第1の領域内に配置され、第1の信号は、第1の重量センサが経験する第1の領域内の重量を示し、複数の重量センサの各重量センサは複数のロードセルを備え、
回路基板によって、複数の重量センサのうちの第2の重量センサから第2の信号を受信することと、ここで、第2の重量センサは第2の領域内に配置され、第2の信号は、第2の重量センサが経験する第2の領域内の重量を示し、
回路基板によって、第1の重量センサが経験する重量を示す信号を重量サーバに通信することと、
回路基板によって、第2の重量センサが経験する重量を示す信号を重量サーバに通信することと
をさらに含む、条項11に記載の方法。
【0201】
条項20.
カメラサーバによって、第1のカメラクライアントに第1のフレームを、第2のカメラクライアントに第3のフレームを要求することをさらに含み、人物の位置の決定は、さらに、第1のフレームおよび第3のフレームに少なくとも基づく、条項11に記載の方法。
【0202】
条項21.
システムであって、
第1のカメラクライアントと、
第1のカメラクライアントとは別個の第2のカメラクライアントと、
第1のカメラクライアントおよび第2のカメラクライアントとは別個の第3のカメラクライアントと、
空間の上方に配置されたカメラのアレイと
を備え、
カメラのアレイ内のカメラは、第1の行、第2の行、第3の行、第1の列、第2の列、および第3の列を含む矩形グリッドとして配置され、アレイは、
グリッドの第1の行および第1の列に配置された第1のカメラと、
第2のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第1の行および第2の列に配置された第2のカメラと、
第3のカメラがグリッド内で第2のカメラに直接隣接するようにグリッドの第1の行および第3の列に配置された第3のカメラと、
第4のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第2の行および第1の列に配置された第4のカメラと、
第5のカメラがグリッド内で第4のカメラおよび第2のカメラに直接隣接するようにグリッドの第2の行および第2の列に配置された第5のカメラと、
第6のカメラがグリッド内で第4のカメラに直接隣接するようにグリッドの第3の行および第1の列に配置された第6のカメラと
を備え、
第1のカメラは、第1のカメラクライアントに通信可能に結合され、第1のカメラは、第1のカメラの第1の視野によってカバーされる空間の第1の部分のビデオを第1のカメラクライアントに通信するように構成され、
第2のカメラは、第2のカメラクライアントに通信可能に結合され、第2のカメラは、第2のカメラの第2の視野によってカバーされる空間の第2の部分のビデオを第2のカメラクライアントに通信するように構成され、
第3のカメラは、第3のカメラクライアントに通信可能に結合され、第3のカメラは、第3のカメラの第3の視野によってカバーされる空間の第3の部分のビデオを第3のカメラクライアントに通信するように構成され、
第4のカメラは、第2のカメラクライアントに通信可能に結合され、第4のカメラは、第4のカメラの第4の視野によってカバーされる空間の第4の部分のビデオを第2のカメラクライアントに通信するように構成され、
第5のカメラは、第3のカメラクライアントに通信可能に結合され、第5のカメラは、第5のカメラの第5の視野によってカバーされる空間の第5の部分のビデオを第3のカメラクライアントに通信するように構成され、
第6のカメラは、第3のカメラクライアントに通信可能に結合され、第6のカメラは、第6のカメラの第6の視野によってカバーされる空間の第6の部分のビデオを第3のカメラクライアントに通信するように構成され、
第3のカメラクライアントがオフラインになった場合でも、空間の第5の部分の少なくとも一部が、第1のカメラから第1のカメラクライアントに通信されるビデオ、第2のカメラから第2のカメラクライアントに通信されるビデオ、および第4のカメラから第2のカメラクライアントに通信されるビデオにおいて依然としてキャプチャされるように、第5のカメラの第5の視野は、第1のカメラの第1の視野、第2のカメラの第2の視野、および第4のカメラの第4の視野と部分的に重複する、
システム。
【0203】
条項22.
カメラのアレイは、第1のカメラクライアントに通信可能に結合された各カメラが、グリッドの同じ行または同じ列において、第1のカメラクライアントに通信可能に結合されたカメラのアレイの別のカメラに直接隣接しないように配置される、条項21に記載のシステム。
【0204】
条項23.
カメラのアレイは、アレイの2×2部分が、第1のカメラクライアントに通信可能に結合されたカメラと、第2のカメラクライアントに通信可能に結合されたカメラと、第3のカメラクライアントに通信可能に結合されたカメラとを含むように配置される、条項21に記載のシステム。
【0205】
条項24.
カメラのアレイは、第1のカメラクライアントに通信可能に結合されたカメラのアレイのカメラが、第1のカメラクライアントに通信可能に結合されたカメラのアレイの別のカメラに対してグリッド内で対角になるように配置される、条項21に記載のシステム。
【0206】
条項25.
第1のカメラによってキャプチャされる空間の第1の部分は、第2、第4、および第5のカメラによってそれぞれキャプチャされる空間の第2、第4、および第5の部分と部分的に重複する、条項21に記載のシステム。
【0207】
条項26.
グリッドは、第4の列をさらに備え、
カメラのアレイは、
第7のカメラがグリッド内で第3のカメラに直接隣接するようにグリッドの第1の行および第4の列に配置された第7のカメラと、
第8のカメラがグリッド内で第3のカメラおよび第5のカメラに直接隣接するようにグリッドの第2の行および第3の列に配置された第8のカメラと、
第9のカメラがグリッド内で第5のカメラおよび第6のカメラに直接隣接するようにグリッドの第3の行および第2の列に配置された第9のカメラと
を備え、
第7のカメラは、第1のカメラクライアントに通信可能に結合され、第7のカメラは、空間の第7の部分のビデオを第1のカメラクライアントに通信するように構成され、
第8のカメラは、第1のカメラクライアントに通信可能に結合され、第8のカメラは、空間の第8の部分のビデオを第1のカメラクライアントに通信するように構成され、
第9のカメラは、第1のカメラクライアントに通信可能に結合され、第9のカメラは、空間の第9の部分のビデオを第1のカメラクライアントに通信するように構成される、
条項21に記載のシステム。
【0208】
条項27.
第1のカメラは、第1のカメラクライアントに配線接続され、
第2のカメラおよび第4のカメラは、第2のカメラクライアントに配線接続され、
第3のカメラ、第5のカメラ、および第6のカメラは、第3のカメラクライアントに配線接続される、
条項21に記載のシステム。
【0209】
条項28.
第1のカメラクライアントは、
第1のカメラからのビデオの第1のフレーム内のユーザの第1の座標を決定することと、
第1のカメラクライアントが第1のフレームを受信したときの第1のタイムスタンプを生成することと、
第1のカメラからのビデオの第2のフレーム内のユーザの第2の座標を決定することと、ここで、第2のフレームは第1のフレームの後に受信され、
第1のカメラクライアントが第2のフレームを受信したときの第2のタイムスタンプを生成することと、
第1のカメラからのビデオの第3のフレーム内のユーザの第3の座標を決定することと、ここで、第3のフレームは第2のフレームの後に受信され、
第1のカメラクライアントが第3のフレームを受信したときの第3のタイムスタンプを生成することと
を行うように構成される、条項21に記載のシステム。
【0210】
条項29.
第1のカメラクライアント、第2のカメラクライアント、および第3のカメラクライアントとは別個のカメラサーバをさらに備え、カメラサーバは、
第1のタイムスタンプおよび第2のタイムスタンプが第1の時間窓内に入ると決定することと、
第1のタイムスタンプおよび第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、第1の座標および第2の座標を第1の時間窓に割り当てることと、
第3のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定することと、
第3のタイムスタンプが第2の時間窓内に入ると決定することに応答して、第3の座標を第2の時間窓に割り当てることと、
第1の座標および第2の座標に基づいて、第1の時間窓中のユーザの結合座標を決定することと、
第1の時間窓中のユーザの結合座標を決定した後に、第3の座標に基づいて、第2の時間窓中のユーザの結合座標を決定することと
を行うように構成される、条項28に記載のシステム。
【0211】
条項30.
第1のカメラ、第2のカメラ、第3のカメラ、第4のカメラ、第5のカメラ、および第6のカメラは、ユーザの高さを検出するようにさらに構成される、条項21に記載のシステム。
【0212】
条項31.
空間の上方に配置された第2のカメラのアレイをさらに備え、第2のカメラのアレイは、第2の矩形グリッドとして配置され、第2のカメラのアレイは、カメラのアレイとは異なり、第2のカメラのアレイの各カメラは、カメラのアレイのカメラからオフセットされている、条項21に記載のシステム。
【0213】
条項32.
方法であって、
カメラのアレイの第1のカメラによって、第1のカメラの第1の視野によってカバーされる空間の第1の部分のビデオを第1のカメラクライアントに通信することと、ここで、カメラのアレイは、空間の上方に配置され、カメラのアレイ内のカメラは、第1の行、第2の行、第3の行、第1の列、第2の列、および第3の列を含む矩形グリッドとして配置され、第1のカメラは、グリッドの第1の行および第1の列に配置され、第1のカメラは、第1のカメラクライアントに通信可能に結合され、
カメラのアレイの第2のカメラによって、第2のカメラの第2の視野によってカバーされる空間の第2の部分のビデオを、第1のカメラクライアントとは別個の第2のカメラクライアントに通信することと、ここで、第2のカメラは、第2のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第1の行および第2の列に配置され、第2のカメラは、第2のカメラクライアントに通信可能に結合され、
カメラのアレイの第3のカメラによって、第3のカメラの第3の視野によってカバーされる空間の第3の部分のビデオを、第1のカメラクライアントおよび第2のカメラクライアントとは別個の第3のカメラクライアントに通信することと、ここで、第3のカメラは、第3のカメラがグリッド内で第2のカメラに直接隣接するようにグリッドの第1の行および第3の列に配置され、第3のカメラは、第3のカメラクライアントに通信可能に結合され、
カメラのアレイの第4のカメラによって、第4のカメラの第4の視野によってカバーされる空間の第4の部分のビデオを第2のカメラクライアントに通信することと、ここで、第4のカメラは、第4のカメラがグリッド内で第1のカメラに直接隣接するようにグリッドの第2の行および第1の列に配置され、第4のカメラは、第2のカメラクライアントに通信可能に結合され、
カメラのアレイの第5のカメラによって、第5のカメラの第5の視野によってカバーされる空間の第5の部分のビデオを第3のカメラクライアントに通信することと、ここで、第5のカメラは、第5のカメラがグリッド内で第4のカメラおよび第2のカメラに直接隣接するようにグリッドの第2の行および第2の列に配置され、第5のカメラは、第3のカメラクライアントに通信可能に結合され、
カメラのアレイの第6のカメラによって、第6のカメラの第6の視野によってカバーされる空間の第6の部分のビデオを第3のカメラクライアントに通信することと、ここで、第6のカメラは、第6のカメラがグリッド内で第4のカメラに直接隣接するようにグリッドの第3の行および第1の列に配置され、第6のカメラは、第3のカメラクライアントに通信可能に結合される、
を含み、
第3のカメラクライアントがオフラインになった場合でも、空間の第5の部分の少なくとも一部が、第1のカメラから第1のカメラクライアントに通信されるビデオ、第2のカメラから第2のカメラクライアントに通信されるビデオ、および第4のカメラから第2のカメラクライアントに通信されるビデオにおいて依然としてキャプチャされるように、第5のカメラの第5の視野は、第1のカメラの第1の視野、第2のカメラの第2の視野、および第4のカメラの第4の視野と部分的に重複する、
方法。
【0214】
条項33.
カメラのアレイは、第1のカメラクライアントに通信可能に結合されたカメラのアレイの各カメラが、グリッド内で、第1のカメラクライアントに通信可能に結合されたカメラのアレイの別のカメラに直接隣接しないように配置される、条項32に記載の方法。
【0215】
条項34.
カメラのアレイは、アレイの2×2部分が、第1のカメラクライアントに通信可能に結合されたカメラと、第2のカメラクライアントに通信可能に結合されたカメラと、第3のカメラクライアントに通信可能に結合されたカメラとを含むように配置される、条項32に記載の方法。
【0216】
条項35.
カメラのアレイは、第1のカメラクライアントに通信可能に結合されたカメラが、第1のカメラクライアントに通信可能に結合された別のカメラに対してグリッド内で対角になるように配置される、条項32に記載の方法。
【0217】
条項36.
第1のカメラによってキャプチャされる空間の第1の部分は、それぞれ、第2のカメラ、第4のカメラ、および第5のカメラによってキャプチャされる空間の第2の部分、第4の部分、および第5の部分と部分的に重複する、条項32に記載の方法。
【0218】
条項37.
カメラのアレイの第7のカメラによって、空間の第7の部分のビデオを第1のカメラクライアントに通信することと、ここで、グリッドは第4の列をさらに含み、第7のカメラは、第7のカメラがグリッド内で第3のカメラに直接隣接するようにグリッドの第1の行および第4の列に配置され、第7のカメラは、第1のカメラクライアントに通信可能に結合され、
カメラのアレイの第8のカメラによって、空間の第8の部分のビデオを第1のカメラクライアントに通信することと、ここで、第8のカメラは、第8のカメラがグリッド内で第3のカメラおよび第5のカメラに直接隣接するようにグリッドの第2の行および第3の列に配置され、第8のカメラは、第1のカメラクライアントに通信可能に結合され、
カメラのアレイの第9のカメラによって、空間の第9の部分のビデオを第1のカメラクライアントに通信することと、ここで、第9のカメラは、第9のカメラがグリッド内で第5のカメラおよび第6のカメラに直接隣接するようにグリッドの第3の行および第2の列に配置され、第9のカメラは、第1のカメラクライアントに通信可能に結合される、
を含む、条項32に記載の方法。
【0219】
条項38.
第1のカメラは、第1のカメラクライアントに配線接続され、
第2のカメラおよび第4のカメラは、第2のカメラクライアントに配線接続され、
第3のカメラ、第5のカメラ、および第6のカメラは、第3のカメラクライアントに配線接続される、
条項32に記載の方法。
【0220】
条項39.
第1のカメラクライアントによって、第1のカメラからのビデオの第1のフレーム内のユーザの第1の座標を決定することと、
第1のカメラクライアントによって、第1のカメラクライアントが第1のフレームを受信したときの第1のタイムスタンプを生成することと、
第1のカメラクライアントによって、第1のカメラからのビデオの第2のフレーム内のユーザの第2の座標を決定することと、ここで、第2のフレームは第1のフレームの後に受信され、
第1のカメラクライアントによって、第1のカメラクライアントが第2のフレームを受信したときの第2のタイムスタンプを生成することと、
第1のカメラクライアントによって、第1のカメラからのビデオの第3のフレーム内のユーザの第3の座標を決定することと、ここで、第3のフレームは第2のフレームの後に受信され、
第1のカメラクライアントによって、第1のカメラクライアントが第3のフレームを受信したときの第3のタイムスタンプを生成することと
をさらに含む、条項32に記載の方法。
【0221】
条項40.
第1のカメラクライアント、第2のカメラクライアント、および第3のカメラクライアントとは別個のカメラサーバによって、第1のタイムスタンプおよび第2のタイムスタンプが第1の時間窓内に入ると決定することと、
第1のタイムスタンプおよび第2のタイムスタンプが第1の時間窓内に入ると決定することに応答して、カメラサーバによって、第1の座標および第2の座標を第1の時間窓に割り当てることと、
カメラサーバによって、第3のタイムスタンプが第1の時間窓に続く第2の時間窓内に入ると決定することと、
第3のタイムスタンプが第2の時間窓内に入ると決定することに応答して、カメラサーバによって、第3の座標を第2の時間窓に割り当てることと、
カメラサーバによって、第1の座標および第2の座標に基づいて、第1の時間窓中のユーザの結合座標を決定することと、
第1の時間窓中のユーザの結合座標を決定した後に、カメラサーバによって、第3の座標に基づいて、第2の時間窓中のユーザの結合座標を決定することと
をさらに含む、条項39に記載の方法。
【0222】
条項41.
第1のカメラ、第2のカメラ、第3のカメラ、第4のカメラ、第5のカメラ、および第6のカメラによって、ユーザの高さを検出することをさらに含む、条項32に記載の方法。
【0223】
条項42.
第2のカメラのアレイは、空間の上方に位置付けられ、第2のカメラのアレイは、第2の矩形グリッドとして配置され、第2のカメラのアレイは、カメラのアレイとは異なり、第2のカメラのアレイの各カメラは、カメラのアレイのカメラからオフセットされている、条項32に記載の方法。
【0224】
条項43.
回路基板と
ラックと
を備えるシステムであって、
ラックが、
底面と、
ベースの底面に結合された第1の側面であって、ベースの底面から上方に延在するベースの第1の側面と、
ベースの底面および第1の側面に結合された第2の側面であって、ベースの底面から上方に延在するベースの第2の側面と、
ベースの底面および第2の側面に結合された第3の側面であって、ベースの底面から上方に延在するベースの第3の側面と、
ベースの底面および上面ならびにベースの第1の側面、第2の側面、および第3の側面が空間を画定するように、ベースの第1の側面、第2の側面、および第3の側面に結合された上面であって、空間への第1の開口部を画定するベースの上面と、
空間内に配置され、回路基板が中に配置される引き出しと
を備えるベースと、
ベースに結合され、ベースから上方に延在しており、パネルの幅に沿って延在する第2の開口部を画定するパネルと、
棚がベースよりも垂直方向に高く位置決めされるように、かつ棚がパネルから離れる方向に延在するようにパネルに結合され、底面と、棚の底面から上方に延在する前面と、棚の底面から上方に延在する背面とを備える棚と、ここで、棚の背面はパネルに結合され、棚の背面は第3の開口部を画定し、第3の開口部の一部は第2の開口部の一部と位置合わせされ、
棚の底面に結合され、棚の前面と棚の背面との間に配置された第1の重量センサと、
棚の底面に結合され、棚の前面と棚の背面との間に配置された第2の重量センサと、
第1の重量センサおよび回路基板に結合され、第1の重量センサから、第2および第3の開口部を通り、第1の開口部を通って空間内に下方に延在する第1のワイヤと、
第2の重量センサおよび回路基板に結合され、第2の重量センサから、第2および第3の開口部を通り、第1の開口部を通って空間内に下方に延在する第2のワイヤと
を備える、システム。
【0225】
条項44.
第4の開口部を画定する背面を備える第2の棚をさらに備え、パネルは、パネルの幅に沿って延在する第5の開口部をさらに画定し、第2の棚の背面は、第4の開口部の一部が第5の開口部の一部と位置合わせされるようにパネルに結合される、条項43に記載のシステム。
【0226】
条項45.
ベースの上面に結合された第3の重量センサと、
第3の重量センサおよび回路基板に接続され、第3の重量センサから第1の開口部を通って空間内に延在する第3のワイヤと
をさらに備える、条項43に記載のシステム。
【0227】
条項46.
第1の重量センサは、
第1のロードセルが経験する力に基づいて第1の電流を生成するように構成された第1のロードセルと、
第2のロードセルが経験する力に基づいて第2の電流を生成するように構成された第2のロードセルと、
第3のロードセルが経験する力に基づいて第3の電流を生成するように構成された第3のロードセルと、
第4のロードセルが経験する力に基づいて第4の電流を生成するように構成された第4のロードセルと
を備える、条項43に記載のシステム。
【0228】
条項47.
第1の重量センサは、第1のコーナーと、第2のコーナーと、第3のコーナーと、第4のコーナーとを備え、
第1のロードセルは、第1のコーナーから第1の距離に配置され、
第2のロードセルは、第2のコーナーから第2の距離に配置され、
第3のロードセルは、第3のコーナーから第3の距離に配置され、
第4のロードセルは、第4のコーナーから第4の距離に配置され、第1の距離、第2の距離、第3の距離、および第4の距離は実質的に同じである、
条項46に記載のシステム。
【0229】
条項48.
第1のワイヤは、
第1のロードセルに結合された第3のワイヤと、
第2のロードセルに結合された第4のワイヤと、
第3のロードセルに接続された第5のワイヤと、
第4のロードセルに結合された第6のワイヤと
を備える、条項47に記載のシステム。
【0230】
条項49.
第1の重量センサは、第1の重量センサが経験する棚の第1の領域内の重量を示す第1の信号を、第1のワイヤを通して回路基板に通信するように構成され、第1の領域は、第1の重量センサの上方に配置され、
第2の重量センサは、第2の重量センサが経験する棚の第2の領域内の重量を示す第2の信号を、第2のワイヤを通して回路基板に通信するように構成され、第2の領域は、第2の重量センサの上方に配置される、
条項43に記載のシステム。
【0231】
条項50.
重量サーバをさらに備え、回路基板は、第1の重量センサが経験する重量を示す第3の信号を重量サーバに通信するように構成される、条項49に記載のシステム。
【0232】
条項51.
回路基板は、
イーサネット接続が確立されている場合、イーサネット接続を介して第3の信号を重量サーバに通信することと、
イーサネット接続が確立されておらず、ワイヤレス接続が確立されている場合、ワイヤレス接続を介して第3の信号を重量サーバに通信することと、
イーサネット接続およびワイヤレス接続が確立されておらず、ユニバーサルシリアルバス接続が確立されている場合、ユニバーサルシリアルバス接続を介して第3の信号を重量サーバに通信することと
を行うようにさらに構成される、条項50に記載のシステム。
【0233】
条項52.
重量サーバは、第3の信号に基づいて、棚の第1の領域内の商品が取り出されたと決定するように構成される、条項50に記載のシステム。
【0234】
条項53.
回路基板と、
ラックと
を備えるシステムであって、ラックが、
ベースによって画定される空間内に配置された引き出しを備えるベースであって、回路基板が引き出し内に配置され、空間内への第1の開口部をさらに画定するベースと、
ベースに結合され、ベースから上方に延在するパネルであって、パネルの幅に沿って延在する第2の開口部を画定するパネルと、
棚がベースよりも垂直方向に高く位置付けられ、かつ棚がパネルから離れる方向に延在するようにパネルに結合され、第3の開口部を画定する棚であって、第3の開口部の一部が第2の開口部の一部と位置合わせされる、棚と、
棚に結合された第1の重量センサと、
棚に結合された第2の重量センサと、
第1の重量センサおよび回路基板に結合され、第1の重量センサから、第2および第3の開口部を通り、第1の開口部を通って空間内に下方に延在する第1のワイヤと、
第2の重量センサおよび回路基板に結合され、第2の重量センサから、第2および第3の開口部を通り、第1の開口部を通って空間内へと下方に延在する第2のワイヤと
を備える、システム。
【0235】
条項54.
第4の開口部を画定する第2の棚をさらに備え、パネルは、パネルの幅に沿って延在する第5の開口部をさらに画定し、第2の棚は、第4の開口部の一部が第5の開口部の一部と位置合わせされるようにパネルに連結される、条項53に記載のシステム。
【0236】
条項55.
ベースに結合された第3の重量センサと、
第3の重量センサおよび回路基板に結合され、第3の重量センサから第1の開口部を通って空間に延在する第3のワイヤと
をさらに備える、条項53に記載のシステム。
【0237】
条項56.
第1の重量センサは、
第1のロードセルが経験する力に基づいて第1の電流を生成するように構成された第1のロードセルと、
第2のロードセルが経験する力に基づいて第2の電流を生成するように構成された第2のロードセルと、
第3のロードセルが経験する力に基づいて第3の電流を生成するように構成された第3のロードセルと、
第4のロードセルが経験する力に基づいて第4の電流を生成するように構成された第4のロードセルと
を備える、条項53に記載のシステム。
【0238】
条項57.
第1の重量センサは、第1のコーナーと、第2のコーナーと、第3のコーナーと、第4のコーナーとを備え、
第1のロードセルは、第1のコーナーから第1の距離に配置され、
第2のロードセルは、第2のコーナーから第2の距離に配置され、
第3のロードセルは、第3のコーナーから第3の距離に配置され、
第4のロードセルは、第4のコーナーから第4の距離に配置され、第1の距離、第2の距離、第3の距離、および第4の距離は実質的に同じである、
条項56に記載のシステム。
【0239】
条項58.
第1のワイヤは、
第1のロードセルに結合された第3のワイヤと、
第2のロードセルに結合された第4のワイヤと、
第3のロードセルに接続された第5のワイヤと、
第4のロードセルに結合された第6のワイヤと
を備える、条項56に記載のシステム。
【0240】
条項59.
第1の重量センサは、第1の重量センサが経験する棚の第1の領域内の重量を示す第1の信号を、第1のワイヤを通して回路基板に通信するように構成され、第1の領域は、第1の重量センサの上方に配置され、
第2の重量センサは、第2の重量センサが経験する棚の第2の領域内の重量を示す第2の信号を、第2のワイヤを通して回路基板に通信するように構成され、第2の領域は、第2の重量センサの上方に配置される、
条項53に記載のシステム。
【0241】
条項60.
重量サーバをさらに備え、回路基板は、第1の重量センサが経験する重量を示す第3の信号を重量サーバに通信するように構成される、条項59に記載のシステム。
【0242】
条項61.
回路基板は、
イーサネット接続が確立されている場合、イーサネット接続を介して第3の信号を重量サーバに通信することと、
イーサネット接続が確立されておらず、ワイヤレス接続が確立されている場合、ワイヤレス接続を介して第3の信号を重量サーバに通信することと、
イーサネット接続およびワイヤレス接続が確立されておらず、ユニバーサルシリアルバス接続が確立されている場合、ユニバーサルシリアルバス接続を介して第3の信号を重量サーバに通信することと
を行うようにさらに構成される、条項60に記載のシステム。
【0243】
条項62.
重量サーバは、第3の信号に基づいて、棚の第1の領域内の商品が取り出されたと決定するように構成される、条項60に記載のシステム。