(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-04
(54)【発明の名称】保管サイトにおける自律的なロボット移動
(51)【国際特許分類】
G05D 1/02 20200101AFI20230728BHJP
B65G 1/137 20060101ALI20230728BHJP
【FI】
G05D1/02 K
B65G1/137 A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023501392
(86)(22)【出願日】2021-06-28
(85)【翻訳文提出日】2023-03-01
(86)【国際出願番号】 US2021039357
(87)【国際公開番号】W WO2022010681
(87)【国際公開日】2022-01-13
(32)【優先日】2020-07-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】523008037
【氏名又は名称】ブルックハースト ガレージ インコーポレイテッド
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】キム、ユン ジュン
(72)【発明者】
【氏名】リ、キュムアン
(72)【発明者】
【氏名】ファン、スンユ
【テーマコード(参考)】
3F522
5H301
【Fターム(参考)】
3F522AA02
3F522BB01
3F522BB24
3F522BB35
3F522CC09
3F522EE15
3F522FF03
3F522FF12
3F522FF37
3F522GG05
3F522GG32
3F522GG34
3F522GG44
3F522GG46
3F522HH24
3F522JJ02
3F522LL42
5H301AA06
5H301BB05
5H301BB14
5H301CC04
5H301CC07
5H301CC10
5H301DD07
5H301DD17
5H301GG09
5H301KK02
(57)【要約】
ロボットは、保管サイトの環境をとらえる画像センサを含む。ロボットは、様々な物体検出と画像分割技術を使って、規則的に形づくられた構造を視覚的に認識して、保管サイトを移動する。保管サイトの目標位置を受信することに応じて、ロボットは経路に沿って目標位置まで移動する。ロボットは、ロボットが経路に沿って移動する際に画像を受信する。ロボットは、画像センサがとらえた画像を分析して、ロボットが通り過ぎた、保管サイト内の規則的に形づくられた構造の数を追跡することにより、経路におけるロボットの現在位置を特定する。規則的に形づくられた構造は、ラックと、ラックの水平バーと、ラックの垂直バーとであっても良い。ロボットは、ロボットが通り過ぎた行および列の数をカウントすることにより、目標位置を特定できる。
【選択図】
図3
【特許請求の範囲】
【請求項1】
在庫品ロボットを操作する方法であって、
経路に沿って目標位置まで移動するように前記在庫品ロボットを制御することと、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえることと、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析することと、
を含む方法。
【請求項2】
前記画像を分析することは、更に、とらえられた前記画像から画像分割を作成することを含み、
前記画像の1つにおける前記画像分割は、前記画像の前記1つに現れている前記規則的に形づくられた構造のフレームのセグメントを含み、
前記画像を分析することは、更に、前記画像の前記1つの前記画像分割を使って、前記規則的に形づくられた構造を特定することを含む、
請求項1に記載の方法。
【請求項3】
前記画像分割は、少なくとも畳み込みニューラルネットワークを使用することによって作成される、請求項1に記載の方法。
【請求項4】
前記画像を分析することは、更に、
第1の画像に現れている前記規則的に形づくられた構造の1つの部分の参照点を決定することと、
前記第1の画像に続く第2の画像における、前記規則的に形づくられた構造の1つの前記部分を特定することと、
前記第1の画像と前記第2の画像にわたる前記参照点の動きを追跡することと、
前記第1の画像と前記続く画像に関して特定の位置を参照点が通過することに応じて、前記在庫品ロボットが通り過ぎた規則的に形づくられた構造の前記数を増やすことと、
を含む請求項1に記載の方法。
【請求項5】
更に、奥行きカメラを使って、ポイントクラウド・データをとらえることを含み、
前記ポイントクラウド・データは奥行きデータを含み、
更に、前記画像の1つに現れている前記規則的に形づくられた構造の1つを特定することと、
前記規則的に形づくられた構造の前記1つの表面と一列に並ぶ平面を推定することと、
前記ポイントクラウド・データの前記奥行きデータと前記平面とを使って、前記規則的に形づくられた構造の前記1つに対する前記在庫品ロボットの前記現在位置を特定することと、
を含む請求項1に記載の方法。
【請求項6】
更に、前記規則的に形づくられた構造の前記1つに対する前記在庫品ロボットの推定ヨー角と、前記在庫品ロボットと前記規則的に形づくられた構造の前記1つとの間の推定距離とを特定することを含む請求項1に記載の方法。
【請求項7】
更に、前記在庫品ロボットの中心のオフセットが、前記目標位置から閾値の距離以内であると特定することに応じて、前記画像センサで前記目標位置の写真をとることを含む請求項1に記載の方法。
【請求項8】
前記開始位置は、前記在庫品ロボットを充電するように構成されているベース・ステーションである請求項1に記載の方法。
【請求項9】
前記規則的に形づくられた構造は、行と列を有するラックを含む請求項1に記載の方法。
【請求項10】
前記在庫品ロボットの前記現在位置を特定することは、前記在庫品ロボットが通り過ぎたラックの数と、前記在庫品ロボットが通り過ぎた行および列の前記数とに基づいている請求項1に記載の方法。
【請求項11】
更に、目標の通路と、目標のラックと、前記ラックの行番号と、前記ラックの列番号とを明示する座標によって定義される前記目標位置を受信することと、
前記座標を受信することに応じて、前記ラック番号に基づいて、前記在庫品ロボットが通り過ぎたラックの前記数をカウントすることと、
前記目標のラックが位置する通路へと曲がることと、
前記目標位置を見つけるために、前記列番号に基づいて、前記在庫品ロボットが通り過ぎた前記列の数をカウントすることと、
前記行番号に相当する行へと移動することと、
を含む請求項1に記載の方法。
【請求項12】
前記在庫品ロボットは、空中無人機である請求項1に記載の方法。
【請求項13】
在庫品ロボットであって、
保管サイトの画像をとらえるように構成された画像センサと、
1以上のプロセッサと、
前記1以上のプロセッサに結合した1以上のメモリと、
を含み、
前記1以上のメモリは、1以上の指示のセットを記憶しており、
前記1以上の指示のセットは、前記1以上のプロセッサに実行された場合、前記1以上のプロセッサに、
前記保管サイトの目標位置を受信させ、
経路に沿って前記目標位置まで移動するように前記在庫品ロボットを制御させ、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえさせ、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析させる、
在庫品ロボット。
【請求項14】
前記規則的に形づくられた構造は、行と列を有するラックを含む請求項13に記載の在庫品ロボット。
【請求項15】
前記在庫品ロボットの前記現在位置を特定することは、前記在庫品ロボットが通り過ぎたラックの数と、前記在庫品ロボットが通り過ぎた行および列の前記数とに基づいている請求項13に記載の在庫品ロボット。
【請求項16】
前記画像を分析するための指示は、前記1以上のプロセッサに、
とらえられた前記画像から画像分割を作成させ、
前記画像の1つにおける前記画像分割は、前記画像の前記1つに現れている前記規則的に形づくられた構造のフレームのセグメントを含み、
前記画像を分析するための指示は、前記1以上のプロセッサに、
更に、前記画像の前記1つの前記画像分割を使って、前記規則的に形づくられた構造を特定させる、
請求項13に記載の在庫品ロボット。
【請求項17】
前記画像センサは、奥行きカメラであって、その視野内の物体の奥行きデータを生成するように構成された、奥行きカメラを含む請求項13に記載の在庫品ロボット。
【請求項18】
更に、前記在庫品ロボットの前記位置姿勢を特定するように、前記1以上のメモリに記憶された前記画像にアクセスするように構成されたビジュアル・イナーシャル・オドメトリ(VIO)ユニットを含む請求項13に記載の在庫品ロボット。
【請求項19】
前記1以上のメモリは、更に、前記保管サイト内の前記規則的に形づくられた構造の総数と、前記規則的に形づくられた構造の寸法情報とを記憶する請求項13に記載の在庫品ロボット。
【請求項20】
保管サイトを管理するためのシステムであって、前記システムは、
(1)1以上のプロセッサと、前記1以上のプロセッサに結合した1以上のメモリとを含む在庫品ロボットを含み、
前記1以上のメモリは、1以上の指示のセットを記憶しており、
前記1以上の指示のセットは、前記1以上のプロセッサに実行された場合、前記1以上のプロセッサに、
前記保管サイトの目標位置を受信させ、
経路に沿って前記目標位置まで移動するように前記在庫品ロボットを制御させ、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえさせ、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析させ、
前記システムは、更に、
(2)前記在庫品ロボットに再度動力を供給するように構成されたベース・ステーションを含み、
前記ベース・ステーションは、前記在庫品ロボットが前記ベース・ステーションに戻ることに応じて、前記目標位置の前記写真をダウンロードするように構成されている、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
この出願は2020年7月9日に提出された米国非仮出願番号第16/925,241号への優先権の利益を主張し、すべての目的のために、米国非仮出願番号第16/925,241号の全体を参照としてここに取り込む。
【0002】
(技術分野)
本開示は、一般に保管サイトで使用されるロボットに関し、より具体的には、自律的に保管サイト内を移動するロボットに関する。
【背景技術】
【0003】
倉庫のような保管サイトでの在庫品管理は、複雑かつ労働集約型のプロセスでありえる。在庫品のアイテムは、通常、速くアイテムの位置を突き止めるために、アイテムのバーコードが容易にスキャン可能な状態で、それらの指定された位置に置かれる。しかし、場合によっては、アイテムは置き違えられる可能性があり、見つけるのが難しくなる。また、置き違えられたアイテムは、次に来る在庫品のために取っておいたスペースを占有するかもしれず、保管サイトの人員に、アイテムの場所を移動させ、紛失しているアイテムを追跡するのに時間を費やさせる。
【発明の概要】
【課題を解決するための手段】
【0004】
実施例は、保管サイトの画像をとらえるための画像センサと、指示の様々なセットを実行するための1以上のプロセッサとを含むロボットに関する。ロボットは、保管サイトの目標位置を受け取る。ロボットは、ベース・ステーションから目標位置へ経路に沿って移動する。ロボットは、経路に沿って移動する際、画像センサがとらえた画像を受け取る。ロボットは、画像センサがとらえた画像を分析し、ロボットが通り過ぎた保管サイトにおける、規則正しく形づくられた構造の数を追うことによって、経路におけるロボットの現在位置を特定する。規則正しく形づくられた構造は、ラックとラックの水平バーとラックの垂直バーであっても良い。ロボットは、ロボットが通り過ぎた行と列の数を数えることによって、目標位置を特定しても良い。
【図面の簡単な説明】
【0005】
【
図1】実施例による、例示の保管サイトのシステム環境を示すブロック図である。
【
図2】実施例による、例示のロボットと例示のベース・ステーションの構成要素を示すブロック図である。
【
図3】実施例による、保管サイトの在庫品を管理する例示の方法を表すフローチャートである。
【
図4】実施例による、ロボットを備える保管サイトの例示のレイアウトの概念図である。
【
図5】実施例による、ロボットの例示のナビゲーション・プロセスを表すフローチャートである。
【
図6A】実施例による、例示のビジュアル参照作業を表すフローチャートである。
【
図6B】実施例による、画像分割の結果を示す概念図である。
【
図7】実施例による、プランナー・アルゴリズムを表すフローチャートである。
【
図8】実施例による、例示の機械学習モデルを示すブロック図である。
【
図9】実施例による、例示のコンピューティング・マシンの構成要素を示すブロック図である。
【0006】
説明の目的のためにのみ、非限定的な様々な実施例を、図は表し、詳細な説明は記載する。
【発明を実施するための形態】
【0007】
図と以下の説明は、実例として好ましい実施例に関するのみである。当業者は、開示されたものの本質を逸脱しない範囲で採用されうる現実的代案として、ここで開示される構造と方法の代わりの実施例を認識する可能性がある。
【0008】
ここで、参照は、いくつかの実施例の詳細においてなされ、参照の例は、添付の図に示される。なお、実行可能な類似した又は同様の参照番号が数字で使用される場合はいつでも、類似した又は同様の参照番号は、類似した又は同様の機能を示す可能性がある。図は、説明目的のためにのみ開示されたシステム(または方法)の実施例を表す。当業者は、ここに示される構造と方法の代わりの実施例が、ここに記述される本質を逸脱しない範囲で採用されうると、以下の説明からすぐに認めるだろう。
【0009】
実施例は、ラック及びラックの行と列を含む、環境において視覚的に認識される物によって、そして、ロボットが通り過ぎた物の数を数えることによって、保管サイト内を移動するロボットに関する。ロボットは、連続的に保管サイトの環境をとらえるのに、画像センサを使用しても良い。画像は、ラック及びラックの行と列のような、すぐに特定可能な物の輪郭を特定するために、画像分割技術によって分析される。ロボットが通り過ぎたラックの数を数えることによって、ロボットは、目標位置が存在する通路を特定することができる。ロボットは、ラックの目標位置を特定するために、行と列の数を数えても良い。
【0010】
システムの概要
図1は、実施例による、例示のロボットに手助けされる又は完全に自律的な保管サイトのシステム環境100を示すブロック図である。例として、システム環境100は、保管サイト110と、ロボット120と、ベース・ステーション130と、在庫品管理システム140と、コンピュータ・サーバー150と、データ・ストア160と、ユーザデバイス170とを含む。システム環境100の実在物と構成要素は、ネットワーク180を介して互いに通信する。様々な実施例では、システム環境100は、異なる、又はより少しの、又は追加の構成要素を含んでも良い。また、システム環境100の各々の構成要素が単数形で記述されている場合も、システム環境100は、各々の構成要素を1以上含んでも良い。たとえば、保管サイト110は、1以上のロボット120と、1以上のベース・ステーション130を含んでも良い。各々のロボット120が、対応するベース・ステーション130を有していても良いし、または、複数のロボット120がベース・ステーション130を共有しても良い。
【0011】
保管サイト110は、グッズと商品と食料雑貨と品物とコレクションのような在庫品を、保管する又は売る又は展示する、どのような適当な施設であっても良い。例示の保管サイト110は、倉庫と、在庫品用地と、本屋と、靴屋と、アウトレットと、他の小売店と、図書館と、博物館などを含んでも良い。保管サイト110は、いくつかの規則正しく形づくられた構造を含んでも良い。規則正しく形作られた構造は、物が、不変的であるか一時的であるか、固定されているか可動であるか、荷重負荷であるか否か、にかかわらず、容易に特定可能な規則正しい形状または輪郭を有する、保管サイト内の構造、備品、器材、家具、フレーム、シェル、ラックまたは他の適当な物であっても良い。規則正しく形づくられた構造は、しばしば、保管サイト110で在庫品の保管に使用される。たとえば、ラック(金属のラック又はシェル又はフレーム又は他の類似した構造を含む)が、しばしば、倉庫でグッズと商品の保管に使用される。しかし、規則正しく形づくられた構造が、在庫品保管に使用される必要があるとは限らない。保管サイト110は、様々なアイテムが置かれて、体系的に保管される特定のレイアウトを含んでも良い。たとえば、倉庫内では、ラックはセクション別に分類され、通路で分けられていても良い。各々のラックは、行番号と列番号を使って特定されうる複数のパレット位置を含んでも良い。保管サイトは高いラックと低いラックを含んでも良く、ある場合は、主に地上の近くに大部分の在庫品アイテムを運んでも良い。
【0012】
保管サイト110は、保管サイト110内の在庫品を追跡し、在庫品を管理するのに使用される1以上のロボット120を含んでも良い。参照の容易さのために、たとえ1台以上のロボット120が使用されるとしても、ロボット120は単数形で記載される可能性がある。また、いくつかの実施例では、1種類以上のロボット120が、保管サイト110に存在しうる。たとえば、いくつかのロボット120は保管サイト110で在庫品をスキャンすることに特化する一方で、他のロボット120はアイテムを動かすことに特化しても良い。ロボット120は、また、自律ロボット、または在庫品循環棚卸ロボット、または在庫品調査ロボット、または在庫品検出ロボット、または在庫品管理ロボットとも呼ばれても良い。在庫品ロボットは、在庫品アイテムを追跡し、在庫品アイテムを動かし、他の在庫品管理作業を実行するのに使用されても良い。自律の程度は、実施例と実施例の間で変化しても良い。たとえば、1つの実施例では、ロボット120が割り当てられた作業を自動的に実行するように、ロボット120は完全自律性であっても良い。他の実施例では、ロボット120が最小の人間の命令または制御で保管サイト110を移動可能なように、ロボット120は半自律性であっても良い。いくつかの実施例では、ロボット120が、どの程度の自律性を有していても、ロボット120は遠隔操作されても良く、マニュアルモードに切り替えられても良い。ロボット120は、空中無人機、地上ロボット、車両、フォークリフト、モバイル・ピッキングロボットのような様々な種類を採用しても良い。
【0013】
ベース・ステーション130は、ロボット120が戻るための、空中ロボットが着陸するための、デバイスであっても良い。ベース・ステーション130は、1以上の戻り場所を含んでも良い。ベース・ステーション130は、ロボット120に再度動力を供給するのに使用されても良い。ロボット120に再度動力を供給する様々な方法が、様々な実施例で使用されても良い。たとえば、1つの実施例では、ベース・ステーション130は、ロボット120が速く務めを再開できるように、ロボットがベース・ステーションに着いた時、ロボット120のバッテリーを交換するバッテリー交換ステーションとして役立つ。交換されたバッテリーは、有線または無線で、ベース・ステーション130で充電されても良い。他の実施例では、ベース・ステーション130は、ロボット120のバッテリーを再充電するのにロボット120の充電端子と結合する1以上の充電端子を備える充電ステーションとして役立つ。さらに他の実施例では、ロボット120は、動力に燃料を使用しても良く、ベース・ステーション130はその燃料タンクを充填することによってロボット120に再度動力を供給しても良い。
【0014】
ベース・ステーション130は、また、ロボット120の通信ステーションとして役立っても良い。たとえば、倉庫のような特定の種類の保管サイト110では、ネットワークの範囲は存在しないかもしれず、あるいは特定の場所にのみ存在するかもしれない。ベース・ステーション130は、Wi-Fiまたはイーサネット・ケーブルのような無線または有線の通信チャンネルを使って、システム環境100内の他の構成要素と通信しても良い。ロボット120がベース・ステーション130に戻った時、ロボット120はベース・ステーション130と通信しても良い。ベース・ステーション130は、ロボット120にコマンドのような入力を送信しても良く、ロボット120でとらえられたデータをダウンロードしても良い。複数のロボット120が使用される実施例では、ベース・ステーション130は、ロボット間の動きを調整するための群制御装置またはアルゴリズムを備えていても良い。ベース・ステーション130とロボット120は、無線周波数、またはブルートゥース、または近距離無線通信(near-field communication(NFC))、または有線通信のような、どのような適当な方法で通信しても良い。1つの実施例では、ロボット120は主にベース・ステーションと通信する一方、他の実施例では、ロボット120は、システム環境100内の他の構成要素と直接通信する能力を有していても良い。1つの実施例では、ベース・ステーション130は、ネットワーク180と直接通信するロボット120用の無線信号増幅器として役立っても良い。
【0015】
在庫品管理システム140は、保管サイト110を使っているアドミニストレータ(例えば、在庫品を所有する会社、倉庫管理アドミニストレータ、在庫品を売っている小売業者)によって操作されるコンピュータ・システムであっても良い。在庫品管理システム140は、在庫品アイテムの位置を管理するのに使用されるシステムであっても良い。在庫品管理システム140は、在庫品アイテムと、保管サイト110内の量およびメタデータ・タグおよびアセットタイプ・タグおよびバーコード・ラベルおよびアイテムの位置座標のようなアイテム関連情報と、に関するデータを格納するデータベースを含んでも良い。在庫品管理システム140は、アドミニストレータが、中心のデータベースと在庫品の評価基準にアクセスして、データを分析し、レポートを作成し、将来の需要を予測し、アイテムが正しく置かれることを確実とするために在庫品アイテムの位置を管理するためのフロントエンドソフトウェアとバックエンドソフトウェアの両方を提供しても良い。アドミニストレータは、アイテムを保管位置からすぐに回収できるように、アイテムが保管サイト110に正しく置かれることを確実とするのに、在庫品管理システム140のアイテム座標データを頼みにしても良い。これは、誤って置かれたアイテムが、次に来る在庫品のために取っておいたスペースを占有するのを防いで、そのうえ、アウトバウンド・プロセスでの、紛失しているアイテムの位置を突き止めるための時間を減らす。
【0016】
コンピュータ・サーバー150は、ロボット120により提供されるデータを分析し、ロボット120が様々な在庫品の認識と管理作業を実行するための命令を与える仕事を課されたサーバーであっても良い。ロボット120は、コンピュータ・サーバー150またはユーザデバイス170または在庫品管理システム140により制御されても良い。たとえば、コンピュータ・サーバー150は、ロボット120に、保管サイト110の様々な場所に保管されている在庫品の画像をスキャンして、とらえるように指示しても良い。在庫品管理システム140によって提供されるデータと、ロボット120によりとらえられたグランド・トゥルース・データとに基づいて、コンピュータ・サーバー150は、2セットのデータの矛盾を確認し、アイテムが、置き違えられ、又は失われ、又は損なわれた等、様々な理由で、フラグを立てられるべきか否かを決定する。次に、コンピュータ・サーバー150は、置き違えられたアイテムを正しい位置へ移動させるといったように、潜在的問題を解決するようロボット120に指示しても良い。ある実施例では、コンピュータ・サーバー150は、サイトの人員が人手で問題を解決できるように、フラグを立てられたアイテムのレポートを作成しても良い。
【0017】
コンピュータ・サーバー150は、様々な場所で動く1以上のコンピュータを含んでも良い。たとえば、コンピュータ・サーバー150の一部は、保管サイト110に存在するローカル・サーバーであっても良い。プロセッサのようなコンピュータ・ハードウェアは、サイトのコンピュータと関連していても良いし、ベース・ステーション130に含まれていても良い。コンピュータ・サーバー150の他の部分は、地理的に分散されたクラウド・サーバーであっても良い。コンピュータ・サーバー150はグランド・コントロール・ステーション(ground control station(GCS))として役立っても良く、データ処理を提供し、ユーザデバイス170で使用されるエンドユーザー・ソフトウェアを維持しても良い。GCSは、ロボット120の制御と監視とメンテナンスを担当しても良い。ある実施例では、GCSはベース・ステーション130の一部としてサイトに存在しても良い。データ処理パイプラインとエンドユーザー・ソフトウェア・サーバーは、遠隔に又はその場に存在しても良い。
【0018】
コンピュータ・サーバー150は、ユーザが在庫品とベース・ステーション130とロボット120を管理するためのソフトウェア・アプリケーションを維持しても良い。コンピュータ・サーバー150と在庫品管理システム140は、同じ実在物によって操作されてもされなくても良い。ある実施例では、コンピュータ・サーバー150は、保管サイトのアドミニストレータから離れた実在物によって操作さても良い。たとえば、コンピュータ・サーバー150は、保管サイト110を現代化して自動化するために、ロボット120および関連のシステムを供給するロボット・サービス・プロバイダによって操作されても良い。コンピュータ・サーバー150により提供されるソフトウェア・アプリケーションは、様々な形態を採用しても良い。ある実施例では、ソフトウェア・アプリケーションは、在庫品管理システム140と一体でも良いし、在庫品管理システム140にアドオンとして統合されても良い。別の実施例では、ソフトウェア・アプリケーションは、在庫品管理システム140を補う、または取って代わる別のアプリケーションであっても良い。ある実施例では、ソフトウェア・アプリケーションは、ロボット120を供給するロボット・サービス・プロバイダによって、保管サイト110のアドミニストレータへのサービスとしてのソフトウェア(software as a aervice(SaaS))として提供されても良い。
【0019】
データ・ストア160は、ロボット120および在庫品管理システム140によりアップロードされる様々なデータを格納する、非一時的で不揮発性のコンピュータ記憶媒体の形態をとったメモリのような1以上の記憶装置を含む。たとえば、データ・ストア160に格納されるデータは、ロボット120によりとらえられる画像とセンサー・データと他のデータを含んでも良い。データは、在庫品管理システム140により維持される在庫品データも含んでも良い。コンピュータで読取り可能な記憶媒体は、伝搬信号または搬送波のような一時的な媒体を含まない媒体である。データ・ストア160は、様々な形態を採用しても良い。ある実施例では、データ・ストア160は、ネットワーク180により他の構成要素と通信する。この種のデータ・ストア160は、クラウド・ストレージ・サーバーと呼ばれても良い。例示のクラウド・ストレージ・サービス・プロバイダは、AWS、AZURE STORAGE、GOOGLE CLOUD STORAGEなどを含んでも良い。他の実施例では、データ・ストア160は、クラウド・ストレージ・サーバーに代わり、コンピュータ・サーバー150に制御され接続している記憶装置である。たとえば、データ・ストア160は、コンピュータ・サーバー150により操作されるストレージ・サーバー室の記憶装置のような、コンピュータ・サーバー150により使用されるメモリ(たとえば、ハードドライブ、フラッシュメモリ、ディスク、ROMなど)の形態を採用しても良い。
【0020】
ユーザデバイス170は、コマンドをロボット120に与え、保管サイト110の在庫品を管理するために、保管サイト110のアドミニストレータによって使用されても良い。たとえば、アドミニストレータは、ユーザデバイス170を用いて、ロボットが自動的に仕事を完了するためのタスク・コマンドをロボットに与えることができる。1つのケースでは、アドミニストレータは、特定の目標位置を指定し、またはロボット120がスキャンする保管位置の範囲を指定することができる。アドミニストレータは、ロボット120が位置を突き止める、または配置を確認する特定のアイテムを指定しても良い。ユーザデバイス170の例は、パソコン(personal computers(PCs))またはデスクトップ・コンピュータまたはラップトップ・コンピュータまたはタブレット型コンピュータまたはスマートフォンまたはスマートウォッチのようなウェアラブル電子装置または他の適当な電子装置を含む。
【0021】
ユーザデバイス170は、グラフィカル・ユーザ・インタフェース(graphical user interface(GUI))の形態を採用したユーザ・インタフェース175を含んでも良い。コンピュータ・サーバー150または在庫品管理システム140により提供されるソフトウェア・アプリケーションは、ユーザ・インタフェース175として表示されても良い。ユーザ・インタフェース175は、様々な形態を採用しても良い。ある実施例では、ユーザ・インタフェース175は、ユーザデバイス170で表示されるGUIを含むフロントエンドのソフトウェア・アプリケーションの一部である。1つのケースでは、フロントエンドのソフトウェア・アプリケーションは、たとえば、ユーザデバイス170のアプリケーション・ストア(例えば、App Store)を介してユーザデバイス170でダウンロードされ、インストールされうるソフトウェア・アプリケーションである。他のケースでは、ユーザ・インタフェース175は、コンピュータ・サーバー150のウェブ・インターフェース、またはクライアントがウェブ・ブラウザを介してアクションを実行しうる在庫品管理システム140の形態をとる。他の実施例では、ユーザ・インタフェース175はグラフィック要素を含まないで、たとえばコマンド・ウインドウまたはアプリケーション・プログラム・インタフェース(application program interfaces(API))のような他の適当な方法によって、コンピュータ・サーバー150または在庫品管理システム140と通信する。
【0022】
ロボット120とベース・ステーション130と在庫品管理システム140とコンピュータ・サーバー150とデータ・ストア160とユーザデバイス170の間の通信は、ネットワーク180、たとえばインターネットを介して送信されても良い。ある実施例では、ネットワーク180は標準的な通信技術および/またはプロトコルを使う。このように、ネットワーク180は、イーサネット、802.11、ワールドワイド・インターオペラビリティ・フォー・マイクロウェーブ・アクセス(worldwide iteroperability for microwave access(WiMAX))、3G、4G、LTE、5G、デジタル加入者回線(digital subscriber line(DSL))、非同期転送モード(asynchronous transfer mode(ATM))、インフィニバンド、PCI Expressなどのような技術を使ったリンクを含んでも良い。同様に、ネットワーク180上で使われるネットワーク・プロトコルは、マルチプロトコル・ラベル・スイッチング(multiprotocol label switching(MPLS))、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/Internet protocol(TCP/IP))、ユーザー・データグラム・プロトコル(user datagram protocol(UDP))、ハイパーテキスト・トランスポート・プロトコル(hypertext transport protocol(HTTP))、シンプル・メール転送プロトコル(simple mail transfer protocol(SMTP))、ファイル転送プロトコル(file transfer protocol(FTP))などを含んでも良い。ネットワーク180で交換されるデータは、ハイパーテキスト・マークアップ言語(hypertext markup language(HTML))、拡張マークアップ言語(extensible markup language(XML))などを含む技術および/またはフォーマットを用いて表されうる。そのうえ、リンクの全部または一部は、SSL(secure sockets layer)、トランスポート層セキュリティ(transport layer securithi(TLS))、仮想私設網(virtual private networks(VPNs))、インターネットプロトコル・セキュリティ(Internet protocol security(IPsec))などのような従来の暗号化技術を用いて暗号化されうる。ネットワーク180は、インターネットのようなネットワークを切り替えるリンクとパケットも含む。いくつかの実施例では、たとえばコンピュータ・サーバー150と在庫品管理システム140のような2台のコンピュータ・サーバーが、APIを介して通信しても良い。たとえば、コンピュータ・サーバー150は、APIを介して在庫品管理システム140から在庫品データを取り出しても良い。
【0023】
例示のロボットとベース・ステーション
図2は、実施例による、例示のロボット120と例示のベース・ステーション130の構成要素を示すブロック図である。ロボット120は、画像センサ210と、プロセッサ215と、メモリ220と、イナーシャル測定装置(inertia measurement unit(IMU))230を含むフライト制御装置(flight control unit(FCU))225と、状態推定器235と、視覚的参照エンジン240と、プランナー250と、通信エンジン255と、I/Oインターフェース260と、動力源265とを含んでも良い。ロボット120の機能は、後述よりも様々な方法で、様々な構成要素に分配されていても良い。様々な実施例では、ロボット120は、異なる、および/またはより少ない、および/または追加の構成要素を含んでも良い。また、
図2中の構成要素の各々が単数形で記述されている場合も、構成要素は複数含まれても良い。たとえば、ロボット120は1以上の画像センサ210と1以上のプロセッサ215を含んでも良い。
【0024】
画像センサ210は、移動と、位置特定と、衝突回避と、物体の認識および識別と、在庫人認識目的のために、保管場所の環境の画像をとらえる。ロボット120は、1以上の画像センサ210と、1種類以上のそのような画像センサ210を含んでも良い。たとえば、ロボット120は、状態推定器235のために、環境の光学画像をとらえるデジタルカメラを含んでも良い。たとえば、画像センサ210でとらえられるデータは、その位置が既知で固定されているグローバルフレームのような慣性系に関するロボット120の位置姿勢を特定するためのように、位置特定の目的のために、状態推定器235に含まれるVIOユニット236に提供されても良い。ロボット120は、画像センサ210が、立体写真により3次元画像をとらえることができるように、2以上のレンズを含むステレオカメラも含んでも良い。ステレオカメラは、画像フレームごとに、たとえば赤・緑・青(red、green、blue(RGB))のピクセル値と、奥行き情報を含むポイントクラウド・データを生成しても良い。ステレオカメラでとらえられた画像は、物体認識目的のために視覚的参照エンジン240に提供されても良い。画像センサ210は、光検出測距(light detection and ranging(LIDAR))センサと赤外線カメラと360度奥行きカメラなどの他の種類の画像センサであっても良い。画像センサ210は、在庫品循環棚卸目的のために、アイテムのラベル(たとえば、バーコード)の画像もとらえても良い。いくつかの実施例では、単一のステレオカメラが、様々な目的に使用されても良い。たとえば、ステレオカメラは、物体認識のために、視覚的参照エンジン240に画像データを提供しても良い。ステレオカメラは、ラベル(たとえば、バーコード)の画像をとらえるのに用いられても良い。いくつかの実施例では、ロボット120は、画像センサ210を様々な角度に回転させ、画像センサ210でとらえられる画像を安定させうる、ジンバルのような回転台を含む。ある実施例では、画像センサ210は、保管サイトの地図を作る目的で、経路に沿ってデータをとらえても良い。
【0025】
ロボット120は、1以上のプロセッサ215と、指示の1以上のセットを記憶する1以上のメモリ220を含む。指示の1以上のセットは、1以上のプロセッサに実行された場合、1以上のソフトウェア・エンジンとして実現されるプロセスを、1以上のプロセッサに実行させる。ロボット120の、FCU255と状態推定器235のような様々な構成要素は、ソフトウェアとハードウェア(例えば、センサー)の組合せとして実現されても良い。ロボット120は、様々なソフトウェア・エンジンを実行するのに単一の一般的なプロセッサを使用しても良いし、様々な機能のために別々のより特殊用途のプロセッサを使用しても良い。ある実施例では、ロボット120は、様々な構成要素(例えば、FCU225、視覚的参照エンジン240、状態推定器235、プランナー250)のために、様々な指示のセットを実行可能な汎用コンピュータ(例えば、CPU)を使用しても良い。汎用コンピュータは、LINUX、ANDROIDなどのような適切なオペレーティングシステム上で動いても良い。たとえば、1つの実施例では、ロボット120は、ロボットを制御するのに使用されるアプリケーションを含むスマートフォンを携帯しても良い。他の実施例では、ロボット120は、様々な機能に特化した複数のプロセッサを含む。たとえば、FCU225と視覚的参照エンジン240と状態推定器235とプランナー250のような機能的な構成要素のいくつかは、モジュール化されても良く、そして、各々は自身のプロセッサとメモリと指示のセットを含む。ロボット120は、各々のモジュール化された構成要素と、整合して、通信するために、中央処理装置(central processor unit(CPU))を含んでも良い。それゆえに、実施例に従い、ロボット120は、様々な作業を行うために、シングルプロセッサまたはマルチプロセッサ215を含んでも良い。メモリ220は、画像センサ210でとらえられる画像と映像を記憶しても良い。画像は、周囲の環境と、バーコードとラベルのような在庫品の画像とをとらえた画像を含んでも良い。
【0026】
フライト制御装置(FCU)225は、ソフトウェアと、イナーシャル測定装置(IMU)230と他のセンサのようなハードウェアとの組合せで、ロボット120の動きを制御しても良い。地上ロボット120には、フライト制御装置225は、マイクロコントローラ・ユニット(microcontroller unit(MCU))と呼ばれても良い。FCU225は、他の構成要素により提供される情報に依拠して、ロボット120の動きを制御する。たとえば、プランナー250は出発点から目的地までのロボット120の経路を決定し、コマンドをFCU225に提供する。FCU225は、コマンドに基づいて、ロボット120の様々な機械部品(たとえば、アクチュエータ、モーター、エンジン、ホイール)に、電気信号を発生させ、ロボット120の動きを調節する。ロボット120の精密な機械部品は、実施例とロボット120の種類次第であっても良い。
【0027】
IMU230はFCU225の一部であっても良いし、または独立した構成要素であっても良い。IMU230は、ロボット120の力と線形加速と回転の測定値を生み出すために、1以上の加速度計とジャイロスコープと他の適切なセンサを含んでも良い。たとえば、加速度計は、ロボット120に働く力を計測し、線形加速を感知する。複数の加速度計は、3次元空間でのロボット120の加速を感知するために協力しあう。たとえば、第1の加速度計はx方向の加速を感知し、第2の加速度計はy方向の加速を感知し、第3の加速度計はz方向の加速を感知する。ジャイロスコープは、ロボット120の回転と角加速度を感知する。測定に基づいて、プロセッサ215は、時間に関するIMU230の移動および回転データを集積することによって、ロボット120の推定位置を取得しても良い。
【0028】
状態推定器235は、プロセッサ215に実行されうる、メモリ220に記憶されたソフトウェアの指示のセットに相当しても良い。状態推定器235は、ロボット120の位置特定情報を生成するのに使用されても良く、ロボット120の状態を推定するための様々なサブの構成要素を含んでも良い。たとえば、1つの実施例では、状態推定器235は、ビジュアル・イナーシャル・オドメトリ(visual-inertial odometry(VIO))ユニット236と高度推定器238を含んでも良い。他の実施例では、他のモジュールとセンサとアルゴリズムが、状態推定器238でロボット120の位置を特定するのに使用されても良い。
【0029】
VIOユニット236は、画像センサ210(たとえば、ステレオカメラ)から画像データを、IMU230から測定値を受信し、たとえばロボット120の位置姿勢といった位置特定情報を生成する。IMU230からの加速測定値の二重積分から得られる位置データは、しばしば、ドリフト誤差の傾向がある。VIOユニット236は画像特徴点を抽出し、画像シーケンスの特徴点を追跡して、画像センサ210にとらえられた環境内の物体のエッジと境界と表面の移動を表すオプティカルフロー・ベクトルを生成する。フィルタリング(例えば、ウィーナーフィルタ、カルマンフィルタ、帯域通過フィルタ、粒子フィルタ)と最適化のような様々な信号処理技術と、データ/画像変換が、位置特定情報の決定における様々なエラーを減らすのに用いられても良い。
【0030】
高度推定器238は、ロボット120の絶対高度と相対的な高度(例えば、床上にある物からの距離)を測定するのに用いられる、ソフトウェアとハードウェアの組合せであっても良い。高度推定器238は、ロボット120の下にある物の、地面に対する高度を測定する下方距離計を含めても良い。距離計は、IR(または適切な信号)エミッタと、物で反射するIRの往復時間を感知するセンサとを含んでも良い。高度推定器238は、ロボット120の絶対高度を推定するVIOユニット236から、データを受信しても良いが、通常、距離計と比べ、あまり正確でない方法である。ロボット120が、床または他の水平面に置かれた様々な物と在庫品の上を飛ぶ場合、高度推定器238は、距離計で生成したデータとVIOユニット236で生成したデータとを結合するためのソフトウェア・アルゴリズムを含んでも良い。高度推定器238で生成したデータは、衝突回避と目標位置発見のために使用されても良い。高度推定器238は、ロボット120が天井にぶつかるのを防ぐために、グローバルな最大高度を設定しても良い。高度推定器238は、ロボット120が目標位置を突き止めるように、ラックの行がいくつロボットの下にあるかに関する情報も提供する。高度データは、ロボット120の垂直レベルを特定するために、ロボット120が通り過ぎた行の数と共に使用されても良い。
【0031】
視覚的参照エンジン240は、プロセッサ215により実行されうる、メモリ220に記憶されたソフトウェア指示のセットに相当しても良い。視覚的参照エンジン240は、ロボット120の現在位置を特定し、ロボット120の近くの環境の物体とエッジと表面を確認し、物体の近くの表面と比較したロボット120の推定距離および姿勢(たとえば、ヨー)を特定するための、様々な画像処理アルゴリズムと位置アルゴリズムを含んでも良い。視覚的参照エンジン240は、画像センサ210から、連続画像のピクセル・データと、ポイントクラウド・データを受信しても良い。視覚的参照エンジン240により生成された位置情報は、物体からの距離およびヨーと、目標ポイント(たとえば、目標物体の中心点)からの中心のオフセットとを含んでも良い。
【0032】
視覚的参照エンジン240は、画像センサ210でとらえられる画像から、画像分割を作成するための、1以上のアルゴリズムと機械学習モデルを含んでも良い。画像分割は、他の物体および環境からとらえられた画像の中に現れている規則的に形づくられた構造の、フレーム(たとえば、ラックの垂直バーまたは水平バー)または輪郭を分ける1以上のセグメントを含んでも良い。画像分割に使われるアルゴリズムは、畳み込みニューラルネットワーク(convolutional neural network(CNN))を含んでも良い。分割を実行する際に、エッジ検出アルゴリズム(たとえば、キャニー演算子、ラプラス演算子、ソーベル演算子、プルウィット演算子)とコーナー検出アルゴリズムとハフ変換と他の適切な特徴検出アルゴリズムのような、他の画像分割アルゴリズムが使用されても良い。
【0033】
視覚的参照エンジン240は、物体認識(たとえば、物体検出と更なる分析)も実行し、連続画像にわたる物体の相対的な動きの経過も管理する。視覚的参照エンジン240は、ロボット120が通り過ぎた、保管サイト110の規則的に形づくられた構造の数を追跡しても良い。たとえば、視覚的参照エンジン240は、ラックのフレームの参照点(例えば、重心)を特定し、連続画像にわたり、参照点が画像の特定の位置を通過するか否か(たとえば、参照点が画像の中心を通過するか否か)を判定しても良い。もしそうならば、視覚的参照エンジン240は、ロボット120が通り過ぎた、規則的に形づくられた構造の数を増加させる。
【0034】
ロボット120は、様々な位置情報(近くの物体に対する位置情報と位置特定情報を含む)を生成するために、様々な構成要素を使用しても良い。たとえば、1つの実施例では、状態推定器235は、VIOユニット236と高度推定器238からのデータを処理して、位置特定情報をプランナー250に提供しても良い。視覚的参照エンジン240は、現在位置を特定するために、ロボット120が通り過ぎた規則的に形づくられた構造の数を数えても良い。視覚的参照エンジン240は、近くの物体に対する位置情報を生成しても良い。たとえば、ロボット120がラックの目標位置に着いたとき、視覚的参照エンジン240は、ラックの表面を再構築するのにポイントクラウド・データを使用しても良く、より正確なヨーおよびロボット120とラックの間の距離を特定するために、ポイントクラウドから奥行きデータを使用しても良い。視覚的参照エンジン240は、ロボット120と目標位置の中心(たとえば、ラックの目標位置の中心点)との距離に相当する中心のオフセットを特定しても良い。プランナー250は、中心のオフセット情報を使用して、ロボット120を制御して、目標位置へ移動させ、目標位置で在庫品の写真を撮らせる。ロボット120が方向を変える(例えば、回転、水平運動から垂直運動への移行、垂直運動から水平運動への移行など)とき、中心のオフセット情報は、物体に対するロボット120の正確な位置を決定するのに使用されても良い。
【0035】
プランナー250は、プロセッサ215で実行されうる、メモリ220に記憶されたソフトウェア指示のセットに相当しても良い。プランナー250は、ロボットが第1の位置(たとえば、開始位置、前回の行程を終えた後のロボット120の現在位置)から第2の位置(たとえば、目標の位置)まで移動する場合、ロボット120の経路を計画するための様々な経路決定アルゴリズムを含んでも良い。ロボット120は、ユーザ・コマンドのような入力を受け、特定の位置で特定の行動(たとえば、在庫品のスキャン、アイテムを動かす、など)を実行しても良い、プランナー250は、抜き取り検査と範囲スキャンに相当する、2種類のルートを含んでも良い。抜き取り検査においては、プランナー250は、1以上の特定の目標位置の座標を含む入力を受信しても良い。応じて、プランナー250は、ロボット120が目標位置へ移動して行動を実行するために、経路を計画する。範囲スキャンでは、入力は、目標位置の範囲に相当する座標の範囲を含んでも良い。応じて、プランナー250は、ロボット120がフルスキャンまたは目標位置の範囲のための行動を実行するために、経路を計画する。
【0036】
プランナー250は、視覚的参照エンジン240により提供されるデータと状態推定器235により提供されるデータとに基づいて、ロボット120のルートを計画しても良い。たとえば、視覚的参照エンジン240は、ロボット120が通り過ぎた保管サイト110内の規則的に形づくられた構造の数を追跡することによって、ロボット120の現在位置を推定する。視覚的参照エンジン240により提供される位置情報に基づいて、プランナー250はロボット120のルートを決定し、ロボット120がルートに沿って移動した場合、ロボット120の動きを調節しても良い。
【0037】
プランナー250は、ロボット120の動きが計画からそれた場合のフェイルセーフ機構を含んでも良い。たとえば、プランナー250が、ロボット120が目標の通路を通り過ぎ、目標の通路からあまりに遠くを移動していると判定したら、プランナー250は経路を正そうとしてFCU225に信号を送信しても良い。タイムアウト後または合理的な距離の範囲内でエラーが修正されない場合、またはプランナー250が正確に現在位置を特定できない場合、プランナー250は、FCUに着陸するか、ロボット120を停止するように指示しても良い。
【0038】
様々な位置情報に頼って、プランナー250は衝突回避目的のためのアルゴリズムも含んでも良い。ある実施例では、プランナー250は、距離情報と、ヨー角と、近くの物体に対する中心のオフセット情報とに依拠して、ロボット120と近くの物体との間の十分な隙間を提供するためのロボット120の動きを計画する。代替的に又は付加的に、ロボット120は、ロボット120と近くの物体との間の距離データを生成する360度の奥行きカメラ・セットのような、1以上の奥行きカメラを含んでも良い。プランナー250は、奥行きカメラからの位置情報を使って、衝突回避を実行する。
【0039】
通信エンジン255とI/Oインターフェース260は、システム環境100内の他の構成要素とのロボット120の通信を可能とする通信構成要素である。ロボット120は、様々な通信プロトコルを使って、無線または有線で、ベース・ステーション130のような外部部品と通信しても良い。例示の通信プロトコルは、ロボット120をベース・ステーション130につなげるWi-Fi、ブルートゥース、NFC、USBなどを含んでも良い。ロボット120は、画像データと、フライト・ログと、位置データと、在庫品データと、ロボット状態情報のような様々なタイプのデータを送信しても良い。ロボット120は、ロボット120が実行する必要がある行動を特定するために、外部ソースから入力を受信しても良い。コマンドは、自動的に生成されても良いし、アドミニストレータによって手作業で生成されても良い。通信エンジン255は、様々な通信プロセスのために、様々な通信プロトコルおよび標準、符号化、復号化、多重化、トラフィック・コントロール、データ暗号化などのためのアルゴリズムを含んでも良い。I/Oインターフェース260は、通信のために、ソフトウェアと、ハードウェア・インターフェース、アンテナなどのようなハードウェア構成要素とを含んでも良い。
【0040】
ロボット120は、ロボット120の様々な構成要素と動きの原動力に用いられる動力源265も含む。動力源265は、1以上の電池または燃料タンクであっても良い。例示の電池は、リチウムイオン電池と、リチウム・ポリマー(lithium polymer(LiPo) )電池と、燃料電池と、他の適切な種類の電池とを含んでも良い。電池は、永久に中に置かれても良いし、簡単に交換されても良い。たとえば、ロボット120がベース・ステーション130に戻ったときに電池が交換されるように、電池は着脱可能であっても良い。
【0041】
図2は、様々な例示の構成要素を示すが、ロボット120は追加の構成要素を含んでも良い。たとえば、ロボット120の機械の特徴と構成要素は、
図2に示されていない。ロボット120は、様々な仕事を実行するために、その種類に従い、様々な種類のモーター、アクチュエータ、ロボットアーム、リフト、他の可動構成要素、他のセンサを含んでも良い。
【0042】
図2に言及することを続けるが、例示のベース・ステーション130は、プロセッサ270と、メモリ275と、I/Oインターフェース280と、リパワリング・ユニット285とを含む。様々な実施例では、ベース・ステーション130は、異なる、および/または、より少しの、および/または、追加の構成要素を含んでも良い。
【0043】
ベース・ステーション130は、プロセッサ270と、1以上のソフトウェア・モジュールとして実行される様々なプロセスをプロセッサ270に実行させる1以上の指示のセットを含む1以上のメモリ275とを含む。ベース・ステーション130は、入力とコマンドを、様々な在庫品管理作業を実行させるためにロボット120に提供しても良い。ベース・ステーション130は、複数のロボット120間の群制御を実行するための指示セットを含んでも良い。群制御は、タスク配分、ルーティングと計画、衝突を避けるためのロボットの間の動きの調整などを含んでも良い。ベース・ステーション130は、ロボット120を調整する中央制御ユニットとして用いられても良い。メモリ275は、ロボット120からダウンロードされるデータと画像の分析を実行するための、様々な指示のセットも含んでも良い。ベース・ステーション130は、生データのフォーマット転換から、在庫品管理に役立つ情報を生成する完全なデータ処理まで、様々な程度のデータ処理を提供しても良い。代替的に又は付加的に、ベース・ステーション130は、ロボット120からダウンロードされたデータを、データ・ストア160のようなデータ・ストアに直接アップロードしても良い。ベース・ステーション130は、操作および運営および管理コマンドをロボット120に提供しても良い。ある実施例では、ベース・ステーション130は、ユーザデバイス170またはコンピュータ・サーバー150または在庫品管理システム140により遠隔的に制御されうる。
【0044】
ベース・ステーション130は、ロボット120との通信のために、そして、インターネットのために、様々な種類のI/Oインターフェース280を含んでも良い。ベース・ステーション130は、Wi-Fiまたはブルートゥースのような無線プロトコルを使用して、連続的にロボット120と通信しても良い。ある実施例では、
図2のロボット120の1以上の構成要素は、ベース・ステーション内にあっても良く、ベース・ステーションは、動きと移動のために、コマンドをロボット120に提供しても良い。代替的に又は付加的に、ロボット120が着陸したとき又はベース・ステーション130で停止したとき、ベース・ステーション130はNFCまたは有線接続のような短距離通信プロトコルを介してロボット120と通信しても良い。ベース・ステーション130は、インターネットのようなネットワーク180に接続していても良い。保管サイト110の無線ネットワーク(例えば、LAN)には、十分な受信可能範囲がないかもしれない。ベース・ステーション130は、イーサネット・ケーブルを介してネットワーク180に接続していても良い。
【0045】
リパワリング・ユニット285は、ロボット120の動力レベルを検出し、ロボット120に再度動力を供給するのに用いられる部品を含む。再度動力を供給することは、バッテリーを交換すること、バッテリーを再充電すること、燃料タンクを補充することなどによって、なされる。ある実施例では、ベース・ステーション130は、ロボット120のバッテリーを交換するために、ロボットアームのような機械式アクチュエータを含む。他の実施例では、ベース・ステーション130は、有線での充電または非接触充電によるロボット120用の充電ステーションとして用いられても良い。たとえば、ベース・ステーション130は、ロボット内の誘導コイルによってロボット120に無線で充電するために下部に誘導コイルを有する着陸または静止パッドを含んでも良い。ロボット120に再度動力を供給する他の適切な方法も可能である。
【0046】
例示の在庫品管理方法
図3は、実施例による、保管サイトの在庫品を管理する例示の方法を表すフローチャートである。方法は、コンピュータによって実行されても良く、コンピュータは、従来の意味の単一作業ユニット(例えば、単一のパソコン)であっても良く、または、指示のセットを実行するために協力する分散コンピュータのセット(例えば、バーチャル・マシン、分散コンピュータ・システム、クラウド・コンピューティングなど)であっても良い。また、コンピュータが単数形で記述されていても、
図3の方法を実行するコンピュータは、コンピュータ・サーバー150、または在庫品管理システム140、またはロボット120、またはベース・ステーション130、またはユーザデバイス170と関係する1台以上のコンピュータを含んでも良い。
【0047】
実施例によると、コンピュータは保管サイト110の構成を受信する(310)。保管サイト110は、倉庫または小売店または他の適切な場所であっても良い。保管サイト110の構成情報は、ロボットが保管サイト110を移動するために、ロボット120にアップロードされても良い。構成情報は、保管サイト110の規則的に形づくられた構造の総数と、規則的に形づくられた構造の寸法情報とを含んでも良い。提供される構成情報は、CAD (computer-aided design)図面または他の種類のファイル形式の形をとっても良い。構成は、ラックのレイアウトと他の規則的に形づくられた構造の配置のような、保管サイト110のレイアウトを含んでも良い。レイアウトは、二次元のレイアウトであっても良い。コンピュータは、セクションと通路とラックの数と、各ラックの行と列の数とを、CAD図面に現れたそれらの数を数えることによって、CAD図面から抽出する。コンピュータは、ラックのセルの高さと幅を、CAD図面または他のソースから抽出しても良い。ある実施例では、コンピュータは、ラックの所定の一組の間の正確な距離または各通路の幅またはラックの全長を抽出する必要はない。その代わりに、ロボット120は、奥行きセンサー・データから通路とラックとセルの寸法を計測しても良いし、または、ロボット120が通り過ぎた行と列の数を数えることによって保管サイト110を通り過ぎるための視覚的参照エンジン240とともに、プランナー250によって実行されるカウント方法を使用しても良い。それゆえに、いくつかの実施例では、ラックの正確な寸法が必要とされなくても良い。
【0048】
いくつかの構成情報は、保管サイト110のアドミニストレータによって、手入力されても良い。たとえば、アドミニストレータは、セクションの数と、各セクションの通路とラックの数と、ラックのセルの寸法とを提供しても良い。アドミニストレータは、各ラックの行と列の数を入力しても良い。
【0049】
代替的に又は付加的に、構成情報は、飛行前マッピングまたはロボット120が在庫品管理作業を実行するときに行われるマッピング・プロセスのような、マッピング・プロセスからも取得されても良い。たとえば、自動化の管理方法を新しく実行する保管サイト110のために、アドミニストレータは、保管サイトの移動可能なスペースのサイズを、保管サイト110内のセクションと通路と規則的に形づくられた構造の行と列との数を数えるための1以上のマッピング・ロボットに提供しても良い。また、1つの実施例では、マッピングまたは構成情報は、保管サイト110内のラックまたは他の構造の間の正確な距離を計測する必要はない。その代わりに、ロボット120は、目標位置を特定するために経路に沿って規則的に形づくられた構造を数えることによって、保管サイト110のラフなレイアウトだけで、保管サイト110を移動しても良い。ロボット120が様々な在庫管理作業を実行し続けると共に、ロボット・システムは、マッピングまたは様々な構造の規模と位置の推定を徐々に実行しても良い。
【0050】
コンピュータは、保管サイト110での在庫品管理作業のために在庫品管理データを受信する(320)。特定の在庫品管理データはアドミニストレータによって手入力される一方、他のデータは在庫品管理システム140からダウンロードされても良い。在庫品管理データは、作業の頻度、時間窓などを含む、在庫品管理活動のためのスケジューリングと計画を含んでも良い。たとえば、管理データは、保管サイト110のラックの各々の位置が、所定の期間ごと(たとえば、日ごと)スキャンされるべきであるということと、在庫品スキャン・プロセスが、保管サイトが閉められたあと、ロボット120により夜に実行されるべきであることとを特定していても良い。在庫品管理システム140のデータは、アイテムのバーコードとラベルと、在庫品の正確な座標と、ラックに関する情報と、次に来る在庫品のためにあけておく必要がある他の保管スペースなどを提供しても良い。在庫品管理データは、日毎に保管サイト110から回収する必要があるアイテム(たとえば、出荷される必要がある発注書のアイテム)も含んでも良く、ロボット120は、それらのアイテムに集中する必要があっても良い。
【0051】
コンピュータは、在庫品管理を実行するために、計画を作成する(330)。たとえば、コンピュータは、ロボット120に様々なスキャンを実行するように指示するための様々なコマンドを含む自動式の計画を作成しても良い。コマンドは、ロボット120がスキャンする必要がある場所の範囲、または、ロボット120が行く必要がある1以上の特定の位置を指定しても良い。コンピュータは、スキャニング・トリップごとの時間を推定しても良く、ロボットでの在庫品管理のために利用できる時間に基づいて、各作業間隔の計画を設計しても良い。たとえば、特定の保管サイト110では、ロボットでの在庫品管理は、営業時間中は実行されない。
【0052】
コンピュータは、計画と、保管サイト110の構成に由来する情報とによって、1以上のロボット120が保管サイト110を移動するよう操作する様々なコマンドを生成する(340)。ロボット120は、保管サイト内の規則的に形づくられた構造を少なくとも視覚的に認識し、規則的に形づくられた構造の数を数えることによって、保管サイト110を移動しても良い。ある実施例では、VIOが使用されるような位置特定技術に加えて、ロボット120は、ロボット120が移動した正確な距離と方向を知ることなく開始位置から目標位置までの経路に沿った現在位置を特定するために、ロボット120が通り過ぎたラックの数と、行の数と、列の数とを数える。
【0053】
在庫品のスキャンまたは他の在庫品管理作業は、ロボット120により自律的に実行されても良い。ある実施例では、スキャン作業は、ロボット120が保管サイト110内の目標位置の座標または目標位置の範囲を含む入力を受信する(342)。ベース・ステーションで開始される。ロボット120は、ベース・ステーション130を出発する(344)。ロボット120は、規則的に形づくられた構造を視覚的に認識することによって、保管サイト110を移動する(346)。たとえば、ロボット120は、ロボット120が通り過ぎた規則的に形づくられた構造の数を追跡する。ロボット120は、画像センサ210でとらえられて、認識した規則的に形づくられた構造に基づいて、曲がり、変形動作をする。目標位置に到着すると、ロボット120は、目標位置の参照点(たとえば、中心位置)と自身を一直線にしても良い。目標位置で、ロボット120は、在庫品アイテムと、バーコードと、在庫品アイテムの箱のラベルを含む目標位置のデータ(例えば、測定値、写真など)をとらえる(348)。ロボット120の出発前の最初のコマンドが、複数の目標位置または目標位置の範囲を含むならば、ロボット120は、スキャン作業を継続するために、次の位置へと上または下または横に移動することによって、次の目標位置へと継続する。
【0054】
スキャニング・トリップ終了後、ロボット120は、逆方向に、ロボットが通り過ぎた規則的に形づくられた構造の数を数えることによって、ベース・ステーション130に戻る。ロボット120は、ロボット120が目標位置へ移動するときに、ロボットが通り過ぎた構造を潜在的に認識しても良い。あるいは、ロボット120は、数えないで、経路を逆にすることによって、ベース・ステーション120に戻っても良い。ベース・ステーション130は、ロボット120に再度動力を供給する。たとえば、ロボット120が他のスキャニング・トリップのサービスへ速く戻ることができるように、ベース・ステーション130はロボット120に次のコマンドを提供し、とロボット120のバッテリーを交換する(352)。使用されたバッテリーは、ベース・ステーション130で充電されても良い。ベース・ステーション130は、ロボット120がとらえたデータと画像をダウンロードし、更なるプロセスのために、データと画像をデータ・ストア160にアップロードしても良い。あるいは、ロボット120は、ベース・ステーション130に、または、直接ネットワーク180に、そのデータとイメージを送信するための無線通信の構成要素を含んでも良い。
【0055】
コンピュータは、ロボット120がとらえたデータと画像の分析を実行する(360)。たとえば、コンピュータは、アイテムが保管サイト110内で置き違えられているか又は紛失しているかどうか確認するために、ロボット120がとらえた画像の中のバーコード(シリアル番号を含む)を、在庫品管理システム140で記憶するデータと比較しても良い。コンピュータは、在庫品の他の状況を判定しても良い。コンピュータは、置き違えられた又は紛失した在庫品のために改善的な措置をとるために、アドミニストレータのユーザ・インタフェース175に表示するためのレポートを作成しても良い。たとえば、レポートは、保管サイト110の人員が手動で置き違えられたアイテムの位置を特定し動かすように、毎日作成されても良い。代替的に又は付加的に、コンピュータは、ロボット120が置き違えられた在庫品を動かすように、自動化の計画を作成しても良い。ロボット120がとらえたデータとイメージは、在庫品アイテムの移動または到着を確かめるために使用されても良い。
【0056】
例示の移動方法
図4は、実施例による、ロボット120を備えた保管サイト110の例示のレイアウトの概念図である。
図4は、挿入
図405で示される例示のラックの拡大図を伴った、保管サイト110の二次元レイアウトを示す。保管サイト110は、規則的に形づくられた構造に基づき、様々な領域に分割されていても良い。この例では、規則的に形づくられた構造は、ラック410である。保管サイト110は、セクション415と、通路420と、行430と、列440とによって分割されても良い。たとえば、セクション415は、ラックの集合である。各々の通路は、両面にラックを有しても良い。各々のラック410は、1以上の列440と複数の行430を含んでも良い。ラック410の保管ユニットは、セル450と呼ばれても良い。各セル450は、1以上のパレット460を載せていても良い。この特定の例では、2枚のパレット460が、各セル450に置かれている。保管サイト110の在庫品は、パレット460で運ばれる。
図4に示される分割と呼び方は、例としてのみ使用される。他の実施例の保管サイト110は、異なる方法で分割されていても良い。
【0057】
保管サイト110の各々の在庫品アイテムは、パレット460の上にあっても良い。在庫品アイテムの目標位置(例えば、パレット位置)は、座標系を使用して特定されても良い。たとえば、パレット460上に置かれたアイテムは、通路番号(A)と、ラック番号(K)と、行番号(R)と、列番号(C)を有していても良い。たとえば、[A3、K1、R4、C5]のパレット位置座標は、パレット460が3本目の通路で北のラックのラック410に位置することを意味する。ラック410のパレット460の位置は、(地面から数えて)4番目の行で5番目の列である。ある場合には、
図4に示される特定のレイアウトのように、通路420は両側にラック410を有しても良い。さらなる座標情報が、通路420の北側のラック410と通路420の南側のラック410を識別するのに用いられても良い。あるいは、ラックの上方と下方は、異なる通路番号を有しても良い。抜き取り検査では、ロボットは、1箇所だけならば単一の座標が提供され、1以上の箇所ならば複数の座標が提供されても良い。範囲内のパレット460をチェックする範囲スキャンでは、ロボットは、通路番号と、ラック番号と、開始行と、開始列と、終わりの行と、終わりの列のような、座標の範囲を提供されても良い。いくつかの実施例では、パレットの位置座標は、異なる方法で呼ばれても良い。たとえば、1つのケースでは、座標系は「通路-ラック-棚-位置」の形式を採用しても良い。棚番号は、行番号と一致しても良く、位置番号は、列番号と一致しても良い。
【0058】
図4と合わせて
図5を参照して、
図5は、実施例によれば、ロボット120の例示の移動方法を表すフローチャートである。ロボット120は、保管サイト110の目標位置474を受信する(510)。目標位置474は、
図4に関して上述したように、座標系で表されても良い。目標位置474は、ベース・ステーション130からの入力コマンドとして受信されても良い。入力コマンドは、在庫品アイテムのバーコードとラベルをとらえるために目標位置474で写真を撮るといったような、ロボット120がする必要がある行動も含んでも良い。ロボット120は、VIOユニット236と高度推定器238に依拠して、位置特定情報を生成しても良い。あるケースでは、ルートの開始位置は、ベース・ステーション130である。いくつかのケースでは、ルートの開始位置は、保管サイト110のどのような位置であっても良い。たとえば、ロボット120は、最近仕事を完了して、ベース・ステーション130に戻ることなく、他の仕事を開始しても良い。
【0059】
プランナー250を実行しているような、ロボット120のプロセッサは、経路470に沿って目標位置474へとロボット120を制御する(520)。経路470は、目標位置474の座標に基づいて決定されても良い。画像センサ210が規則的に形づくられた構造(たとえばラック)に向かいあうように、ロボット120は回転しても良い。目標位置474へのロボット120の動きは、特定の通路への移動と、通路に入るために回転することと、目標の列へと水平に移動することと、目標の行へと垂直に移動することと、パレット460上の在庫品アイテムの写真をとるために目標位置474に向かいあう正しい角度へと回転することを含んでも良い。正確な計画とロボット120がとる行動の例は、
図7に関してさらに詳細に述べられる。
【0060】
ロボット120が目標位置474へ移動するとき、ロボット120は画像センサ210を用いて保管サイト110の画像をとらえる(530)。とらえられる画像は、連続画像であっても良い。ロボット120は、ロボット120が経路470に沿って移動するときに画像センサ210がとらえた画像を受信する(540)。画像は、ラックのような規則的に形づくられた構造を含む、環境内の物体をとらえても良い。たとえば、ロボット120は、規則的に形づくられた構造を視覚的に認識するために、視覚的参照エンジン240のアルゴリズムを使用しても良い。
【0061】
ロボット120は、画像センサ210がとらえた画像を分析して(550)、ロボット120が通り過ぎた、保管サイトの規則的に形づくられた構造の数を追跡することによって、経路470でのロボット120の現在位置を特定する。ロボット120は、
図6Aに関してさらに詳細に述べられる様々な画像処理技術と物体認識技術を使用して、規則的に形づくられた構造を特定し、ロボット120が通り過ぎた構造の数を追跡しても良い。
図4に示された経路470に関して、ロボット120は、ラック410に対向しつつ、ターニングポイント476まで移動しても良い。ロボット120は、自身が2つのラック410を通り過ぎたので、目標通路に到着したと決定する。応じて、ロボット120は、反時計回りに回転して、目標ラックに対向して目標通路に入る。ロボット120は、目標の列に着くまで、自身が通り過ぎた列の数を数える。目標の行に従って、ロボット120は上または下に垂直に移動して、目標位置に到着しても良い。目標位置に到着すると、ロボット120は、目標位置で在庫品の写真を撮ることのような、入力コマンドで特定された行動を実行する。
【0062】
視覚的参照作業
図6Aは、実施例による、環境内の物体を認識し、ロボット120が経路で通り過ぎた構造の数を追跡し、様々な種類の位置情報を特定するために、ロボット120の1以上のアルゴリズムによって実行される例示の視覚的参照作業を表すフローチャートである。
図6Aに示される作業は、ロボット120の視覚的参照エンジン240と一致するアルゴリズムによって実行されても良い。
【0063】
ロボット120は、保管サイト110の環境をとらえた画像センサ210から、画像データを受信する(600)。ある実施例では、画像センサ210は、奥行き情報をとらえるために複数のレンズを含むステレオカメラである。ロボット120が受信した画像データは、RGBのような適当なフォーマットのピクセル・データを含んでも良く、x、y、z寸法のような空間情報を有するポイントクラウドも含んでも良く、ここで、zは奥行き情報(例えば、ロボット120と物体の間の距離)を表しても良い。たとえば、画像センサ210は、奥行きカメラの視野内の物体の奥行きデータを生成する奥行きカメラを含む。画像データは、環境内の物体の相対的な位置の段階的な変化をとらえた一連の連続画像の形をとっても良い。ある実施例では、画像センサ210は、様々な種類の画像データを生成する、標準の一眼デジタルカメラ、LIDARセンサ、赤外線センサなどのような、他の種類のセンサであっても良い。たとえば、実施例のロボット120は、RGBピクセル・データのみを生成する標準のデジタルカメラを使用しても良い。
【0064】
受信した画像データに基づいて、ロボット120は、ロボット120が通り過ぎた規則的に形づくられた構造の数、ロボット120と物体の間のヨー角および距離、構造に対するロボット120の中心のオフセット情報など、ロボット120の位置に関連した様々な種類の情報を特定しても良い。位置情報は、視覚的参照エンジン240により生成され、プランナー250がロボット120の動きを制御するために、プランナー250に提供されても良い。位置情報は、様々な方法でプランナー250に提供されても良い。特定の情報は、コンスタントに、定期的に、プランナー250に提供されても良い。他の情報は、プランナー250からのリクエストに応じて、プランナー250に提供されても良い。たとえば、1つの実施例では、ロボット120が通り過ぎた構造のカウントと、ヨー角および距離情報は、コンスタントにプランナー250に提供される一方、中心のオフセット情報は、要求に応じてプランナー250に提供されても良い。ロボット120が方向を変える時(たとえば、回転、水平運動から垂直運動への移行、垂直運動から水平運動への移行)、プランナー250は、大抵、中心のオフセット情報を要求する。
【0065】
ロボット120は、規則的に形づくられた構造または他の種類の構造である近くの構造を認識するために、ワイヤーフレーム分割605を使用しても良い。ロボット120は、画像センサ210がとらえた画像の画像分割を作成する(610)。ロボット120は、画像内にとらえられた物体の種類に基づいて、画像を分割する。たとえば、ロボット120は、構造の輪郭を特定する画像分割によって、残りの環境から、規則的に形づくられた構造(たとえばラック)のような、すぐに定義可能な物体を切り離しても良い。画像分割は、各々の画像で、垂直バーと水平バーのような規則的に形づくられた構造のうち様々な部分をさらに識別しても良い。特定される構造(または構造の領域)に基づいて、ロボット120は様々な目印を用いて画像のピクセルに印をつけても良い。たとえば、特定された垂直バーと対応するピクセルは、「1」または第1の適当なシンボルの印をつけられ、特定された水平バーと対応するピクセルは、「2」または第2の適当なシンボルの印がつけられ、残りの環境と一致するピクセルは「0」または第3の適当なシンボルの印がつけられても良い。
【0066】
画像分割は、どのような適切なアルゴリズムによって行われても良い。ある実施例では、ロボット120は、画像分割を実行して、ラベルをピクセルに割り当てるために、訓練された機械学習モデルを記憶している。ロボット120は、画像を機械学習モデルに入力し、機械学習モデルは、画像のセグメントの様々な種類の目印を出力する。ある実施例では、ロボット120は連続画像を入力し、機械学習モデルは、連続画像に連続的に現れている物体を考慮することによって、連続画像から画像分割を出力する。ある実施例では、機械学習モデルは、畳み込みニューラルネットワークである。畳み込みニューラルネットワークは、様々な種類の構造を含む様々な保管サイトの環境の画像のトレーニング・セットを用いて訓練されても良い。たとえば、畳み込みニューラルネットワークは、画像のトレーニング・セットへのセグメントの割り当てにおけるエラーを反復で減らすことによって訓練されても良い。画像分割を実行するのに用いられる畳み込みニューラルネットワークの例示の構造は、
図8でさらに詳細に述べられる。畳み込みニューラルネットワークに代替的に又は付加的に、他の種類のニューラルネットワーク、クラスタリング、マルコフ・ランダム場(Markov random field(MRF))などのような、他の種類の機械学習モデルが、画像分割プロセスに使われても良い。機械学習技術を用いることに代替的に又は付加的に、エッジ検出アルゴリズム(たとえば、キャニー演算子、ラプラス演算子、ソーベル演算子、プルウィット演算子)と、角検出アルゴリズムと、ハフ変換と、他の適当な特徴検出アルゴリズムのような、他の画像分割アルゴリズムが使用されても良い。
【0067】
規則的に形づくられた構造を示すシンボルを付けられたピクセルから、ロボット120はそれらのピクセルの領域のコンタを作成する(615)。各々のコンタは、ピクセルのクラスターと呼んでも良い。それらのピクセルのクラスタリングは、ピクセルの間の距離、ピクセルの色、ピクセルの強度および/またはピクセルの他の適当な特性に基づいても良い。ロボット120は、(例えば、距離および/または色および/または強度に関して)類似した近くのピクセルをクラスター化して、規則的に形づくられた構造の部分と一致しそうな形状を作成しても良い。様々な小領域と一致する複数のクラスターは、規則的に形づくられた構造(例えば、各々の垂直バー)ごとに作成されても良い。ロボット120は、各々のコンタの参照点を特定する(620)。参照点は、重心、または1方向における最極値点、またはどのような関連した参照点であっても良い。たとえば、ロボット120は、コンタの中にあるピクセルのピクセル位置の平均を測定して、重心を特定しても良い。
【0068】
ロボット120は、ノイズフィルタリングと、コンタのそれぞれの参照点に基づいてコンタをマージするコンタ・マージングを実行する(625)。ノイズフィルタリングでは、ロボット120は、そのエリアが閾値より小さいコンタ(たとえば、あまりに小さいコンタ)をノイズとみなしても良い。ロボット120は、コンタの十分な大きさを保つ。場合によっては、コンタ・マージングでは、クラスタリング・アルゴリズムが、複数のコンタ(たとえば、垂直バーの複数の領域)に分類されている構造(たとえば、垂直バー)と一致するピクセルという結果になる。ロボット120は、構造の同じ部分を示すであろうコンタをマージする。マージングは、コンタの参照点の位置とコンタの境界に基づいても良い。たとえば、水平バーでは、ロボット120は、類似した垂直レベルの参照点を有するコンタを特定し、それらのコンタをマージしても良い。場合によっては、2つのコンタがマージされるとき、より小さなクラスターに属しても良いし、どのクラスターにも特定されなくても良い、2つのコンタの間のピクセルは、同じ構造に分類されても良い。マージングは、2つのコンタの2つの参照点間の距離に基づいても良い。距離が閾値レベルより小さいならば、ロボット120は2つのコンタをマージしても良い。
図6Bは、画像分割と、コンタリングと、形状のマージングとによって特定された規則的に形づくられた構造の例を示す。
図6Bは、ロボット120がラックの画像を残りの環境から切り離すことができることを示す。
【0069】
規則的に形づくられた構造の垂直バーと水平バーのような特定された構造上に基づいて、ロボット120は、ロボット120が目標位置への経路に沿って通り過ぎた規則的に形づくられた構造の数を追跡する(630)。情報は視覚的参照エンジン240により特定されても良く、プランナー250へと出力されても良い。ロボット120は、連続画像にとらえられた規則的に形づくられた構造の相対的な動きをモニターすることによって、ロボット120が通り過ぎた規則的に形づくられた構造のカウントを特定しても良い。たとえば、ロボット120は、ワイヤーフレーム分割605を使用して、規則的に形づくられた構造(たとえば、ラック)の部分(たとえば、垂直バー)が、連続画像中の1枚の画像でとらえられたことを特定しても良い。この連続画像中の1枚の画像は、第1の画像と呼んでも良い。ロボット120は、連続画像の次の画像を検討する。ロボット120は、第1の画像に続く画像で同じ垂直バーを特定する。たとえば、ロボット120は、第1の画像のすぐ後に続く第2の画像において、第1の画像の中に現れた垂直バーの位置に最も近い垂直バーが、同じ垂直バーであると特定しても良い。ロボット120が連続画像を検討し続ける場合、垂直バーが画像の境界から出て行くまで、垂直バーは追跡され続けても良い。代替的に又は付加的に、同じ構造の同じ部分を追跡する際に、ロボット120は規則的に形づくられた構造の動きを予測しても良い。たとえば、ロボット120が左から右に移動するならば、ロボット120は同じ規則的に形づくられた構造が連続画像の中で右から左に現れると予想する。代替的に又は付加的に、ロボット120は、計画した移動速度と、画像をとらえるフレームレートとを考慮に入れて、同じ規則的に形づくられた構造の、1つの画像から他の画像への位置変化を予測しても良い。
【0070】
ロボット120が規則的に形づくられた構造を通り過ぎたと特定するために、ロボット120は1以上の客観的な基準を設定しても良い。ロボット120は、連続画像中の第1の画像と第2の画像にわたって、ターゲットの規則的に形づくられた構造の部分の参照点の動きを追跡しても良い。構造の部分の参照点が、イメージの特定の位置(たとえば、画像の中点)を通り過ぎることに応じて、ロボット120は、ロボット120が通り過ぎた規則的に形づくられた構造(または、たとえば、垂直バー、水平バーなどのサブタイプ)のカウントを増加させる。たとえば、連続画像において、ロボット120は、水平バーの重心を追跡して、重心が画像の中心を通過して動いたかどうかを特定する。この条件が満たされたとき、ロボット120は、ロボット120が通り過ぎた垂直バーのカウントを増加させ、画像にとらえられた次の垂直バーを追跡し続ける。それらの構造を数えることによって、ロボット120は、ロボット120が保管サイト110で通り過ぎた、ラックの数と、通路の数と、行の数と、列の数とを追跡することができる。
【0071】
いくつかの実施例では、ロボット120は、ワイヤーフレーム分割605からのデータに加えて他の情報を用いて、ロボット120が通り過ぎた規則的に形づくられた構造の数を追跡しても良い。たとえば、ロボット120は、高度推定器238を用いて、ロボットが位置する行レベルを特定しても良い。ワイヤーフレーム分割605から生成したロボット120が通り過ぎた水平バーのカウントは、高度推定器238からの特定を確かめるのに用いられうる。
【0072】
いくつかの実施例では、視覚的参照エンジン240は、ワイヤーフレーム分割605によって生成された情報を使用して、ロボット120の他の位置データを特定しても良い。たとえば、ワイヤーフレーム分割605からの情報は、物体に対するロボット120のヨーと距離とを特定するために、ポイントクラウド・データとともに使われることができる。また、特定された垂直バーと水平バーは、中心のオフセット特定のために使われても良く、それはさらに詳細に述べられるだろう。
【0073】
ワイヤーフレーム分割605のための画像データの分析に加えて、ロボット120は、画像データを使用して、ヨーと距離のような位置情報を生成しても良い。例として、ロボット120は、ステレオカメラのような画像センサ210から、ポイントクラウド・データを受信しても良い(635)。ロボット120は、ポイントクラウド・フィルタリング作業を実行する(640)。ワイヤーフレーム分割605からの情報に基づいて、フィルタリング作業は、規則的に形づくられた構造ではないポイントを取り除き、規則的に形づくられた構造と一致してそうであると特定されたポイントを残す。ロボット120は、目標位置でとらえられた画像の中に現れている規則的に形づくられた構造と一致しているポイントを特定しても良い。ロボット120は、各々のポイントの奥行き値に基づいて、ヒストグラムの中に、残ったポイントを配置しても良い。ロボット120は、最も多くのポイントを有するヒストグラムの中の1以上のバーを選択しても良い。言い換えると、ロボット120はピークの近くの有力なポイントを残しても良い。それらのポイントは、規則的に形づくられた構造と一致していそうである。他のフィルタリング技術が、更なる処理のためにポイントを選択するのに用いられても良い。
【0074】
ロボット120は、フィルタ処理したポイントクラウドに基づいて、ポイントクラウドを平面に適応させて(645)、規則的に形づくられた構造の1以上の表面を推定する。最小二乗平面適応のような様々な平面適応技術が使用されても良い。ロボット120は、適応平面を使って、ヨーおよび距離情報を特定する(650)。たとえば、ロボット120は、平面に適応したポイントの奥行きデータを使用して、ロボット120と平面で表された規則的に形づくられた構造との間の距離を特定する。ロボット120は、平面で表された規則的に形づくられた構造に対するロボットの推定ヨー角も特定しても良い。ロボット120は、幾何学的演算を使用してヨー角を特定しても良い。ヨーと距離とを含む位置情報は、プランナー250に提供されても良い。
【0075】
視覚的参照エンジン240で特定された位置情報は、ロボット120の中心のオフセットも含んでも良い。中心のオフセットは、位置(通常パレットの位置であるが、セルの位置または他の適当な場所でも良い)の中心と比較したロボット120のオフセットであっても良い。視覚的参照エンジン240は、ロボット120の正面の位置に対するロボット120の中心のオフセットを特定する(660)。視覚的参照エンジン240は、ワイヤーフレーム分割605と、ポイントクラウド・データにより特定されたヨーおよび距離情報650とに依拠して、中心のオフセットを特定しても良い。
図6Bは、中心のオフセットの特定を例示するために、ロボット120により注釈がつけられた例示の画像を示す。
図6Bに示されたドット670は、規則的に形づくられた構造に対するロボット120のカメラのプロジェクションを示す。
図6Bの画像の中心690は、ロボット120のカメラの位置と仮定する。中心690は、規則的に形づくられた構造に水平に及び垂直に投影されて、4つのドット670として表示される。視覚的参照エンジン240は、ワイヤーフレーム分割605からの情報を使用して、マージされたコンタ680を生成する。マージされたコンタ680に基づいて、ロボット120はパレット位置694の中心692を特定する。パレット位置694の中心692と画像の中心690とに基づいて、中心のオフセットが特定されても良い。
【0076】
ロボット120は、パレット位置の写真をとるように指示されても良い。ロボット120は、中心のオフセットとヨーと距離のような位置情報を使って、目標位置の中心からのロボット120のオフセットを特定する。中心のオフセットが、パレット位置の中心(または他の適当な目標ポイント)から閾値距離以内であると特定されることに応じて、ロボット120は、現在パレット上に置かれている在庫品アイテムをとることができるように、画像センサ210により目標のパレット位置の写真を撮っても良い。
【0077】
例示のプランナーの作業
図7は、ロボット120が目標位置への経路を決定するための計画アルゴリズムの例を示すフローチャートである。処理はプランナー250が実行しても良い。計画アルゴリズムは、ラック・モード710とセル・モード745とを含んでも良い。ラック・モード710では、ロボット120は、まず、ロボットが通り過ぎたラックの数(または他の適当な規則的に形づくられた構造)を特定し、ロボットが入るべき適切な通路を特定する。ロボット120が通路に入った後で、ロボット120は、目標位置に相当するパレットを含む正しいセルを特定するセル・モード745に変わっても良い。ロボット120は、
図6Aで述べられた視覚的参照作業により生成された、物体の認識および規則的に形づくられた構造の数に依拠しても良い。
【0078】
ロボット120は、抜き取り検査任務または範囲スキャン任務のためのコマンドを受信する(705)。抜き取り検査任務は、互いに必ずしも関連があるというわけではない1以上の別々の目標位置を訪れることを含んでも良い。範囲スキャン任務は、いくつかの列と行のような、目標位置の範囲をスキャンすることを含んでも良い。たとえば、範囲スキャン命令は、開始のスポットと終わりのスポットを含む特定の範囲を含んでも良い。ある実施例では、ロボット120は、コマンド内のスポットの数により、抜き取り検査任務と範囲スキャン任務とを識別しても良い。抜き取り検査または範囲スキャンのどちらにおいてでも、コマンドは、抜き取り検査の目標位置、または、範囲スキャンのための開始のスポットを指定する、少なくとも1つの座標を含む。座標は、通路番号と、ラック番号と、行番号と、列番号とを明示しても良い。範囲スキャン任務では、ロボット120は、目標位置座標の範囲も提供されても良い。ロボット120は、範囲に基づいて、範囲スキャンの完了に効率的な範囲スキャンのためのルートを決定しても良い。たとえば、ロボット120は、まず行を水平に移動して、次に他の行をスキャンするために上に移動することが、より効率的であると決定しても良い。
【0079】
抜き取り検査コマンドまたは範囲スキャンコマンドの受信に応じて、ロボット120は、ラック・モード710に入る。ロボット120は、視覚的参照エンジン240が生成したデータのような、位置情報を受信する(715)。ロボット120は、第1の目標位置を特定しても良い。第1の目標位置は、抜き取り検査任務では、スポットのうちの1つであり、範囲スキャン任務では、最初の位置でありうる。ラック・モード710では、ロボット120は、第1の目標位置の座標に基づいて、目標の通路の方に向かい移動する(720)。ロボット120は、規則的に形づくられた構造を視覚的に特定し、たとえばロボット120が通り過ぎた規則的に形づくられた構造の数を数える。視覚的参照情報に基づいて、ロボット120は、現在の通路のカウントが目標の通路番号と等しいかどうか(または、ラックのカウントが目標のラック番号と等しいかどうか)を判定する(725)。等しくなければ、ロボット120は、目標の通路の方に向かい移動し続け、ラックのカウントを追跡し続ける。通路のカウントが目標の通路番号と等しいならば、ロボット120は、目標の通路に入る(735)。ロボット120は、ロボット120が目標の通路に入った(735)際のラックとの衝突を避けるために、位置情報に基づいて、ロボット120とラックとの十分なクリアランス距離を特定する。
【0080】
目標の通路に入った際、ロボット120はセル・モード745に入っても良い。ロボット120は、通路における第1の位置へと移動する(750)。ロボット120は、目標位置に向かって水平に移動する(755)。ロボット120は、視覚的参照データに基づいて、ロボット120が通り過ぎた列の数をカウントする。ロボット120は、列のカウントが目標の列番号と等しいかどうか判定する(760)。等しくなければ、ロボット120は、目標位置に向かって水平に移動し続ける。列のカウントが目標の列番号と等しいならば、ロボット120は、ロボット120が目標の列に到着したと判定し、目標位置に向かって垂直に移動しても良い(765)。たとえば、ロボットは、1以上の行、上方へ又は下方へ移動しても良い。ロボット120は、行のカウントが目標の行番号と等しいかどうか判定する(770)。等しくなければ、ロボット120は、目標位置に向かって垂直に移動し続ける。等しいならば、ロボット120は、ロボット120が目標位置に到着したと判定する。中心のオフセットのような位置情報に依拠して、ロボット120は、自身と目標位置の目標ポイントとを一直線にするための位置中心整列情報を受信する(775)。ロボット120は、目標位置の写真を撮ること(780)のような、割り当てられた在庫品管理タスクを実行する。在庫品管理タスクを完了した際、ロボット120は、残りの抜き取り検査または範囲スキャンに従って、移動を続けても良い(785)。
【0081】
この開示の様々なフローチャートで明示されている順序は、変更されても良い。たとえば、水平移動(755)と垂直移動(765)の順序は、交換されても良い。(たとえば、範囲スキャン任務で)目標位置の範囲または複数の位置が提供された場合ならば、ロボット120は、最初の目標位置で割り当てられた仕事を実行したあと、他の仕事を実行するために次の位置へ移動しても良い。
【0082】
例示の機械学習モデル
様々な実施例では、幅広い種類の機械学習技術が使用されても良い。例は、決定木と、サポートベクターマシン(support vector machines(SVMs))と、回帰と、ベイジアン・ネットワークと、遺伝的アルゴリズムのような、教師あり学習と教師なし学習と半教師あり学習の様々な形を含む。畳み込みニューラルネットワーク(CNN)と、リカレント・ニューラルネットワーク(recurrent neural networks(RNN))と、長・短期記憶ネットワーク(long short-term memory networks(LSTM))とを含む、ニューラルネットワークのようなディープラーニング技術も、使用されても良い。たとえば、
図6Aで述べられた画像分割の処理と、様々な物体認識と、位置特定と、他の処理は、1以上の機械学習とディープラーニング技術を適用しても良い。ある実施例では、画像分割は、CNNを使用して実行され、その例示の構造は
図8に示される。
【0083】
様々な実施例では、機械学習モデルのトレーニング技術は、教師あり又は半教師あり又は教師なしであっても良い。教師あり学習では、機械学習モデルは、ラベルを付けたトレーニング・サンプルのセットでトレーニングされても良い。たとえば、物体を分類するためにトレーニングされる機械学習モデルには、トレーニング・サンプルは、物体の種類についてのラベルを付けた物体の様々な写真であっても良い。各々のトレーニング・サンプルのラベルは、バイナリまたはマルチ・クラスであっても良い。画像分割のための機械学習モデルのトレーニングでは、トレーニング・サンプルは、手動で特定された画像の部分を有する、様々な保管サイトの定期的に形づくられた物体の写真であっても良い。ある場合には、教師なし学習技術が使用されても良い。トレーニングに使われるサンプルは、ラベルを付けられていない。クラスタリングのような様々な教師なし学習技術が使用されても良い。ある場合には、トレーニングは、ラベルを付けられたサンプルとラベルを付けられていないサンプルの混合を有するトレーニング・セットで、半教師ありとされても良い。
【0084】
機械学習モデルは、トレーニング・プロセスの目的のゴールを記述するメートル法の数値を生成する目的関数と関係していても良い。たとえば、トレーニングは、予測を生成する際の、モデルの誤り率を減じることを意図していても良い。この場合には、目的関数は、機械学習モデルの誤り率を監視しても良い。物体認識(例えば、物体検出と分類)において、機械学習アルゴリズムの目的関数は、トレーニング・セットの物体を分類する際のトレーニング誤り率であっても良い。そのような目的関数は、損失関数と呼ばれても良い。特に、ラベルが付けられていないために、誤り率が容易に決定されない教師なし学習モデルのためには、他の形式の目的関数が使用されても良い。画像分割では、目的関数は、モデルが予測したセグメントと、トレーニング・セットに手動で特定されたセグメントとの差と一致していても良い。様々な実施例では、誤り率は、クロス・エントロピー損失、L1損失(例えば、予測値と実測値との間の絶対値差分の合計)、L2損失(例えば、二乗距離の合計)として測定されても良い。
【0085】
図8を参照すると、実施例による、例示のCNNの構造が示されている。CNN 800は入力810を受信し、出力820を生成しても良い。CNN800は、畳み込み層830とプーリング層840とリカレント層850と完全接続層860とカスタム層870のような様々な種類の層を含んでも良い。畳み込み層830は、層の入力(たとえば画像)と1以上のカーネルの畳み込みをつくって、カーネルによってフィルタにかけられた様々な種類の画像を生成し、特徴マップを生成する。各々の畳み込み結果は、活性化関数と関係していても良い。畳み込み層830の後に、カーネル・サイズによってカバーされる入力の部分から最大値(最大プーリング)または平均値(平均プーリング)を選択するプーリング層840が続いても良い。プーリング層840は、抽出された特徴の空間サイズを減らす。いくつかの実施例では、一対の畳み込み層830とプーリング層840の後に、1以上のフィードバック・ループ855を含むリカレント層850が続いても良い。フィードバック855は、画像の特徴の空間的関係または画像の物体の時間的関係を評価するのに用いられても良い。層830、840、850の後に、互いに接続したノード(
図8の中では正方形で示される)を有する複数の完全接続層860が続いても良い。完全接続層860は、分類と物体検出に使用されても良い。ある実施例では、1以上のカスタム層870が、特定のフォーマットの出力820の生成のために存在しても良い。たとえば、カスタム層が、様々なセグメント・ラベルを有する画像入力の、ピクセルのラベリングのために、画像分割に使われても良い。
【0086】
図8のCNN800の層の順序と層の数とは、例としてのみである。様々な実施例では、CNN800は、1以上の畳み込み層830を含むが、プーリング層840またはリカレント層850を含んでも含まなくても良い。プーリング層840が存在する場合に、全ての畳み込み層830の後に、プーリング層840がいつも続くとは限らない。リカレント層は、CNNの他の位置に、様々に配置されても良い。各々の畳み込み層830において、学習されるのを許可されるカーネルのサイズ(たとえば3×3、5×5、7×7など)とカーネルの数とは、他の畳み込み層830と異なっていても良い。
【0087】
機械学習モデルは、特定の層および/またはノードおよび/またはカーネルおよび/または係数を含んでも良い。CNN800のようなニューラルネットワークのトレーニングは、順方向伝播と逆伝播を含んでも良い。ニューラルネットワークの各層は、隣の層の他のノードと完全に又は部分的に接続した1以上のノードを含んでも良い。順方向伝播では、ニューラルネットワークは、すぐ前の層の出力に基づいて、順方向での計算を実行する。ノードの作業は、1以上の関数により定義されても良い。ノードの作業を定義する関数は、1以上のカーネルとのデータの畳み込み、プーリング、RNNでのリカレント・ループ、LSTMの様々なゲートなどのような様々な計算作業を含んでも良い。関数は、ノードの出力の重みを調節する活性化関数も含んでも良い。異なる層のノードは、異なる関数と関連していても良い。
【0088】
ニューラルネットワークの関数の各々は、トレーニング中に調節可能な様々な係数(たとえば、重み及びカーネル係数)と関連していても良い。更に、ニューラルネットワークのノードのいくつかは、順方向伝播でのノードの出力の重みを決定する活性化関数と関連していても良い。共通の活性化関数は、ステップ関数と、一次関数と、シグモイド関数と、双曲線正接(tanh)関数と、正規化線形ユニット(rectified linear unit(ReLU)関数を含んでも良い。入力が、ニューラルネットワークに提供されて、順方向にニューラルネットワークを通過した後で、結果がトレーニングのラベル又はトレーニング・セットの他の値と比較されることによって、ニューラルネットワークのパフォーマンスを判定しても良い。予測のプロセスが、トレーニング・セットの他の画像に対して繰り返されて、特定のトレーニング・ラウンドの目的関数の値を計算しても良い。今度は、ニューラルネットワークは、確率的勾配降下法(stocgastic gradient descent(SGD))のような勾配降下法によって、逆伝播を実行し、様々な関数の係数を調節して、目的関数の値を改良する。
【0089】
順方向伝播および逆伝播の複数のラウンドが実行されても良い。目的関数が十分に安定した(たとえば、機械学習モデルが収束した)ときに、または、トレーニング・サンプルの特定のセットに対する所定回数のラウンド後に、トレーニングを終えても良い。トレーニングされた機械学習モデルは、予測または物体検出または画像分割またはモデルがそのためにトレーニングされた他の適当なタスクに使用されうる。
【0090】
コンピュータ・アーキテクチャ
図9は、コンピュータ読み取り可能な媒体から指示を読み取り、プロセッサ(またはコントローラ)でその指示を実行可能な、例示のコンピューティング・マシンの構成要素を示すブロック図である。ここで述べられるコンピュータは、
図9に示された1台のコンピューティング・マシン、または仮想マシン、または
図9に示されたコンピューティング・マシンの複数のノードを含む分散コンピューティング・システム、コンピューティング・デバイスの他の適切な取り合わせを含んでも良い。
【0091】
例として、
図9は、コンピュータ・システム900の例示の形のコンピューティング・マシンの図表示を示し、ここで述べられる1以上のプロセスをマシンに実行させるために、コンピュータ読取り可能な媒体に記憶された指示924(たとえば、ソフトウェアまたはプログラム・コードまたは機械語)が、コンピューティング・マシン内部で実行されても良い。いくつかの実施例では、コンピューティング・マシンは、スタンドアローンの装置として作業し、または、他のマシンに接続されて(例えば、ネットワーク化されて)いても良い。ネットワーク配備において、マシンは、サーバー-クライアント・ネットワーク環境で、サーバー・マシンまたはクライアント・マシンの性能で作業しても良いし、または、ピア・ツー・ピア(または分散)ネットワーク環境で、ピア・マシンとして作業しても良い。
【0092】
図9で述べられるコンピューティング・マシンの構成は、在庫品管理システム140と、コンピュータ・サーバー150と、データ・ストア160と、ユーザデバイス170と、
図2に示される様々なエンジンとモジュールとインターフェースとターミナルとマシンとを含むがこれに限らない、
図1と
図2に示される、どんなソフトウェア構成要素またはハードウェア構成要素または組合せの構成要素に相当しても良い。
図9は、様々なハードウェア要素とソフトウェア要素を示すが、
図1および2の中で記述される構成要素の各々は、追加の又はより少ない要素を含むかもしれない。
【0093】
例として、コンピューティング・マシンは、パーソナル・コンピュータ(personal computer(PC))、またはタブレットPC、またはセットトップボックス(set-top box)、または携帯情報端末(personal digital assistant(PDA))、または携帯電話機、またはスマートフォン、またはウェブ機器、またはネットワーク・ルーター、またはモノのインターネット(internet of things(IoT))機器、またはスイッチ又はブリッジ、またはマシンがとるべき行動を特定する指示924を実行可能な如何なるマシンであっても良い。更に、1台のマシンのみ図示されているが、「マシン」という語は、ここで述べられる1以上の方法論を実行するために、指示924を個別で又は共同で実行する機械集まりも含むと受け取られても良い。
【0094】
例示のコンピュータ・システム900は、1以上のプロセッサ(一般に、プロセッサ902)(たとえば、中央演算処理装置(central processing unit(CPU))、またはグラフィックス処理装置(graphics processing unit(GPU))、またはデジタル信号プロセッサ(digital signal processor(DSP))、または1以上の特定用途向け集積回路(application-specific integrated circuits(ASIC))、または1以上の無線周波数集積回路(radio-frequency integrated circuits(RFIC))、またはこれらの組合せ)と、メイン・メモリ904と、不揮発性メモリ906とを含み、それらはバス908を介して互いに通信するように構成されている。コンピュータ・システム900は、更に、グラフィックス・ディスプレイ装置910(たとえば、プラズマ・ディスプレイ・パネル(plasma display panel(PDP))、または液晶ディスプレイ(liquid crystal display(LCD))、またはプロジェクター、または陰極線管(cathode ray tube(CRT))を含んでも良い。コンピュータ・システム900は、英数字入力装置912(たとえば、キーボード)と、カーソル制御装置914(たとえば、マウス、またはトラックボール、またはジョイスティック、またはモーションセンサ、または他のポインティング手段)と、記憶装置916と、信号生成装置918(たとえば、スピーカー)と、ネットワーク・インターフェース装置920も含んでも良く、それらもバス908を介して通信するように構成されている。
【0095】
記憶装置916は、1以上の方法論又はここで述べられた関数を具体化した指示924が記憶されているコンピュータ読取り可能な媒体922を含む。指示924は、コンピュータ・システム900がそれらを実行中は、完全に又は少なくとも部分的に、メイン・メモリ904の中、または、プロセッサ902の中(たとえば、プロセッサのキャッシュメモリの中)に存在しても良く、メイン・メモリ904とプロセッサ902も、コンピュータ読取り可能な媒体を構成している。指示924は、ネットワーク・インターフェース装置920を介して、ネットワーク926で送信または受信されても良い。
【0096】
コンピュータ読取り可能な媒体922は、例示の実施例で、1つの媒体であると示されているが、「コンピュータ読取り可能な媒体」という語は、指示(たとえば、指示924)を記憶できる1つの媒体または複数の媒体(たとえば、集中または分散データベース、または関連キャッシュおよびサーバー)を含むものと解されるべきである。コンピュータ読取り可能な媒体は、マシンが実行する指示(たとえば、指示924)を記憶可能で、ここで述べられた1以上の方法論をマシンに実行させる、どんな媒体を含んでも良い。コンピュータ読取り可能な媒体は、ソリッドステートメモリと、光学式媒体と、磁気媒体の形式のデータリポジトリを含むが、これに限定されるものではない。コンピュータ読取り可能な媒体は、信号または搬送波のような一時的な媒体を含まない。
【0097】
更なる構成上の考察
有益なことに、保管サイト内の規則的に形づくられた構造を認識することと、構造のカウントを使用して保管サイトを移動することとによって、ロボット・システムは、需要な負荷を保管サイトに加えることなく、保管サイトを自動化する。従来のロボットは、保管サイトを移動するのにラックを認識するために、各々のラックにつけられた、QRコードのようなコード・マーキングをしばしば要求する。しかし、保管サイトのQRコードの追加は、自動化のためのかなりの先行投資コストを従来の保管サイトに強要する。また、QRコードの使用は、保管サイトの継続的な維持費を引き起こす。いくつかの実施例のロボット・システムの使用は、前もってのマッピングなしで、ロボットが、保管サイトを移動することを可能とする。
【0098】
特定の実施例は、論理回路、またはいくつかの構成要素またはエンジンまたはモジュールまたはメカニズムを含むものとして、ここで記述されている。エンジンは、ソフトウェア・モジュール(たとえば、コンピュータで取り可能な媒体上に具体化されたコード)またはハードウェア・モジュールを構成しても良い。ハードウェア・エンジンは特定の作業を実行可能な実体的な装置であり、特定の方法で構成または配置されても良い。例示の実施例では、1以上のコンピュータ・システム(たとえば、スタンドアロ-ン、クライアントまたはサーバコンピュータ・システム)、またはコンピュータ・システム(たとえば、プロセッサまたはプロセッサのグループ)の1以上のハードウェア・エンジンは、ここで述べられたような特定の作業を実行するために作業するハードウェア・エンジンとして、ソフトウェア(たとえば、アプリケーションまたはアプリケーション部分)により構成されても良い。
【0099】
様々な実施例では、ハードウェア・エンジンは、機械的に、または、電子的に実装されても良い。たとえば、ハードウェア・エンジンは、特定の作業を実行するように、(たとえば、フィールドプログラマブルゲートアレイ(field programmable gate array(FPGA))または特定用途向け集積回路(application-specific integrated circuit(ASIC))のような専用プロセッサとして)不変に構成された専用の回路または論理回路を含んでも良い。ハードウェア・エンジンは、ソフトウェアが特定の作業を実行するように一時的に構成される(たとえば、多目的プロセッサ又は他のプログラム可能なプロセッサの中に含まれた)プログラム可能な論理回路または回路も含んでも良い。機械的に、専用に不変に構成された回路のハードウェア・エンジン、または一時的に構成された回路(例えば、ソフトウェアで構成される)を実行するという決定が、コストと時間を考慮してなされることはいうまでもない。
【0100】
ここで述べられた例示の方法の様々な作業は、関連の作業を実行するように(たとえばソフトウェアによって)一時的に構成された又は不変に構成された、例えばプロセッサ902のような1以上のプロセッサによって、少なくとも部分的に実行されても良い。一時的に構成されていようと、不変に構成されていようと、そのようなプロセッサは、1以上の作業または機能を実行するように動くプロセッサ実装エンジンを構成しても良い。ここに言及されるエンジンは、いくつかの例示の実施例で、プロセッサ実装エンジンを含んでも良い。
【0101】
特定の作業のパフォーマンスは、1台のマシン内に存在するだけではなく、いくつかのマシンにわたり配置された1以上のプロセッサに分散されても良い。いくつかの例示の実施例では、1以上のプロセッサまたはプロセッサ実装モジュールは、一つの地理的な位置(たとえば、家庭環境内またはオフィス環境内またはサーバー・ファーム内)に存在しても良い。他の例示の実施例では、1以上のプロセッサまたはプロセッサ実装モジュールは、いくつかの地理的な位置にわたって分散していても良い。
【0102】
この開示を読むと、当業者は、ここで明らかにされた原理を通して、類似したシステムまたはプロセスの、更に追加の代替的な構造と機能的な設計を認識する。このように、特定の実施例とアプリケーションが示され記述される一方で、開示された実施例が、寸分違わない構造と、ここで開示された構成要素に限らないことを理解すべきである。様々な修正と変更とバリエーションが、添付の請求項で定義された意図および範囲を逸脱することなく、ここで開示された配置および作業および方法の詳細になされる可能性があり、そのことは当業者にとって明らかである。
【0103】
(付記)
(付記1)
在庫品ロボットを操作する方法であって、
経路に沿って目標位置まで移動するように前記在庫品ロボットを制御することと、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえることと、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析することと、
を含む方法。
【0104】
(付記2)
前記画像を分析することは、更に、とらえられた前記画像から画像分割を作成することを含み、
前記画像の1つにおける前記画像分割は、前記画像の前記1つに現れている前記規則的に形づくられた構造のフレームのセグメントを含み、
前記画像を分析することは、更に、前記画像の前記1つの前記画像分割を使って、前記規則的に形づくられた構造を特定することを含む、
付記1に記載の方法。
【0105】
(付記3)
前記画像分割は、少なくとも畳み込みニューラルネットワークを使用することによって作成される、付記1に記載の方法。
【0106】
(付記4)
前記画像を分析することは、更に、
第1の画像に現れている前記規則的に形づくられた構造の1つの部分の参照点を決定することと、
前記第1の画像に続く第2の画像における、前記規則的に形づくられた構造の1つの前記部分を特定することと、
前記第1の画像と前記第2の画像にわたる前記参照点の動きを追跡することと、
前記第1の画像と前記続く画像に関して特定の位置を参照点が通過することに応じて、前記在庫品ロボットが通り過ぎた規則的に形づくられた構造の前記数を増やすことと、
を含む付記1に記載の方法。
【0107】
(付記5)
更に、奥行きカメラを使って、ポイントクラウド・データをとらえることを含み、
前記ポイントクラウド・データは奥行きデータを含み、
更に、前記画像の1つに現れている前記規則的に形づくられた構造の1つを特定することと、
前記規則的に形づくられた構造の前記1つの表面と一列に並ぶ平面を推定することと、
前記ポイントクラウド・データの前記奥行きデータと前記平面とを使って、前記規則的に形づくられた構造の前記1つに対する前記在庫品ロボットの前記現在位置を特定することと、
を含む付記1に記載の方法。
【0108】
(付記6)
更に、前記規則的に形づくられた構造の前記1つに対する前記在庫品ロボットの推定ヨー角と、前記在庫品ロボットと前記規則的に形づくられた構造の前記1つとの間の推定距離とを特定することを含む付記1に記載の方法。
【0109】
(付記7)
更に、前記在庫品ロボットの中心のオフセットが、前記目標位置から閾値の距離以内であると特定することに応じて、前記画像センサで前記目標位置の写真をとることを含む付記1に記載の方法。
【0110】
(付記8)
前記開始位置は、前記在庫品ロボットを充電するように構成されているベース・ステーションである付記1に記載の方法。
【0111】
(付記9)
前記規則的に形づくられた構造は、行と列を有するラックを含む付記1に記載の方法。
【0112】
(付記10)
前記在庫品ロボットの前記現在位置を特定することは、前記在庫品ロボットが通り過ぎたラックの数と、前記在庫品ロボットが通り過ぎた行および列の前記数とに基づいている付記1に記載の方法。
【0113】
(付記11)
更に、目標の通路と、目標のラックと、前記ラックの行番号と、前記ラックの列番号とを明示する座標によって定義される前記目標位置を受信することと、
前記座標を受信することに応じて、前記ラック番号に基づいて、前記在庫品ロボットが通り過ぎたラックの前記数をカウントすることと、
前記目標のラックが位置する通路へと曲がることと、
前記目標位置を見つけるために、前記列番号に基づいて、前記在庫品ロボットが通り過ぎた前記列の数をカウントすることと、
前記行番号に相当する行へと移動することと、
を含む付記1に記載の方法。
【0114】
(付記12)
前記在庫品ロボットは、空中無人機である付記1に記載の方法。
【0115】
(付記13)
在庫品ロボットであって、
保管サイトの画像をとらえるように構成された画像センサと、
1以上のプロセッサと、
前記1以上のプロセッサに結合した1以上のメモリと、
を含み、
前記1以上のメモリは、1以上の指示のセットを記憶しており、
前記1以上の指示のセットは、前記1以上のプロセッサに実行された場合、前記1以上のプロセッサに、
前記保管サイトの目標位置を受信させ、
経路に沿って前記目標位置まで移動するように前記在庫品ロボットを制御させ、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえさせ、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析させる、
在庫品ロボット。
【0116】
(付記14)
前記規則的に形づくられた構造は、行と列を有するラックを含む付記13に記載の在庫品ロボット。
【0117】
(付記15)
前記在庫品ロボットの前記現在位置を特定することは、前記在庫品ロボットが通り過ぎたラックの数と、前記在庫品ロボットが通り過ぎた行および列の前記数とに基づいている付記13に記載の在庫品ロボット。
【0118】
(付記16)
前記画像を分析するための指示は、前記1以上のプロセッサに、
とらえられた前記画像から画像分割を作成させ、
前記画像の1つにおける前記画像分割は、前記画像の前記1つに現れている前記規則的に形づくられた構造のフレームのセグメントを含み、
前記画像を分析するための指示は、前記1以上のプロセッサに、
更に、前記画像の前記1つの前記画像分割を使って、前記規則的に形づくられた構造を特定させる、
付記13に記載の在庫品ロボット。
【0119】
(付記17)
前記画像センサは、奥行きカメラであって、その視野内の物体の奥行きデータを生成するように構成された、奥行きカメラを含む付記13に記載の在庫品ロボット。
【0120】
(付記18)
更に、前記在庫品ロボットの前記位置姿勢を特定するように、前記1以上のメモリに記憶された前記画像にアクセスするように構成されたビジュアル・イナーシャル・オドメトリ(VIO)ユニットを含む付記13に記載の在庫品ロボット。
【0121】
(付記19)
前記1以上のメモリは、更に、前記保管サイト内の前記規則的に形づくられた構造の総数と、前記規則的に形づくられた構造の寸法情報とを記憶する付記13に記載の在庫品ロボット。
【0122】
(付記20)
保管サイトを管理するためのシステムであって、前記システムは、
(1)1以上のプロセッサと、前記1以上のプロセッサに結合した1以上のメモリとを含む在庫品ロボットを含み、
前記1以上のメモリは、1以上の指示のセットを記憶しており、
前記1以上の指示のセットは、前記1以上のプロセッサに実行された場合、前記1以上のプロセッサに、
前記保管サイトの目標位置を受信させ、
経路に沿って前記目標位置まで移動するように前記在庫品ロボットを制御させ、
前記在庫品ロボットが前記経路に沿って移動する際に、1以上の画像センサを使って画像をとらえさせ、
前記在庫品ロボットが通り過ぎた、前記保管サイト内の規則的に形づくられた構造の数を追跡することによって、前記経路における前記在庫品ロボットの現在位置を特定するように、前記画像センサによってとらえられた前記画像を分析させ、
前記システムは、更に、
(2)前記在庫品ロボットに再度動力を供給するように構成されたベース・ステーションを含み、
前記ベース・ステーションは、前記在庫品ロボットが前記ベース・ステーションに戻ることに応じて、前記目標位置の前記写真をダウンロードするように構成されている、
システム。
【国際調査報告】