(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-05
(45)【発行日】2025-06-13
(54)【発明の名称】在庫確認を自動化するための装置、ならびに自動在庫確認システムおよび方法
(51)【国際特許分類】
B65G 1/137 20060101AFI20250606BHJP
G06Q 10/087 20230101ALI20250606BHJP
【FI】
B65G1/137 C
G06Q10/087
(21)【出願番号】P 2023536952
(86)(22)【出願日】2021-10-26
(86)【国際出願番号】 CN2021126395
(87)【国際公開番号】W WO2022142644
(87)【国際公開日】2022-07-07
【審査請求日】2024-03-19
(32)【優先日】2020-12-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ヴェルマ、ディネシュ、シー
(72)【発明者】
【氏名】リレイ、ウェイン、ビー
【審査官】三宅 達
(56)【参考文献】
【文献】米国特許出願公開第2020/0286032(US,A1)
【文献】特表2019-530035(JP,A)
【文献】米国特許出願公開第2017/0286901(US,A1)
【文献】米国特許出願公開第2015/0046299(US,A1)
【文献】米国特許出願公開第2022/0012533(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
B65G 1/137
G06Q 10/087
(57)【特許請求の範囲】
【請求項1】
閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するための装置であって、
少なくとも1つの可動付属物を有する移動機械デバイスであって、前記少なくとも1つの可動付属物が、少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを含む、前記移動機械デバイスと、
前記少なくとも1つのカメラおよび前記少なくとも1つの追加の感覚モダリティを使用して、前記閉じた環境内の前記棚の上の前記品目のカメラ画像を多くの異なる視点から撮るように前記少なくとも1つの可動付属物を配置するように構成された位置決めシステムと、
前記移動機械デバイスのコンテキストを決定するように構成されたコンテキスト・モジュールと、
前記コンテキストに基づいてAIコンテキスト特有モデルを動的に検索することと、
前記AIコンテキスト特有モデルを使用して、前記棚の上の前記品目を識別およびカウントすることと
を実施するように構成されたエッジAIコンピューティング・モジュールと
を備える装置。
【請求項2】
前記位置決めシステムが、カメラ・ビジョンおよび前記少なくとも1つの追加の感覚モダリティを使用して、前記棚の上の前記品目の側面の上に、および前記側面に沿って前記付属物を配置する、請求項1に記載の装置。
【請求項3】
前記AIコンテキスト特有モデルを動的に検索することが、クラウド・ホスティング・サービスから前記AIコンテキスト特有モデルをダウンロードすることを含む、請求項1に記載の装置。
【請求項4】
AIコンテキスト・モデルを使用して前記移動機械デバイスの前記コンテキストを決定することをさらに含む、請求項1に記載の装置。
【請求項5】
前記少なくとも1つの可動付属物が、前記少なくとも1つの付属物の縦軸の周りに回転し、前記移動機械デバイスの垂直次元に沿って降下および上昇するように構成される、請求項1に記載の装置。
【請求項6】
前記AIコンテキスト特有モデルが、品目タイプ・モデルおよび品目カウント・モデルを含む、請求項3に記載の装置。
【請求項7】
在庫管理システムに前記品目
のカウントをアップロードすることをさらに含む、請求項1に記載の装置。
【請求項8】
閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するための方法であって、
少なくとも1つの可動付属物を有する移動機械デバイスを提供することであって、前記少なくとも1つの可動付属物が、少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを含む、前記提供することと、
前記少なくとも1つのカメラおよび前記少なくとも1つの追加の感覚モダリティを制御して、前記閉じた環境内の前記棚の上の前記品目のカメラ画像を多くの異なる視点から撮るように前記少なくとも1つの可動付属物を配置することと、
前記移動機械デバイスのコンテキストを決定することと、
前記コンテキストに基づいてAIコンテキスト特有モデルを動的に検索することと、
前記AIコンテキスト特有モデルを使用して、前記棚の上の前記品目を識別およびカウントすることと
を実施するように構成されたエッジAIコンピューティング・モジュールを前記移動機械デバイスに提供することと
を含む方法。
【請求項9】
コンピュータ・システムに、請求項8に記載の方法を実行させるためのプログラム。
【請求項10】
閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するためのコンピュータ・システムであって、
コンピュータ・プロセッサと、
コンピュータ可読記憶媒体と、
前
記コンピュータ可読記憶媒体上に記憶されたプログラム命令であって、前
記プロセッサによって
実行されるとき、前記コンピュータ・システムに、
少なくとも1つの可動付属物を有する移動機械デバイスの少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを制御するステップであって、前記少なくとも1つの可動付属物が、前記少なくとも1つのカメラおよび前記少なくとも1つの追加の感覚モダリティを含み、前記制御によって、前記閉じた環境内の前記棚の上の前記品目のカメラ画像を多くの異なる視点から撮るように前記少なくとも1つの可動付属物が配置される、前記制御するステップと、
前記移動機械デバイスのコンテキストを決定するステップと、
前記コンテキストに基づいてAIコンテキスト特有モデルを動的に検索することと、
前記AIコンテキスト特有モデルを使用して、前記棚の上の前記品目を識別およびカウントすることと
を実施するように構成されたエッジAIコンピューティング・モジュールを提供するステップと
を
実行させる前記プログラム命令と
を備えるコンピュータ・システム。
【請求項11】
閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するためのコンピュータ・システムであって、
処理システムおよび少なくとも1つの可動付属物を有する移動機械デバイスを備え、前記少なくとも1つの可動付属物が、少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを含み、
前記処理システムが、
前記少なくとも1つのカメラおよび前記少なくとも1つの追加の感覚モダリティを使用して、前記閉じた環境内の前記棚の上の前記品目のカメラ画像を多くの異なる視点から撮るように前記少なくとも1つの可動付属物を配置するように構成された位置決めシステムと、
前記移動機械デバイスのコンテキストを決定するように構成されたコンテキスト・モジュールと、
前記コンテキストに基づいてAIコンテキスト特有モデルをダウンロードすることと、
前記AIコンテキスト特有モデルを使用して、前記棚の上の前記品目を識別およびカウントすることと、
エッジAIコンピューティング・モジュールによるダウンロードのために複数のAIコンテキスト特有モデルを記憶するクラウド・サービスと、
在庫管理システムと
を実施するように構成された前記エッジAIコンピューティング・モジュールと
を備え、
前記エッジAIコンピューティング・モジュールが、前記在庫管理システムに前記品目
のカウントをアップロードする、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、コンピュータ、およびコンピュータ・アプリケーションに関し、より詳細には、在庫制御のコンピュータ実装方法およびシステム、特にロボットを使用して在庫確認作業を実施することに関する。
【背景技術】
【0002】
店舗内の製品の在庫を把握し、通常は特定の製品ストック・キーピング・ユニット(SKU)のカウントを維持するシステムが利用可能である。様々な品目のカウントがデータベース内に維持され、データベースは、製品の他の属性も記憶し得る。しかしながら、在庫内に記憶された品目のカウントを、店舗内の物体の物理的カウントと比較する必要が頻繁にある。物理的在庫をデータベース内に記憶された論理的在庫と照合するこのプロセスは手作業であり、時間がかかる。
【0003】
様々なタイプの物体のカウンティングを自動化する既存のツールがある。たとえば、物理的物体上のタグおよびラベルをスキャンし、在庫確認システム内にタグおよびラベルを記憶するために使用され得る携帯電話上のアプリケーションがある。しかしながら、こうしたアプリケーションは、物理的店内をカバーするために手動操作を必要とするので、時間がかかり、コストがかかる。
【0004】
ロボットにカメラを使用させて外部に存在する物体をスキャンする、またはドローンを飛ばし、もしくは衛星画像を使用して外部のコンテナの写真を撮る手法が利用可能である。これらは、カウントすべき品目をカメラの見晴らしのきく地点からはっきりと確認することができるときに有用であり、適用可能である。しかしながら、カメラの見晴らしのきく地点が画像の完全な視界から遮られるケースが多くある。一例として、衛星は、いくつのコンテナが互いに積み重ねられているかを容易には推定することができない。可視電磁スペクトルを使用して動作するカメラが、非透明物体によってブロックされ、一方、紫外電磁スペクトルで動作するカメラが、何らかの物体によって、その位置に応じて部分的にブロックされ得る。
【0005】
静止カメラまたは移動カメラのどちらかを使用して、閉鎖された空間内の在庫を調べようと試みるとき、克服すべき多数の問題がある。たとえば、食料雑貨店では、多くの物体に対して視界の障害物があることになる。移動ロボットのカメラ(または一地点の静止カメラ)は、棚の中の第1の物体を見ることができるが、同じ棚の中の第1の物体の後ろにある物体を見ることができないことになる。このことにより、品目を自動的にカウントできなくなる。
【0006】
店舗は多くのタイプのロボットを配置し、ロボットにモータ・アセンブリおよびカメラを取り付けることができる。ロボットは、カメラまたは他のセンサを有し得、店舗の周りを移動することができる。しかしながら、ロボットは、通路内のこぼれものを検出することや、他のタイプの視覚的観測を行うなどのいくつかの作業については良好であるとしても、現況技術のロボットは、棚の上の製品の視界が妨げられることによって引き起こされる問題を克服することができず、したがって在庫品の中の様々な品目の在庫をカウントすることにおいて良好な作業を実施することができない。
【0007】
こうした課題を考慮すると、現在のところ、小型であり、または任意のタイプの静止式もしくは移動式のカメラからその視界が遮られるような形で通常は配置される物体を容易にカウントすることのできる、閉鎖された空間内の物理的資産の良好な在庫を調べるための良好な方法はない。
【発明の概要】
【0008】
一実施形態では、閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するための装置が、少なくとも1つの可動付属物を有する移動機械デバイスを含み、少なくとも1つの可動付属物は、少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを含む。装置は、少なくとも1つのカメラおよび少なくとも1つの追加の感覚モダリティを使用して、閉じた環境内の棚の上の品目のカメラ画像を多くの異なる視点から撮るように少なくとも1つの可動付属物を配置する制御モジュールと、エッジAIコンピューティング・モジュールとを含む。エッジAIコンピューティング・モジュールは、コンテキスト情報を使用して、コンテキストに基づいてAIコンテキスト特有モデルを動的に検索する。エッジAIコンピューティング・モジュールは、AIコンテキスト特有モデルを使用して、棚の上の品目を識別およびカウントする。一実施形態では、制御モジュールは、カメラ・ビジョンおよび少なくとも1つの追加の感覚モダリティを使用して、棚の上の品目の側面の上に、および側面に沿って付属物を配置する。一実施形態では、AIコンテキスト特有モデルがクラウド・ホスティング・サービスからダウンロードされる。一実施形態では、AIコンテキスト・モデルが、移動機械デバイスのコンテキストを決定するために使用される。一実施形態では、可動付属物がその縦軸の周りに回転され、移動機械デバイスの垂直次元に沿って降下および上昇され得る。一実施形態では、品目カウントが在庫管理システムにアップロードされる。
【0009】
閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するためのコンピュータ実装方法の一実施形態が、カメラを含む感覚モダリティを有する可動付属物を備える移動機械デバイスを提供することと、感覚モダリティを制御して、多くの異なる視点から品目を撮像するように付属物を配置することと、移動機械デバイスのコンテキストを決定することと、コンテキストに基づいてAIコンテキスト特有モデルを検索することと、AIコンテキスト特有モデルを使用して、品目を識別およびカウントすることとを含む。いくつかの実施形態では、方法はまた、品目の側面の上に、および品目の側面に沿って付属物を配置することと、クラウド・サービスからAIコンテキスト特有モデルをダウンロードすることと、AIコンテキスト・モデルを使用して移動機械デバイスのコンテキストを決定することと、付属物を縦軸の周りに回転させることと、移動機械デバイスの垂直次元に沿って付属物を降下および上昇させることと、在庫管理システムに品目カウントをアップロードすることとを含み得る。
【0010】
本明細書で説明される1つまたは複数の方法を実施するように動作可能な1つまたは複数のプロセッサを含むシステムも提供され得る。
【0011】
本明細書で説明される1つまたは複数の方法を実施するようにマシンによって実行可能な命令のプログラムを記憶するコンピュータ可読記憶媒体も提供され得る。
【0012】
様々な実施形態の別の特徴ならびに構造および動作が、添付の図面を参照しながら以下で詳細に説明される。図面では、同様の参照番号は、同一の要素または機能的に類似の要素を示す。
【図面の簡単な説明】
【0013】
【
図1】本明細書で開示される自動在庫カウンティング・システムの一実施形態の概略図である。
【
図2】本明細書で開示される自動在庫カウンティング・システムの移動ロボットの付属物位置を示す一実施形態の概略図である。
【
図3】本明細書で開示される自動在庫カウンティング・システムの移動ロボットの付属物の一実施形態の概略図である。
【
図4】本明細書で開示される環境内の自動在庫カウンティング・システムの一実施形態の概略図である。
【
図5】本明細書で開示される方法の一実施形態の流れ図である。
【
図6】本明細書で開示される自動在庫カウンティング・システムの一実施形態の概略図である。
【
図7】本明細書で開示される方法の一実施形態の流れ図である。
【
図8】本明細書で開示される自動在庫カウンティング・システムの処理システムの一実施形態のブロック図である。
【
図9】本明細書で開示される方法の一実施形態の流れ図である。
【
図10】本発明の一実施形態によるクラウド・コンピューティング環境を示す図である。
【
図11】本発明の一実施形態による抽象化モデル層を示す図である。
【
図12】本明細書で開示される本発明の実施形態の実装に適した例示的コンピューティング・システムのブロック図である。
【発明を実施するための形態】
【0014】
小売店、倉庫、受注処理センタなどの閉じた環境では、複数のラックがあり、各ラックは、様々な品目が積み重ねられた複数の棚からなる。環境は、通常はいくつかの通路を有し、各通路は、品目が互いに積み重ねられた棚のセットを有する。その結果、品目の在庫を調べる作業が割り当てられた人間またはマシンは、棚および製品を見るとき、先頭の製品のみ、または棚の上に積み重ねられた、せいぜい最初のいくつかの製品のみを確認することになる。視覚のみに依拠する在庫確認者またはマシンは、最初の物体の後ろ深くに位置する製品を確認またはカウントすることができないことになり、したがっていくつの製品が棚の上にあるかを判定することができないことになる。
【0015】
一実施形態では、閉じた環境内に保管される品目の物理的在庫確認を自動化し、製品が視界から遮られるという問題を克服する装置およびシステムが開示される。一実施形態では、閉鎖された空間内で動き回ることのできるロボットなどの移動機械デバイスが、少なくとも1つの付属物上に取り付けられた少なくとも1つのカメラを備える。一実施形態では、少なくとも1つの付属物はまた、マイクロフォン、タッチ・センサ、または重量センサ、あるいはその組合せなどの1つの追加の感覚モダリティを備える。一実施形態では、移動ロボットが、カメラ・ビジョン、追加の感覚モダリティ、および位置情報を使用して、様々な位置に、様々な角度でロボットを配置し、付属物上にカメラを配置し、したがってロボットは、棚の上のすべての物体を見てカウントすることができる。モダリティはまた、レーザ、LiDAR、構造光(アクティブ・ステレオ)センサ、パッシブ・ステレオ・センサ、スキャナ、赤外線センサ、音響センサ、無線標識受信機、またはそれらの何らかの組合せを含み得る。
【0016】
複数のモダリティの使用により、ロボット付属物がそれ自体を適切に配置し、カメラおよび他のセンサの位置を調節して、棚の上のすべての物体の正確なカウントを取ることが可能となる。品目が視界からふさがれるという問題を避けるように、付属物をカメラと共に様々な位置に配置するために、マイクロフォンおよびタッチ・センサが使用される。一例として、ロボットは、音およびタッチを使用して、複数の見晴らしのきく地点から物体のビューを得るように、棚の中深くにカメラを移動および配置し、品目の側面の上に、および品目の側面に沿って付属物を配置し得る。こうした見晴らしのきく地点から、ロボットは、棚の中に存在する品目数を正確にカウントし得、それによって物理的在庫を自動的に調べる。その結果、装置およびシステムは、在庫管理システムを容易にポピュレートし、物理的在庫と論理的在庫とを比較することができる。
【0017】
一実施形態では、ロボットは、他のモダリティから得られた画像および情報を解析して品目をカウントするコンピュータ処理システムを含む。一実施形態では、コンピュータ処理システムは、様々な機械学習およびディープ・ラーニング・プログラムなどの人工知能(AI)プログラムを使用する。店舗、倉庫、処理センタなどの環境内の多くのタイプの品目を正確にカウントする目的で、多くの異なるタイプのAIモデルが、解析およびカウンティングを実施するために必要とされる。各製品は異なる画像および異なるタイプの箱を有するので、こうしたAIモデルは製品特有のものであるべきである。すべてのタイプの製品を検出およびカウントすることのできる単一のAIモデルを有することは、設計するのが極めて複雑となり、多数の物体があると、誤り率が非常に高くなる。
【0018】
この問題に対処するために、一実施形態では、ロボット・コンピュータ処理システムがエッジAIコンピューティング・システムとして構成される。エッジAIコンピューティング・システムでは、製品をカウントおよび検出するためのすべてのモデルが、クラウド・ホステッド・サービスまたは中央サービス内に記憶されるが、モデルを使用するすべての計算が、ロボット12の処理システムによって行われる。AIモデル・ホスティングのための中央サービスは、店舗のマップ/平面図を有し、どんなタイプの製品が各通路位置に保管されるかを判定し得る。店舗平面図内の製品の位置を使用して、どのタイプの製品が各通路に保管されるかを知ると、ロボットの処理システムは、その動作のためのコンテキストを決定する。次いで、決定したコンテキストに基づいて、ロボット処理システムは、その通路に保管される製品をカウントおよび検出するための正しいAIコンテキスト特有モデルをダウンロードする。ロボットが異なる通路に移動し、またはコンテキストが変化する(たとえば、製品のセットが通路の途中で変化する)と、処理システム22は、新しいコンテキストを使用して、AIモデルの正しいセットを検索する。
【0019】
一実施形態では、
図1に示されるように、自動在庫カウンティング・システム10がロボット12を含む。
図1は、ロボット12の正面直立図である。ロボット12は、メイン・ボディ14と、ロボット12が環境を動き回り、通路のそれぞれに移動し、通路を上下し、通路のどちらかの側の棚に向くことを可能にする移動駆動部分16とを有する。一実施形態では、移動駆動部分16は全方向ホイール18を有する。一実施形態ではメイン・ボディ14は少なくとも1つのカメラ20を含み得る。
図1に示される実施形態は、メイン・ボディ14内に2つのカメラ20を有する。ロボット12はまた、ロボットの移動を制御し、物理的在庫を自動的に調べることに関連するデータ処理を実施するように構成されたコンピュータ処理システム22をも含み得る。そのようなコンピュータ処理システムの一例が、以下で説明される
図8で開示される。
【0020】
一実施形態では、ロボット12は少なくとも1つの可動付属物24を有する。
図1に示される実施形態は、メイン・ボディ14に取り付けられた2つの付属物24を有する。一実施形態では、付属物24は、メイン・ボディ14に対して回転するように配置され得る。一実施形態では、各付属物24は、回転可能接続26によってメイン・ボディ14に取り付けられる。付属物24は、メイン・ボディ14の側面に平行な移動位置で示されている。一実施形態では、回転可能接続26は折畳み式でもよく、それによって、メイン・ボディ14の側面25および27に対して押しつけるように付属物24を内側に折り畳んで、付属物24の幅フットプリントを最小限に抑えることができ、必要に応じてロボット12を通路内に容易にナビゲートすることが可能となる。
【0021】
一実施形態では、付属物24は、メイン・ボディ14の上端21と下端23との間の様々な位置まで降下または上昇され得る。一実施形態では、回転可能接続26は、メイン・ボディ14の側面25および27に沿って摺動可能であり得る。付属物24の3つの異なる作動位置が
図2に示されている。位置Aでは、接続26がメイン・ボディ14の上端付近に位置し、付属物24が移動位置から90°回転する。位置Bでは、付属物24が、トラック28に沿って、メイン・ボディ14の上端21と下端23との間の途中の位置まで移動する。位置Cでは、付属物24が、トラック28に沿って、メイン・ボディ14の下端23付近のトラック28内の位置まで移動する。
【0022】
図3に示されるように、一実施形態では、各付属物24は、タッチ・センサ30、マイクロフォン32、および付属物カメラ34を含み得る。タッチ・センサ30が付属物24の端部36に位置するように示されており、付属物24が移動位置から90°回転した後、タッチ・センサ30は、ロボット・メイン・ボディから最も遠くに位置することになる。一実施形態では、付属物24は、品目を拾い上げ、重量を使用して品目数をカウントするために、把持機構および重量センサを含み得る。マイクロフォン32および付属物カメラ34は、付属物24が移動位置から90°回転した後に、床に向かって下方に向くことになる付属物24の表面38上に露出する。
【0023】
閉じた環境の棚の上の品目の物理的在庫を調べるために、ロボット12は、処理システム22上にインストールされたナビゲーション・プログラムによって制御される環境の平面図に従って、通路のそれぞれを上下に移動することになる。ロボット12がそれ自体を通路のそれぞれの棚の正面に配置するとき、ロボット12は、その付属物24を上昇させ、付属物を棚の内側に移動する。たとえば、
図4に示されるように、付属物24が、棚42の上の互いに積み重ねられた品目40の上端の上に配置される。付属物24が品目40の上端に配置され、その結果、カメラ34が品目40の上端に向いており、品目40をカウントするために解析され得る品目40のデジタル画像をカメラ34が取得することが可能となる。一実施形態では、付属物24のうちの1つまたは複数は、棚の上の品目の2つの行の間にも配置され得る。次いで、付属物がその縦軸の周りに回転し、その結果、モダリティ・センサ、カメラ34、およびマイクロフォン32が品目の側面に向いており、カメラ34が品目40の側面のデジタル画像を取得することが可能となる。棚の中の様々なサイズの物体を扱うために、ロボット12が通路を下方に移動するとき、付属物24は上昇または降下し得る。タッチ・センサ30から取得された信号に基づいて、ロボット12は、付属物24が障害物に接触している、または障害物にぶつかったことを判定し得る。マイクロフォン32によって取り込まれた音が解析され、付属物24が障害物に接触している、または障害物にぶつかったことが判定され得る。たとえば、タッチ・センサ24からの信号に基づいて、ロボット12は、付属物24が棚の背面に到達したと判定し得る。次いでロボットは、ロボット12が棚の背面から収縮するとき、行の他方の側の品目の画像を取得するために付属物を180°回転し得る。マイクロフォン32からの音響信号と、棚の上の何らかの品目に接触し、または何らかの品目を引きずることを避けるようにロボットを制御するために、タッチ・センサ30からのタッチ信号も使用され得る。代替実施形態では、付属物が棚の背面に到達したときを判定するために、LIDARベース・センシングが使用され得る。
【0024】
ロボット12は、付属物24内のカメラ34およびメイン・ボディ14内の前面のカメラ20から撮られた画像を解析して、製品のタイプを判定し、製品をカウントする。このカウンティングは、画像に対して画像処理アルゴリズムを実行することによって行われ得る。品目をカウントし、または品目の量を測定するための他の手法も使用され得る。たとえばタッチ・センサ30が使用され、タッチ・センサに対する圧力を使用することによって品目のばね荷重スタックがカウントされ、品目数がカウントされ得る。タッチ・センサ30が付属物上に重量センサを含むとき、付属物は品目を拾い上げ、重量を使用して品目数をカウントする。次いでロボット12は、通路内の別の位置、または次の通路に移動して、物体の別のセットをカウントする。
【0025】
図5は、店舗通路を動き回り、棚の上の製品のすべてをカウントするようにロボット12を制御する処理システム22の一実施形態についてのフローチャートである。ステップS1で、ナビゲーション・プログラムに従って特定の通路に移動するようにロボット12が制御された後、ロボット12は、メイン・ボディ14内のカメラ20から画像を取得し、次いで処理システム22は、ロボット12の正面からの通路の視界を解析する。ステップS2で、記憶された平面図と、カメラ20から取得された信号とから判定された通路内の製品のタイプに基づいて、処理システム22は、その特定の通路内の品目をカウントするために付属物24についてどの位置を使用するかを決定する。ステップS3で、システムは、ステップS2で決定されたすべての付属物位置が解析されたかどうかをチェックする。ステップS3での判定がいいえである場合、方法はステップS4に進む。ステップS4で、付属物24が活動化され、タッチ・センサ30およびマイクロフォン32を含む付属物24上の様々なモダリティを使用して、棚の中の第1の位置に移動され、棚の上の品目の画像を取得することができるようにカメラ34が配置される。ステップS5で、処理システム22は、ロボット12および付属物24が検出している視界を判定する。一実施形態では、ステップS5で、処理システム22はカメラを制御して、正面視界カメラ20と付属物カメラ34の両方から画像を取得する。処理システム22は、付属物カメラ34が品目の側面視界を見るように配置されるか、それとも品目の上面視界を見るように配置されるかを判定する。処理システムは、カメラ34を制御して品目の画像を取得する。次いで、取得された画像がステップS6で解析され、その特定の付属物位置での棚の上の品目のカウントが取得される。次いで、品目カウントが在庫管理システムに転送され、在庫管理システム内の情報が更新される。
【0026】
ステップS5で、特定の付属物位置で画像が取得された後、方法はまた、ステップS3に戻り、ステップS2で決定されたすべての位置で画像が取得されたことを判定する。すべての位置が完了していない場合、前述のように、プロセスは、その第1の通路内の付属物位置のすべてが完了するまで、ステップS4からステップS6を反復する。その第1の通路内のすべての付属物位置が完了したとステップS3で判定されたとき、プロセスはステップS7に進み、ロボット12が次の通路に移動する。ステップS8で、システムは、すべての通路が完了したかどうかを判定する。すべての通路が完了していない場合(S8のいいえ)、方法はステップS1に戻り、すべての通路が完了するまでステップS1からS8が反復される。ステップS8ですべての通路が完了した場合、方法はステップS9で終了する。
【0027】
ステップS6での、品目をカウントするための画像の解析は、人工知能(AI)プログラムの使用を必要とする。店舗、倉庫、処理センタなどの環境内には多くのタイプの品目がある。良好なカウンティング・モデルを作成し、製品を識別するために、ロボット12は、解析およびカウンティングを実施するために多くの異なるタイプのAIモデルを必要とする。各製品は異なる画像および異なるタイプの箱を有するので、こうしたAIモデルは製品特有のものとなる。すべてのタイプの製品を検出およびカウントすることのできる単一のAIモデルを有することは、設計するのが極めて複雑となり、多数の物体があると、誤り率が非常に高くなる。
【0028】
この問題に対処するために、一実施形態では、処理システム22がエッジAIコンピューティング・システムとして構成される。エッジ・コンピューティングは、データが収集されているロボット12の処理システム22などのデバイスに、計算およびデータ記憶を近づける分散コンピューティング・パラダイムである。クラウドなどの中央位置に依拠することに比べて、エッジ・コンピューティングは、リアル・タイム・データが、app性能に影響を及ぼす帯域幅および待ち時間の問題を受けないことを可能にする。計算をネットワーク・エッジに動かすことにより、クライアントとサーバとの間の長距離通信がここでは低減されている。エッジAIコンピューティングは、エッジ・コンピューティングを使用するハードウェア・デバイス上でローカルにAIアルゴリズムを実行中であり、AIアルゴリズムは、どんな接続も必要とすることなく、デバイス上で作成されるデータに基づく。これにより、数ミリ秒未満でデータを処理することが可能となり、それによってリアル・タイム情報がユーザに与えられる。AI処理はディープ・ラーニング・モデルを使用し、エッジAIコンピューティングと共に、さらなる解析のためにリモート位置にデータを送る前にデータが作成され得る。
【0029】
エッジAIコンピューティング・システムの一実施形態では、製品をカウントおよび検出するためのすべてのモデルが、クラウド・ホステッド・サービスまたは中央サービス内に記憶されるが、モデルを使用するすべての計算が、ロボット12の処理システム22によって行われる。AIモデル・ホスティングのための中央サービスは、店舗のマップ/平面図を有し、どんなタイプの製品が各通路位置に保管されるかを判定し得る。店舗平面図内の製品の位置を使用して、どのタイプの製品が各通路に保管されるかを知ると、ロボット12の処理システム22は、その動作のためのコンテキストを決定する。次いで、決定したコンテキストに基づいて、ロボット処理システム22は、その通路に保管される製品をカウントおよび検出するための正しいAIモデルをダウンロードする。ロボットが異なる通路に移動し、またはコンテキストが変化する(たとえば、製品のセットが通路の途中で変化する)と、処理システム22は、新しいコンテキストを使用して、AIモデルの正しいセットを検索する。
【0030】
クラウド・ホステッド・システムの表現が
図6に示されている。ロボット12の処理システム22は、たとえばローカル・エリア・ネットワーク、広域ネットワーク、インターネット、クラウドなどの通信ネットワーク52を介してAIモデル・サービス50と通信する。AIモデル・サービス50は、1つまたは複数のカウンタ・モデル54、1つまたは複数のタイプ・モデル56、および1つまたは複数のコンテキスト・モデル58を含む。ロボット12の処理システム22はまた、通信ネットワーク52を介して中央在庫管理サービス60と通信する。
【0031】
図7は、ロボット12がより正確なカウンティングを行うことを可能にするコンテキスト特有AIモデル検索システムの動作の一実施形態についての流れ図である。ステップS20で、ロボット12のコンテキストが決定される。一実施形態では、処理システム22は、店舗平面図内のロボットの位置と、どのタイプの製品が各通路に保管されるかに基づいて、処理システム22の動作のためのコンテキストを決定する。一実施形態では、コンテキストがユーザ入力によって決定される。一実施形態では、処理システム22は、ロボット12のコンテキストを予測するために使用されることになるコンテキスト・モデル58をAIモデル・サービス50からダウンロードする。コンテキスト・モデルは、ロボットのコンテキストがどんなものであるかを決定する。コンテキスト・モデルは、ロボットの位置、ロボットの方向(たとえば、ロボットがどのラックを見ているか)などの入力を取り、コンテキストを予測する。コンテキストはまた、ロボットが使用することを望み得るモダリティのリスト(たとえば、視覚および重量センサを使用する、またはそれらのうちの1つだけを使用する)をも含み得る。複数のコンテキストが存在し得、複数のコンテキスト・モデルが存在し得る。たとえば、ロボットが店舗のゲーミング区画内にあるとき、ロボットは、ロボットのコンテキストを予測するために異なるモデルを使用することを望み得、ロボットが日用雑貨区間内にあるとき、ロボットは異なるコンテキスト・モデルを使用し得る。
【0032】
ステップS22で、処理システム22は、コンテキストに基づいて、AIモデル・サービス50からダウンロードすべきコンテキスト特有モデルを決定する。一実施形態では、コンテキスト・モデル58は、ロボットが品目をカウントするために必要となるAIタイプ・モデルまたはAIカウンタ・モデルあるいはその両方を決定する。コンテキスト特有モデルは、タイプ・モデル56およびカウンタ・モデル54を含み得る。一実施形態では、店舗44内のロボット12の位置と、その特定の位置の棚の上でカウントされると想定される製品のタイプとを含む、ステップS20で決定されたコンテキストに基づいて、処理システム22は、カウントすべき製品のタイプを予測するための適切なタイプ・モデル56を選択する。タイプ・モデルは、カメラ34などのセンサ入力に基づいて、製品のタイプ(たとえば、SKU数)を予測する。いくつかの実施形態では、複数のタイプ・モデル56、たとえば、箱を認識するためのビジョン・アルゴリズムに基づいてタイプを決定するタイプ・モデル、缶の形状に対して最適化されたビジョン・アルゴリズムに基づいてタイプを決定するタイプ・モデルなどが存在し得る。使用すべきタイプ・モデル56は、コンテキスト・モデル58で予測されるコンテキストによって決定される。ステップS22でダウンロードされるカウンタ・モデルは、コンテキスト・モデル58またはタイプ・モデル56のどちらかによって決定される、カウントすべき製品のタイプに基づく。たとえば、ロボット12のコンテキストが、ロボット12が店舗の通路10内にあり、通路10が市販の鎮痛薬を含むことである場合、ロボット12は、鎮痛薬の瓶をカウントすることのできるAIカウンタ・モデル54をダウンロードする。ロボット12のコンテキストが、ロボット12が店舗の通路20内にあり、通路20がポップコーンの箱を含むことである場合、ロボット12は、様々なタイプのポップコーン箱を区別し、それらをカウントすることのできるAIカウンタ・モデルをダウンロードする。
【0033】
ステップS26で、処理システム22は、ステップS20で決定されたコンテキストが変化したかどうかを判定する。コンテキストが変化しておらず、ステップS26でいいえである場合、方法はステップS28に進む。
【0034】
ステップS28で、処理システム22は、ダウンロードされたカウント・モデルを使用して品目をカウントする。
【0035】
ステップS30で、処理システム22は、品目カウントを中央在庫管理サービス60にアップロードする。アップロードの後、方法はステップS26に戻り、ロボット12のコンテキストが変化したかどうかを確認するためにチェックする。コンテキストが変化しており、ステップS26ではいである場合、それは、さらなる品目をカウントすべきであるという表示となり、方法はステップS20に戻る。
【0036】
一実施形態では、
図8に示されるように、処理システム22は、制御システム62、コンテキスト・モジュール63、送信モジュール64、受信機モジュール66、追跡システム68、障害物回避システム70、マッピング・システム72、移動プラットフォーム74、電源システム76、エッジAIコンピューティング・モジュール78、および付属物位置決めシステム80を含む。電源システム76は、移動在庫確認ロボット12に電力を供給する充電式電池と、電池を充電するためのドッキング・ポートとを備え、在庫確認ロボット12を静止電力ドッキング・ステーション(図示せず)とドッキングすることによって電池が再充電され得る。
【0037】
一実施形態では、コンテキスト・モジュール63は、店舗平面図内のロボットの位置と、どのタイプの製品が各通路に保管されるかに基づいて、ロボット12のコンテキストを決定する。一実施形態では、コンテキスト・モジュール63は、ユーザ入力によってコンテキストを決定する。一実施形態では、エッジAIコンピューティング・モジュール78は、位置および他のコンテキスト情報を使用して、コンテキストに応じて検出およびカウンティングのためにAIモデル・サービス50から適切なAIモデルを動的に選択および使用する。一実施形態では、エッジAIコンピューティング・モジュール78は、ロボット12のコンテキストを予測するために使用されることになるコンテキスト・モデル58をAIモデル・サービス50からダウンロードする。一実施形態では、送信モジュール64は、コンテキスト特有モデルの選択をAIモデル・サービス50に送信する。ダウンロード・モジュール66は、選択されたコンテキスト特有モジュールをAIモデル・サービス50からダウンロードする。制御システム62は、追跡システム68によって提供されるフィードバックを使用して、マッピング・システム72内に記憶された在庫マップに沿って移動在庫確認ロボット12の移動を制御する。追跡システム68は、小売店などの建物内の移動在庫確認ロボット12の位置を追跡する。一実施形態では、追跡システム68は、建物の天井の再帰反射タグや、建物の床に配置された赤外線ウェイポイントなどのタグを追跡することによるフィードバックを使用する。制御システム62は、人々、ショッピング・カート、棚の上に積み重ねられるべき品目の箱、およびフロア・ディスプレイを含む、移動在庫確認ロボット12の経路内の障害物を検出する障害物回避システム70を使用して、移動在庫確認ロボット12の移動をさらに制御する。一実施形態では、ロボット12上の超音波距離計が超音波信号を放射および受信し、移動在庫確認ロボット12が障害物を検出および回避することを可能にする。移動プラットフォーム74は、モータ、移動駆動部分16、およびホイール18を備える。
【0038】
マッピング・システム72内に記憶された在庫マップは、棚および棚の中の品目を撮像およびカウントする順序を定義する在庫配置図をさらに含む。移動在庫確認ロボット12が在庫マップを動き回るとき、棚の上の品目の画像が所定の順序で取り込まれ、この所定の順序が在庫配置図である。
【0039】
図9は、閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するための方法の一実施形態の流れ図である。方法は、カメラを含む感覚モダリティを有する可動付属物を備える移動機械デバイスを提供するステップS10と、感覚モダリティを制御して、多くの異なる視点から品目を撮像するように付属物を配置するステップS12と、移動機械デバイスのコンテキストを決定するステップS14と、コンテキストに基づいてAIコンテキスト特有モデルを検索するステップS16と、AIコンテキスト特有モデルを使用して、品目を識別およびカウントするステップS18とを含む。いくつかの実施形態では、方法はまた、品目の側面の上に、および品目の側面に沿って付属物を配置するステップS20と、クラウド・サービスからAIコンテキスト特有モデルをダウンロードするステップS22と、AIコンテキスト・モデルを使用して移動機械デバイスのコンテキストを決定するステップS24と、付属物を縦軸の周りに回転させるステップS26と、移動機械デバイスの垂直次元に沿って付属物を降下および上昇させるステップS28と、在庫管理システムに品目カウントをアップロードするステップS30のうちの1つまたは複数を含み得る。
【0040】
いくつかの実施形態では、AIモデル・サービス50または中央在庫管理サービス60あるいはその両方は、クラウド・コンピューティングを使用して実装される。本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に記載の教示の実装はクラウド・コンピューティング環境に限定されないことを理解されたい。むしろ、本発明の実施形態は、現在周知の、または後に開発される任意の他のタイプのコンピューティング環境と共に実装することができる。
【0041】
クラウド・コンピューティングは、最小限の管理労力またはサービスのプロバイダとの対話で迅速にプロビジョニングされ、解放され得る、構成可能なコンピューティング・リソース(たとえば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールへの便利なオンデマンド・ネットワーク・アクセスを可能にするためのサービス配信のモデルである。このクラウド・モデルは、少なくとも5つの特徴、少なくとも3つのサービス・モデル、および少なくとも4つの配置モデルを含み得る。
【0042】
特徴は以下の通りである。
【0043】
オンデマンド・セルフサービス:クラウド消費者は、サービスのプロバイダとの人間の対話を必要とすることなく、必要に応じて自動的に、サーバ時間やネットワーク・ストレージなどのコンピューティング機能を一方的にプロビジョニングし得る。
【0044】
幅広いネットワーク・アクセス:機能がネットワークを介して利用可能であり、異種シンまたはシック・クライアント・プラットフォーム(たとえば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準機構を通じてアクセスされる。
【0045】
リソース・プーリング:マルチ・テナント・モデルを使用して複数の消費者にサービスするためにプロバイダのコンピューティング・リソースがプールされ、様々な物理および仮想リソースが、要求に従って動的に割当ておよび再割当てされる。消費者は一般に、提供されるリソースの厳密な位置に関する制御または知識を有さないが、より高いレベルの抽象化(たとえば、国、州、またはデータ・センタ)で位置を指定することができ得るという点で、ある意味で位置独立性がある。
【0046】
迅速な拡張性:機能が、迅速かつ弾力的に、あるケースでは自動的にプロビジョニングされて迅速にスケールアウトされ、迅速に解放されて迅速にスケールインされ得る。消費者にとって、プロビジョニングのために利用可能な機能はしばしば無制限であるように見え、いつでも任意の量を購入することができる。
【0047】
測定されるサービス:クラウド・システムは、サービスのタイプ(たとえば、ストレージ、処理、帯域幅、およびアクティブなユーザ・アカウント)にとって適切な何らかのレベルの抽象化の計量機能を活用することによってリソース使用を自動的に制御し、最適化する。リソース使用量が監視され、制御され、レポートされ得、利用されるサービスのプロバイダと消費者の両方にとって透明性が実現される。
【0048】
サービス・モデルは以下の通りである。
【0049】
Software as a Service(SaaS):消費者に提供される機能は、クラウド・インフラストラクチャ上で実行中のプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ(たとえば、ウェブ・ベースのeメール)などのシン・クライアント・インターフェースを通じて、様々なクライアント・デバイスからアクセス可能である。消費者は、ネットワーク、サーバ、オペレーティング・システム、ストレージ、さらには個々のアプリケーション機能を含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、可能性のある例外は、限定されたユーザ特有のアプリケーション構成設定である。
【0050】
Platform as a Service(PaaS):消費者に提供される機能は、プロバイダによってサポートされるプログラミング言語およびツールを使用して作成された、消費者が作成または取得したアプリケーションをクラウド・インフラストラクチャ上に配置することである。消費者は、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む、基礎となるクラウド・インフラストラクチャを管理または制御しないが、配置されるアプリケーション、および場合によってはアプリケーション・ホスティング環境構成に関する制御を有する。
【0051】
Infrastructure as a Service(IaaS):消費者に提供される機能は、処理、ストレージ、ネットワーク、および他の基本コンピューティング・リソースをプロビジョニングすることであり、消費者は、オペレーティング・システムおよびアプリケーションを含み得る任意のソフトウェアを配置および実行することができる。消費者は、基礎となるクラウド・インフラストラクチャを管理または制御しないが、オペレーティング・システム、ストレージ、配置されるアプリケーションに関する制御、および場合によっては選択されたネットワーキング構成要素(たとえば、ホスト・ファイアウォール)の限定された制御を有する。
【0052】
配置モデルは以下の通りである。
【0053】
プライベート・クラウド:クラウド・インフラストラクチャが組織だけのために運用される。クラウド・インフラストラクチャは、組織または第3者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0054】
コミュニティ・クラウド:クラウド・インフラストラクチャがいくつかの組織によって共有され、共有される関心事(たとえば、ミッション、セキュリティ要件、ポリシー、およびコンプライアンスの考慮事項)を有する特定のコミュニティをサポートする。クラウド・インフラストラクチャは、組織または第3者によって管理され得、オンプレミスまたはオフプレミスで存在し得る。
【0055】
パブリック・クラウド:クラウド・インフラストラクチャが、一般社会または大規模な産業グループに対して利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0056】
ハイブリッド・クラウド:クラウド・インフラストラクチャは、固有のエンティティのままであるが、データおよびアプリケーション・ポータビリティを可能にする標準化技術または所有権を主張できる技術(たとえば、クラウド間のロード・バランシングのためのクラウド・バースティング)によって互いに結び付けられる2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成である。
【0057】
クラウド・コンピューティング環境は、ステートレスネス(statelessness)、低結合、モジュラリティ、およびセマンティック相互運用性(semantic interoperability)に焦点を当てることを指向するサービスである。クラウド・コンピューティングの中心は、相互接続されたノードのネットワークを含むインフラストラクチャである。
【0058】
次に
図10を参照すると、例示的クラウド・コンピューティング環境150が示されている。図示されるように、クラウド・コンピューティング環境150は、たとえば、携帯情報端末(PDA)もしくはセルラ電話154A、デスクトップ・コンピュータ154B、ラップトップ・コンピュータ154C、または自動車コンピュータ・システム154N、あるいはその組合せなどの、クラウド消費者によって使用されるローカル・コンピューティング・デバイスが通信し得る1つまたは複数のクラウド・コンピューティング・ノード110を含む。ノード110は互いに通信し得る。ノード110は、前述のようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはそれらの組合せなど、1つまたは複数のネットワーク内で物理的または仮想的にグループ化され得る(図示せず)。これにより、クラウド・コンピューティング環境150が、インフラストラクチャ、プラットフォーム、またはソフトウェア、あるいはその組合せを、クラウド消費者がローカル・コンピューティング・デバイス上でそのためのリソースを維持する必要のないサービスとして提供することが可能となる。
図10に示されるコンピューティング・デバイス154A~Nのタイプは例示的なものに過ぎないこと、ならびにコンピューティング・ノード110およびクラウド・コンピューティング環境150が、(たとえば、ウェブ・ブラウザを使用して)任意のタイプのネットワークまたはネットワーク・アドレス指定可能接続あるいはその両方を介して任意のタイプのコンピュータ化されたデバイスと通信し得ることを理解されたい。
【0059】
次に
図11を参照すると、クラウド・コンピューティング環境150(
図10)によって提供される機能抽象化層のセットが示されている。
図11に示される構成要素、層、および機能は例示的なものに過ぎず、本発明の実施形態はそれに限定されないことを理解されたい。図示されるように、以下の層および対応する機能が提供される。
【0060】
ハードウェアおよびソフトウェア層160が、ハードウェア構成要素およびソフトウェア構成要素を含む。ハードウェア構成要素の例には、メインフレーム161、RISC(縮小命令セット・コンピュータ)アーキテクチャベースのサーバ162、サーバ163、ブレード・サーバ164、記憶デバイス165、ならびにネットワークおよびネットワーキング構成要素166が含まれる。いくつかの実施形態では、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア167およびデータベース・ソフトウェア168を含む。
【0061】
仮想化層170が、仮想エンティティの以下の例が提供され得る抽象化層を提供する:仮想サーバ171、仮想ストレージ172、仮想プライベート・ネットワークを含む仮想ネットワーク173、仮想アプリケーションおよびオペレーティング・システム174、ならびに仮想クライアント175。
【0062】
一例として、管理層180が以下で説明される機能を与え得る。リソース・プロビジョニング181が、クラウド・コンピューティング環境内でタスクを実施するために利用されるコンピューティング・リソースおよび他のリソースの動的調達(dynamic procurement)を実現する。計量および価格設定(Metering and Pricing)182が、クラウド・コンピューティング環境内でリソースが利用されるときのコスト追跡と、こうしたリソースの消費に対する課金またはインボイシングとを実現する。一例として、こうしたリソースはアプリケーション・ソフトウェア・ライセンスを含み得る。セキュリティが、クラウド消費者およびタスクについての識別検証、ならびにデータおよび他のリソースに対する保護を実現する。ユーザ・ポータル183が、消費者およびシステム管理者のためのクラウド・コンピューティング環境へのアクセスを実現する。サービス・レベル管理184が、必要とされるサービス・レベルが満たされるようにクラウド・コンピューティング・リソース割振りおよび管理を実現する。サービス・レベル・アグリーメント(SLA)計画および履行185が、SLAに従って、将来の必要が予想されるクラウド・コンピューティング・リソースの事前調整および調達を実現する。
【0063】
作業負荷層190が、クラウド・コンピューティング環境がそのために利用され得る機能の例を提供する。この層から提供され得る作業負荷および機能の例には、マッピングおよびナビゲーション191、ソフトウェア開発およびライフサイクル管理192、仮想クラスルーム教育配信193、データ解析処理194、トランザクション処理195、およびAIモデル196が含まれる。
【0064】
図12は、本開示の一実施形態による、閉じた環境内の棚の上に保管された品目についての在庫確認手順を自動化するための方法を実装し得る例示的コンピュータまたは処理システム22の概略図を示す。コンピュータ・システムは、適切な処理システムの一例に過ぎず、本明細書で説明される方法の実施形態の使用または機能の範囲に関する何らかの制限を示唆するものではない。図示される処理システムは、多数の他の汎用または専用コンピューティング・システム環境または構成で動作可能であり得る。
図12に示される処理システムと共に使用するのに適していることがある周知のコンピューティング・システム、環境、または構成、あるいはその組合せの例には、限定はしないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドもしくはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラマブル・コンシューマ・エレクトロニクス、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムもしくはデバイスのうちのいずれかを含む分散クラウド・コンピューティング環境などが含まれ得る。
【0065】
コンピュータ・システムは、コンピュータ・システムによって実行中の、プログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実施し、または特定の抽象データ・タイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含み得る。コンピュータ・システムは、通信ネットワークを通じてリンクされるリモート処理デバイスによってタスクが実施される分散クラウド・コンピューティング環境で実施され得る。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含む、ローカル・コンピュータ・システム記憶媒体とリモート・コンピュータ・システム記憶媒体の両方に配置され得る。
【0066】
コンピュータ・システムの構成要素は、限定はしないが、1つまたは複数のプロセッサまたは処理装置100と、システム・メモリ106と、システム・メモリ106を含む様々なシステム構成要素をプロセッサ100に結合するバス104とを含み得る。プロセッサ100は、本明細書で説明される方法を実施するプログラム・モジュール102を含み得る。一実施形態では、処理システム22がプロセッサ100に実装され、プログラム・モジュール102が、
図8に示されるモジュールのうちの1つまたは複数を含む。モジュール102は、プロセッサ100の集積回路内にプログラムされ、あるいはメモリ106、記憶デバイス108、もしくはネットワーク114、またはそれらの組合せからロードされ得る。
【0067】
バス104は、様々なバス・アーキテクチャのいずれかを使用する、メモリ・バスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、およびプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のいずれか1つまたは複数を表し得る。限定ではなく例として、そのようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカル・バス、およびPeripheral Component Interconnects(PCI)バスが含まれる。
【0068】
コンピュータ・システムは様々なコンピュータ・システム可読媒体を含み得る。そのような媒体は、コンピュータ・システムによってアクセス可能である任意の入手可能な媒体でよく、そのような媒体には、揮発性媒体と不揮発性媒体、取外し可能媒体と取外し不能媒体の両方が含まれ得る。
【0069】
システム・メモリ106は、ランダム・アクセス・メモリ(RAM)またはキャッシュ・メモリあるいはその両方などの、揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システムは、他の取外し可能/取外し不能な揮発性/不揮発性コンピュータ・システム記憶媒体をさらに含み得る。単に例として、取外し不能な不揮発性磁気媒体(たとえば、「ハード・ドライブ」)から読み取り、それに書き込むための記憶システム108が設けられ得る。図示されていないが、取外し可能な不揮発性磁気ディスク(たとえば、「フロッピィ・ディスク」)から読み取り、それに書き込むための磁気ディスク・ドライブ、およびCD-ROM、DVD-ROM、または他の光媒体などの取外し可能な不揮発性光ディスクから読み取り、それに書き込むための光ディスク・ドライブが設けられ得る。そのような場合、それぞれは、1つまたは複数のデータ・メディア・インターフェースによってバス104に接続され得る。
【0070】
コンピュータ・システムはまた、キーボード、ポインティング・デバイス、ディスプレイ118などの1つもしくは複数の外部デバイス116、ユーザがコンピュータ・システムと対話することを可能にする1つもしくは複数のデバイス、またはコンピュータ・システムが1つもしくは複数の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス(たとえば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信し得る。そのような通信は、入力/出力(I/O)インターフェース110を介して行われ得る。
【0071】
さらに、コンピュータ・システムは、ネットワーク・アダプタ112を介して、ローカル・エリア・ネットワーク(LAN)、一般の広域ネットワーク(WAN)、または公衆ネットワーク(たとえば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワーク114と通信し得る。図示されるように、ネットワーク・アダプタ112は、バス104を介してコンピュータ・システムの他の構成要素と通信する。図示していないが、他のハードウェア構成要素またはソフトウェア構成要素あるいはその両方が、コンピュータ・システムと共に使用され得ることを理解されたい。限定はしないが、例には、マイクロコード、デバイス・ドライバ、冗長処理装置、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、データ・アーカイブ記憶システムなどが含まれる。
【0072】
本発明は、任意の可能な技術的詳細統合レベルのシステム、方法、またはコンピュータ・プログラム製品、あるいはその組合せでよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実施させるコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。
【0073】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のために命令を保持および記憶し得る有形デバイスでよい。コンピュータ可読記憶媒体は、たとえば、限定はしないが、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または上記の任意の適切な組合せでよい。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピィ・ディスク、命令が記録されたパンチ・カードや溝の中の隆起構造などの機械的に符号化されたデバイス、および上記の任意の適切な組合せが含まれる。本明細書では、コンピュータ可読記憶媒体は、電波または他の自由伝播電磁波、導波路または他の伝送媒体を通じて伝播する電磁波(たとえば、光ファイバ・ケーブルを通過する光パルス)、ワイヤを通じて伝送される電気信号など、本質的に一時的信号であると解釈されるべきではない。
【0074】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、たとえばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースが、ネットワークからコンピュータ可読プログラム命令を受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するためにコンピュータ可読プログラム命令を転送する。
【0075】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路用の構成データ、あるいはSmalltalk、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語や類似のプログラミング言語などの手続型プログラミング言語とを含む1つまたは複数のプログラミング言語の何らかの組合せで書かれたソース・コードまたはオブジェクト・コードでよい。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、スタンド・アロン・ソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ、および部分的にリモート・コンピュータ上で、または完全にリモート・コンピュータもしくはサーバ上で実行され得る。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または接続が外部コンピュータに対して(たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて)行われ得る。いくつかの実施形態では、たとえばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路が、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによってコンピュータ可読プログラム命令を実行し得る。
【0076】
本発明の態様が、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、フローチャート図またはブロック図あるいはその両方の中のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることを理解されよう。
【0077】
こうしたコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するための手段を生み出すように、コンピュータまたは他のプログラム可能データ処理装置のプロセッサに与えられ、マシンが作り出され得る。こうしたコンピュータ可読プログラム命令はまた、命令を記憶するコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作の態様を実装する命令を含む製品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに特定の方式で機能するように指示し得るコンピュータ可読記憶媒体内に記憶され得る。
【0078】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定される機能/動作を実装するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施させて、コンピュータ実装プロセスが生成され得る。
【0079】
図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。この点で、フローチャートまたはブロック図の各ブロックは、指定の論理的機能を実装するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替実装では、ブロック内に記載の機能は、図に記載されている以外の順序で行われ得る。たとえば、連続して示される2つのブロックは、実際には1つのステップとして実施され、同時に、ほぼ同時に、部分的もしくは全体的に時間的に重複する方式で実行され得、またはブロックは、関係する機能に応じて、時には逆の順序で実行され得る。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方のブロックの組合せが、指定の機能または動作を実施し、あるいは専用ハードウェアとコンピュータ命令の組合せを実施する専用ハードウェア・ベースのシステムによって実装され得ることにも留意されよう。
【0080】
本明細書で使用される用語は、特定の実施形態を説明するためのものに過ぎず、本発明を限定するものではない。本明細書では、単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでない限り、複数形も含むものとする。本明細書では、「備える、含む(“comprises” and/or “comprising”)」という用語は、記載の特徴、完全体、ステップ、動作、要素、構成要素、またはその組合せの存在を指定するが、1つまたは複数の他の特徴、完全体、ステップ、動作、要素、構成要素、またはそのグループ、あるいはその組合せの存在または追加を除外しないことをさらに理解されよう。
【0081】
以下の特許請求の範囲のすべての手段またはステップおよび機能要素の対応する構造、材料、動作、および均等物は、具体的に特許請求されるように、他の特許請求される要素と組み合わせて機能を実施するための任意の構造、材料、または動作を含むものとする。本発明の説明は、例示および説明のために提示されたものであるが、網羅的なものではなく、開示された形態の発明に限定されないものとする。本発明の範囲から逸脱することなく、多くの修正形態および変形形態が当業者には明らかとなるであろう。実施形態は、本発明の原理および実際の応用を最良に説明するため、および企図される特定の用途に適するように様々な修正が行われた様々な実施形態について本発明を当業者が理解することを可能にするために選ばれ、説明された。
【0082】
さらに、本発明の好ましい実施形態が特定の用語を用いて説明されたが、そのような説明は例示のためのものに過ぎず、以下の特許請求の範囲から逸脱することなく変更および変形が行われ得ることを理解されたい。