(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0005】
自立ロボットは、倉庫や似たような環境において作業を行うのに利用されることが多い。自立ロボットは、それらがその機能を果たすことを可能にするためにいくつかのセンサを有することが多い。例えば自立ロボットは、自立ロボットの位置を特定するためにデータを収集するのに使用されるカメラを有することができる。自立ロボットはまた、衝突を回避するために自立ロボットの経路内に現在ある物体を検出するために第2のカメラを有する場合もある。自立ロボットはまた、搬送されるべき商品、または商品が置かれている保管ユニットを識別するために別のカメラを使用する場合もある。
【0006】
倉庫または似たような環境に商品を搬送する際に使用するためのロボット駆動ユニットの種々の実施形態が開示される。ロボット駆動ユニットは、障害物の検出及び回避ならびにペイロードのセンタリングのために一体型のセンサシステムを使用するように構成されている。ロボット駆動ユニットの他の形態では、このような機能は、別々のセンサシステムを用いて行われる場合もある。例えば、障害物の検出は、特定のカメラを用いて行うことができ、一方ペイロードのセンタリングは別のカメラに頼る場合もある。しかしながら画像処理技術の改善及びカメラ技術の改善は、複数の機能に対して同一のカメラを使用することを実現可能にする。ロボット駆動ユニットの構成においてより少ないカメラを使用することはコストを削減することになる。しかしながら、同じカメラによって障害物回避機能と、ペイロードのセンタリング機能の両方を実施するためには、異なる技術が必要である。
【0007】
図1から始まって、ロボット駆動ユニット(「RDU」)100の一例が描かれている。RDU100は、保管ユニット103の下に自身を位置決めすることができる。保管ユニット103は、様々な保管棚、ラック、パレット、蓋付きの箱、容器、または多種多様な商品を保管するために倉庫環境で使用され得る同様の保管道具を含むことができる。自身を保管ユニット103の下に位置決めした後、RDU100は、保管ユニット103を地面から持ち上げることができ、RDU100が保管ユニット103を新たな場所に移動させることを可能にする。
【0008】
RDU100はまた、カメラ、三次元カメラ、ポイントクラウドスキャナまたは同様の装置など様々な画像取り込み装置を含むことができる。例えば、RDU100は、1つまたは複数の前向きの画像取り込み装置106を含むことができる。前向きの画像取り込み装置106は典型的には、RDU100の前方に設置することができる。しかしながら前向きの画像取り込み装置106は、RDU100の上部面、側面または他の面に設置され、RDU100の前方を向くように位置決めされる場合もある。しかしながら一部の実施形態では、第2の後ろ向きの画像取り込み装置107がRDU100上に設置される場合もある。このような実施形態では、後ろ向きの画像取り込み装置107は典型的にはRDU100の後方に設置することができる。しかしながら後ろ向きの画像取り込み装置107は、RDU100の上部面、側面または他の面に設置され、RDU100の後方を向くように位置決めされる場合もある。RDU100はまた、1つまたは複数の下向きの画像取り込み装置109を含む場合もある。下向きの画像取り込み装置109は、RDU100の下部構造または底面に位置決めすることができる。しかしながら他の実施形態では下向きの画像取り込み装置109は、RDU100上の他の場所に配置され、下を向くように位置決めされる場合もある。
【0009】
RDU100はまた、プロセッサ、メモリ及びネットワークインターフェースなどの追加の回路構成要素を含むことができる。このような構成要素は、RDU100が自立式に動作することを可能にする。例えばメモリは、データと、RDU100に特定のタスクを実施させるためにプロセッサによって実行可能な機械可読命令の両方を記憶することができる。RDU100のメモリは、揮発性及び不揮発性メモリと、データストレージ構成要素の両方を含むように本明細書では定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータを保持するものである。したがって、RDU100のメモリは、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連するフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、または他のメモリ構成要素、あるいはこれらのメモリ構成要素のうちの任意の2つ以上の組み合わせを含むことができる。さらに、RAMは、例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)、及び他の係る装置を含んでよい。ROMは、例えば、プログラマブル読み取り専用メモリ(PROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、または他の同様のメモリ装置を含む場合がある。また、プロセッサは、複数のプロセッサまたは複数のプロセッサコアを表す場合があり、メモリは、それぞれ並列処理回路で動作する複数のメモリを表す場合がある。プロセッサは、電気式であってもよいし、何らかの他の利用可能な構成であってもよい。ネットワークインターフェースは、RDU100が、リモートコンピューティングデバイス(例えばサーバ)など別のデバイスとのデータ通信を維持することを可能にする任意の光学または電気デバイスに相当し得る。例えばネットワークインターフェースは、電気電子技術者協会(「IEEE」)802.11(すなわち「WI−FI」)インターフェース、マイクロウェーブネットワーキングインターフェース、短距離無線インターフェース(例えばBLUETOOTH)または他のネットワークインターフェースに相当する場合がある。
【0010】
図2に移動すると、RDU100の動作の一例の図が提供されている。ここでRDU100は、保管ユニット103の下に自身を位置決めする。RDU100はその後、保管ユニット103の下で回転することで、保管ユニット103の近傍にパノラマ画像を生成する。RDU100が、前向きの画像取り込み装置106または後ろ向きの画像取り込み装置107のいずれかのみを有する実施形態では、RDU100は360度回転することができる。パノラマ画像は、単一の画像、一緒に合わせることで単一の画像を形成することができる一連の画像、RDU100の近傍で見ることができる隣接する部分を取り込むための一連の画像、ビデオまたは他の表示を含むことができる。RDU100が、前向きの画像取り込み装置106と、後ろ向きの画像取り込み装置107の両方を有する実施形態では、RDU100は、より少なく回転する場合がある(例えば180度)。パノラマ画像を生成した後、RDU100はその後、保管ユニット103の少なくとも2つの脚を識別し、識別された2つの脚に基づいて保管ユニット103の中心に対するその位置を特定することができる。RDU100が、それが中心からずれていると判断した場合、保管ユニット103を持ち上げて移動させようと試みる前に、RDU100は、保管ユニット103下で自身を中心に配置することができる。
【0011】
一部の例では、RDU100はまた、保管ユニット103の同一性または保管ユニット103の内容物を判定するために、パノラマ画像内の保管ユニット基準316を識別する場合もある。保管ユニット基準316は、保管ユニット103の1つの脚の上に位置してよい。しかしながら保管ユニット基準316は、他の目に見える場所に配置される場合がある、または複数の保管ユニット基準316が、保管ユニット103に取り付けられる場合もある。
【0012】
図3を参照すると、種々の実施形態によるネットワーク環境300が示される。ネットワーク環境300は、ネットワーク306を介して互いにデータ通信する、コンピューティング環境303と、ロボット駆動ユニット100とを含む。ネットワーク306は、インターネット、イントラネット、エクストラネット、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)または2つ以上の係るネットワークの任意の組み合わせを含むことができる。例えばそのようなネットワークには、有線ネットワーク(例えばケーブルネットワーク、イーサネット、光ファイバネットワーク、電話網、デジタル加入者ラインネットワークもしくは他の有線ネットワーク技術)または無線ネットワーク(例えば衛星ネットワーク、IEEE802.11「WI−FI」ネットワーク、メッシュネットワーク、携帯電話網または他の無線ネットワーク技術)が含まれ得る。
【0013】
コンピューティング環境303は、サーバコンピュータまたはコンピューティング性能を提供する任意の他のシステムを含むことができる。代替として、コンピューティング環境303は、例えば1つ以上のサーババンクまたはコンピュータバンクまたは他の配置で配置され得る複数のコンピューティングデバイスを利用する場合もある。係るコンピューティングデバイスは、単独の設備の中に配置される場合もあれば、多数の異なる地理的な位置間で分散される場合もある。例えば、コンピューティング環境303は、ホスト型コンピューティングリソース、グリッドコンピューティングリソース、または任意の他の分散コンピューティング構成を共に形成する複数のコンピューティングデバイスを含むことができる。一部のケースでは、コンピューティング環境303は、処理、ネットワーク、ストレージ、または他のコンピューティング関連リソースの割り当て容量が経時的に変化し得る順応性に富んだコンピューティングリソースに対応する場合もある。
【0014】
また、種々のデータが、コンピューティング環境303にアクセス可能であるデータストア309に記憶される。データストア309は、理解され得るように、例えばリレーショナルデータベース、キーバリューストア、階層型データベース、オブジェクト指向データベース、コンマまたはタブ区切り形式のテキストファイル、構成ファイル及び可能性のある他のデータストアトアなど複数のデータストア309を表す場合がある。データストア309に記憶されるデータは、例えば、以下に記載する種々のアプリケーションまたは機能エンティティの動作に関連付けられる。データストア309に記憶されるデータには、例えば、地面基準313、保管ユニット103及び保管ユニット基準316、倉庫マップ319及び可能性のある他のデータが含まれる。
【0015】
地面基準313は、その上にエンコードされた識別子を有する地面に置かれたマーカーに相当する。各地面基準313は、倉庫マップ319上の独自の場所に対応しており、RDU100が、1つまたは複数の近くの地面基準313に基づいてその位置を特定することを可能にする。地面基準313は、バーコードまたは他の容易に撮像される光学式の機械読み取り可能なデータの表示を含むことができる。バーコードは、例えば直線バーコードまたは二次元バーコードを含む場合がある。二次元バーコードの例には、マトリックススタイルバーコード、例えばSPARQCodeクイックレスポンス(「QR」)コード、円形スタイルバーコード(例えば「ShotCode」)または二次元形状でデータを光学式にエンコードするための他の手法が含まれる。
【0016】
各保管ユニット103に関する情報を、データストア309内に保管される場合もある。この情報には、保管ユニット103の内容物、保管ユニット103の場所及び可能性のある他のデータが含まれてよい。保管ユニット基準316はまた、各保管ユニット103に対応付けることができる。保管ユニット基準316は、その上にエンコードされた識別子を有する保管ユニット103上に置かれたマーカーに相当する。各保管ユニット基準316は、保管ユニット基準316が取り付けられる保管ユニット103を独自に識別するような役目をすることができる。例えば、RDU100は、保管ユニット基準316を走査して保管ユニット103の識別子を取得し、データストア309に問い合わせることによって保管ユニット103及び保管ユニット103の内容物を確認することができる。
【0017】
倉庫マップ319は、倉庫または似たよう構造物の空間的な表示を記憶している。例えば倉庫マップ319には、対応する倉庫内の構造物の場所、倉庫内の特定のエリアまたは区域(例えば保管ユニット103が保管されるべき場所)、個々の商品またはエンティティの場所(例えば、個々の保管ユニット103またはRDU100の現在の場所)に関するデータ、及び可能性のある他のデータが含まれてよい。このデータは、いくつかの形式で記憶することができ、例えばデカルト座標系、極座標系または他の適切な二次元または三次元の座標系で記憶することができる。
【0018】
種々のアプリケーションまたは他の機能を、種々の実施形態に従ってコンピューティング環境303において実行することができる。コンピューティング環境303で実行される構成要素には、例えば、RDUディスパッチアプリケーション321、駆動エージェント322、パス生成アプリケーション323、及び本明細書において詳細に考察されない他のアプリケーション、サービス、プロセス、システム、エンジンまたは機能が含まれる。
【0019】
RDUディスパッチアプリケーション321は、1つまたは複数のRDU100の動作を構成するような役目をする。RDUディスパッチアプリケーション321は例えば、RDU100に、特定の保管ユニット103を新たな場所に移動させるように命令する、保管ユニット103の識別子を含む、RDU100から受け取ったメッセージに少なくともある程度基づいて、RDU100が正しい保管ユニット103を取り出したことを検証するように命令する、及び可能性のある他の機能を命令することができる。
【0020】
駆動エージェント322は、一部の実施形態では、RDU100のための制御装置として動作するように実行させることができる。駆動エージェント322は、センサ読み取り値またはデータなど、RDU100からデータを受け取る、またはそれらを問い合わせることができる。駆動エージェント322はその後、RDU100によって行われるべき適切な行動を決定し、RDU100にその行動を行うようにさせる1つまたは複数の命令をRDU100に送ることができる。一部の例では、各RDU100を制御するために駆動エージェント322の別個のインスタンスが実行される場合もある。他の例では、複数のRDU100の行動を制御する、またはそうでなければ管理するために単一の駆動エージェント322が実行される場合もある。
【0021】
経路生成アプリケーション323は、RDU100によって提供された情報に少なくともある程度基づいてRDU100の2つの地点の間の経路を特定し、これを提供するように実行される。経路生成アプリケーション323は、RDU100のために倉庫マップ319上の2つの地点の間に経路を特定するために様々な手法を利用することができる。そのような手法には、例えば任意の角度の経路プランニング法、A*グラフ探索法など、倉庫内の地面基準313の配置に依拠するグリッドベース手法または同様の手法が含まれる場合がある。経路生成アプリケーション323はまた、経路を生成する際、既知の障害物の存在を考慮することもできる。このような障害物は、永久的である場合(例えば、壁、柱、排水溝、または他の建築機構)、あるいは一時的である(例えば、床の上に落下した商品、使用不可になったRDU100または他の障害物)場合がある。
【0022】
次に、ネットワーク環境300の種々の構成要素の動作の全体的な説明が提供される。開始するために、RDU100は保管ユニット103に接近し、保管ユニット103の下に移動する。RDU100はその後、下向きの画像取り込み装置109を利用して地面基準313の画像を取り込み、地面基準313の上で自身を中心に配置する。その後、RDU100は、地面基準313の周辺の所定の場所で回転し、前向きの画像取り込み装置106によってパノラマ画像を取得する。パノラマ画像を取得した後、RDU100は、パノラマ画像内で保管ユニット103の複数の脚を識別し、保管ユニット103の複数の脚の各々から地面基準313までの距離を測定する。RDU100はその後、地面基準313に対する保管ユニット103の中心の位置を計算し、それが保管ユニット103に対して中心からずれて位置しているかどうか判断することができる。RDU100が保管ユニット103に対して中心からずれている場合、RDU100はこのとき、その位置を調節することができるため、RDU100は保管ユニット103の中心の下に位置することになる。保管ユニット103の下に自身を中心に配置した後、RDU100は、保管ユニット103を持ち上げる。
【0023】
一部の例では、RDU100はまた、パノラマ画像内で保管ユニット基準316を識別する場合もある。RDU100がそのようにする場合、それは、保管ユニット基準316の画像から保管ユニット103の識別子を抽出し、ネットワーク306を介して保管ユニット103の識別子を含むリクエストをRDUディスパッチアプリケーション321に送ることができる。RDU100は、それが正しい保管ユニット103と相互に作用していることを検証するためにこのステップを行う場合もある。RDUディスパッチアプリケーション321はその後、RDU100が正しい保管ユニット103の下にあるか、または正しい保管ユニット103と相互に作用しているかどうかをRDU100に示すために、ネットワーク306を介して応答を提供することができる。
【0024】
RDU100はその後、保管ユニット103を持ち上げた後、保管ユニット103を新たな場所に移動させ始めることができる。保管ユニット103を移動させる前に、RDU100はまず、前向きの画像取り込み装置106を利用して画像を取り込むことができる。RDU100はその後、保管ユニット103と共に移動しながら、前向きの画像取り込み装置106を利用して追加の画像を周期的に取り込むことができる。移動する間、RDU100は、保管ユニット103が安全に移動されることを保証するために、最も最近取得した画像を1つまたは複数のこれより前に取得した画像と比較することができる。例えば、RDU100は、この画像内に見られる保管ユニット103の1つまたは複数の脚の位置の変化を測定することで、保管ユニットが、RDU100の頂部において位置または向きを変更したかどうか判断することができる。同様にRDU100は、これ以前の画像内に見られた保管ユニット103の1つまたは複数の脚が、現在の画像には脚は全く見られないと判断する場合もあり、この場合保管ユニット103は、RDU100から落下している。このような状況では、RDU100は、RDUディスパッチアプリケーション321に警告を送り、保管ユニット103が落下したことを指示することができる。別の例として、RDU100は、画像間で保管ユニット103の個々の脚の垂直方向の変位量を測定する場合もある。このような測定値に基づいて、RDU100は、保管ユニット103が搬送中に揺れているかどうか、いずれにしても保管ユニット103が傾いて落下する危険があるかどうかを判断することができる。RDU100は、保管ユニット103が揺れて落下するのを阻止するために、その速度を調節する、または経路生成アプリケーション323からの新たな経路を要求することができる。
【0025】
RDU100が移動している間、RDU100は、前向きの画像取り込み装置106によって取り込んだ画像を分析することで、RDU100がたどる経路内の潜在的な障害物を検出し識別することも可能である。障害物は、例えば他のRDU100、人間、保管ユニット103、またはRDU100の経路内の何らかの他の予測しない物体を含む可能性がある。障害物の識別に応答して、RDU100は、ネットワーク306を介してネットワーク経路生成アプリケーション323に新たな経路のためのリクエストを送信することができる。RDU100は、RDU100をその最終的な目的地まで誘導する、経路生成アプリケーション323によって提供された新たな経路をたどることができる。
【0026】
しかしながら1つまたは複数の代替の実施形態では、これらの機能のうちの1つまたは複数は、駆動エージェント322によって代わりに実施される場合がある。例えば駆動エージェント322は、RDU100に保管ユニット103に接近し、保管ユニット103の下に移動するように命令することができる。RDU100が保管ユニット103の下に移動したことを指示した後、駆動エージェント322は、RDU100に、下向きの画像取り込み装置109を利用して地面基準313の画像を取り込むように命令することができる。駆動エージェント322は、RDU100に、地面基準313上で自身を中心に配置するように命令することができる。RDU100はその後、それが自身を中心に配置し、追加の命令をリクエストした後、駆動エージェント322に報告することができる。駆動エージェント322はその後、RDU100に、地面基準313の周りの所定の位置で回転して、前向きの画像取り込み装置106によってパノラマ画像を取得するように命令することができる。RDU100はその後、駆動エージェント322に取り込んだ画像を提供することができる。駆動エージェント322はその後、この画像を処理して、パノラマ画像内で保管ユニット103の複数の脚を識別し、保管ユニット103の複数の脚の各々から地面基準313までの距離を測定することができる。しかしながら一部の例では、駆動エージェント322は、画像処理アプリケーションがこのような計算を行うように要求する場合もある。駆動エージェント322はこの場合、地面基準313に対する保管ユニット103の中心の位置を計算し、RDU100が保管ユニット103に対して中心からずれて位置しているかどうか判断することができる。RDU100が保管ユニット103に対して中心からずれている場合、駆動エージェント322はこのときRDU100に、その位置を調節するように命令することができるため、RDU100は保管ユニット103の中心の下に位置するようになる。RDU100が保管ユニット103の下で自身を中心に配置した後、駆動エージェント322はその後、RDU100に保管ユニット103を持ち上げるように命令することができる。
【0027】
一部の例では、駆動エージェント322はまた、パノラマ画像内で保管ユニット基準316を識別する場合もある。駆動エージェント322がそのようにする場合、それは、保管ユニット基準316の画像から保管ユニット103の識別子を抽出し、保管ユニット103の識別子を含むリクエストをRDUディスパッチアプリケーション321に送ることができる。駆動エージェント322は、RDU100が正しい保管ユニット103と相互に作用していることを検証するためにこのステップを行う場合もある。RDUディスパッチアプリケーション321はこの場合、RDU100が正しい保管ユニット103の下にあるか、または正しい保管ユニット103と相互に作用しているかどうかを駆動エージェント322に指示するために応答を提供することができる。
【0028】
駆動エージェント322はその後、保管ユニット103を持ち上げた後、保管ユニット103を新たな場所に移動させるようにRDU100に命令することができる。保管ユニット103を移動させる前に、駆動エージェント322はまず、前向きの画像取り込み装置106を利用して画像を取得するようにRDU100に命令することができる。駆動エージェント322は、RDU100が保管ユニット103と共に移動している間、前向きの画像取り込み装置106を利用して追加の画像を周期的に取り込むようにRDU100にさらに命令することができる。RDU100はその後、RDU100が移動している間、駆動エージェント322にこのような画像の1つまたは複数を提供することができる。駆動エージェント322はこのとき、保管ユニット103が安全に移動されることを保証するために、最も最近取得した画像を1つまたは複数のこれより前に取得した画像と比較することができる。例えば、駆動エージェント322は、この画像内に見られる保管ユニット103の1つまたは複数の脚の位置の変化を測定することで、保管ユニットが、RDU100の頂部において位置または向きを変更したかどうかを判断することができる。同様に駆動エージェント322は、以前の画像内には保管ユニット103の1つまたは複数の脚が見られたが、現在の画像には脚が全く見られないと判断する場合もあり、この場合保管ユニット103はRDU100から落下している。このような状況では、駆動エージェント322は、RDUディスパッチアプリケーション321に警告を送り、保管ユニット103が落下したことを示し、RDU100に停止するように命令を送ることができる。別の例として、駆動エージェント322は、画像間で保管ユニット103の個々の脚の垂直方向の変位量を測定する場合もある。このような測定値に基づいて、駆動エージェント322は、保管ユニット103が搬送中に揺れているかどうか、いずれにしても保管ユニット103が傾いて落下する危険があるかどうかを判断することができる。駆動エージェント322はこの場合、RDU100に、その速度を調節するように命令することができる。代替として、駆動エージェント322は、保管ユニット103が揺れて落下するのを阻止するために、経路生成アプリケーション323からの新たな経路を要求する場合もある。
【0029】
RDU100が移動している間、駆動エージェント322は、前向きの画像取り込み装置106によって取り込んだ画像を分析することで、RDU100がたどる経路内の潜在的な障害物を検出し識別することもできる。障害物は、例えば他のRDU100、人間、保管ユニット103、またはRDU100の経路内の何らかの他の予測しない物体を含む可能性がある。障害物の識別に応答して、駆動エージェント322は、ネットワーク経路生成アプリケーション323に新たな経路のためのリクエストを送信することができる。駆動エージェント322はその後、RDU100がその最終目的地に到達するために、経路生成アプリケーション323によって提供された新たな経路をたどるようにRDU100に命令することができる。
【0030】
次に
図4A〜
図4Cを参照すると、種々の実施形態に係るRDU100の一部の動作の一例を提供するフローチャートが示される。
図4A〜
図4Cのフローチャートは、本明細書に説明するRDU100の一部の動作を実施するために利用され得る、多くの異なる種類の機能配置の一例を単に提示するにすぎないことを理解されたい。一代替形態として、
図4A〜
図4Cのフローチャートは、1つまたは複数の実施形態に係るRDU100において実施される方法の要素の一例を示すものとして見ることもできる。
【0031】
ボックス403によって始まり、RDU100は、保管ユニット103に接近する。例えばRDU100は、所定のまたは事前に規定された経路(例えば、保管ユニットの列の間の規定された回廊に沿って)に沿って保管ユニット103に接近することができる。RDU100は、例えばRDUディスパッチアプリケーション321から受け取った命令に応答して保管ユニット103に接近することができる。
【0032】
次にボックス406を参照すると、RDU100は、保管ユニット103の下に移動する。最初に保管ユニット103の下に自身を位置決めする間、RDU100は、前向きの画像取り込み装置106を利用して1つまたは複数の画像を取り込むことができる。RDU100はその後、RDU100が保管ユニット103の下に移動する際、保管ユニット103の脚にぶつかるのを回避するために、保管ユニット103の脚を識別するために画像分析を行うことができる。RDU100はまた、RDU100が保管ユニット103の下に移動する際、RDU100にその接近方法を変えることを要求するであろう、例えば床の上の商品、蓋付きの箱または箱などの他の障害物を識別するために画像分析を行う場合もある。
【0033】
ボックス409に移動すると、RDU100はその後、下向きの画像取り込み装置109を利用して地面基準313の画像を取り込む。一部の例では、RDU100は、取り込んだ画像内で地面基準313を識別するために画像分析を行う場合がある。取り込んだ画像内で地面基準313が識別されなかった場合、RDU100は、地面基準313の別の画像を取り込むように試みる場合がある、または地面基準313が元々下向きの画像取り込み装置109の視野の外にあった場合、別の画像を取り込む前に保管ユニット103の下にわずかに隠れるように自身を位置決めし直す場合もある。
【0034】
ボックス413に進むと、RDU100は地面基準313に対して所定の場所に自身を配置する。例えばRDU100は、それが、取り込んだ画像内で地面基準313を識別した後、地面基準313の頂部上で自身を中心に配置することができる。正確に自身を位置決めするために、RDU100は、RDU100が移動する際、下向きの画像取り込み装置109を利用して一連の画像を繰り返し取り込むことができる。これにより、RDU100が地面基準313に向かって移動しているかどうか、またはそこから離れるように移動しているかどうか、及び何らかの修正が必要であるかどうかを判断することによって、RDU100が自身を誘導することが可能になる。
【0035】
次にボックス416を参照すると、RDU100は、前向きの画像取り込み装置106を利用してパノラマ画像(例えば、単一の画像、重なり合う画像のシーケンス、隣合う画像のシーケンス、ビデオまたは他の視覚的表示)を取り込みながら自身を回転させる。一部の例では、RDU100は、RDU100を取り囲む領域のパノラマ画像を取り込んでいる間、360度(すなわち、全円)ほども回転する場合がある。しかしながら他の例では、RDU100は、360度の完全な回転が不必要である場合、より短い円弧にわたって回転する場合もある。
【0036】
一部の例では、RDU100は、前向きの画像取り込み装置106と合わせて後ろ向きの画像取り込み装置107も利用する場合もある。このような例では、より短い回転円弧を利用してより大きなパノラマ画像を取り込むことができる。例えば、後ろ向きの画像取り込み装置107が前向きの画像取り込み装置106と合わせて使用される場合、RDU100は、後ろ向きの画像取り込み装置107によって取得されたパノラマ画像を前向きの画像取り込み装置106から取得されたパノラマ画像と組み合わせることによって、180度しか回転せずに360度のパノラマ画像を取り込むことが可能である。
【0037】
ボックス419に移動すると、RDU100は、RDU100が現在下に位置決めされている保管ユニット103の1つまたは複数の脚を識別する。例えば、RDU100は、種々のコンピュータビジョン技術を利用して、ボックス416において予め取り込まれたパノラマ画像内で保管ユニット103の1つまたは複数の脚を識別することができる。RDU100はその後、さらに説明するように、保管ユニット103を搬送する間の事故を阻止するために、それ自体に対する、及び保管ユニット103に対する保管ユニット103の脚の位置を記憶することができる。
【0038】
一部の実施形態では、RDU100はまた、ボックス419において保管ユニット103に付けられた1つまたは複数の保管ユニット基準316を識別する場合もある。RDU100はこの場合、1つまたは複数の保管ユニット基準316内にエンコードされた情報を抽出し、それをRDUディスパッチアプリケーション321に送ることで、RDU100が正しい保管ユニット103の下にあることを確認することができる。RDU100が、正しい保管ユニット103の下にある場合、このときプロセスはボックス423へと続く。RDU100が正しい保管ユニット103の下になかった場合、(例えば、RDUディスパッチアプリケーション321によって提供される新たな場所に基づいて)RDU100は、正しい保管ユニット103まで移動し、プロセスを再開することができる。
【0039】
ボックス423に進むと、RDU100は、保管ユニット103の脚の各々から、RDU100が現在中心に置かれている地面基準313までの距離を計算する。これは、いくつかの方法で実現することができる。このような手法のうちの任意の1つまたは複数は、本開示の種々の実施形態において使用することができる。
【0040】
例えば、前向きの画像取り込み装置106が三次元カメラである場合、距離情報は、ボックス416において取り込まれたパノラマ画像にもとから埋め込まれる場合もある。このような例では、前向きの画像取り込み装置106から脚までの距離に関する値は、パノラマ画像から引き出すことができる。前向きの画像取り込み装置から保管ユニット103の脚までの距離に関する値は、RDU100の寸法を補償するために調節される。
【0041】
前向きの画像取り込み装置106が二次元カメラを有する例では、他の手法が使用される場合がある。例えば、保管ユニット103の脚と、RDU100との間の距離を測定するために、RDU100に設置された距離計を使用することができる。前向きの画像取り込み装置106から保管ユニット103の脚までの距離に関する値は、RDU100の寸法を補償するために調節することができる。
【0042】
次に
図4Bのボックス426を参照すると、RDU100は、保管ユニット103の中心の位置を計算する。これは、保管ユニット103の脚の相対的な位置を特定し、保管ユニット103の中心が、保管ユニット103の脚の位置に対して位置すべき場所を計算することによって行うことができる。例えば、RDU100は、三角測量または同様の手法を使用して、保管ユニット103の2つ以上の脚の場所に対する保管ユニット103の中心の場所を特定することができる。
【0043】
ボックス429に移動すると、RDU100は、それが現在、保管ユニット103の下で中心に位置するかどうか、またはRDU100が保管ユニット103の中心に対して中心からずれて位置するかどうかを判断する。これは、地面基準313の場所を、ボックス426であらかじめ計算された保管ユニット103の中心と比較することによって判断することができる。地面基準313の場所が、保管ユニット103の中心の場所と一致しない場合、RDU100は現在、地面基準313の上で中心に位置していることから、RDU100はこのとき、保管ユニット103の位置に対して中心からずれていると判断することができる。このような例では、プロセスはボックス433に進む。しかしながら地面基準313の場所が保管ユニット103の中心の場所と一致した場合、このときプロセスはボックス436までスキップする。
【0044】
ボックス433に進むと、RDU100は、保管ユニット103の下に移動し、保管ユニット103の中心に対して自身を位置決めし直す。一部の例では、RDU100は、移動した後、ボックス416から429のうちの1つまたは複数を繰り返すことによって、それが保管ユニット103の中心に位置することを確認することができる。RDU100が中心からずれたままである場合、RDUは、保管ユニット103の中心の場所に向かって再度移動し、RDU100が保管ユニット103の下で中心に位置するまでプロセスを繰り返すことになる。
【0045】
次にボックス436を参照すると、RDU100は、保管ユニット103を持ち上げる。例えば、RDU100は、一体型のリフトまたは同様の機構を使用して保管ユニット103を地面からつり上げることができる。
【0046】
ボックス439に移動すると、RDU100はその後、前向きの画像取り込み装置106によって別の画像を取り込む。取り込まれた画像は、RDU100が移動する際、保管ユニット103が安全に扱われることを保証するために、プロセスにおいて後に使用することができる。
【0047】
図4Cのボックス443に進むと、RDU100は、経路に沿って移動し、保管ユニット103をそれと共に搬送する。一部の例では、RDU100がもともとその保管ユニット103に対して差し向けられた場合、RDU100は、RDUディスパッチアプリケーション321から予め経路を受け取ることができる。他の例では、RDU100は、この段階において、経路生成アプリケーション323からの経路を要求する場合もある。このような例では、RDU100からのリクエストは、RDU100の現在の場所と、RDUディスパッチアプリケーション321から予め受け取ったRDU100の目的地とを含むことができる。
【0048】
次にボックス446を参照すると、RDU100は、前向きの画像取り込み装置106を利用して第2の画像を取り込む。
【0049】
ボックス449に移動すると、RDU100は、ボックス439で取り込んだ画像をボックス446で取り込んだ画像と比較して、運搬中、保管ユニット103がRDU100上で位置を移動したかどうか判断する。しかしながらRDU100が、ボックス446の先の反復において画像を既に取り込んでいる場合、RDU100は、現在の画像を、先の反復において取り込んだ画像と比較する場合もある。いずれのケースでも、保管ユニット103の移動は、いくつかの手法を通じて判断することができる。これらの手法は、本開示の特定の実施形態に応じて別々に、または組み合わせて使用され得る。
【0050】
最初の手法では、RDU100は、前向きの画像取り込み装置106によって取得された2つの画像を比較して、RDU100の頂部での保管ユニット103の位置の横方向の移動を特定することができる。例えば、RDU100は、保管ユニット103がRDU100の頂部上に載っているとき、最初の画像内でRDU100の前方に位置決めされた保管ユニット103の1つまたは複数の脚を識別することができる。RDU100はその後、最初の画像内の保管ユニット103の脚の位置を、第2の画像における保管ユニット103の脚の対応する位置と比較することができる。保管ユニットの脚の位置が、左または右にずれている場合、RDU100は、RDU100の上にある保管ユニット103がこれに対応して、左または右、あるいは後ろまたは前にずれていると判断することができる。
【0051】
第2の手法では、RDU100は、前向きの画像取り込み装置106によって取得された2つの画像を比較して、保管ユニット103の位置の垂直方向の移動を特定することができる。例えば、RDU100は、最初の画像内において保管ユニット103の1つまたは複数の脚を識別することができ、第2の画像において保管ユニット103の1つまたは複数の脚を同様に識別することができる。各々の画像において、RDU100は、保管ユニット103の脚のはっきりと区別できる特徴(例えば、脚の底部、脚の側部にあるマークなど)を識別することができる。一方の画像における保管ユニット103の脚の区別用の特徴が、他方の画像におけるものと異なる垂直方向の高さにある場合(例えばより高い、またはより低い)、RDU100は、保管ユニット103の垂直方向の変位が生じていると判断することができる。そのような垂直方向の変位には、揺動、傾斜、押されている状態、または他の垂直方向の変位が含まれてよい。
【0052】
この時点で、プロセスは、2つの経路に沿って分岐することができる。第1の分岐において、RDU100は、RDU100が移動される間、保管ユニット103の位置がずれていないと判断し、プロセスはボックス453に進む。第2の分岐では、RDU100は、保管ユニット103の位置がずれていると判断し(例えば、垂直方向の変位、水平方向の変位、またはその両方)、プロセスはボックス459に進む。
【0053】
ボックス453に進むと、RDU100は、障害物がその経路内に存在するかどうか判断する。RDU100は、例えばボックス446において予め取り込まれた画像を処理して、様々なコンピュータビジョン技術を用いて障害物を識別することができる。このような技術は、可能性のある物体のエッジ検出、可能性のある物体のグレイスケールまたは勾配マッチング、及び同様の手法を含むことができる。障害物が検出されない場合、プロセスは、ボックス443に戻るようにループし、ボックス443〜449のプロセスを再度繰り返す。しかしながら障害物が検出された場合、プロセスはボックス456に進む。
【0054】
次にボックス456を参照すると、RDU100は、経路生成アプリケーション323からの新たな経路を要求する、またはそうでなければ経路生成アプリケーション323から新たな経路を獲得する。このリクエストは、ネットワークインターフェースを利用してネットワーク306にわたって送信することができる。新たな経路を求めるリクエストには、RDU100の現在の場所、現在の経路を遮っている障害物の性質、現在の経路を遮っている障害物の場所及び場合によって他の情報が含まれる場合がある。応答において、RDU100は、経路生成アプリケーション323から、その目的地までたどるための新たな経路を受け取る。RDU100は、新たな経路をたどるためにその内部の経路指定を更新する。プロセスは、ボックス443に戻るようにループし、RDU100がその新たな経路をたどる際、ボックス443〜449のプロセスを再度繰り返す。
【0055】
しかしながらボックス449においてプロセスが代わりにボックス459に進んだ場合、RDU100は、保管ユニット103と共に移動し続けることがRDU100にとって安全であるか判断する。この判断は、様々な要因に少なくともある程度基づく場合がある。例えばRDU100は、垂直方向の変位または水平方向の変位が、保管ユニット103が傾斜して落下する許容不可能な可能性と相関する許容し得る変位の所定の閾値量を超えたかどうかに少なくともある程度基づいて、保管ユニット103が傾斜してRDU100から落下する可能性を特定することができる。保管ユニット103の中の商品に対する損傷につながる、または商品に保管ユニット内で位置を変えさせる結果になり得る(例えば、保管ユニット103から落下する、保管ユニット103の棚の上で場所を移動するなど)、保管ユニット103を落下させそうにはないが、保管ユニット103の中の商品の配置を変える可能性がある保管ユニット103の移動を考慮するために、垂直方向または水平方向の変位のより低い閾値が使用される場合もある。同様に、RDU100は、一連の画像に基づいて、RDU100が移動する際、保管ユニット103内に含まれる一定の大きさの、または一定の度合いの揺れを特定することができる。揺れの大きさまたは度合いが所定の閾値レベルを超えた場合、RDU100は、保管ユニット103の揺れが、保管ユニット103に保管される商品の位置に容認できない変化を生じさせる可能性があると判断する場合がある。
【0056】
プロセスはこの時点で再び分岐し得る。RDU100が保管ユニット103と共に移動することがなおも安全であると判断した場合、このときプロセスは、ボックス443に戻るようにループし、それ自体を繰り返す。しかしながらRDU100がもはや移動するのが安全ではないと判断した場合、このときプロセスはボックス463に進む。
【0057】
ボックス463に進むと、RDU100は、保管ユニット103の中の商品に対するさらなる損傷を阻止するために、または保管ユニット103がさらに揺動する、または傾斜するのを阻止するために移動を中止する。移動を中止するために、RDU100は、急激に停止することで、慣性力によって保管ユニット103を移動させたり、傾斜させたり、または落下させたりするのを回避するために、段階的なやり方で速度を緩めることができる。
【0058】
次にボックス466を参照すると、RDU100は、RDUディスパッチアプリケーション321に対して警告を送る。この警告には、RDU100の現在の場所、RDU100が停止した理由、保管ユニット103の状況(例えばRDU100の頂部になおも位置している、RDU100から落下した、またはその他の状況)及び場合によって他の情報が含まれてよい。この情報によって、RDUディスパッチアプリケーション321は、RDU100に補助(例えば技術者)を送ることが可能になる。プロセスはその後終了する。
【0059】
次に
図5A〜
図5Cを参照すると、種々の実施形態に係る駆動エージェント322の一部の動作の一例を提供するフローチャートが示される。
図5A〜
図5Cのフローチャートは、本明細書に説明する駆動エージェント322の一部の動作を実施するために利用され得る、多くの異なる種類の機能配置の一例を単に提示するにすぎないことを理解されたい。一代替形態として、
図5A〜
図5Cのフローチャートは、1つまたは複数の実施形態に係る駆動エージェント322において実施される方法の要素の一例を示すものとして見ることもできる。
【0060】
ボックス503によって始まり、駆動エージェント322は、RDU100に保管ユニット103に接近するように指示する。例えば駆動エージェント322は、RDU100に、所定のまたは事前に規定された経路(例えば、保管ユニットの列の間の規定された回廊に沿って)に沿って保管ユニット103に接近するように指示することができる。
【0061】
次にボックス506を参照すると、駆動エージェント322は、保管ユニット103の下に移動するようにRDU100に1つまたは複数の命令または指示を送る。一部の例では、駆動エージェント322は、RDU100が保管ユニット103の下に自身を位置決めする際、前向きの画像取り込み装置106を使用して、1つまたは複数の画像を取り込むように、RDU100に1つまたは複数の命令または指示を送る場合もある。RDU100はその後、RDU100が保管ユニット103の下に移動する際、RDU100に保管ユニット103の脚部にぶつかるのを回避させるようにRDU100にさらなる移動指示を送るために、画像分析を行い、保管ユニット103の脚部を識別するために駆動エージェント322に画像を送ることができる。駆動エージェント322はまた、RDU100が保管ユニット103の下に移動する際、RDU100にその接近方法を変えることを要求するであろう、床の上の商品、蓋付きの箱または箱などの他の障害物を識別するために画像分析を行う場合もある。
【0062】
ボックス509に移動すると、駆動エージェント322は、下向きの画像取り込み装置109を利用して地面基準313の画像を取り込むようにRDU100に1つまたは複数の命令または指示を送り、取り込んだ画像を駆動エージェント322に送信することができる。一部の例では、駆動エージェント322は、取り込んだ画像内で地面基準313を識別するために画像分析を行う場合がある。取り込んだ画像内で地面基準313が識別されなかった場合、駆動エージェント322は、地面基準313の別の画像を取り込むことを試みるようにRDU100に指示することができる、または地面基準313が元々下向きの画像取り込み装置109の視野の外にあった場合、別の画像を取り込む前に保管ユニット103に下にわずかに隠れるように自身を位置決めし直すことができる。
【0063】
ボックス513に進むと、駆動エージェント322は、地面基準313に対して所定の場所に自身を配置するようにRDU100に指示する、または命令することができる。例えば駆動エージェント322は、取り込んだ画像内で駆動エージェント322が地面基準313を識別した後、地面基準313の頂部上で自身を中心に配置するようにRDU100に指示することができる。正確にRDU100を位置決めするために、駆動エージェント322は、RDU100が移動する際、下向きの画像取り込み装置109を利用して一連の画像を繰り返し取り込み、これらの画像を駆動エージェント322に送るようにRDU100に指示することができる。これにより、RDU100が地面基準313に向かって移動しているかどうか、またはそこから離れるように移動しているかどうか、及び何らかの修正が必要であるかどうか判断することによって駆動エージェント322がRDU100を誘導することが可能になる。
【0064】
次にボックス516を参照すると、駆動エージェント322は、前向きの画像取り込み装置106を利用してパノラマ画像(例えば単一の画像、重なり合う画像のシーケンス、隣合う画像のシーケンス、ビデオまたは他の視覚的表示)を取り込みながら自身を回転させるようにRDU100に命令することができる。一部の例では、駆動エージェント322は、RDU100を取り囲む領域のパノラマ画像を取り込んでいる間、360度(すなわち全円)ほども回転するようにRDU100に命令することができる。しかしながら他の例では、駆動エージェント322は、360度の完全な回転が不必要である場合、より短い円弧にわたって回転するようにRDU100に命令する場合もある。
【0065】
一部の例では、駆動エージェント322は、前向きの画像取り込み装置106と合わせて後ろ向きの画像取り込み装置107を利用するようにRDU100にさらに命令する場合もある。このような例では、より短い回転円弧を利用してより大きなパノラマ画像を取り込むことができる。例えば、後ろ向きの画像取り込み装置107が前向きの画像取り込み装置106と合わせて使用される場合、RDU100は、後ろ向きの画像取り込み装置107によって取得されたパノラマ画像を前向きの画像取り込み装置106から取得されたパノラマ画像と組み合わせることによって、180度しか回転せずに360度のパノラマ画像を取り込むことが可能である。
【0066】
ボックス519に移動すると、駆動エージェント322は、RDU100から受け取った画像に少なくともある程度基づいて、画像RDU100が現在、下に位置決めされている保管ユニット103の1つまたは複数の脚を識別することができる。例えば、駆動エージェント322は、種々のコンピュータビジョン技術を利用して、ボックス516において予め取り込まれたパノラマ画像内で保管ユニット103の1つまたは複数の脚を識別することができる。駆動エージェント322はその後、さらに説明するように保管ユニット103を搬送する間の事故を阻止するために、RDU100の位置に対する、及び保管ユニット103に対する保管ユニット103の脚の位置を記憶することができる。
【0067】
一部の実施形態では、駆動エージェント322は、ボックス519において保管ユニット103に付けられた1つまたは複数の保管ユニット基準316を識別する場合もある。駆動エージェント322はこの場合、1つまたは複数の保管ユニット基準316内にエンコードされた情報を抽出し、それをRDUディスパッチアプリケーション321に送ることで、RDU100が正しい保管ユニット103の下にあることを確認することができる。RDU100が正しい保管ユニット103の下にある場合、このときプロセスはボックス523へと続く。RDU100が正しい保管ユニット103の下になかった場合、駆動エージェント322は、(例えば、RDUディスパッチアプリケーション321によって提供される新たな場所に基づいて)正しい保管ユニット103まで移動し、プロセスを再開するようにRDU100に命令または指示を送ることができる。
【0068】
ボックス523に進むと、駆動エージェント322は、保管ユニット103の脚の各々から、ストレージRDU100が現在中心に置かれている地面基準313までの距離を計算する。これは、いくつかの方法で実現することができる。このような手法のうちの任意の1つまたは複数は、本開示の種々の実施形態において使用することができる。
【0069】
例えば、前向きの画像取り込み装置106が三次元カメラである場合、距離情報は、ボックス516において取り込まれたパノラマ画像にもとから埋め込まれる場合もある。このような例では、前向きの画像取り込み装置106から脚までの距離に関する値は、パノラマ画像から引き出すことができる。前向きの画像取り込み装置から保管ユニット103の脚までの距離に関する値は、RDU100の寸法を補償するために調節される。
【0070】
前向きの画像取り込み装置106が二次元カメラを有する例では、他の手法が使用される場合がある。例えば、保管ユニット103の脚と、RDU100との間の距離を測定するために、RDU100に設置された距離計を使用することができる。前向きの画像取り込み装置106から保管ユニット103の脚までの距離に関する値は、RDU100の寸法を補償するために調節することができる。
【0071】
次に
図5Bのボックス526を参照すると、駆動エージェント322は、保管ユニット103の中心の位置を計算する。これは、保管ユニット103の脚の相対的な位置を特定し、保管ユニット103の脚の位置に対して保管ユニット103の中心が位置すべき場所を計算することによって行うことができる。例えば、駆動エージェント322は、三角測量または同様の手法を使用して、保管ユニット103の2つ以上の脚の場所に対する保管ユニット103の中心の場所を特定することができる。
【0072】
ボックス529に移動すると、駆動エージェント322は、RDU100が現在保管ユニット103の下で中心に位置しているかどうか、またはRDU100が保管ユニット103の中心に対して中心からずれて位置しているかどうか判断することができる。これは、地面基準313の場所を、ボックス526で予め計算された保管ユニット103の中心と比較することによって判断することができる。地面基準313の場所が、保管ユニット103の中心の場所と一致しない場合、RDU100は現在、地面基準313の上で中心に位置していることから、駆動エージェント322はこのとき、RDU100が保管ユニット103の位置に対して中心からずれていると判断することができる。このような例では、プロセスはボックス533に進む。しかしながら地面基準313の場所が保管ユニット103の中心の場所と一致した場合、このときプロセスはボックス536までスキップする。
【0073】
ボックス533に進むと、駆動エージェント322は、保管ユニット103の下に移動し、保管ユニット103の中心に対して自身を位置決めし直すようにRDU100に指示する、または命令する。一部の例では、駆動エージェント322は、移動した後、ボックス516から529のうちの1つまたは複数を繰り返すことによって、RDU100が保管ユニット103の中心に位置することを確認することができる。RDU100が中心からずれたままである場合、駆動エージェント322は、保管ユニット103の中心の場所に向かって再度移動するようにRDU100に指示することができる。駆動エージェント322は、RDU100が保管ユニット103の下で中心に位置するまでプロセスを繰り返すことができる。
【0074】
次にボックス536を参照すると、駆動エージェント322は、保管ユニット103を持ち上げるようにRDU100に指示する。応答において、RDU100は、一体型のリフトまたは同様の機構を使用して保管ユニット103を地面からつり上げることができる。
【0075】
ボックス539に移動すると、駆動エージェント322はその後、前向きの画像取り込み装置106によって別の画像を取り込むようにRDU100に指示する、または命令する。RDU100はその後、それに応答して画像を取り込み、それを駆動エージェント322に提供する。取り込まれた画像は、RDU100が移動する際、保管ユニット103が安全に扱われることを保証するために、プロセスにおいて後に使用することができる。
【0076】
図5Cのボックス543に進むと、駆動エージェント322は、経路に沿って移動し、保管ユニット103をそれと共に搬送するようにRDU100に指示する。一部の例では、駆動エージェント322がRDU100に経路を提供する。RDU100がもともとその保管ユニット103に対して差し向けられた場合、RDU100は、RDUディスパッチアプリケーション321から経路を予め受け取ることができる。他の例では、駆動エージェント322は、この段階において、経路生成アプリケーション323からの経路を要求し、その経路をRDU100に提供する場合もある。このような例では、RDU100からのリクエストは、RDU100の現在の場所と、RDUディスパッチアプリケーション321から予め受け取ったRDU100の目的地とを含むことができる。
【0077】
次にボックス546を参照すると、駆動エージェント322は、前向きの画像取り込み装置106を利用して第2の画像を取り込むようにRDU100に指示する。応答において、RDU100は第2の画像を取り込み、それを駆動エージェント322に提供する。
【0078】
ボックス549に移動すると、駆動エージェント322は、ボックス539で取り込んだ画像をボックス546で取り込んだ画像と比較して、運搬中、保管ユニット103がRDU100上で位置を移動したどうか判断する。しかしながらRDU100が、ボックス546の先の反復において画像を既に取り込んでいる場合、駆動エージェント322は、現在の画像を、先の反復において取り込んだ画像と比較する場合もある。いずれのケースでも、保管ユニット103の移動は、いくつかの手法を通じて判定することができる。これらの手法は、本開示の特定の実施形態に応じて別々に、または組み合わせて使用され得る。
【0079】
最初の手法では、駆動エージェント322は、前向きの画像取り込み装置106によって取得された2つの画像を比較して、RDU100の頂部での保管ユニット103の位置の横方向の移動を特定することができる。例えば、駆動エージェント322は、保管ユニット103がRDU100の頂部上に載っているとき、最初の画像内でRDU100の前方に位置決めされた保管ユニット103の1つまたは複数の脚を識別することができる。駆動エージェント322はその後、最初の画像内の保管ユニット103の脚の位置を、第2の画像内の保管ユニット103の脚の対応する位置と比較することができる。保管ユニットの脚の位置が、左または右にずれている場合、駆動エージェント322は、RDU100の上にある保管ユニット103がこれに対応して、左または右、あるいは後ろまたは前にずれていると判断することができる。
【0080】
第2の手法では、駆動エージェント322は、前向きの画像取り込み装置106によって取得された2つの画像を比較して、保管ユニット103の位置の垂直方向の移動を特定することができる。例えば、駆動エージェント322は、最初の画像内で保管ユニット103の1つまたは複数の脚を識別することができ、第2の画像内で保管ユニット103の1つまたは複数の脚を同様に識別することができる。各々の画像において、駆動エージェント322は、保管ユニット103の脚のはっきりと区別できる特徴(例えば脚の底部、脚の側部にあるマークなど)を識別することができる。一方の画像における保管ユニット103の脚の区別用の特徴が、他方の画像におけるものと異なる垂直方向の高さにある場合(例えばより高い、またはより低い)、駆動エージェント322は、保管ユニット103の垂直方向の変位が生じていると判断することができる。そのような垂直方向の変位には、揺動、傾斜、押されている状態、または他の垂直方向の変位が含まれてよい。
【0081】
この時点で、プロセスは2つの経路に沿って分岐することができる。第1の分岐において、駆動エージェント322は、RDU100が移動される間保管ユニット103の位置はずれていないと判断し、プロセスはボックス553に進む。第2の分岐では、駆動エージェント322は、保管ユニット103の位置がずれていると判定し(例えば垂直方向の変位、水平方向の変位、またはその両方)、プロセスはボックス559に進む。
【0082】
ボックス553に進むと、駆動エージェント322は、障害物がRDU100の経路内に存在するかどうか判断する。例えば、駆動エージェント322は、種々のコンピュータビジョン技術を利用して、ボックス546において予め取り込まれた画像を処理して障害物を識別することができる。このような技術は、可能性のある物体のエッジ検出、可能性のある物体のグレイスケールまたは勾配マッチング、及び同様の手法を含むことができる。障害物が検出されない場合、プロセスは、ボックス543に戻るようにループし、ボックス543〜549のプロセスを再度繰り返す。しかしながら障害物が検出された場合、プロセスはボックス556に進む。
【0083】
次にボックス556を参照すると、駆動エージェント322は、経路生成アプリケーション323からの新たな経路を要求する、またはそうでなければ経路生成アプリケーション323から新たな経路を獲得する。新たな経路を求めるリクエストには、RDU100の現在の場所、現在の経路を遮っている障害物の性質、現在の経路を遮っている障害物の場所及び場合によって他の情報が含まれる場合がある。応答において、駆動エージェント322は、経路生成アプリケーション323から、その目的地までたどるためのRDU100の新たな経路を受け取る。駆動エージェント322はその後、新たな経路をたどるようにRDU100に対する命令の発行を開始する。プロセスは、ボックス543に戻るようにループし、RDU100がその新たな経路をたどる際、ボックス543〜549のプロセスを再度繰り返す。
【0084】
しかしながらボックス549においてプロセスが代わりにボックス559に進んだ場合、駆動エージェント322は、保管ユニット103と共に移動し続けることがRDU100にとって安全であるか判断する。この判断は、様々な要因に少なくともある程度基づく場合がある。例えば駆動エージェント322は、垂直方向の変位または水平方向の変位が、保管ユニット103が傾斜して落下する許容不可能な可能性と相関する許容し得る変位の所定の閾値量を超えたかどうかに少なくともある程度基づいて、保管ユニット103が傾斜してRDU100から落下する可能性を特定することができる。保管ユニット103の中の商品に対する損傷につながる、または商品に保管ユニット103内で位置を変えさせる結果となる可能性がある(例えば、保管ユニット103から落下する、保管ユニット103の棚の上で場所を移動するなど)、保管ユニット103を落下させそうにはないが、保管ユニット103の中の商品の配置を変える可能性がある保管ユニット103の移動を考慮するために、垂直方向または水平方向の変位に関するより低い閾値が使用される場合もある。同様に、駆動エージェント322は、一連の画像に基づいて、RDU100が移動する際、保管ユニット103内に含まれる一定の大きさの、または一定の度合いの揺れを特定することができる。揺れの大きさまたは度合いが所定の閾値レベルを超えた場合、駆動エージェント322は、保管ユニット103の揺れが、保管ユニット103に保管される商品の位置に容認できない変化を生じさせる可能性があると判断する場合がある。
【0085】
プロセスはこの時点で再び分岐し得る。駆動エージェント322が、保管ユニット103と共に移動することがRDU100にとってなおも安全であると判断した場合、このときプロセスは、ボックス543に戻るようにループし、それ自体を繰り返す。しかしながら駆動エージェント322がRDU100にとってもはや移動するのが安全ではないと判断した場合、このときプロセスはボックス563に進む。
【0086】
ボックス563に進むと、駆動エージェント322は、保管ユニット103の中の商品に対するさらなる損傷を阻止するために、または保管ユニット103がさらに揺動する、または傾斜するのを阻止するために移動を中止するようにRDU100に指示する。移動を中止するために、駆動エージェント322は、急激に停止することで、慣性力によって保管ユニット103を移動させたり、傾斜させたり、または落下させたりするのを回避するために、段階的なやり方で速度を緩めるようにRDU100に命令することができる。
【0087】
次にボックス566を参照すると、駆動エージェント322は、RDUディスパッチアプリケーション321に対して警告を送る。この警告には、RDU100の現在の場所、RDU100が停止した理由、保管ユニット103の状況(例えばRDU100の頂部になおも位置している、RDU100から落下した、またはその他の状況)及び場合によって他の情報が含まれてよい。この情報によって、RDUディスパッチアプリケーション321は、RDU100に補助(例えば技術者)を送ることが可能になる。プロセスはその後終了する。
【0088】
図6を参照すると、本開示の一実施形態に係るコンピューティング環境303の概略ブロック図が示されている。コンピューティング環境303は、1つまたは複数のコンピューティングデバイス600を含む。各コンピューティングデバイス600は、例えば、両方とも、ローカルインタフェース609に結合されるプロセッサ603及びメモリ606を有する少なくとも1つのプロセッサ回路を含む。この目的を達成するために、各コンピューティングデバイス600は、例えば、少なくとも1つのサーバコンピュータまたは同様の装置を含んでよい。理解され得るように、ローカルインタフェース609は、例えば、付随するアドレス/制御バスを有するデータバスまたは他のバス構造を含み得る。
【0089】
メモリ606に記憶されるのは、データと、プロセッサ603によって実行可能ないくつかの構成要素との両方である。詳細には、メモリ606に格納され、かつプロセッサ603もよって実行可能であるのは、RDUディスパッチアプリケーション321、経路生成アプリケーション323及び潜在的な他のアプリケーションである。また、メモリ606に記憶されるのは、データストア309及び他のデータであってもよい。さらに、オペレーティングシステムが、メモリ606に記憶され、かつプロセッサ603により実行可能であり得る。
【0090】
理解され得るように、メモリ606に記憶され、かつプロセッサ603によって実行可能である他のアプリケーションが存在し得ることを理解されたい。本明細書で考察される任意の構成要素が、ソフトウェアの形で実装される場合、例えばC、C++、C#、Objective C、Java(登録商標)、JavaScript(登録商標)、Perl、PHP、Visual Basic(登録商標)、Python(登録商標)、Ruby、Flash(登録商標)、または他のプログラミング言語等のいくつかのプログラミング言語のうちの任意の1つが利用されてよい。
【0091】
いくつかのソフトウェア構成要素が、メモリ606に記憶され、プロセッサ603によって実行可能である。この点において、「実行可能」という用語は、プロセッサ603によって最終的に実行することができる形をとるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ606のランダムアクセス部分にロードし、プロセッサ603によって実行され得る形の機械コードに変換することができるコンパイルされたプログラム、例えばメモリ606のランダムアクセス部分にロードされ、プロセッサ603によって実行され得るオブジェクトコード等の適切な形式で表され得るソースコード、またはプロセッサ603などによって実行されるようにメモリ606のランダムアクセス部分に命令を生成するために別の実行可能なプログラムによって解釈され得るソースコード等であってよい。実行可能なプログラムは、例えば、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカード、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)等の光学ディスク、フロッピーディスク、磁気テープ、または他のメモリ構成要素を含んだ、メモリ606の任意の部分または任意の構成要素に記憶され得る。
【0092】
メモリ606は、揮発性メモリと不揮発性メモリの両方及びデータストレージ構成要素を含むように本明細書に定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータを保持するものである。したがって、メモリ606は、例えば、ランダムアクセスアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連するフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、または他のメモリ構成要素、あるいはこれらのメモリ構成要素のうちの任意の2つ以上の組み合わせを含む場合がある。さらに、RAMは、例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)、及び他の係る装置を含む場合がある。ROMは、例えば、プログラマブル読み取り専用メモリ(PROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、または他の同様のメモリ装置を含む場合がある。
【0093】
また、プロセッサ603は、複数のプロセッサ603または複数のプロセッサコアを表す場合があり、メモリ606は、それぞれ並列処理回路で動作する複数のメモリ606を表す場合がある。係る場合、ローカルインタフェース609は、複数のプロセッサ603のうちの任意の2つの間、任意のプロセッサ603とメモリ606のうちのいずれかとの間、またはメモリ606のうちの任意の2つの間等の通信を容易にする適切なネットワークであってよい。ローカルインタフェース609は、例えばロードバランシングを実行することを含んだ、この通信を調整するように設計された付加的なシステムを含んでよい。プロセッサ603は、電気式であってもよいし、何らかの他の利用可能な構成であってもよい。
【0094】
RDUディスパッチアプリケーション321、駆動エージェント322、経路生成アプリケーション323及び本明細書に記載される他の種々のシステムは、汎用ハードウェアにより実行されるソフトウェアまたはコードで具現化され得るが、一代替形態として、同様のものが専用ハードウェアまたはソフトウェア/汎用ハードウェアと、専用ハードウェアとの組み合わせで具現化される場合もある。専用ハードウェアで具現化される場合、各々は、いくつかの技術のうちの任意の1つまたは組み合わせを利用する回路または状態機械として実装できる。これらの技術には、限定するものではないが、1つまたは複数のデータ信号が加えられると種々の論理機能を実施するための論理ゲートを有するディスクリート論理回路、適切な論理ゲートを有する特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他の構成要素などが含まれてよい。係る技術は一般に、当業者によってよく知られているため、本明細書では詳細に説明しない。
【0095】
図4A〜
図4Cのフローチャートは、RDU100の一部の実装形態の機能及び動作を示している。ソフトウェアにおいて具現化された場合、各ブロックは、指定された論理関数(複数可)を実装するためのプログラム命令を含むモジュール、セグメントまたはコードの一部を表す場合がある。プログラム命令は、プログラミング言語で書かれた人間が読めるステートメントを含むソースコード、またはRDU100に含まれるプロセッサなどの好適な実行システムにより認識可能な数値命令を含むマシンコードの形で具現化されてよい。マシンコードはソースコード等から変換されてよい。ハードウェアにおいて具現化される場合、各ブロックは、指定された論理関数(複数可)を実装するために、回路またはいくつかの相互接続された回路を表してよい。
【0096】
図4A〜
図4Cのフローチャートは、特有の実行順序を示すが、実行順序が図示する順序と異なる場合もあることを理解されたい。例えば、2つ以上のブロックの実行順序は、図示する順序に関してスクランブルをかけられてよい。また、
図4A〜
図4Cに連続して示す2つ以上のブロックは、同時に、または一部同時に実行することができる。さらに、いくつかの実施形態では、
図4A〜
図4Cに示すブロックの1つ以上は、省略される、または省かれる場合もある。さらに、有用性の向上、説明、性能測定、またはトラブルシューティングの手掛かりの提供等の目的で、任意の数のカウンタ、状態変数、警告セマフォまたはメッセージが、本明細書に説明する論理フローに加えられる可能性がある。係るすべての変形形態は、本開示の範囲内にあることを理解されたい。
【0097】
図5A〜
図5Cのフローチャートは、駆動エージェント322の一部の実装形態の機能及び動作を示している。ソフトウェアにおいて具現化された場合、各ブロックは、指定された論理関数(複数可)を実施するためのプログラム命令を含むモジュール、セグメントまたはコードの一部を表す場合がある。プログラム命令は、プログラミング言語で書かれた人間が読めるステートメントを含むソースコード、またはコンピュータシステムもしく他のシステム内のプロセッサ603等の適切な実行システムにより認識可能な数値命令を含むマシンコードの形で具現化されてよい。マシンコードはソースコード等から変換されてよい。ハードウェアにおいて具現化される場合、各ブロックは、指定された論理関数(複数可)を実装するために、回路またはいくつかの相互接続された回路を表してよい。
【0098】
図5A〜
図5Cのフローチャートは、特有の実行順序を示すが、実行順序が図示する順序と異なる場合もあることを理解されたい。例えば、2つ以上のブロックの実行順序は、図示する順序に関してスクランブルをかけられてよい。また、
図5A〜
図5Cに連続して示す2つ以上のブロックは、同時に、または一部同時に実行することができる。さらに、いくつかの実施形態では、
図5A〜
図5Cに示すブロックの1つ以上は、省略される、または省かれる場合もある。さらに、有用性の向上、説明、性能測定、またはトラブルシューティングの手掛かりの提供等の目的で、任意の数のカウンタ、状態変数、警告セマフォまたはメッセージが、本明細書に説明する論理フローに加えられる可能性がある。係るすべての変形形態は、本開示の範囲内にあることを理解されたい。
【0099】
また、ソフトウェアまたはコードを含む、RDUディスパッチアプリケーション321、駆動エージェント322及び経路生成アプリケーション323を含めた、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ603等の命令実行システムによって使用される、またはそれに関連して使用するための任意の非一時的なコンピュータ可読媒体において具現化することができる。この意味では、論理は、例えば、コンピュータ可読媒体からフェッチし、かつ命令実行システムにより実行することができる命令及び宣言を含んだステートメントを含んでよい。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって使用される、またはそれに関連して使用される、本明細書に説明する論理またはアプリケーションを含む、記憶する、または維持することができる任意の媒体であり得る。
【0100】
コンピュータ可読媒体は、例えば、磁気媒体、光学媒体、または半導体媒体等の多くの物理的媒体のうちの任意の1つを含み得る。適切なコンピュータ可読媒体のより具体的な例は、磁気テープ、磁気フロッピーディスク、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、USBフラッシュドライブ、または光ディスクを含むであろうが、これに限定されるものではない。また、コンピュータ可読媒体は、例えば、スタティックランダムアクセスメモリ(SRAM)及びダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)を含むランダムアクセスメモリ(RAM)であってもよい。さらに、コンピュータ可読媒体は、読み取り専用メモリ(ROM)、プログラマブル読み取り専用メモリ(PROM)、消去可能プログラマブル読み取り専用メモリ(EPROM)、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)、または他の種類のメモリデバイスであってもよい。
【0101】
さらにまた、RDUディスパッチアプリケーション321,駆動エージェント322及び経路生成アプリケーション323を含めた、本明細書に記載される任意の論理またはアプリケーションは、様々な方法で実装され、構築される場合がある。例えば、説明する1つ以上のアプリケーションは、単一のアプリケーションのモジュールまたは構成要素として実装されてよい。さらに、本明細書に説明する1つ以上のアプリケーションは、共有コンピューティングデバイスまたは別々のコンピューティングデバイスあるいはその組み合わせで実行されてもよい。例えば、本明細書に説明する複数のアプリケーションは、同じコンピューティングデバイス600で、または同じコンピューティング環境303内の複数のコンピューティングデバイスで実行することができる。
【0102】
X、YまたはZのうちの少なくとも1つ」という表現などの選言的な言語は、そうでないことが具体的に述べられていない限り、その他の場合、項目、用語等がX、YもしくはZまたはそのいずれかの組み合わせ(例えばX、YまたはZ)のいずれかであり得ることを提示するために一般的に用いられるとしてその文脈によって理解される。ゆえに、係る選言的言語は、特定の実施形態がXの少なくとも1つ、Yの少なくとも1つ、またはZの少なくとも1つがそれぞれ存在することを要求することを暗に示すことを概して意図しておらず、そうすべきではない。
【0103】
本開示の実施形態の例は、以下の条項を鑑みて説明することができる。
【0104】
条項1.下向きのカメラと、前向きのカメラと、プロセッサと、前記プロセッサによって実行される際、システムに少なくとも、保管ユニットの下に移動する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込む、前記基準の上で前記システムを中心に配置する、前記基準の周りの所定の場所で前記システムを回転させる、前記システムが回転する際、前記前向きのカメラによってパノラマ画像を取り込む、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記パノラマ画像内の前記複数の脚に少なくともある程度基づいて、前記基準に対する前記保管ユニットの前記中心の場所を三角測量する、前記システムが前記保管ユニットに対して中心に位置することを特定する、前記保管ユニットを持ち上げる、前記システムに前記保管ユニットを持ち上げさせることに応答して前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも2つの第1の画像を取り込む、前記保管ユニットを新たな場所に移動させる、前記システムが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの第2の画像を取り込む、前記第1の画像と比較した前記第2の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の変化を測定する、前記位置の変化に少なくともある程度基づいてシステムの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる機械可読命令を記憶するメモリとを備えるシステム。
【0105】
条項2. 前記前向きのカメラは、ポイントクラウドを取り込むように構成された三次元カメラを備え、前記パノラマ画像はポイントクラウドを含む、条項1に記載のシステム。
【0106】
条項3. 前記下向きのカメラは、前記システムの底面上に位置する、条項1または2に記載のシステム。
【0107】
条項4. ロボット駆動ユニットであって、前向きのカメラと、下向きのカメラと、プロセッサと、プロセッサと、メモリと、アプリケーションであって、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、保管ユニットの下に移動する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込む、前記基準に対して前記ロボット駆動ユニットを位置決めする、前記ロボット駆動ユニットを所定の場所で回転させる、前記前向きのカメラによってパノラマ画像を取り込む、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、前記基準に対する前記保管ユニットの下の場所を計算する、前記ロボット駆動ユニットが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、前記保管ユニットの下の前記計算した場所まで進む、及び前記保管ユニットを持ち上げるようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションとを備える、前記ロボット駆動ユニット。
【0108】
条項5. ネットワークインターフェースをさらに備え、前記基準は第1の基準を有し、前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの1つにある第2の基準を識別する、前記第2の基準から前記保管ユニットの識別子を抽出する、前記保管ユニットの前記識別子を含むリクエストを前記ネットワークインターフェースを介してリモートコンピューティングデバイスに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0109】
条項6.前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも2つの第1の画像を取り込む、前記保管ユニットを新たな場所に移動させる、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの第2の画像を取り込む、前記第1の画像と比較した前記第2の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の変化を測定する、及び前記位置の変化に少なくともある程度基づいて前記ロボット駆動ユニットの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0110】
条項7. ネットワークインターフェースをさらに備え、前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して第1の画像を取り込む、前記保管ユニットの前記複数の脚のうちの少なくとも2つが前記第1の画像の中にあることを確認する、前記保管ユニットを新たな場所に移動させる、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して第2の画像を取り込む、前記保管ユニットの前記複数の脚のうちの前記少なくとも2つが、前記第2の画像からなくなっていることを確認する、前記ネットワークインターフェースを介して、前記保管ユニットが前記ロボット駆動ユニットから落下していることを示す警告をリモートコンピューティングデバイスに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0111】
条項8. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも2つの第1の画像を取り込む、ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの第2の画像を取り込む、前記第1の画像と比較した前記第2の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の垂直方向の変化を測定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0112】
条項9. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の前記垂直方向の変化に少なくともある程度基づいて、前記保管ユニットが転倒する可能性を計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0113】
条項10. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記保管ユニットの揺れの大きさを計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0114】
条項11. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記保管ユニットの垂直方向の変位の大きさを計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0115】
条項12. 前記下向きのカメラは、前記ロボット駆動ユニットの底面上に位置する、前記条項のいずれかに記載のロボット駆動ユニット。
【0116】
条項13. 前記前向きのカメラは、ポイントクラウドを取り込むように構成された三次元カメラを備える、前記条項のいずれかに記載のロボット駆動ユニット。
【0117】
条項14. 前記パノラマ画像は、前記ポイントクラウドを含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0118】
条項15. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記保管ユニットを移動させる、前記前向きのカメラを利用して画像を取り込む、前記ロボット駆動ユニットの現在の経路を遮る前記画像内の障害物を識別するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0119】
条項16. 前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記画像内の前記障害物の識別に応答して、リモートコンピューティングデバイスから前記ロボット駆動ユニットのための新たな経路を要求するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【0120】
条項17. プロセッサ及びメモリを備えるコンピューティングデバイスと、ネットワークを介して前記コンピューティングデバイスとデータ通信し、前向きのカメラ及び下向きのカメラを備えるロボット駆動ユニット(RDU)と、アプリケーションであって、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記保管ユニットの下に移動するように前記RDUに命令する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込むように前記RDUに命令する、前記基準に対して自身を位置決めするように前記RDUに命令する、所定の場所で回転するように前記RDUに命令する、前記前向きのカメラによってパノラマ画像を取り込むように前記RDUに命令する、前記RDUから前記パノラマ画像を受け取る、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、前記基準に対する前記保管ユニットの下の場所を計算する、前記RDUが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、前記保管ユニットの下の前記計算した場所まで進むように前記RDUに命令する、及び前記保管ユニットを持ち上げるように前記RDUに命令するようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションとを備えるシステム。
【0121】
条項18. 前記基準は第1の基準を有し、前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの1つにある第2の基準を識別する、前記第2の基準から前記保管ユニットの識別子を抽出する、前記保管ユニットの前記識別子を含むリクエストを第2のアプリケーションに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む第1のアプリケーションを有する、前記条項のいずれかに記載システム。
【0122】
条項19. 前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記RDUが前記保管ユニットを持ち上げることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも2つの第1の画像を取り込むように前記RDUに命令する、前記保管ユニットを新たな場所に移動させるように前記RDUに命令する、前記RDUが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの第2の画像を取り込むように前記RDUに命令する、前記第1の画像及び前記第2の画像を前記RDUから受け取る、前記第1の画像と比較した前記第2の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の変化を測定する、前記位置の変化に少なくともある程度基づいて前記RDUの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のシステム。
【0123】
条項20. 前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記RDUが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも2つの第1の画像を取り込むように前記RDUに命令する、前記RDUが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの第2の画像を取り込むように前記RDUに命令する、前記第1の画像と比較した前記第2の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも2つの位置の垂直方向の変化を測定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のシステム。
【0124】
本開示の上述の実施形態は、本開示の原理を明確に理解するために記述される単に実施態様の可能な例にすぎないことを強調すべきである。本開示の精神及び原理から実質的に逸脱することなく、上述の実施形態(複数可)に多くの変形及び修正を加えることができる。すべての係る修正例及び変形例が、本開示の範囲内で本明細書に含有され、以下の請求項によって保護されることが意図される。