(57)【要約】一体型の障害物検出及びペイロードセンタリングセンサシステムに関する種々の実施形態が開示されている。ロボット駆動ユニット（ＲＤＵ）は、それ自体に設置された下向きのカメラによって地面の上に位置する基準の画像を取り込む。ＲＤＵはその後、基準の上に自身を位置決めし、その後回転する。それが回転する際、ＲＤＵは、それ自体に設置された前向きの三次元カメラの周辺近傍のポイントクラウドを取り込む。ＲＤＵはその後、ポイントクラウドにおいて、ロボット駆動ユニットの上に位置決めされた保管ユニットの少なくとも２つの脚を識別する。その後、ＲＤＵは、基準に対する少なくとも２つの脚の各々に関する場所を特定し、少なくとも２つの脚の各々の場所に少なくともある程度基づいて保管ユニットの中心を三角測量する。ＲＤＵはその後、保管ユニットの下で自身を中心に配置する。【選択図】図１
2019533621.tif 000002
【特許請求の範囲】
【請求項１】
ロボット駆動ユニットであって、
前向きのカメラと、
下向きのカメラと、
プロセッサと、
メモリと、
アプリケーションであって、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
保管ユニットの下に移動する、
前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込む、
前記基準に対して前記ロボット駆動ユニットを位置決めする、
前記ロボット駆動ユニットを所定の場所で回転させる、
前記前向きのカメラによってパノラマ画像を取り込む、
前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、
前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、
前記基準に対する前記保管ユニットの下の場所を計算する、
前記ロボット駆動ユニットが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、
前記保管ユニットの下の前記計算した場所まで進む、及び
前記保管ユニットを持ち上げる、
ようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションと
を備える、ロボット駆動ユニット。
【請求項２】
ネットワークインターフェースをさらに備え、
前記基準は第１の基準を有し、
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの１つにある第２の基準を識別する、
前記第２の基準から前記保管ユニットの識別子を抽出する、
前記保管ユニットの前記識別子を含むリクエストを前記ネットワークインターフェースを介してリモートコンピューティングデバイスに送るようにさせる、
前記メモリに記憶された機械可読命令をさらに含む、
請求項１に記載のロボット駆動ユニット。
【請求項３】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込む、
前記保管ユニットを新たな場所に移動させる、
前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込む、
前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の変化を測定する、
前記位置の変化に少なくともある程度基づいて前記ロボット駆動ユニットの頂部において前記保管ユニットが位置または配向を変更したことを特定する、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１または２に記載のロボット駆動ユニット。
【請求項４】
ネットワークインターフェースをさらに備え、前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して第１の画像を取り込む、
前記保管ユニットの前記複数の脚のうちの少なくとも２つが前記第１の画像内にあることを確認する、
前記保管ユニットを新たな場所に移動させる、
前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して第２の画像を取り込む、
前記保管ユニットの前記複数の脚のうちの前記少なくとも２つは、前記第２の画像からなくなっていることを確認する、
前記ネットワークインターフェースを介して、前記保管ユニットが前記ロボット駆動ユニットから落下したことを示す警告をリモートコンピューティングシステムに送る、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１乃至３のいずれか１項に記載のロボット駆動ユニット。
【請求項５】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込む、
前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込む、
前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の垂直方向の変化を測定する、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１乃至４のいずれか１項に記載のロボット駆動ユニット。
【請求項６】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の前記垂直方向の変化に少なくともある程度基づいて、前記保管ユニットが転倒する可能性を計算する、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項５に記載のロボット駆動ユニット。
【請求項７】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記ロボット駆動ユニットが移動する間、前記保管ユニットの垂直方向の変位の大きさを計算する
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１乃至６のいずれか１項に記載のロボット駆動ユニット。
【請求項８】
前記前向きのカメラは、ポイントクラウドを取り込むように構成された三次元カメラを備える、請求項１乃至７のいずれか１項に記載のロボット駆動ユニット。
【請求項９】
前記パノラマ画像は、前記ポイントクラウドを含む、請求項８に記載のロボット駆動ユニット。
【請求項１０】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記保管ユニットを移動させる、
前記前向きのカメラを利用して画像を取り込む、
前記ロボット駆動ユニットの現在の経路を遮る前記画像内の障害物を識別する
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１乃至９のいずれか１項に記載のロボット駆動ユニット。
【請求項１１】
前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、
前記画像内の前記障害物の識別に応答して、リモートコンピューティングデバイスから前記ロボット駆動ユニットのための新たな経路を要求する
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１０に記載のロボット駆動ユニット。
【請求項１２】
プロセッサ及びメモリを含むコンピューティングデバイスと、
ネットワークを介して前記コンピューティングデバイスとデータ通信し、前向きのカメラ及び下向きのカメラを備えるロボット駆動ユニット（ＲＤＵ）と、
アプリケーションであって、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、
保管ユニットの下に移動するように前記ＲＤＵに命令する、
前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込むように前記ＲＤＵに命令する、
前記基準に対して自身を位置決めするように前記ＲＤＵに命令する、
所定の場所で回転するように前記ＲＤＵに命令する、
前記前向きのカメラを利用してパノラマ画像を取り込むように前記ＲＤＵに命令する、
前記ＲＤＵから前記パノラマ画像を受け取る、
前記パノラマ画像内で前記保管ユニットの複数の脚を識別する
前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、
前記基準に対する前記保管ユニットの下の場所を計算する、
前記ＲＤＵが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、
前記保管ユニットの下の前記計算した場所まで進むように前記ＲＤＵに命令する、及び
前記保管ユニットを持ち上げるように前記ＲＤＵに命令する
ようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションと
を備えるシステム。
【請求項１３】
前記基準は第１の基準を有し、
前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、
前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの１つにある第２の基準を識別する、
前記第２の基準から前記保管ユニットの識別子を抽出する、
前記保管ユニットの前記識別子を含むリクエストを第２のアプリケーションに送る、
ようにさせる、
前記メモリに記憶された機械可読命令をさらに含む第１のアプリケーションを有する、請求項１２に記載のシステム。
【請求項１４】
前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、
前記ＲＤＵが前記保管ユニットを持ち上げることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込むように前記ＲＤＵに命令する、
前記保管ユニットを新たな場所に移動させるように前記ＲＤＵに命令する、
前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込むように前記ＲＤＵに命令する、
前記第１の画像及び前記第２の画像を前記ＲＤＵから受け取る、
前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の変化を測定する、
前記位置の変化に少なくともある程度基づいて、前記ＲＤＵの頂部において前記保管ユニットが位置または配向を変更したことを特定する、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、
請求項１２または１３に記載のシステム。
【請求項１５】
前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、
前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込むように前記ＲＤＵに命令する、
前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込むように前記ＲＤＵに命令する、
前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の垂直方向の変化を測定する、
ようにさせる、前記メモリに記憶された機械可読命令をさらに含む、請求項１２乃至１４のいずれか１項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
[関連出願の相互参照]
本願は、全体が本明細書に参照により援用される、２０１６年９月１５日に出願された米国特許出願第１５／２６５，９２５号に対する優先権及びその利益を主張する。
【背景技術】
【０００２】
自立ロボットは、倉庫や似たような環境において作業を行うのに利用されることが多い。そのような作業には、商品、棚、箱または他の保管容器を移動させる、電池を充電する、（例えば他の自立ロボットの）及びその他の作業が含まれる場合がある。自立ロボットの利用にはいくつかの利点がある。例えば、ロボットは、人が同様の作業を行うのに必要とするより少ない空間を必要とするように設計することができるため、倉庫内の商品を一緒により近づけて重ねることができる。ロボットは、人が可能であるよりも重たい商品を運ぶことができるため、倉庫内により大きくより重たい商品を保管することができる。同様に、自立ロボットの利用により、倉庫の運営に関連する人件費も削減される。
【０００３】
本開示の多くの態様は、以下の図面を参照して、より良好に理解することができる。図面の構成要素は、必ずしも縮尺通りになっているとは限らず、代わりに本開示の原理を明確に例示することに重点を置いている。さらに図面中で、同様の参照番号は、いくつかの図面全体にわたって対応する部品を指定する。
【図面の簡単な説明】
【０００４】
【図１】本開示の種々の実施形態の一例の実装形態の図である。
【図２】本開示の種々の実施形態の一例の実装形態の図である。
【図３】本開示の種々の実施形態によるネットワーク化された環境の図である。
【図４Ａ】本開示の種々の実施形態による、図３のネットワーク環境におけるロボット駆動ユニットの一部として実装される機能の一例を示すフローチャートである。
【図４Ｂ】本開示の種々の実施形態による、図３のネットワーク環境におけるロボット駆動ユニットの一部として実装される機能の一例を示すフローチャートである。
【図４Ｃ】本開示の種々の実施形態による、図３のネットワーク環境におけるロボット駆動ユニットの一部として実装される機能の一例を示すフローチャートである。
【図５Ａ】本開示の種々の実施形態による、図３のネットワーク環境において実行されるアプリケーションの一部として実装される機能の一例を示すフローチャートである。
【図５Ｂ】本開示の種々の実施形態による、図３のネットワーク環境において実行されるアプリケーションの一部として実装される機能の一例を示すフローチャートである。
【図５Ｃ】本開示の種々の実施形態による、図３のネットワーク環境において実行されるアプリケーションの一部として実装される機能の一例を示すフローチャートである。
【図６】本開示の種々の実施形態による図３のネットワーク環境で利用されるコンピューティング環境の一例の実例を示す概略ブロック図である。
【発明を実施するための形態】
【０００５】
自立ロボットは、倉庫や似たような環境において作業を行うのに利用されることが多い。自立ロボットは、それらがその機能を果たすことを可能にするためにいくつかのセンサを有することが多い。例えば自立ロボットは、自立ロボットの位置を特定するためにデータを収集するのに使用されるカメラを有することができる。自立ロボットはまた、衝突を回避するために自立ロボットの経路内に現在ある物体を検出するために第２のカメラを有する場合もある。自立ロボットはまた、搬送されるべき商品、または商品が置かれている保管ユニットを識別するために別のカメラを使用する場合もある。
【０００６】
倉庫または似たような環境に商品を搬送する際に使用するためのロボット駆動ユニットの種々の実施形態が開示される。ロボット駆動ユニットは、障害物の検出及び回避ならびにペイロードのセンタリングのために一体型のセンサシステムを使用するように構成されている。ロボット駆動ユニットの他の形態では、このような機能は、別々のセンサシステムを用いて行われる場合もある。例えば、障害物の検出は、特定のカメラを用いて行うことができ、一方ペイロードのセンタリングは別のカメラに頼る場合もある。しかしながら画像処理技術の改善及びカメラ技術の改善は、複数の機能に対して同一のカメラを使用することを実現可能にする。ロボット駆動ユニットの構成においてより少ないカメラを使用することはコストを削減することになる。しかしながら、同じカメラによって障害物回避機能と、ペイロードのセンタリング機能の両方を実施するためには、異なる技術が必要である。
【０００７】
図１から始まって、ロボット駆動ユニット（「ＲＤＵ」）１００の一例が描かれている。ＲＤＵ１００は、保管ユニット１０３の下に自身を位置決めすることができる。保管ユニット１０３は、様々な保管棚、ラック、パレット、蓋付きの箱、容器、または多種多様な商品を保管するために倉庫環境で使用され得る同様の保管道具を含むことができる。自身を保管ユニット１０３の下に位置決めした後、ＲＤＵ１００は、保管ユニット１０３を地面から持ち上げることができ、ＲＤＵ１００が保管ユニット１０３を新たな場所に移動させることを可能にする。
【０００８】
ＲＤＵ１００はまた、カメラ、三次元カメラ、ポイントクラウドスキャナまたは同様の装置など様々な画像取り込み装置を含むことができる。例えば、ＲＤＵ１００は、１つまたは複数の前向きの画像取り込み装置１０６を含むことができる。前向きの画像取り込み装置１０６は典型的には、ＲＤＵ１００の前方に設置することができる。しかしながら前向きの画像取り込み装置１０６は、ＲＤＵ１００の上部面、側面または他の面に設置され、ＲＤＵ１００の前方を向くように位置決めされる場合もある。しかしながら一部の実施形態では、第２の後ろ向きの画像取り込み装置１０７がＲＤＵ１００上に設置される場合もある。このような実施形態では、後ろ向きの画像取り込み装置１０７は典型的にはＲＤＵ１００の後方に設置することができる。しかしながら後ろ向きの画像取り込み装置１０７は、ＲＤＵ１００の上部面、側面または他の面に設置され、ＲＤＵ１００の後方を向くように位置決めされる場合もある。ＲＤＵ１００はまた、１つまたは複数の下向きの画像取り込み装置１０９を含む場合もある。下向きの画像取り込み装置１０９は、ＲＤＵ１００の下部構造または底面に位置決めすることができる。しかしながら他の実施形態では下向きの画像取り込み装置１０９は、ＲＤＵ１００上の他の場所に配置され、下を向くように位置決めされる場合もある。
【０００９】
ＲＤＵ１００はまた、プロセッサ、メモリ及びネットワークインターフェースなどの追加の回路構成要素を含むことができる。このような構成要素は、ＲＤＵ１００が自立式に動作することを可能にする。例えばメモリは、データと、ＲＤＵ１００に特定のタスクを実施させるためにプロセッサによって実行可能な機械可読命令の両方を記憶することができる。ＲＤＵ１００のメモリは、揮発性及び不揮発性メモリと、データストレージ構成要素の両方を含むように本明細書では定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータを保持するものである。したがって、ＲＤＵ１００のメモリは、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連するフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、または他のメモリ構成要素、あるいはこれらのメモリ構成要素のうちの任意の２つ以上の組み合わせを含むことができる。さらに、ＲＡＭは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）、及び他の係る装置を含んでよい。ＲＯＭは、例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリ装置を含む場合がある。また、プロセッサは、複数のプロセッサまたは複数のプロセッサコアを表す場合があり、メモリは、それぞれ並列処理回路で動作する複数のメモリを表す場合がある。プロセッサは、電気式であってもよいし、何らかの他の利用可能な構成であってもよい。ネットワークインターフェースは、ＲＤＵ１００が、リモートコンピューティングデバイス（例えばサーバ）など別のデバイスとのデータ通信を維持することを可能にする任意の光学または電気デバイスに相当し得る。例えばネットワークインターフェースは、電気電子技術者協会（「ＩＥＥＥ」）８０２．１１（すなわち「ＷＩ−ＦＩ」）インターフェース、マイクロウェーブネットワーキングインターフェース、短距離無線インターフェース（例えばＢＬＵＥＴＯＯＴＨ）または他のネットワークインターフェースに相当する場合がある。
【００１０】
図２に移動すると、ＲＤＵ１００の動作の一例の図が提供されている。ここでＲＤＵ１００は、保管ユニット１０３の下に自身を位置決めする。ＲＤＵ１００はその後、保管ユニット１０３の下で回転することで、保管ユニット１０３の近傍にパノラマ画像を生成する。ＲＤＵ１００が、前向きの画像取り込み装置１０６または後ろ向きの画像取り込み装置１０７のいずれかのみを有する実施形態では、ＲＤＵ１００は３６０度回転することができる。パノラマ画像は、単一の画像、一緒に合わせることで単一の画像を形成することができる一連の画像、ＲＤＵ１００の近傍で見ることができる隣接する部分を取り込むための一連の画像、ビデオまたは他の表示を含むことができる。ＲＤＵ１００が、前向きの画像取り込み装置１０６と、後ろ向きの画像取り込み装置１０７の両方を有する実施形態では、ＲＤＵ１００は、より少なく回転する場合がある（例えば１８０度）。パノラマ画像を生成した後、ＲＤＵ１００はその後、保管ユニット１０３の少なくとも２つの脚を識別し、識別された２つの脚に基づいて保管ユニット１０３の中心に対するその位置を特定することができる。ＲＤＵ１００が、それが中心からずれていると判断した場合、保管ユニット１０３を持ち上げて移動させようと試みる前に、ＲＤＵ１００は、保管ユニット１０３下で自身を中心に配置することができる。
【００１１】
一部の例では、ＲＤＵ１００はまた、保管ユニット１０３の同一性または保管ユニット１０３の内容物を判定するために、パノラマ画像内の保管ユニット基準３１６を識別する場合もある。保管ユニット基準３１６は、保管ユニット１０３の１つの脚の上に位置してよい。しかしながら保管ユニット基準３１６は、他の目に見える場所に配置される場合がある、または複数の保管ユニット基準３１６が、保管ユニット１０３に取り付けられる場合もある。
【００１２】
図３を参照すると、種々の実施形態によるネットワーク環境３００が示される。ネットワーク環境３００は、ネットワーク３０６を介して互いにデータ通信する、コンピューティング環境３０３と、ロボット駆動ユニット１００とを含む。ネットワーク３０６は、インターネット、イントラネット、エクストラネット、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）または２つ以上の係るネットワークの任意の組み合わせを含むことができる。例えばそのようなネットワークには、有線ネットワーク（例えばケーブルネットワーク、イーサネット、光ファイバネットワーク、電話網、デジタル加入者ラインネットワークもしくは他の有線ネットワーク技術）または無線ネットワーク（例えば衛星ネットワーク、ＩＥＥＥ８０２．１１「ＷＩ−ＦＩ」ネットワーク、メッシュネットワーク、携帯電話網または他の無線ネットワーク技術）が含まれ得る。
【００１３】
コンピューティング環境３０３は、サーバコンピュータまたはコンピューティング性能を提供する任意の他のシステムを含むことができる。代替として、コンピューティング環境３０３は、例えば１つ以上のサーババンクまたはコンピュータバンクまたは他の配置で配置され得る複数のコンピューティングデバイスを利用する場合もある。係るコンピューティングデバイスは、単独の設備の中に配置される場合もあれば、多数の異なる地理的な位置間で分散される場合もある。例えば、コンピューティング環境３０３は、ホスト型コンピューティングリソース、グリッドコンピューティングリソース、または任意の他の分散コンピューティング構成を共に形成する複数のコンピューティングデバイスを含むことができる。一部のケースでは、コンピューティング環境３０３は、処理、ネットワーク、ストレージ、または他のコンピューティング関連リソースの割り当て容量が経時的に変化し得る順応性に富んだコンピューティングリソースに対応する場合もある。
【００１４】
また、種々のデータが、コンピューティング環境３０３にアクセス可能であるデータストア３０９に記憶される。データストア３０９は、理解され得るように、例えばリレーショナルデータベース、キーバリューストア、階層型データベース、オブジェクト指向データベース、コンマまたはタブ区切り形式のテキストファイル、構成ファイル及び可能性のある他のデータストアトアなど複数のデータストア３０９を表す場合がある。データストア３０９に記憶されるデータは、例えば、以下に記載する種々のアプリケーションまたは機能エンティティの動作に関連付けられる。データストア３０９に記憶されるデータには、例えば、地面基準３１３、保管ユニット１０３及び保管ユニット基準３１６、倉庫マップ３１９及び可能性のある他のデータが含まれる。
【００１５】
地面基準３１３は、その上にエンコードされた識別子を有する地面に置かれたマーカーに相当する。各地面基準３１３は、倉庫マップ３１９上の独自の場所に対応しており、ＲＤＵ１００が、１つまたは複数の近くの地面基準３１３に基づいてその位置を特定することを可能にする。地面基準３１３は、バーコードまたは他の容易に撮像される光学式の機械読み取り可能なデータの表示を含むことができる。バーコードは、例えば直線バーコードまたは二次元バーコードを含む場合がある。二次元バーコードの例には、マトリックススタイルバーコード、例えばＳＰＡＲＱＣｏｄｅクイックレスポンス（「ＱＲ」）コード、円形スタイルバーコード（例えば「ＳｈｏｔＣｏｄｅ」）または二次元形状でデータを光学式にエンコードするための他の手法が含まれる。
【００１６】
各保管ユニット１０３に関する情報を、データストア３０９内に保管される場合もある。この情報には、保管ユニット１０３の内容物、保管ユニット１０３の場所及び可能性のある他のデータが含まれてよい。保管ユニット基準３１６はまた、各保管ユニット１０３に対応付けることができる。保管ユニット基準３１６は、その上にエンコードされた識別子を有する保管ユニット１０３上に置かれたマーカーに相当する。各保管ユニット基準３１６は、保管ユニット基準３１６が取り付けられる保管ユニット１０３を独自に識別するような役目をすることができる。例えば、ＲＤＵ１００は、保管ユニット基準３１６を走査して保管ユニット１０３の識別子を取得し、データストア３０９に問い合わせることによって保管ユニット１０３及び保管ユニット１０３の内容物を確認することができる。
【００１７】
倉庫マップ３１９は、倉庫または似たよう構造物の空間的な表示を記憶している。例えば倉庫マップ３１９には、対応する倉庫内の構造物の場所、倉庫内の特定のエリアまたは区域(例えば保管ユニット１０３が保管されるべき場所）、個々の商品またはエンティティの場所(例えば、個々の保管ユニット１０３またはＲＤＵ１００の現在の場所)に関するデータ、及び可能性のある他のデータが含まれてよい。このデータは、いくつかの形式で記憶することができ、例えばデカルト座標系、極座標系または他の適切な二次元または三次元の座標系で記憶することができる。
【００１８】
種々のアプリケーションまたは他の機能を、種々の実施形態に従ってコンピューティング環境３０３において実行することができる。コンピューティング環境３０３で実行される構成要素には、例えば、ＲＤＵディスパッチアプリケーション３２１、駆動エージェント３２２、パス生成アプリケーション３２３、及び本明細書において詳細に考察されない他のアプリケーション、サービス、プロセス、システム、エンジンまたは機能が含まれる。
【００１９】
ＲＤＵディスパッチアプリケーション３２１は、１つまたは複数のＲＤＵ１００の動作を構成するような役目をする。ＲＤＵディスパッチアプリケーション３２１は例えば、ＲＤＵ１００に、特定の保管ユニット１０３を新たな場所に移動させるように命令する、保管ユニット１０３の識別子を含む、ＲＤＵ１００から受け取ったメッセージに少なくともある程度基づいて、ＲＤＵ１００が正しい保管ユニット１０３を取り出したことを検証するように命令する、及び可能性のある他の機能を命令することができる。
【００２０】
駆動エージェント３２２は、一部の実施形態では、ＲＤＵ１００のための制御装置として動作するように実行させることができる。駆動エージェント３２２は、センサ読み取り値またはデータなど、ＲＤＵ１００からデータを受け取る、またはそれらを問い合わせることができる。駆動エージェント３２２はその後、ＲＤＵ１００によって行われるべき適切な行動を決定し、ＲＤＵ１００にその行動を行うようにさせる１つまたは複数の命令をＲＤＵ１００に送ることができる。一部の例では、各ＲＤＵ１００を制御するために駆動エージェント３２２の別個のインスタンスが実行される場合もある。他の例では、複数のＲＤＵ１００の行動を制御する、またはそうでなければ管理するために単一の駆動エージェント３２２が実行される場合もある。
【００２１】
経路生成アプリケーション３２３は、ＲＤＵ１００によって提供された情報に少なくともある程度基づいてＲＤＵ１００の２つの地点の間の経路を特定し、これを提供するように実行される。経路生成アプリケーション３２３は、ＲＤＵ１００のために倉庫マップ３１９上の２つの地点の間に経路を特定するために様々な手法を利用することができる。そのような手法には、例えば任意の角度の経路プランニング法、Ａ＊グラフ探索法など、倉庫内の地面基準３１３の配置に依拠するグリッドベース手法または同様の手法が含まれる場合がある。経路生成アプリケーション３２３はまた、経路を生成する際、既知の障害物の存在を考慮することもできる。このような障害物は、永久的である場合（例えば、壁、柱、排水溝、または他の建築機構）、あるいは一時的である（例えば、床の上に落下した商品、使用不可になったＲＤＵ１００または他の障害物）場合がある。
【００２２】
次に、ネットワーク環境３００の種々の構成要素の動作の全体的な説明が提供される。開始するために、ＲＤＵ１００は保管ユニット１０３に接近し、保管ユニット１０３の下に移動する。ＲＤＵ１００はその後、下向きの画像取り込み装置１０９を利用して地面基準３１３の画像を取り込み、地面基準３１３の上で自身を中心に配置する。その後、ＲＤＵ１００は、地面基準３１３の周辺の所定の場所で回転し、前向きの画像取り込み装置１０６によってパノラマ画像を取得する。パノラマ画像を取得した後、ＲＤＵ１００は、パノラマ画像内で保管ユニット１０３の複数の脚を識別し、保管ユニット１０３の複数の脚の各々から地面基準３１３までの距離を測定する。ＲＤＵ１００はその後、地面基準３１３に対する保管ユニット１０３の中心の位置を計算し、それが保管ユニット１０３に対して中心からずれて位置しているかどうか判断することができる。ＲＤＵ１００が保管ユニット１０３に対して中心からずれている場合、ＲＤＵ１００はこのとき、その位置を調節することができるため、ＲＤＵ１００は保管ユニット１０３の中心の下に位置することになる。保管ユニット１０３の下に自身を中心に配置した後、ＲＤＵ１００は、保管ユニット１０３を持ち上げる。
【００２３】
一部の例では、ＲＤＵ１００はまた、パノラマ画像内で保管ユニット基準３１６を識別する場合もある。ＲＤＵ１００がそのようにする場合、それは、保管ユニット基準３１６の画像から保管ユニット１０３の識別子を抽出し、ネットワーク３０６を介して保管ユニット１０３の識別子を含むリクエストをＲＤＵディスパッチアプリケーション３２１に送ることができる。ＲＤＵ１００は、それが正しい保管ユニット１０３と相互に作用していることを検証するためにこのステップを行う場合もある。ＲＤＵディスパッチアプリケーション３２１はその後、ＲＤＵ１００が正しい保管ユニット１０３の下にあるか、または正しい保管ユニット１０３と相互に作用しているかどうかをＲＤＵ１００に示すために、ネットワーク３０６を介して応答を提供することができる。
【００２４】
ＲＤＵ１００はその後、保管ユニット１０３を持ち上げた後、保管ユニット１０３を新たな場所に移動させ始めることができる。保管ユニット１０３を移動させる前に、ＲＤＵ１００はまず、前向きの画像取り込み装置１０６を利用して画像を取り込むことができる。ＲＤＵ１００はその後、保管ユニット１０３と共に移動しながら、前向きの画像取り込み装置１０６を利用して追加の画像を周期的に取り込むことができる。移動する間、ＲＤＵ１００は、保管ユニット１０３が安全に移動されることを保証するために、最も最近取得した画像を１つまたは複数のこれより前に取得した画像と比較することができる。例えば、ＲＤＵ１００は、この画像内に見られる保管ユニット１０３の１つまたは複数の脚の位置の変化を測定することで、保管ユニットが、ＲＤＵ１００の頂部において位置または向きを変更したかどうか判断することができる。同様にＲＤＵ１００は、これ以前の画像内に見られた保管ユニット１０３の１つまたは複数の脚が、現在の画像には脚は全く見られないと判断する場合もあり、この場合保管ユニット１０３は、ＲＤＵ１００から落下している。このような状況では、ＲＤＵ１００は、ＲＤＵディスパッチアプリケーション３２１に警告を送り、保管ユニット１０３が落下したことを指示することができる。別の例として、ＲＤＵ１００は、画像間で保管ユニット１０３の個々の脚の垂直方向の変位量を測定する場合もある。このような測定値に基づいて、ＲＤＵ１００は、保管ユニット１０３が搬送中に揺れているかどうか、いずれにしても保管ユニット１０３が傾いて落下する危険があるかどうかを判断することができる。ＲＤＵ１００は、保管ユニット１０３が揺れて落下するのを阻止するために、その速度を調節する、または経路生成アプリケーション３２３からの新たな経路を要求することができる。
【００２５】
ＲＤＵ１００が移動している間、ＲＤＵ１００は、前向きの画像取り込み装置１０６によって取り込んだ画像を分析することで、ＲＤＵ１００がたどる経路内の潜在的な障害物を検出し識別することも可能である。障害物は、例えば他のＲＤＵ１００、人間、保管ユニット１０３、またはＲＤＵ１００の経路内の何らかの他の予測しない物体を含む可能性がある。障害物の識別に応答して、ＲＤＵ１００は、ネットワーク３０６を介してネットワーク経路生成アプリケーション３２３に新たな経路のためのリクエストを送信することができる。ＲＤＵ１００は、ＲＤＵ１００をその最終的な目的地まで誘導する、経路生成アプリケーション３２３によって提供された新たな経路をたどることができる。
【００２６】
しかしながら１つまたは複数の代替の実施形態では、これらの機能のうちの１つまたは複数は、駆動エージェント３２２によって代わりに実施される場合がある。例えば駆動エージェント３２２は、ＲＤＵ１００に保管ユニット１０３に接近し、保管ユニット１０３の下に移動するように命令することができる。ＲＤＵ１００が保管ユニット１０３の下に移動したことを指示した後、駆動エージェント３２２は、ＲＤＵ１００に、下向きの画像取り込み装置１０９を利用して地面基準３１３の画像を取り込むように命令することができる。駆動エージェント３２２は、ＲＤＵ１００に、地面基準３１３上で自身を中心に配置するように命令することができる。ＲＤＵ１００はその後、それが自身を中心に配置し、追加の命令をリクエストした後、駆動エージェント３２２に報告することができる。駆動エージェント３２２はその後、ＲＤＵ１００に、地面基準３１３の周りの所定の位置で回転して、前向きの画像取り込み装置１０６によってパノラマ画像を取得するように命令することができる。ＲＤＵ１００はその後、駆動エージェント３２２に取り込んだ画像を提供することができる。駆動エージェント３２２はその後、この画像を処理して、パノラマ画像内で保管ユニット１０３の複数の脚を識別し、保管ユニット１０３の複数の脚の各々から地面基準３１３までの距離を測定することができる。しかしながら一部の例では、駆動エージェント３２２は、画像処理アプリケーションがこのような計算を行うように要求する場合もある。駆動エージェント３２２はこの場合、地面基準３１３に対する保管ユニット１０３の中心の位置を計算し、ＲＤＵ１００が保管ユニット１０３に対して中心からずれて位置しているかどうか判断することができる。ＲＤＵ１００が保管ユニット１０３に対して中心からずれている場合、駆動エージェント３２２はこのときＲＤＵ１００に、その位置を調節するように命令することができるため、ＲＤＵ１００は保管ユニット１０３の中心の下に位置するようになる。ＲＤＵ１００が保管ユニット１０３の下で自身を中心に配置した後、駆動エージェント３２２はその後、ＲＤＵ１００に保管ユニット１０３を持ち上げるように命令することができる。
【００２７】
一部の例では、駆動エージェント３２２はまた、パノラマ画像内で保管ユニット基準３１６を識別する場合もある。駆動エージェント３２２がそのようにする場合、それは、保管ユニット基準３１６の画像から保管ユニット１０３の識別子を抽出し、保管ユニット１０３の識別子を含むリクエストをＲＤＵディスパッチアプリケーション３２１に送ることができる。駆動エージェント３２２は、ＲＤＵ１００が正しい保管ユニット１０３と相互に作用していることを検証するためにこのステップを行う場合もある。ＲＤＵディスパッチアプリケーション３２１はこの場合、ＲＤＵ１００が正しい保管ユニット１０３の下にあるか、または正しい保管ユニット１０３と相互に作用しているかどうかを駆動エージェント３２２に指示するために応答を提供することができる。
【００２８】
駆動エージェント３２２はその後、保管ユニット１０３を持ち上げた後、保管ユニット１０３を新たな場所に移動させるようにＲＤＵ１００に命令することができる。保管ユニット１０３を移動させる前に、駆動エージェント３２２はまず、前向きの画像取り込み装置１０６を利用して画像を取得するようにＲＤＵ１００に命令することができる。駆動エージェント３２２は、ＲＤＵ１００が保管ユニット１０３と共に移動している間、前向きの画像取り込み装置１０６を利用して追加の画像を周期的に取り込むようにＲＤＵ１００にさらに命令することができる。ＲＤＵ１００はその後、ＲＤＵ１００が移動している間、駆動エージェント３２２にこのような画像の１つまたは複数を提供することができる。駆動エージェント３２２はこのとき、保管ユニット１０３が安全に移動されることを保証するために、最も最近取得した画像を１つまたは複数のこれより前に取得した画像と比較することができる。例えば、駆動エージェント３２２は、この画像内に見られる保管ユニット１０３の１つまたは複数の脚の位置の変化を測定することで、保管ユニットが、ＲＤＵ１００の頂部において位置または向きを変更したかどうかを判断することができる。同様に駆動エージェント３２２は、以前の画像内には保管ユニット１０３の１つまたは複数の脚が見られたが、現在の画像には脚が全く見られないと判断する場合もあり、この場合保管ユニット１０３はＲＤＵ１００から落下している。このような状況では、駆動エージェント３２２は、ＲＤＵディスパッチアプリケーション３２１に警告を送り、保管ユニット１０３が落下したことを示し、ＲＤＵ１００に停止するように命令を送ることができる。別の例として、駆動エージェント３２２は、画像間で保管ユニット１０３の個々の脚の垂直方向の変位量を測定する場合もある。このような測定値に基づいて、駆動エージェント３２２は、保管ユニット１０３が搬送中に揺れているかどうか、いずれにしても保管ユニット１０３が傾いて落下する危険があるかどうかを判断することができる。駆動エージェント３２２はこの場合、ＲＤＵ１００に、その速度を調節するように命令することができる。代替として、駆動エージェント３２２は、保管ユニット１０３が揺れて落下するのを阻止するために、経路生成アプリケーション３２３からの新たな経路を要求する場合もある。
【００２９】
ＲＤＵ１００が移動している間、駆動エージェント３２２は、前向きの画像取り込み装置１０６によって取り込んだ画像を分析することで、ＲＤＵ１００がたどる経路内の潜在的な障害物を検出し識別することもできる。障害物は、例えば他のＲＤＵ１００、人間、保管ユニット１０３、またはＲＤＵ１００の経路内の何らかの他の予測しない物体を含む可能性がある。障害物の識別に応答して、駆動エージェント３２２は、ネットワーク経路生成アプリケーション３２３に新たな経路のためのリクエストを送信することができる。駆動エージェント３２２はその後、ＲＤＵ１００がその最終目的地に到達するために、経路生成アプリケーション３２３によって提供された新たな経路をたどるようにＲＤＵ１００に命令することができる。
【００３０】
次に図４Ａ〜図４Ｃを参照すると、種々の実施形態に係るＲＤＵ１００の一部の動作の一例を提供するフローチャートが示される。図４Ａ〜図４Ｃのフローチャートは、本明細書に説明するＲＤＵ１００の一部の動作を実施するために利用され得る、多くの異なる種類の機能配置の一例を単に提示するにすぎないことを理解されたい。一代替形態として、図４Ａ〜図４Ｃのフローチャートは、１つまたは複数の実施形態に係るＲＤＵ１００において実施される方法の要素の一例を示すものとして見ることもできる。
【００３１】
ボックス４０３によって始まり、ＲＤＵ１００は、保管ユニット１０３に接近する。例えばＲＤＵ１００は、所定のまたは事前に規定された経路（例えば、保管ユニットの列の間の規定された回廊に沿って）に沿って保管ユニット１０３に接近することができる。ＲＤＵ１００は、例えばＲＤＵディスパッチアプリケーション３２１から受け取った命令に応答して保管ユニット１０３に接近することができる。
【００３２】
次にボックス４０６を参照すると、ＲＤＵ１００は、保管ユニット１０３の下に移動する。最初に保管ユニット１０３の下に自身を位置決めする間、ＲＤＵ１００は、前向きの画像取り込み装置１０６を利用して１つまたは複数の画像を取り込むことができる。ＲＤＵ１００はその後、ＲＤＵ１００が保管ユニット１０３の下に移動する際、保管ユニット１０３の脚にぶつかるのを回避するために、保管ユニット１０３の脚を識別するために画像分析を行うことができる。ＲＤＵ１００はまた、ＲＤＵ１００が保管ユニット１０３の下に移動する際、ＲＤＵ１００にその接近方法を変えることを要求するであろう、例えば床の上の商品、蓋付きの箱または箱などの他の障害物を識別するために画像分析を行う場合もある。
【００３３】
ボックス４０９に移動すると、ＲＤＵ１００はその後、下向きの画像取り込み装置１０９を利用して地面基準３１３の画像を取り込む。一部の例では、ＲＤＵ１００は、取り込んだ画像内で地面基準３１３を識別するために画像分析を行う場合がある。取り込んだ画像内で地面基準３１３が識別されなかった場合、ＲＤＵ１００は、地面基準３１３の別の画像を取り込むように試みる場合がある、または地面基準３１３が元々下向きの画像取り込み装置１０９の視野の外にあった場合、別の画像を取り込む前に保管ユニット１０３の下にわずかに隠れるように自身を位置決めし直す場合もある。
【００３４】
ボックス４１３に進むと、ＲＤＵ１００は地面基準３１３に対して所定の場所に自身を配置する。例えばＲＤＵ１００は、それが、取り込んだ画像内で地面基準３１３を識別した後、地面基準３１３の頂部上で自身を中心に配置することができる。正確に自身を位置決めするために、ＲＤＵ１００は、ＲＤＵ１００が移動する際、下向きの画像取り込み装置１０９を利用して一連の画像を繰り返し取り込むことができる。これにより、ＲＤＵ１００が地面基準３１３に向かって移動しているかどうか、またはそこから離れるように移動しているかどうか、及び何らかの修正が必要であるかどうかを判断することによって、ＲＤＵ１００が自身を誘導することが可能になる。
【００３５】
次にボックス４１６を参照すると、ＲＤＵ１００は、前向きの画像取り込み装置１０６を利用してパノラマ画像（例えば、単一の画像、重なり合う画像のシーケンス、隣合う画像のシーケンス、ビデオまたは他の視覚的表示）を取り込みながら自身を回転させる。一部の例では、ＲＤＵ１００は、ＲＤＵ１００を取り囲む領域のパノラマ画像を取り込んでいる間、３６０度（すなわち、全円）ほども回転する場合がある。しかしながら他の例では、ＲＤＵ１００は、３６０度の完全な回転が不必要である場合、より短い円弧にわたって回転する場合もある。
【００３６】
一部の例では、ＲＤＵ１００は、前向きの画像取り込み装置１０６と合わせて後ろ向きの画像取り込み装置１０７も利用する場合もある。このような例では、より短い回転円弧を利用してより大きなパノラマ画像を取り込むことができる。例えば、後ろ向きの画像取り込み装置１０７が前向きの画像取り込み装置１０６と合わせて使用される場合、ＲＤＵ１００は、後ろ向きの画像取り込み装置１０７によって取得されたパノラマ画像を前向きの画像取り込み装置１０６から取得されたパノラマ画像と組み合わせることによって、１８０度しか回転せずに３６０度のパノラマ画像を取り込むことが可能である。
【００３７】
ボックス４１９に移動すると、ＲＤＵ１００は、ＲＤＵ１００が現在下に位置決めされている保管ユニット１０３の１つまたは複数の脚を識別する。例えば、ＲＤＵ１００は、種々のコンピュータビジョン技術を利用して、ボックス４１６において予め取り込まれたパノラマ画像内で保管ユニット１０３の１つまたは複数の脚を識別することができる。ＲＤＵ１００はその後、さらに説明するように、保管ユニット１０３を搬送する間の事故を阻止するために、それ自体に対する、及び保管ユニット１０３に対する保管ユニット１０３の脚の位置を記憶することができる。
【００３８】
一部の実施形態では、ＲＤＵ１００はまた、ボックス４１９において保管ユニット１０３に付けられた１つまたは複数の保管ユニット基準３１６を識別する場合もある。ＲＤＵ１００はこの場合、１つまたは複数の保管ユニット基準３１６内にエンコードされた情報を抽出し、それをＲＤＵディスパッチアプリケーション３２１に送ることで、ＲＤＵ１００が正しい保管ユニット１０３の下にあることを確認することができる。ＲＤＵ１００が、正しい保管ユニット１０３の下にある場合、このときプロセスはボックス４２３へと続く。ＲＤＵ１００が正しい保管ユニット１０３の下になかった場合、（例えば、ＲＤＵディスパッチアプリケーション３２１によって提供される新たな場所に基づいて）ＲＤＵ１００は、正しい保管ユニット１０３まで移動し、プロセスを再開することができる。
【００３９】
ボックス４２３に進むと、ＲＤＵ１００は、保管ユニット１０３の脚の各々から、ＲＤＵ１００が現在中心に置かれている地面基準３１３までの距離を計算する。これは、いくつかの方法で実現することができる。このような手法のうちの任意の１つまたは複数は、本開示の種々の実施形態において使用することができる。
【００４０】
例えば、前向きの画像取り込み装置１０６が三次元カメラである場合、距離情報は、ボックス４１６において取り込まれたパノラマ画像にもとから埋め込まれる場合もある。このような例では、前向きの画像取り込み装置１０６から脚までの距離に関する値は、パノラマ画像から引き出すことができる。前向きの画像取り込み装置から保管ユニット１０３の脚までの距離に関する値は、ＲＤＵ１００の寸法を補償するために調節される。
【００４１】
前向きの画像取り込み装置１０６が二次元カメラを有する例では、他の手法が使用される場合がある。例えば、保管ユニット１０３の脚と、ＲＤＵ１００との間の距離を測定するために、ＲＤＵ１００に設置された距離計を使用することができる。前向きの画像取り込み装置１０６から保管ユニット１０３の脚までの距離に関する値は、ＲＤＵ１００の寸法を補償するために調節することができる。
【００４２】
次に図４Ｂのボックス４２６を参照すると、ＲＤＵ１００は、保管ユニット１０３の中心の位置を計算する。これは、保管ユニット１０３の脚の相対的な位置を特定し、保管ユニット１０３の中心が、保管ユニット１０３の脚の位置に対して位置すべき場所を計算することによって行うことができる。例えば、ＲＤＵ１００は、三角測量または同様の手法を使用して、保管ユニット１０３の２つ以上の脚の場所に対する保管ユニット１０３の中心の場所を特定することができる。
【００４３】
ボックス４２９に移動すると、ＲＤＵ１００は、それが現在、保管ユニット１０３の下で中心に位置するかどうか、またはＲＤＵ１００が保管ユニット１０３の中心に対して中心からずれて位置するかどうかを判断する。これは、地面基準３１３の場所を、ボックス４２６であらかじめ計算された保管ユニット１０３の中心と比較することによって判断することができる。地面基準３１３の場所が、保管ユニット１０３の中心の場所と一致しない場合、ＲＤＵ１００は現在、地面基準３１３の上で中心に位置していることから、ＲＤＵ１００はこのとき、保管ユニット１０３の位置に対して中心からずれていると判断することができる。このような例では、プロセスはボックス４３３に進む。しかしながら地面基準３１３の場所が保管ユニット１０３の中心の場所と一致した場合、このときプロセスはボックス４３６までスキップする。
【００４４】
ボックス４３３に進むと、ＲＤＵ１００は、保管ユニット１０３の下に移動し、保管ユニット１０３の中心に対して自身を位置決めし直す。一部の例では、ＲＤＵ１００は、移動した後、ボックス４１６から４２９のうちの１つまたは複数を繰り返すことによって、それが保管ユニット１０３の中心に位置することを確認することができる。ＲＤＵ１００が中心からずれたままである場合、ＲＤＵは、保管ユニット１０３の中心の場所に向かって再度移動し、ＲＤＵ１００が保管ユニット１０３の下で中心に位置するまでプロセスを繰り返すことになる。
【００４５】
次にボックス４３６を参照すると、ＲＤＵ１００は、保管ユニット１０３を持ち上げる。例えば、ＲＤＵ１００は、一体型のリフトまたは同様の機構を使用して保管ユニット１０３を地面からつり上げることができる。
【００４６】
ボックス４３９に移動すると、ＲＤＵ１００はその後、前向きの画像取り込み装置１０６によって別の画像を取り込む。取り込まれた画像は、ＲＤＵ１００が移動する際、保管ユニット１０３が安全に扱われることを保証するために、プロセスにおいて後に使用することができる。
【００４７】
図４Ｃのボックス４４３に進むと、ＲＤＵ１００は、経路に沿って移動し、保管ユニット１０３をそれと共に搬送する。一部の例では、ＲＤＵ１００がもともとその保管ユニット１０３に対して差し向けられた場合、ＲＤＵ１００は、ＲＤＵディスパッチアプリケーション３２１から予め経路を受け取ることができる。他の例では、ＲＤＵ１００は、この段階において、経路生成アプリケーション３２３からの経路を要求する場合もある。このような例では、ＲＤＵ１００からのリクエストは、ＲＤＵ１００の現在の場所と、ＲＤＵディスパッチアプリケーション３２１から予め受け取ったＲＤＵ１００の目的地とを含むことができる。
【００４８】
次にボックス４４６を参照すると、ＲＤＵ１００は、前向きの画像取り込み装置１０６を利用して第２の画像を取り込む。
【００４９】
ボックス４４９に移動すると、ＲＤＵ１００は、ボックス４３９で取り込んだ画像をボックス４４６で取り込んだ画像と比較して、運搬中、保管ユニット１０３がＲＤＵ１００上で位置を移動したかどうか判断する。しかしながらＲＤＵ１００が、ボックス４４６の先の反復において画像を既に取り込んでいる場合、ＲＤＵ１００は、現在の画像を、先の反復において取り込んだ画像と比較する場合もある。いずれのケースでも、保管ユニット１０３の移動は、いくつかの手法を通じて判断することができる。これらの手法は、本開示の特定の実施形態に応じて別々に、または組み合わせて使用され得る。
【００５０】
最初の手法では、ＲＤＵ１００は、前向きの画像取り込み装置１０６によって取得された２つの画像を比較して、ＲＤＵ１００の頂部での保管ユニット１０３の位置の横方向の移動を特定することができる。例えば、ＲＤＵ１００は、保管ユニット１０３がＲＤＵ１００の頂部上に載っているとき、最初の画像内でＲＤＵ１００の前方に位置決めされた保管ユニット１０３の１つまたは複数の脚を識別することができる。ＲＤＵ１００はその後、最初の画像内の保管ユニット１０３の脚の位置を、第２の画像における保管ユニット１０３の脚の対応する位置と比較することができる。保管ユニットの脚の位置が、左または右にずれている場合、ＲＤＵ１００は、ＲＤＵ１００の上にある保管ユニット１０３がこれに対応して、左または右、あるいは後ろまたは前にずれていると判断することができる。
【００５１】
第２の手法では、ＲＤＵ１００は、前向きの画像取り込み装置１０６によって取得された２つの画像を比較して、保管ユニット１０３の位置の垂直方向の移動を特定することができる。例えば、ＲＤＵ１００は、最初の画像内において保管ユニット１０３の１つまたは複数の脚を識別することができ、第２の画像において保管ユニット１０３の１つまたは複数の脚を同様に識別することができる。各々の画像において、ＲＤＵ１００は、保管ユニット１０３の脚のはっきりと区別できる特徴（例えば、脚の底部、脚の側部にあるマークなど）を識別することができる。一方の画像における保管ユニット１０３の脚の区別用の特徴が、他方の画像におけるものと異なる垂直方向の高さにある場合（例えばより高い、またはより低い）、ＲＤＵ１００は、保管ユニット１０３の垂直方向の変位が生じていると判断することができる。そのような垂直方向の変位には、揺動、傾斜、押されている状態、または他の垂直方向の変位が含まれてよい。
【００５２】
この時点で、プロセスは、２つの経路に沿って分岐することができる。第１の分岐において、ＲＤＵ１００は、ＲＤＵ１００が移動される間、保管ユニット１０３の位置がずれていないと判断し、プロセスはボックス４５３に進む。第２の分岐では、ＲＤＵ１００は、保管ユニット１０３の位置がずれていると判断し（例えば、垂直方向の変位、水平方向の変位、またはその両方）、プロセスはボックス４５９に進む。
【００５３】
ボックス４５３に進むと、ＲＤＵ１００は、障害物がその経路内に存在するかどうか判断する。ＲＤＵ１００は、例えばボックス４４６において予め取り込まれた画像を処理して、様々なコンピュータビジョン技術を用いて障害物を識別することができる。このような技術は、可能性のある物体のエッジ検出、可能性のある物体のグレイスケールまたは勾配マッチング、及び同様の手法を含むことができる。障害物が検出されない場合、プロセスは、ボックス４４３に戻るようにループし、ボックス４４３〜４４９のプロセスを再度繰り返す。しかしながら障害物が検出された場合、プロセスはボックス４５６に進む。
【００５４】
次にボックス４５６を参照すると、ＲＤＵ１００は、経路生成アプリケーション３２３からの新たな経路を要求する、またはそうでなければ経路生成アプリケーション３２３から新たな経路を獲得する。このリクエストは、ネットワークインターフェースを利用してネットワーク３０６にわたって送信することができる。新たな経路を求めるリクエストには、ＲＤＵ１００の現在の場所、現在の経路を遮っている障害物の性質、現在の経路を遮っている障害物の場所及び場合によって他の情報が含まれる場合がある。応答において、ＲＤＵ１００は、経路生成アプリケーション３２３から、その目的地までたどるための新たな経路を受け取る。ＲＤＵ１００は、新たな経路をたどるためにその内部の経路指定を更新する。プロセスは、ボックス４４３に戻るようにループし、ＲＤＵ１００がその新たな経路をたどる際、ボックス４４３〜４４９のプロセスを再度繰り返す。
【００５５】
しかしながらボックス４４９においてプロセスが代わりにボックス４５９に進んだ場合、ＲＤＵ１００は、保管ユニット１０３と共に移動し続けることがＲＤＵ１００にとって安全であるか判断する。この判断は、様々な要因に少なくともある程度基づく場合がある。例えばＲＤＵ１００は、垂直方向の変位または水平方向の変位が、保管ユニット１０３が傾斜して落下する許容不可能な可能性と相関する許容し得る変位の所定の閾値量を超えたかどうかに少なくともある程度基づいて、保管ユニット１０３が傾斜してＲＤＵ１００から落下する可能性を特定することができる。保管ユニット１０３の中の商品に対する損傷につながる、または商品に保管ユニット内で位置を変えさせる結果になり得る（例えば、保管ユニット１０３から落下する、保管ユニット１０３の棚の上で場所を移動するなど）、保管ユニット１０３を落下させそうにはないが、保管ユニット１０３の中の商品の配置を変える可能性がある保管ユニット１０３の移動を考慮するために、垂直方向または水平方向の変位のより低い閾値が使用される場合もある。同様に、ＲＤＵ１００は、一連の画像に基づいて、ＲＤＵ１００が移動する際、保管ユニット１０３内に含まれる一定の大きさの、または一定の度合いの揺れを特定することができる。揺れの大きさまたは度合いが所定の閾値レベルを超えた場合、ＲＤＵ１００は、保管ユニット１０３の揺れが、保管ユニット１０３に保管される商品の位置に容認できない変化を生じさせる可能性があると判断する場合がある。
【００５６】
プロセスはこの時点で再び分岐し得る。ＲＤＵ１００が保管ユニット１０３と共に移動することがなおも安全であると判断した場合、このときプロセスは、ボックス４４３に戻るようにループし、それ自体を繰り返す。しかしながらＲＤＵ１００がもはや移動するのが安全ではないと判断した場合、このときプロセスはボックス４６３に進む。
【００５７】
ボックス４６３に進むと、ＲＤＵ１００は、保管ユニット１０３の中の商品に対するさらなる損傷を阻止するために、または保管ユニット１０３がさらに揺動する、または傾斜するのを阻止するために移動を中止する。移動を中止するために、ＲＤＵ１００は、急激に停止することで、慣性力によって保管ユニット１０３を移動させたり、傾斜させたり、または落下させたりするのを回避するために、段階的なやり方で速度を緩めることができる。
【００５８】
次にボックス４６６を参照すると、ＲＤＵ１００は、ＲＤＵディスパッチアプリケーション３２１に対して警告を送る。この警告には、ＲＤＵ１００の現在の場所、ＲＤＵ１００が停止した理由、保管ユニット１０３の状況（例えばＲＤＵ１００の頂部になおも位置している、ＲＤＵ１００から落下した、またはその他の状況）及び場合によって他の情報が含まれてよい。この情報によって、ＲＤＵディスパッチアプリケーション３２１は、ＲＤＵ１００に補助（例えば技術者）を送ることが可能になる。プロセスはその後終了する。
【００５９】
次に図５Ａ〜図５Ｃを参照すると、種々の実施形態に係る駆動エージェント３２２の一部の動作の一例を提供するフローチャートが示される。図５Ａ〜図５Ｃのフローチャートは、本明細書に説明する駆動エージェント３２２の一部の動作を実施するために利用され得る、多くの異なる種類の機能配置の一例を単に提示するにすぎないことを理解されたい。一代替形態として、図５Ａ〜図５Ｃのフローチャートは、１つまたは複数の実施形態に係る駆動エージェント３２２において実施される方法の要素の一例を示すものとして見ることもできる。
【００６０】
ボックス５０３によって始まり、駆動エージェント３２２は、ＲＤＵ１００に保管ユニット１０３に接近するように指示する。例えば駆動エージェント３２２は、ＲＤＵ１００に、所定のまたは事前に規定された経路（例えば、保管ユニットの列の間の規定された回廊に沿って）に沿って保管ユニット１０３に接近するように指示することができる。
【００６１】
次にボックス５０６を参照すると、駆動エージェント３２２は、保管ユニット１０３の下に移動するようにＲＤＵ１００に１つまたは複数の命令または指示を送る。一部の例では、駆動エージェント３２２は、ＲＤＵ１００が保管ユニット１０３の下に自身を位置決めする際、前向きの画像取り込み装置１０６を使用して、１つまたは複数の画像を取り込むように、ＲＤＵ１００に１つまたは複数の命令または指示を送る場合もある。ＲＤＵ１００はその後、ＲＤＵ１００が保管ユニット１０３の下に移動する際、ＲＤＵ１００に保管ユニット１０３の脚部にぶつかるのを回避させるようにＲＤＵ１００にさらなる移動指示を送るために、画像分析を行い、保管ユニット１０３の脚部を識別するために駆動エージェント３２２に画像を送ることができる。駆動エージェント３２２はまた、ＲＤＵ１００が保管ユニット１０３の下に移動する際、ＲＤＵ１００にその接近方法を変えることを要求するであろう、床の上の商品、蓋付きの箱または箱などの他の障害物を識別するために画像分析を行う場合もある。
【００６２】
ボックス５０９に移動すると、駆動エージェント３２２は、下向きの画像取り込み装置１０９を利用して地面基準３１３の画像を取り込むようにＲＤＵ１００に１つまたは複数の命令または指示を送り、取り込んだ画像を駆動エージェント３２２に送信することができる。一部の例では、駆動エージェント３２２は、取り込んだ画像内で地面基準３１３を識別するために画像分析を行う場合がある。取り込んだ画像内で地面基準３１３が識別されなかった場合、駆動エージェント３２２は、地面基準３１３の別の画像を取り込むことを試みるようにＲＤＵ１００に指示することができる、または地面基準３１３が元々下向きの画像取り込み装置１０９の視野の外にあった場合、別の画像を取り込む前に保管ユニット１０３に下にわずかに隠れるように自身を位置決めし直すことができる。
【００６３】
ボックス５１３に進むと、駆動エージェント３２２は、地面基準３１３に対して所定の場所に自身を配置するようにＲＤＵ１００に指示する、または命令することができる。例えば駆動エージェント３２２は、取り込んだ画像内で駆動エージェント３２２が地面基準３１３を識別した後、地面基準３１３の頂部上で自身を中心に配置するようにＲＤＵ１００に指示することができる。正確にＲＤＵ１００を位置決めするために、駆動エージェント３２２は、ＲＤＵ１００が移動する際、下向きの画像取り込み装置１０９を利用して一連の画像を繰り返し取り込み、これらの画像を駆動エージェント３２２に送るようにＲＤＵ１００に指示することができる。これにより、ＲＤＵ１００が地面基準３１３に向かって移動しているかどうか、またはそこから離れるように移動しているかどうか、及び何らかの修正が必要であるかどうか判断することによって駆動エージェント３２２がＲＤＵ１００を誘導することが可能になる。
【００６４】
次にボックス５１６を参照すると、駆動エージェント３２２は、前向きの画像取り込み装置１０６を利用してパノラマ画像（例えば単一の画像、重なり合う画像のシーケンス、隣合う画像のシーケンス、ビデオまたは他の視覚的表示）を取り込みながら自身を回転させるようにＲＤＵ１００に命令することができる。一部の例では、駆動エージェント３２２は、ＲＤＵ１００を取り囲む領域のパノラマ画像を取り込んでいる間、３６０度（すなわち全円）ほども回転するようにＲＤＵ１００に命令することができる。しかしながら他の例では、駆動エージェント３２２は、３６０度の完全な回転が不必要である場合、より短い円弧にわたって回転するようにＲＤＵ１００に命令する場合もある。
【００６５】
一部の例では、駆動エージェント３２２は、前向きの画像取り込み装置１０６と合わせて後ろ向きの画像取り込み装置１０７を利用するようにＲＤＵ１００にさらに命令する場合もある。このような例では、より短い回転円弧を利用してより大きなパノラマ画像を取り込むことができる。例えば、後ろ向きの画像取り込み装置１０７が前向きの画像取り込み装置１０６と合わせて使用される場合、ＲＤＵ１００は、後ろ向きの画像取り込み装置１０７によって取得されたパノラマ画像を前向きの画像取り込み装置１０６から取得されたパノラマ画像と組み合わせることによって、１８０度しか回転せずに３６０度のパノラマ画像を取り込むことが可能である。
【００６６】
ボックス５１９に移動すると、駆動エージェント３２２は、ＲＤＵ１００から受け取った画像に少なくともある程度基づいて、画像ＲＤＵ１００が現在、下に位置決めされている保管ユニット１０３の１つまたは複数の脚を識別することができる。例えば、駆動エージェント３２２は、種々のコンピュータビジョン技術を利用して、ボックス５１６において予め取り込まれたパノラマ画像内で保管ユニット１０３の１つまたは複数の脚を識別することができる。駆動エージェント３２２はその後、さらに説明するように保管ユニット１０３を搬送する間の事故を阻止するために、ＲＤＵ１００の位置に対する、及び保管ユニット１０３に対する保管ユニット１０３の脚の位置を記憶することができる。
【００６７】
一部の実施形態では、駆動エージェント３２２は、ボックス５１９において保管ユニット１０３に付けられた１つまたは複数の保管ユニット基準３１６を識別する場合もある。駆動エージェント３２２はこの場合、１つまたは複数の保管ユニット基準３１６内にエンコードされた情報を抽出し、それをＲＤＵディスパッチアプリケーション３２１に送ることで、ＲＤＵ１００が正しい保管ユニット１０３の下にあることを確認することができる。ＲＤＵ１００が正しい保管ユニット１０３の下にある場合、このときプロセスはボックス５２３へと続く。ＲＤＵ１００が正しい保管ユニット１０３の下になかった場合、駆動エージェント３２２は、（例えば、ＲＤＵディスパッチアプリケーション３２１によって提供される新たな場所に基づいて）正しい保管ユニット１０３まで移動し、プロセスを再開するようにＲＤＵ１００に命令または指示を送ることができる。
【００６８】
ボックス５２３に進むと、駆動エージェント３２２は、保管ユニット１０３の脚の各々から、ストレージＲＤＵ１００が現在中心に置かれている地面基準３１３までの距離を計算する。これは、いくつかの方法で実現することができる。このような手法のうちの任意の１つまたは複数は、本開示の種々の実施形態において使用することができる。
【００６９】
例えば、前向きの画像取り込み装置１０６が三次元カメラである場合、距離情報は、ボックス５１６において取り込まれたパノラマ画像にもとから埋め込まれる場合もある。このような例では、前向きの画像取り込み装置１０６から脚までの距離に関する値は、パノラマ画像から引き出すことができる。前向きの画像取り込み装置から保管ユニット１０３の脚までの距離に関する値は、ＲＤＵ１００の寸法を補償するために調節される。
【００７０】
前向きの画像取り込み装置１０６が二次元カメラを有する例では、他の手法が使用される場合がある。例えば、保管ユニット１０３の脚と、ＲＤＵ１００との間の距離を測定するために、ＲＤＵ１００に設置された距離計を使用することができる。前向きの画像取り込み装置１０６から保管ユニット１０３の脚までの距離に関する値は、ＲＤＵ１００の寸法を補償するために調節することができる。
【００７１】
次に図５Ｂのボックス５２６を参照すると、駆動エージェント３２２は、保管ユニット１０３の中心の位置を計算する。これは、保管ユニット１０３の脚の相対的な位置を特定し、保管ユニット１０３の脚の位置に対して保管ユニット１０３の中心が位置すべき場所を計算することによって行うことができる。例えば、駆動エージェント３２２は、三角測量または同様の手法を使用して、保管ユニット１０３の２つ以上の脚の場所に対する保管ユニット１０３の中心の場所を特定することができる。
【００７２】
ボックス５２９に移動すると、駆動エージェント３２２は、ＲＤＵ１００が現在保管ユニット１０３の下で中心に位置しているかどうか、またはＲＤＵ１００が保管ユニット１０３の中心に対して中心からずれて位置しているかどうか判断することができる。これは、地面基準３１３の場所を、ボックス５２６で予め計算された保管ユニット１０３の中心と比較することによって判断することができる。地面基準３１３の場所が、保管ユニット１０３の中心の場所と一致しない場合、ＲＤＵ１００は現在、地面基準３１３の上で中心に位置していることから、駆動エージェント３２２はこのとき、ＲＤＵ１００が保管ユニット１０３の位置に対して中心からずれていると判断することができる。このような例では、プロセスはボックス５３３に進む。しかしながら地面基準３１３の場所が保管ユニット１０３の中心の場所と一致した場合、このときプロセスはボックス５３６までスキップする。
【００７３】
ボックス５３３に進むと、駆動エージェント３２２は、保管ユニット１０３の下に移動し、保管ユニット１０３の中心に対して自身を位置決めし直すようにＲＤＵ１００に指示する、または命令する。一部の例では、駆動エージェント３２２は、移動した後、ボックス５１６から５２９のうちの１つまたは複数を繰り返すことによって、ＲＤＵ１００が保管ユニット１０３の中心に位置することを確認することができる。ＲＤＵ１００が中心からずれたままである場合、駆動エージェント３２２は、保管ユニット１０３の中心の場所に向かって再度移動するようにＲＤＵ１００に指示することができる。駆動エージェント３２２は、ＲＤＵ１００が保管ユニット１０３の下で中心に位置するまでプロセスを繰り返すことができる。
【００７４】
次にボックス５３６を参照すると、駆動エージェント３２２は、保管ユニット１０３を持ち上げるようにＲＤＵ１００に指示する。応答において、ＲＤＵ１００は、一体型のリフトまたは同様の機構を使用して保管ユニット１０３を地面からつり上げることができる。
【００７５】
ボックス５３９に移動すると、駆動エージェント３２２はその後、前向きの画像取り込み装置１０６によって別の画像を取り込むようにＲＤＵ１００に指示する、または命令する。ＲＤＵ１００はその後、それに応答して画像を取り込み、それを駆動エージェント３２２に提供する。取り込まれた画像は、ＲＤＵ１００が移動する際、保管ユニット１０３が安全に扱われることを保証するために、プロセスにおいて後に使用することができる。
【００７６】
図５Ｃのボックス５４３に進むと、駆動エージェント３２２は、経路に沿って移動し、保管ユニット１０３をそれと共に搬送するようにＲＤＵ１００に指示する。一部の例では、駆動エージェント３２２がＲＤＵ１００に経路を提供する。ＲＤＵ１００がもともとその保管ユニット１０３に対して差し向けられた場合、ＲＤＵ１００は、ＲＤＵディスパッチアプリケーション３２１から経路を予め受け取ることができる。他の例では、駆動エージェント３２２は、この段階において、経路生成アプリケーション３２３からの経路を要求し、その経路をＲＤＵ１００に提供する場合もある。このような例では、ＲＤＵ１００からのリクエストは、ＲＤＵ１００の現在の場所と、ＲＤＵディスパッチアプリケーション３２１から予め受け取ったＲＤＵ１００の目的地とを含むことができる。
【００７７】
次にボックス５４６を参照すると、駆動エージェント３２２は、前向きの画像取り込み装置１０６を利用して第２の画像を取り込むようにＲＤＵ１００に指示する。応答において、ＲＤＵ１００は第２の画像を取り込み、それを駆動エージェント３２２に提供する。
【００７８】
ボックス５４９に移動すると、駆動エージェント３２２は、ボックス５３９で取り込んだ画像をボックス５４６で取り込んだ画像と比較して、運搬中、保管ユニット１０３がＲＤＵ１００上で位置を移動したどうか判断する。しかしながらＲＤＵ１００が、ボックス５４６の先の反復において画像を既に取り込んでいる場合、駆動エージェント３２２は、現在の画像を、先の反復において取り込んだ画像と比較する場合もある。いずれのケースでも、保管ユニット１０３の移動は、いくつかの手法を通じて判定することができる。これらの手法は、本開示の特定の実施形態に応じて別々に、または組み合わせて使用され得る。
【００７９】
最初の手法では、駆動エージェント３２２は、前向きの画像取り込み装置１０６によって取得された２つの画像を比較して、ＲＤＵ１００の頂部での保管ユニット１０３の位置の横方向の移動を特定することができる。例えば、駆動エージェント３２２は、保管ユニット１０３がＲＤＵ１００の頂部上に載っているとき、最初の画像内でＲＤＵ１００の前方に位置決めされた保管ユニット１０３の１つまたは複数の脚を識別することができる。駆動エージェント３２２はその後、最初の画像内の保管ユニット１０３の脚の位置を、第２の画像内の保管ユニット１０３の脚の対応する位置と比較することができる。保管ユニットの脚の位置が、左または右にずれている場合、駆動エージェント３２２は、ＲＤＵ１００の上にある保管ユニット１０３がこれに対応して、左または右、あるいは後ろまたは前にずれていると判断することができる。
【００８０】
第２の手法では、駆動エージェント３２２は、前向きの画像取り込み装置１０６によって取得された２つの画像を比較して、保管ユニット１０３の位置の垂直方向の移動を特定することができる。例えば、駆動エージェント３２２は、最初の画像内で保管ユニット１０３の１つまたは複数の脚を識別することができ、第２の画像内で保管ユニット１０３の１つまたは複数の脚を同様に識別することができる。各々の画像において、駆動エージェント３２２は、保管ユニット１０３の脚のはっきりと区別できる特徴（例えば脚の底部、脚の側部にあるマークなど）を識別することができる。一方の画像における保管ユニット１０３の脚の区別用の特徴が、他方の画像におけるものと異なる垂直方向の高さにある場合（例えばより高い、またはより低い）、駆動エージェント３２２は、保管ユニット１０３の垂直方向の変位が生じていると判断することができる。そのような垂直方向の変位には、揺動、傾斜、押されている状態、または他の垂直方向の変位が含まれてよい。
【００８１】
この時点で、プロセスは２つの経路に沿って分岐することができる。第１の分岐において、駆動エージェント３２２は、ＲＤＵ１００が移動される間保管ユニット１０３の位置はずれていないと判断し、プロセスはボックス５５３に進む。第２の分岐では、駆動エージェント３２２は、保管ユニット１０３の位置がずれていると判定し（例えば垂直方向の変位、水平方向の変位、またはその両方）、プロセスはボックス５５９に進む。
【００８２】
ボックス５５３に進むと、駆動エージェント３２２は、障害物がＲＤＵ１００の経路内に存在するかどうか判断する。例えば、駆動エージェント３２２は、種々のコンピュータビジョン技術を利用して、ボックス５４６において予め取り込まれた画像を処理して障害物を識別することができる。このような技術は、可能性のある物体のエッジ検出、可能性のある物体のグレイスケールまたは勾配マッチング、及び同様の手法を含むことができる。障害物が検出されない場合、プロセスは、ボックス５４３に戻るようにループし、ボックス５４３〜５４９のプロセスを再度繰り返す。しかしながら障害物が検出された場合、プロセスはボックス５５６に進む。
【００８３】
次にボックス５５６を参照すると、駆動エージェント３２２は、経路生成アプリケーション３２３からの新たな経路を要求する、またはそうでなければ経路生成アプリケーション３２３から新たな経路を獲得する。新たな経路を求めるリクエストには、ＲＤＵ１００の現在の場所、現在の経路を遮っている障害物の性質、現在の経路を遮っている障害物の場所及び場合によって他の情報が含まれる場合がある。応答において、駆動エージェント３２２は、経路生成アプリケーション３２３から、その目的地までたどるためのＲＤＵ１００の新たな経路を受け取る。駆動エージェント３２２はその後、新たな経路をたどるようにＲＤＵ１００に対する命令の発行を開始する。プロセスは、ボックス５４３に戻るようにループし、ＲＤＵ１００がその新たな経路をたどる際、ボックス５４３〜５４９のプロセスを再度繰り返す。
【００８４】
しかしながらボックス５４９においてプロセスが代わりにボックス５５９に進んだ場合、駆動エージェント３２２は、保管ユニット１０３と共に移動し続けることがＲＤＵ１００にとって安全であるか判断する。この判断は、様々な要因に少なくともある程度基づく場合がある。例えば駆動エージェント３２２は、垂直方向の変位または水平方向の変位が、保管ユニット１０３が傾斜して落下する許容不可能な可能性と相関する許容し得る変位の所定の閾値量を超えたかどうかに少なくともある程度基づいて、保管ユニット１０３が傾斜してＲＤＵ１００から落下する可能性を特定することができる。保管ユニット１０３の中の商品に対する損傷につながる、または商品に保管ユニット１０３内で位置を変えさせる結果となる可能性がある（例えば、保管ユニット１０３から落下する、保管ユニット１０３の棚の上で場所を移動するなど）、保管ユニット１０３を落下させそうにはないが、保管ユニット１０３の中の商品の配置を変える可能性がある保管ユニット１０３の移動を考慮するために、垂直方向または水平方向の変位に関するより低い閾値が使用される場合もある。同様に、駆動エージェント３２２は、一連の画像に基づいて、ＲＤＵ１００が移動する際、保管ユニット１０３内に含まれる一定の大きさの、または一定の度合いの揺れを特定することができる。揺れの大きさまたは度合いが所定の閾値レベルを超えた場合、駆動エージェント３２２は、保管ユニット１０３の揺れが、保管ユニット１０３に保管される商品の位置に容認できない変化を生じさせる可能性があると判断する場合がある。
【００８５】
プロセスはこの時点で再び分岐し得る。駆動エージェント３２２が、保管ユニット１０３と共に移動することがＲＤＵ１００にとってなおも安全であると判断した場合、このときプロセスは、ボックス５４３に戻るようにループし、それ自体を繰り返す。しかしながら駆動エージェント３２２がＲＤＵ１００にとってもはや移動するのが安全ではないと判断した場合、このときプロセスはボックス５６３に進む。
【００８６】
ボックス５６３に進むと、駆動エージェント３２２は、保管ユニット１０３の中の商品に対するさらなる損傷を阻止するために、または保管ユニット１０３がさらに揺動する、または傾斜するのを阻止するために移動を中止するようにＲＤＵ１００に指示する。移動を中止するために、駆動エージェント３２２は、急激に停止することで、慣性力によって保管ユニット１０３を移動させたり、傾斜させたり、または落下させたりするのを回避するために、段階的なやり方で速度を緩めるようにＲＤＵ１００に命令することができる。
【００８７】
次にボックス５６６を参照すると、駆動エージェント３２２は、ＲＤＵディスパッチアプリケーション３２１に対して警告を送る。この警告には、ＲＤＵ１００の現在の場所、ＲＤＵ１００が停止した理由、保管ユニット１０３の状況（例えばＲＤＵ１００の頂部になおも位置している、ＲＤＵ１００から落下した、またはその他の状況）及び場合によって他の情報が含まれてよい。この情報によって、ＲＤＵディスパッチアプリケーション３２１は、ＲＤＵ１００に補助（例えば技術者）を送ることが可能になる。プロセスはその後終了する。
【００８８】
図６を参照すると、本開示の一実施形態に係るコンピューティング環境３０３の概略ブロック図が示されている。コンピューティング環境３０３は、１つまたは複数のコンピューティングデバイス６００を含む。各コンピューティングデバイス６００は、例えば、両方とも、ローカルインタフェース６０９に結合されるプロセッサ６０３及びメモリ６０６を有する少なくとも１つのプロセッサ回路を含む。この目的を達成するために、各コンピューティングデバイス６００は、例えば、少なくとも１つのサーバコンピュータまたは同様の装置を含んでよい。理解され得るように、ローカルインタフェース６０９は、例えば、付随するアドレス／制御バスを有するデータバスまたは他のバス構造を含み得る。
【００８９】
メモリ６０６に記憶されるのは、データと、プロセッサ６０３によって実行可能ないくつかの構成要素との両方である。詳細には、メモリ６０６に格納され、かつプロセッサ６０３もよって実行可能であるのは、ＲＤＵディスパッチアプリケーション３２１、経路生成アプリケーション３２３及び潜在的な他のアプリケーションである。また、メモリ６０６に記憶されるのは、データストア３０９及び他のデータであってもよい。さらに、オペレーティングシステムが、メモリ６０６に記憶され、かつプロセッサ６０３により実行可能であり得る。
【００９０】
理解され得るように、メモリ６０６に記憶され、かつプロセッサ６０３によって実行可能である他のアプリケーションが存在し得ることを理解されたい。本明細書で考察される任意の構成要素が、ソフトウェアの形で実装される場合、例えばＣ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ  Ｃ、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｅｒｌ、ＰＨＰ、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｐｙｔｈｏｎ（登録商標）、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、または他のプログラミング言語等のいくつかのプログラミング言語のうちの任意の１つが利用されてよい。
【００９１】
いくつかのソフトウェア構成要素が、メモリ６０６に記憶され、プロセッサ６０３によって実行可能である。この点において、「実行可能」という用語は、プロセッサ６０３によって最終的に実行することができる形をとるプログラムファイルを意味する。実行可能なプログラムの例は、例えば、メモリ６０６のランダムアクセス部分にロードし、プロセッサ６０３によって実行され得る形の機械コードに変換することができるコンパイルされたプログラム、例えばメモリ６０６のランダムアクセス部分にロードされ、プロセッサ６０３によって実行され得るオブジェクトコード等の適切な形式で表され得るソースコード、またはプロセッサ６０３などによって実行されるようにメモリ６０６のランダムアクセス部分に命令を生成するために別の実行可能なプログラムによって解釈され得るソースコード等であってよい。実行可能なプログラムは、例えば、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカード、コンパクトディスク（ＣＤ）またはデジタル多用途ディスク（ＤＶＤ）等の光学ディスク、フロッピーディスク、磁気テープ、または他のメモリ構成要素を含んだ、メモリ６０６の任意の部分または任意の構成要素に記憶され得る。
【００９２】
メモリ６０６は、揮発性メモリと不揮発性メモリの両方及びデータストレージ構成要素を含むように本明細書に定義される。揮発性構成要素は、電源喪失時にデータ値を保持しないものである。不揮発性構成要素は、電源喪失時にデータを保持するものである。したがって、メモリ６０６は、例えば、ランダムアクセスアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、ハードディスクドライブ、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、メモリカードリーダを介してアクセスされるメモリカード、関連するフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、または他のメモリ構成要素、あるいはこれらのメモリ構成要素のうちの任意の２つ以上の組み合わせを含む場合がある。さらに、ＲＡＭは、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）、及び他の係る装置を含む場合がある。ＲＯＭは、例えば、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または他の同様のメモリ装置を含む場合がある。
【００９３】
また、プロセッサ６０３は、複数のプロセッサ６０３または複数のプロセッサコアを表す場合があり、メモリ６０６は、それぞれ並列処理回路で動作する複数のメモリ６０６を表す場合がある。係る場合、ローカルインタフェース６０９は、複数のプロセッサ６０３のうちの任意の２つの間、任意のプロセッサ６０３とメモリ６０６のうちのいずれかとの間、またはメモリ６０６のうちの任意の２つの間等の通信を容易にする適切なネットワークであってよい。ローカルインタフェース６０９は、例えばロードバランシングを実行することを含んだ、この通信を調整するように設計された付加的なシステムを含んでよい。プロセッサ６０３は、電気式であってもよいし、何らかの他の利用可能な構成であってもよい。
【００９４】
ＲＤＵディスパッチアプリケーション３２１、駆動エージェント３２２、経路生成アプリケーション３２３及び本明細書に記載される他の種々のシステムは、汎用ハードウェアにより実行されるソフトウェアまたはコードで具現化され得るが、一代替形態として、同様のものが専用ハードウェアまたはソフトウェア／汎用ハードウェアと、専用ハードウェアとの組み合わせで具現化される場合もある。専用ハードウェアで具現化される場合、各々は、いくつかの技術のうちの任意の１つまたは組み合わせを利用する回路または状態機械として実装できる。これらの技術には、限定するものではないが、１つまたは複数のデータ信号が加えられると種々の論理機能を実施するための論理ゲートを有するディスクリート論理回路、適切な論理ゲートを有する特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）または他の構成要素などが含まれてよい。係る技術は一般に、当業者によってよく知られているため、本明細書では詳細に説明しない。
【００９５】
図４Ａ〜図４Ｃのフローチャートは、ＲＤＵ１００の一部の実装形態の機能及び動作を示している。ソフトウェアにおいて具現化された場合、各ブロックは、指定された論理関数（複数可）を実装するためのプログラム命令を含むモジュール、セグメントまたはコードの一部を表す場合がある。プログラム命令は、プログラミング言語で書かれた人間が読めるステートメントを含むソースコード、またはＲＤＵ１００に含まれるプロセッサなどの好適な実行システムにより認識可能な数値命令を含むマシンコードの形で具現化されてよい。マシンコードはソースコード等から変換されてよい。ハードウェアにおいて具現化される場合、各ブロックは、指定された論理関数（複数可）を実装するために、回路またはいくつかの相互接続された回路を表してよい。
【００９６】
図４Ａ〜図４Ｃのフローチャートは、特有の実行順序を示すが、実行順序が図示する順序と異なる場合もあることを理解されたい。例えば、２つ以上のブロックの実行順序は、図示する順序に関してスクランブルをかけられてよい。また、図４Ａ〜図４Ｃに連続して示す２つ以上のブロックは、同時に、または一部同時に実行することができる。さらに、いくつかの実施形態では、図４Ａ〜図４Ｃに示すブロックの１つ以上は、省略される、または省かれる場合もある。さらに、有用性の向上、説明、性能測定、またはトラブルシューティングの手掛かりの提供等の目的で、任意の数のカウンタ、状態変数、警告セマフォまたはメッセージが、本明細書に説明する論理フローに加えられる可能性がある。係るすべての変形形態は、本開示の範囲内にあることを理解されたい。
【００９７】
図５Ａ〜図５Ｃのフローチャートは、駆動エージェント３２２の一部の実装形態の機能及び動作を示している。ソフトウェアにおいて具現化された場合、各ブロックは、指定された論理関数（複数可）を実施するためのプログラム命令を含むモジュール、セグメントまたはコードの一部を表す場合がある。プログラム命令は、プログラミング言語で書かれた人間が読めるステートメントを含むソースコード、またはコンピュータシステムもしく他のシステム内のプロセッサ６０３等の適切な実行システムにより認識可能な数値命令を含むマシンコードの形で具現化されてよい。マシンコードはソースコード等から変換されてよい。ハードウェアにおいて具現化される場合、各ブロックは、指定された論理関数（複数可）を実装するために、回路またはいくつかの相互接続された回路を表してよい。
【００９８】
図５Ａ〜図５Ｃのフローチャートは、特有の実行順序を示すが、実行順序が図示する順序と異なる場合もあることを理解されたい。例えば、２つ以上のブロックの実行順序は、図示する順序に関してスクランブルをかけられてよい。また、図５Ａ〜図５Ｃに連続して示す２つ以上のブロックは、同時に、または一部同時に実行することができる。さらに、いくつかの実施形態では、図５Ａ〜図５Ｃに示すブロックの１つ以上は、省略される、または省かれる場合もある。さらに、有用性の向上、説明、性能測定、またはトラブルシューティングの手掛かりの提供等の目的で、任意の数のカウンタ、状態変数、警告セマフォまたはメッセージが、本明細書に説明する論理フローに加えられる可能性がある。係るすべての変形形態は、本開示の範囲内にあることを理解されたい。
【００９９】
また、ソフトウェアまたはコードを含む、ＲＤＵディスパッチアプリケーション３２１、駆動エージェント３２２及び経路生成アプリケーション３２３を含めた、本明細書に記載される任意の論理またはアプリケーションは、例えば、コンピュータシステムまたは他のシステム内のプロセッサ６０３等の命令実行システムによって使用される、またはそれに関連して使用するための任意の非一時的なコンピュータ可読媒体において具現化することができる。この意味では、論理は、例えば、コンピュータ可読媒体からフェッチし、かつ命令実行システムにより実行することができる命令及び宣言を含んだステートメントを含んでよい。本開示の文脈において、「コンピュータ可読媒体」は、命令実行システムによって使用される、またはそれに関連して使用される、本明細書に説明する論理またはアプリケーションを含む、記憶する、または維持することができる任意の媒体であり得る。
【０１００】
コンピュータ可読媒体は、例えば、磁気媒体、光学媒体、または半導体媒体等の多くの物理的媒体のうちの任意の１つを含み得る。適切なコンピュータ可読媒体のより具体的な例は、磁気テープ、磁気フロッピーディスク、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、ＵＳＢフラッシュドライブ、または光ディスクを含むであろうが、これに限定されるものではない。また、コンピュータ可読媒体は、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）及びダイナミックランダムアクセスメモリ（ＤＲＡＭ）、または磁気ランダムアクセスメモリ（ＭＲＡＭ）を含むランダムアクセスメモリ（ＲＡＭ）であってもよい。さらに、コンピュータ可読媒体は、読み取り専用メモリ（ＲＯＭ）、プログラマブル読み取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）、または他の種類のメモリデバイスであってもよい。
【０１０１】
さらにまた、ＲＤＵディスパッチアプリケーション３２１，駆動エージェント３２２及び経路生成アプリケーション３２３を含めた、本明細書に記載される任意の論理またはアプリケーションは、様々な方法で実装され、構築される場合がある。例えば、説明する１つ以上のアプリケーションは、単一のアプリケーションのモジュールまたは構成要素として実装されてよい。さらに、本明細書に説明する１つ以上のアプリケーションは、共有コンピューティングデバイスまたは別々のコンピューティングデバイスあるいはその組み合わせで実行されてもよい。例えば、本明細書に説明する複数のアプリケーションは、同じコンピューティングデバイス６００で、または同じコンピューティング環境３０３内の複数のコンピューティングデバイスで実行することができる。
【０１０２】
Ｘ、ＹまたはＺのうちの少なくとも１つ」という表現などの選言的な言語は、そうでないことが具体的に述べられていない限り、その他の場合、項目、用語等がＸ、ＹもしくはＺまたはそのいずれかの組み合わせ（例えばＸ、ＹまたはＺ）のいずれかであり得ることを提示するために一般的に用いられるとしてその文脈によって理解される。ゆえに、係る選言的言語は、特定の実施形態がＸの少なくとも１つ、Ｙの少なくとも１つ、またはＺの少なくとも１つがそれぞれ存在することを要求することを暗に示すことを概して意図しておらず、そうすべきではない。
【０１０３】
本開示の実施形態の例は、以下の条項を鑑みて説明することができる。
【０１０４】
条項１．下向きのカメラと、前向きのカメラと、プロセッサと、前記プロセッサによって実行される際、システムに少なくとも、保管ユニットの下に移動する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込む、前記基準の上で前記システムを中心に配置する、前記基準の周りの所定の場所で前記システムを回転させる、前記システムが回転する際、前記前向きのカメラによってパノラマ画像を取り込む、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記パノラマ画像内の前記複数の脚に少なくともある程度基づいて、前記基準に対する前記保管ユニットの前記中心の場所を三角測量する、前記システムが前記保管ユニットに対して中心に位置することを特定する、前記保管ユニットを持ち上げる、前記システムに前記保管ユニットを持ち上げさせることに応答して前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込む、前記保管ユニットを新たな場所に移動させる、前記システムが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込む、前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の変化を測定する、前記位置の変化に少なくともある程度基づいてシステムの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる機械可読命令を記憶するメモリとを備えるシステム。
【０１０５】
条項２．  前記前向きのカメラは、ポイントクラウドを取り込むように構成された三次元カメラを備え、前記パノラマ画像はポイントクラウドを含む、条項１に記載のシステム。
【０１０６】
条項３．  前記下向きのカメラは、前記システムの底面上に位置する、条項１または２に記載のシステム。
【０１０７】
条項４．  ロボット駆動ユニットであって、前向きのカメラと、下向きのカメラと、プロセッサと、プロセッサと、メモリと、アプリケーションであって、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、保管ユニットの下に移動する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込む、前記基準に対して前記ロボット駆動ユニットを位置決めする、前記ロボット駆動ユニットを所定の場所で回転させる、前記前向きのカメラによってパノラマ画像を取り込む、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、前記基準に対する前記保管ユニットの下の場所を計算する、前記ロボット駆動ユニットが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、前記保管ユニットの下の前記計算した場所まで進む、及び前記保管ユニットを持ち上げるようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションとを備える、前記ロボット駆動ユニット。
【０１０８】
条項５．  ネットワークインターフェースをさらに備え、前記基準は第１の基準を有し、前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの１つにある第２の基準を識別する、前記第２の基準から前記保管ユニットの識別子を抽出する、前記保管ユニットの前記識別子を含むリクエストを前記ネットワークインターフェースを介してリモートコンピューティングデバイスに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１０９】
条項６．前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込む、前記保管ユニットを新たな場所に移動させる、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込む、前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の変化を測定する、及び前記位置の変化に少なくともある程度基づいて前記ロボット駆動ユニットの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１０】
条項７．  ネットワークインターフェースをさらに備え、前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットに前記保管ユニットを持ち上げさせることに応答して、前記前向きのカメラを利用して第１の画像を取り込む、前記保管ユニットの前記複数の脚のうちの少なくとも２つが前記第１の画像の中にあることを確認する、前記保管ユニットを新たな場所に移動させる、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して第２の画像を取り込む、前記保管ユニットの前記複数の脚のうちの前記少なくとも２つが、前記第２の画像からなくなっていることを確認する、前記ネットワークインターフェースを介して、前記保管ユニットが前記ロボット駆動ユニットから落下していることを示す警告をリモートコンピューティングデバイスに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１１】
条項８．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込む、ロボット駆動ユニットが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込む、前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の垂直方向の変化を測定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１２】
条項９．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の前記垂直方向の変化に少なくともある程度基づいて、前記保管ユニットが転倒する可能性を計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１３】
条項１０．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記保管ユニットの揺れの大きさを計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１４】
条項１１．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記ロボット駆動ユニットが移動する間、前記保管ユニットの垂直方向の変位の大きさを計算するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１５】
条項１２．  前記下向きのカメラは、前記ロボット駆動ユニットの底面上に位置する、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１６】
条項１３．  前記前向きのカメラは、ポイントクラウドを取り込むように構成された三次元カメラを備える、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１７】
条項１４．  前記パノラマ画像は、前記ポイントクラウドを含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１８】
条項１５．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記保管ユニットを移動させる、前記前向きのカメラを利用して画像を取り込む、前記ロボット駆動ユニットの現在の経路を遮る前記画像内の障害物を識別するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１１９】
条項１６．  前記アプリケーションは、前記プロセッサによって実行される際、前記ロボット駆動ユニットに、前記画像内の前記障害物の識別に応答して、リモートコンピューティングデバイスから前記ロボット駆動ユニットのための新たな経路を要求するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のロボット駆動ユニット。
【０１２０】
条項１７．  プロセッサ及びメモリを備えるコンピューティングデバイスと、ネットワークを介して前記コンピューティングデバイスとデータ通信し、前向きのカメラ及び下向きのカメラを備えるロボット駆動ユニット（ＲＤＵ）と、アプリケーションであって、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記保管ユニットの下に移動するように前記ＲＤＵに命令する、前記下向きのカメラを利用して地面の上に位置する基準の画像を取り込むように前記ＲＤＵに命令する、前記基準に対して自身を位置決めするように前記ＲＤＵに命令する、所定の場所で回転するように前記ＲＤＵに命令する、前記前向きのカメラによってパノラマ画像を取り込むように前記ＲＤＵに命令する、前記ＲＤＵから前記パノラマ画像を受け取る、前記パノラマ画像内で前記保管ユニットの複数の脚を識別する、前記保管ユニットの前記複数の脚の各々から前記基準までの距離を測定する、前記基準に対する前記保管ユニットの下の場所を計算する、前記ＲＤＵが、前記保管ユニットの下の前記計算した場所に対して所定の位置の外にあることを特定する、前記保管ユニットの下の前記計算した場所まで進むように前記ＲＤＵに命令する、及び前記保管ユニットを持ち上げるように前記ＲＤＵに命令するようにさせる、前記メモリに記憶された機械可読命令を含む、前記アプリケーションとを備えるシステム。
【０１２１】
条項１８．  前記基準は第１の基準を有し、前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記パノラマ画像内で前記保管ユニットの前記複数の脚のうちの１つにある第２の基準を識別する、前記第２の基準から前記保管ユニットの識別子を抽出する、前記保管ユニットの前記識別子を含むリクエストを第２のアプリケーションに送るようにさせる、前記メモリに記憶された機械可読命令をさらに含む第１のアプリケーションを有する、前記条項のいずれかに記載システム。
【０１２２】
条項１９．  前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記ＲＤＵが前記保管ユニットを持ち上げることに応答して、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込むように前記ＲＤＵに命令する、前記保管ユニットを新たな場所に移動させるように前記ＲＤＵに命令する、前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込むように前記ＲＤＵに命令する、前記第１の画像及び前記第２の画像を前記ＲＤＵから受け取る、前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の変化を測定する、前記位置の変化に少なくともある程度基づいて前記ＲＤＵの頂部において前記保管ユニットが位置または配向を変更したことを特定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のシステム。
【０１２３】
条項２０．  前記アプリケーションは、前記プロセッサによって実行される際、前記コンピューティングデバイスに少なくとも、前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの少なくとも２つの第１の画像を取り込むように前記ＲＤＵに命令する、前記ＲＤＵが移動する間、前記前向きのカメラを利用して前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの第２の画像を取り込むように前記ＲＤＵに命令する、前記第１の画像と比較した前記第２の画像における前記保管ユニットの前記複数の脚のうちの前記少なくとも２つの位置の垂直方向の変化を測定するようにさせる、前記メモリに記憶された機械可読命令をさらに含む、前記条項のいずれかに記載のシステム。
【０１２４】
本開示の上述の実施形態は、本開示の原理を明確に理解するために記述される単に実施態様の可能な例にすぎないことを強調すべきである。本開示の精神及び原理から実質的に逸脱することなく、上述の実施形態（複数可）に多くの変形及び修正を加えることができる。すべての係る修正例及び変形例が、本開示の範囲内で本明細書に含有され、以下の請求項によって保護されることが意図される。
【図１】
2019533621.tif 000003
【図２】
2019533621.tif 000004
【図３】
2019533621.tif 000005
【図４Ａ】
2019533621.tif 000006
【図４Ｂ】
2019533621.tif 000007
【図４Ｃ】
2019533621.tif 000008
【図５Ａ】
2019533621.tif 000009
【図５Ｂ】
2019533621.tif 000010
【図５Ｃ】
2019533621.tif 000011
【図６】
2019533621.tif 000012
【国際調査報告】
2019533621.tif 000013
2019533621.tif 000014
2019533621.tif 000015
2019533621.tif 000016