IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ブルックハースト ガレージ インコーポレイテッドの特許一覧

特表2024-542033センサ・フュージョンを使用する精密な高度推定
<>
  • 特表-センサ・フュージョンを使用する精密な高度推定 図1
  • 特表-センサ・フュージョンを使用する精密な高度推定 図2
  • 特表-センサ・フュージョンを使用する精密な高度推定 図3
  • 特表-センサ・フュージョンを使用する精密な高度推定 図4
  • 特表-センサ・フュージョンを使用する精密な高度推定 図5
  • 特表-センサ・フュージョンを使用する精密な高度推定 図6A
  • 特表-センサ・フュージョンを使用する精密な高度推定 図6B
  • 特表-センサ・フュージョンを使用する精密な高度推定 図6C
  • 特表-センサ・フュージョンを使用する精密な高度推定 図7A
  • 特表-センサ・フュージョンを使用する精密な高度推定 図7B
  • 特表-センサ・フュージョンを使用する精密な高度推定 図8
  • 特表-センサ・フュージョンを使用する精密な高度推定 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】センサ・フュージョンを使用する精密な高度推定
(51)【国際特許分類】
   G05D 1/48 20240101AFI20241106BHJP
   G05D 1/46 20240101ALI20241106BHJP
【FI】
G05D1/48
G05D1/46
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024525710
(86)(22)【出願日】2022-11-01
(85)【翻訳文提出日】2024-06-28
(86)【国際出願番号】 US2022048499
(87)【国際公開番号】W WO2023076708
(87)【国際公開日】2023-05-04
(31)【優先権主張番号】63/274,448
(32)【優先日】2021-11-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Linux
(71)【出願人】
【識別番号】523008037
【氏名又は名称】ブルックハースト ガレージ インコーポレイテッド
(74)【代理人】
【識別番号】100095407
【弁理士】
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【弁理士】
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【弁理士】
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【弁理士】
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】キム、ユン ジュン
(72)【発明者】
【氏名】リ、キュムアン
【テーマコード(参考)】
5H301
【Fターム(参考)】
5H301AA06
5H301BB14
5H301BB20
5H301CC04
5H301CC07
5H301DD01
5H301DD15
5H301GG08
5H301GG09
5H301GG14
5H301GG16
5H301LL01
5H301LL03
5H301LL06
(57)【要約】
飛行ロボットは、距離センサと視覚慣性センサを含むことがある。飛行ロボットは、距離センサ・データを用いて、第1の表面レベルを有する第1の領域に関する飛行ロボットの第1の推定高度を決定することがある。飛行ロボットは、第1の推定高度に基づいて第1の領域の少なくとも一部の上を飛行することがある。飛行ロボットは、第1の領域と、第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域内に存在すると判定することがある。飛行ロボットは、視覚慣性センサからのデータを用いて、飛行ロボットの第2の推定高度を決定することがある。飛行ロボットは、移行領域内において、第2の推定高度を用いて飛行を制御することがある。第2の領域において、飛行ロボットは、高度を推定する際に距離センサの使用に戻すことがある。
【選択図】図6C
【特許請求の範囲】
【請求項1】
飛行ロボットを作動させる方法であって、
前記飛行ロボットの距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記飛行ロボットが、前記第1の領域と、前記第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域内に存在することを判定すること、
前記飛行ロボットの視覚慣性センサからのデータを用いて前記飛行ロボットの第2の推定高度を決定すること、及び、
前記移行領域における前記第2の推定高度を用いて前記飛行ロボットの前記飛行を制御すること、
を含む、方法。
【請求項2】
前記第1の領域は地上レベルに対応し、前記第2の領域は前記地上レベルに置かれた障害物に対応する、請求項1に記載の方法。
【請求項3】
前記距離センサからのデータを用いて前記第1の表面レベルを有する前記第1の領域に関する前記飛行ロボットの前記第1の推定高度を決定することは、
前記距離センサの前記データからの距離読み取り値を受け取ること、
前記飛行ロボットのロール角及びピッチ角を含む、前記飛行ロボットの姿勢を受け取ること、及び、
前記ロール角及び前記ピッチ角によって調整された前記距離読み取り値から前記第1の推定高度を決定すること、
を含む、請求項1に記載の方法。
【請求項4】
前記飛行ロボットが前記第1の領域と前記第2の領域との間の前記移行領域内に存在することを判定することは、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度を決定すること、
前記飛行ロボットが前記第2の領域内に存在する第2の尤度を決定すること、及び、
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定すること、
を含む、請求項1に記載の方法。
【請求項5】
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定することは、
前記飛行ロボットが前記第1の領域内に存在する可能性が低いことを示す前記第1の尤度と、前記飛行ロボットが前記第2の領域内に存在しない可能性を示す前記第2の尤度との両方に応答して、前記飛行ロボットが前記移行領域内に存在することを判定すること、
を含む、請求項4に記載の方法。
【請求項6】
前記飛行ロボットが前記第1の領域と前記第2の領域との間の前記移行領域内に存在することを判定することは、障害物の存在を判定することを含み、
前記障害物の存在を判定することは、
前記距離センサの前記データから距離読み取り値の平均を決定すること、
前記平均と、特定のインスタンスにおける特定の距離読み取り値との間の差を決定すること、及び、
前記差が閾値より大きいことに応答して、前記障害物が前記特定のインスタンスに存在する可能性が高いと判定すること、
を含む、請求項1に記載の方法。
【請求項7】
前記飛行ロボットの前記視覚慣性センサからのデータを用いて前記飛行ロボットの前記第2の推定高度を決定することは、
前記距離センサの読み取り値と、前記視覚慣性センサの読み取り値との推定差である、視覚慣性バイアスを決定すること、
前記視覚慣性センサの前記データからの読み取り値を受け取ること、及び、
前記視覚慣性バイアスによって調整された前記読み取り値を用いて前記第2の推定高度を決定すること、
を含む、請求項1に記載の方法。
【請求項8】
前記視覚慣性バイアスは、前の期間からの前記視覚慣性センサの前記読み取り値の平均から決定される、請求項7に記載の方法。
【請求項9】
前記飛行ロボットが閾値期間超の間前記第2の領域内に存在することを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
をさらに含む、請求項1に記載の方法。
【請求項10】
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの前記第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すことは、
距離センサバイアスを決定すること、及び、
前記距離センサバイアスによって調整された前記距離センサからの前記データを用いて前記第3の推定高度を決定すること、
を含む、請求項9に記載の方法。
【請求項11】
距離センサ、
視覚慣性センサ、
前記距離センサ及び前記視覚慣性センサに連結された1以上のプロセッサ、及び、
命令を保存するように構成されたメモリ、
を含む、飛行ロボットであって、
前記命令は、前記1以上のプロセッサによって実行されるとき、
前記飛行ロボットの前記距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記第1の領域と、前記第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域内に前記飛行ロボットが存在することを判定すること、
前記飛行ロボットの前記視覚慣性センサからのデータを用いて、前記飛行ロボットの第2の推定高度を決定すること、及び、
前記移行領域内の前記第2の推定高度を用いて前記飛行ロボットの前記飛行を制御すること、
を含む工程を前記1以上のプロセッサに実行させる、
飛行ロボット。
【請求項12】
前記第1の領域は地上レベルに対応し、前記第2の領域は前記地上レベルに置かれた障害物に対応する、請求項11に記載の飛行ロボット。
【請求項13】
前記距離センサからのデータを用いて、前記第1の表面レベルを有する前記第1の領域に関する前記飛行ロボットの前記第1の推定高度を決定するための命令は、
前記距離センサの前記データからの距離読み取り値を受け取るための命令、
前記飛行ロボットのロール角及びピッチ角を含む、前記飛行ロボットの姿勢を受け取るための命令、及び、
前記ロール角及び前記ピッチ角によって調整された前記距離読み取り値から前記第1の推定高度を決定するための命令、
を含む、請求項11に記載の飛行ロボット。
【請求項14】
前記第1の領域と前記第2の領域との間の前記移行領域内に前記飛行ロボットが存在することを判定するための命令は、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度を決定するための命令、
前記飛行ロボットが前記第2の領域内に存在する第2の尤度を決定するための命令、及び、
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定するための命令、
を含む、請求項11に記載の飛行ロボット。
【請求項15】
前記飛行ロボットの前記視覚慣性センサからのデータを用いて前記飛行ロボットの前記第2の推定高度を決定するための命令は、
前記距離センサの読み取り値と、前記視覚慣性センサの読み取り値との推定差である、視覚慣性バイアスを決定するための命令、
前記視覚慣性センサの前記データからの読み取り値を受け取るための命令、及び、
前記視覚慣性バイアスによって調整された前記読み取り値を用いて前記第2の推定高度を決定するための命令、
を含む、請求項11に記載の飛行ロボット。
【請求項16】
前記視覚慣性バイアスは、前の期間からの前記視覚慣性センサの前記読み取り値の平均から決定される、請求項15に記載の飛行ロボット。
【請求項17】
前記命令は、実行されるとき、さらに前記1以上のプロセッサに、
閾値期間超の間、前記飛行ロボットが前記第2の領域内に存在することを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
を実行させる、請求項11に記載の飛行ロボット。
【請求項18】
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すための命令は、
距離センサバイアスを決定するための命令、及び、
前記距離センサバイアスによって調整された前記距離センサからの前記データを用いて第3の推定高度を決定するための命令
を含む、請求項17に記載の飛行ロボット。
【請求項19】
距離センサと視覚慣性センサとを含む飛行ロボットを作動させる方法であって、
前記飛行ロボットの距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度が第1の閾値未満であることを判定すること、及び、
前記第1の尤度が前記第1の閾値未満であることに応答して、前記視覚慣性センサからの前記データを用いて前記飛行ロボットの第2の推定高度を決定すること、
を含む、方法。
【請求項20】
前記飛行ロボットが第2の領域内に存在する第2の尤度が第2の閾値を超えることを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間に前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
をさらに含む、請求項19に記載の方法。

【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
この出願は2021年11月1日に提出された米国仮特許出願番号第63/274,448号の利益を主張し、米国仮特許出願番号第63/274,448号の全体を参照としてここに取り込む。
【0002】
(技術分野)
本開示は、一般に飛行ロボットの高度推定に関し、より具体的には、高度を正確に推定するために異なるセンサを使用するロボットに関する。
【背景技術】
【0003】
ドローンのような飛行ロボットが自律的であるためには、飛行ロボットは物体に衝突することなく環境内を航行する必要がある。任意の時間インスタンスにおけるロボットの高度を推定することは、ロボットのナビゲーション及び衝突回避にとって重要であり、特に屋内環境において重要である。従来、飛行ロボットは、飛行ロボットが高度を推定するために、様々な高度における気圧変化を測定する気圧計を備えることもある。しかし、気圧計から得られる測定値は、高精度の高度推定を行うには感度が十分でないことが多い。また、屋内での気圧変化は、十分に有意でないか、或いは測定不能でさえある。したがって、飛行ロボットの高度推定は困難である。
【発明の概要】
【課題を解決するための手段】
【0004】
実施形態は、距離センサ及び視覚慣性センサを含むことがある飛行ロボットに関する。実施形態はまた、距離センサ及び視覚慣性センサを用いて高度推定を実行するロボットのための方法に関する。本方法は、飛行ロボットの距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に対する飛行ロボットの第1の高度推定方法を決定することを含むことがある。また、これらの方法は、第1の推定高度に基づいて、第1の領域の少なくとも一部にわたる飛行ロボットの飛行を制御することを含むことがある。本方法は、飛行ロボットが、第1の領域と、第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域に存在すると判定することをさらに含むことがある。本方法は、飛行ロボットの視覚慣性センサからのデータを用いて飛行ロボットの第2の高度推定を決定することをさらに含むことがある。本方法は、移行領域における第2の高度推定を用いて飛行ロボットの飛行を制御することをさらに含むことがある。飛行ロボットは、高度推定方法を実行するための命令を記憶するための1個以上のプロセッサ及びメモリを含むことがある。
【図面の簡単な説明】
【0005】
図1】いくつかの実施例による、例示の保管サイトのシステム環境を示すブロック図である。
図2】いくつかの実施例による、例示のロボットと、例示のベース・ステーションとの構成要素を示すブロック図である。
図3】いくつかの実施例による、保管サイトの在庫品を管理する例示のプロセスを表すフローチャートである。
図4】いくつかの実施例による、ロボットを備える保管サイトの例示のレイアウトの概念図である。
図5】いくつかの実施例による、ロボットの例示のナビゲーション・プロセスを表すフローチャートである。
図6A】飛行ロボットの飛行経路を示す概念図である。
図6B】いくつかの実施例による、飛行ロボットの飛行経路を示す概念図である。
図6C】いくつかの実施例による、飛行ロボットの垂直高度レベルを推定する例示のプロセスを表すフローチャートである。
図7A】いくつかの実施例による、例示の高度推定アルゴリズムを示すブロック図である。
図7B】いくつかの実施例により、飛行ロボットが障害物の上を飛び、かつ、水平飛行を維持する際の、高度推定アルゴリズムの異なるファンクションと、センサ・データとの使用を示す概念図である。
図8】いくつかの実施例による、例示の機械学習モデルを示すブロック図である。
図9】いくつかの実施例による、例示のコンピューティング・マシンの構成要素を示すブロック図である。
【0006】
説明の目的のためにのみ、非限定的な様々な実施例を、図は表し、詳細な説明は記載する。
【発明を実施するための形態】
【0007】
図と以下の説明は、実例として好ましい実施例に関するのみである。当業者は、開示されたものの本質を逸脱しない範囲で採用されうる現実的代案として、ここで開示される構造と方法の代わりの実施例を認識する可能性がある。
【0008】
ここで、参照は、いくつかの実施例の詳細においてなされ、参照の例は、添付の図に示される。なお、実行可能な類似した又は同様の参照番号が数字で使用される場合はいつでも、類似した又は同様の参照番号は、類似した又は同様の機能を示す可能性がある。図は、説明目的のためにのみ開示されたシステム(又は方法)の実施例を表す。当業者は、ここに示される構造と方法の代わりの実施例が、ここに記述される本質を逸脱しない範囲で採用されうると、以下の説明からすぐに認めるだろう。
【0009】
実施例は、距離センサ及び視覚慣性センサを併用してロボットの高度を正確に推定することによって水平飛行で環境を移動する飛行ロボットに関する。距離センサ及び視覚慣性センサは、高度を推定するための異なる方法を使用しても良い。2個のセンサから生成されたデータは、正確な高度推定を提供するために互いに補完するように使用されても良い。いくつかの実施例では、飛行ロボットは、飛行ロボットが平坦な表面を移動するときに距離センサを使用して高度を推定しても良い。飛行ロボットは、2個の異なるセンサからのデータの間のバイアスを監視しても良い。2つの平坦な表面の間の移行領域では、飛行ロボットは、視覚慣性センサを用いるように切り替わっても良い。飛行ロボットは、監視されたバイアスを用いて視覚慣性センサからのデータを調整しても良い。
【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は、様々なアイテムが置かれて、体系的に保管される特定のレイアウトを含んでも良い。例えば、倉庫内では、ラックはセクション別に分類され、通路で分けられていても良い。各々のラックは、行番号と列番号を使って特定されうる複数のパレット位置を含んでも良い。保管サイトは高いラックと低いラックを含んでも良く、ある場合は、主に地上レベル(ground level)の近くに大部分の在庫品アイテムを運んでも良い。
【0012】
保管サイト110は、保管サイト110内の在庫品を追跡し、在庫品を管理するのに使用される1以上のロボット120を含んでも良い。参照の容易さのために、例え1台以上のロボット120が使用されるとしても、ロボット120は単数形で記載される可能性がある。また、いくつかの実施例では、1種類以上のロボット120が、保管サイト110に存在しうる。例えば、いくつかのロボット120は保管サイト110で在庫品をスキャンすることに特化する一方で、他のロボット120はアイテムを動かすことに特化しても良い。ロボット120は、また、自律ロボット、又は在庫品循環棚卸ロボット、又は在庫品調査ロボット、又は在庫品検出ロボット、又は在庫品管理ロボットとも呼ばれても良い。在庫品ロボットは、在庫品アイテムを追跡し、在庫品アイテムを動かし、他の在庫品管理作業を実行するのに使用されても良い。自律の程度は、実施例と実施例の間で変化しても良い。例えば、いくつかの実施例では、ロボット120が割り当てられた作業を自動的に実行するように、ロボット120は完全自律性であっても良い。他の実施例では、ロボット120が最小の人間の命令又は制御で保管サイト110を移動可能なように、ロボット120は半自律性であっても良い。いくつかの実施例では、ロボット120が、どの程度の自律性を有していても、ロボット120は遠隔操作されても良く、マニュアルモードに切り替えられても良い。ロボット120は、空中無人機、地上ロボット(ground robot)、車両、フォークリフト、モバイル・ピッキングロボットのような様々な種類を採用しても良い。
【0013】
ベース・ステーション130は、ロボット120が戻るための、空中ロボットが着陸するための、デバイスであっても良い。ベース・ステーション130は、1以上の戻り場所を含んでも良い。ベース・ステーション130は、ロボット120に再度動力を供給するのに使用されても良い。ロボット120に再度動力を供給する様々な方法が、様々な実施例で使用されても良い。例えば、いくつかの実施例では、ベース・ステーション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))、又は有線通信のような、どのような適当な方法で通信しても良い。いくつかの実施例では、ロボット120は主にベース・ステーションと通信する一方、他の実施例では、ロボット120は、システム環境100内の他の構成要素と直接通信する能力を有していても良い。いくつかの実施例では、ベース・ステーション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と、イナーシャル測定装置(inertial 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(登録商標)などのような適切なオペレーティングシステム上で動いても良い。例えば、いくつかの実施例では、ロボット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の推定位置を取得しても良い。IMU230は、ロボット120の向きを測定しても良い。例えば、IMU230のジャイロスコープは、ロボット120のピッチ角度と、ロール角と、ヨー角の読み取り値を提供しても良い。
【0028】
状態推定器235は、プロセッサ215に実行されうる、メモリ220に記憶されたソフトウェアの命令のセットに相当しても良い。状態推定器235は、ロボット120の位置特定情報を生成するのに使用されても良く、ロボット120の状態を推定するための様々なサブの構成要素を含んでも良い。例えば、いくつかの実施例では、状態推定器235は、ビジュアル・イナーシャル・オドメトリ(visual-inertial odometry(VIO))ユニット236と高度推定器238を含んでも良い。他の実施例では、他のモジュールとセンサとアルゴリズムが、状態推定器238でロボット120の位置を特定するのに使用されても良い。
【0029】
VIOユニット236は、画像センサ210(例えば、ステレオカメラ)から画像データを、IMU230から測定値を受信し、ロボット120の位置及び向きのような位置特定情報を生成する。IMU230からの加速測定値の二重積分から得られる位置データは、しばしば、ドリフト誤差の傾向がある。VIOユニット236は画像特徴点を抽出し、画像シーケンスの特徴点を追跡して、画像センサ210にとらえられた環境内の物体のエッジと境界と表面の移動を表すオプティカルフロー・ベクトルを生成する。フィルタリング(例えば、ウィーナーフィルタ、カルマンフィルタ、帯域通過フィルタ、粒子フィルタ)と最適化のような様々な信号処理技術と、データ/画像変換が、位置特定情報の決定における様々なエラーを減らすのに用いられても良い。VIOユニット236によって生成された位置特定データは、ロボット120の姿勢(pose)の推定を含むことがあり、これは、ロボット120のロール角、ピッチ角及びヨー角に関して表されても良い。
【0030】
高度推定器238は、ロボット120の絶対高度と相対的な高度(例えば、床(floor)上にある物体からの距離)を決定するのに用いられる、ソフトウェアとハードウェアの組合せであっても良い。高度推定器238は、ロボット120の地面(ground)に対する高度、又はロボット120の下の物体に対する高度を測定する距離センサ239を含めても良い。距離センサ239は、電磁波式、レーザ式、光学式、音響式、超音波式又はその他の適当な信号式であっても良い。例えば、距離センサ239は、レーザ距離計、ライダー距離計、音響距離計、超音波距離計又はレーダであっても良い。距離計は、又は(例えば赤外線、レーザ、音響等の)信号を放射する1以上のエミッタと、物で反射する信号の往復時間を検知する1以上のセンサとを含んでも良い。いくつかの実施例では、ロボット120は、単一のエミッタ距離計を装備しても良い。高度推定器238は、ロボット120の高度を推定するVIOユニット236から、データを受信しても良いが、通常、距離センサ239と比べ、あまり正確でない方法である。ロボット120が、床又は他の水平面に置かれた様々な物と在庫品の上を飛ぶ場合、高度推定器238は、距離センサ239で生成したデータとVIOユニット236で生成したデータとを結合するためのソフトウェア・アルゴリズムを含んでも良い。高度推定器238で生成したデータは、衝突回避と目標位置発見のために使用されても良い。高度推定器238は、ロボット120が天井にぶつかるのを防ぐために、グローバルな最大高度を設定しても良い。高度推定器238は、ロボット120が目標位置を突き止めるように、ラックの行がいくつロボットの下に存在するかに関する情報も提供する。高度データは、ロボット120の垂直レベルを特定するために、ロボット120が通り過ぎた行の数と共に使用されても良い。高度推定は、図6Aないし図7Bを参照してさらに詳細に説明されるであろう。
【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は、様々な位置情報(近くの物体に対する位置情報と位置特定情報を含む)を生成するために、様々な構成要素を使用しても良い。例えば、いくつかの実施例では、状態推定器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は、ロボット120がシステム環境100内の他の構成要素との通信を可能とする通信構成要素である。ロボット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は、奥行きセンサ・データから通路とラックとセルの寸法を計測しても良いし、又は、視覚的参照エンジン240とともに、プランナー250によって実行される、ロボット120が通り過ぎた行と列の数を数えることによって保管サイト110を通り過ぎるためのカウント方法を使用しても良い。それゆえに、いくつかの実施例では、ラックの正確な寸法が必要とされなくても良い。
【0048】
いくつかの構成情報は、保管サイト110のアドミニストレータによって、手入力されても良い。例えば、アドミニストレータは、セクションの数と、各セクションの通路とラックの数と、ラックのセルの寸法とを提供しても良い。アドミニストレータは、各ラックの行と列の数を入力しても良い。
【0049】
代替的に又は付加的に、構成情報は、飛行前マッピング又はロボット120が在庫品管理作業を実行するときに行われるマッピング・プロセスのような、マッピング・プロセスからも取得されても良い。例えば、自動化の管理方法を新しく実行する保管サイト110のために、アドミニストレータは、保管サイトの移動可能なスペースのサイズを、保管サイト110内のセクションと通路と規則的に形づくられた構造の行と列との数を数えるための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に戻る(350)。ロボット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を識別するのに用いられても良い。あるいは、ラックの上方と下方は、異なる通路番号を有しても良い。抜き取り検査では、ロボット120は、1箇所だけならば単一の座標が提供され、1以上の箇所ならば複数の座標が提供されても良い。範囲内のパレット460をチェックする範囲スキャンでは、ロボット120は、通路番号と、ラック番号と、開始行と、開始列と、終わりの行と、終わりの列のような、座標の範囲を提供されても良い。いくつかの実施例では、パレットの位置座標は、異なる方法で呼ばれても良い。例えば、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に向かいあう正しい角度へと回転することを含んでも良い。
【0060】
ロボット120が目標位置474へ移動するとき、ロボット120は画像センサ210を用いて保管サイト110の画像をとらえる(530)。とらえられる画像は、連続画像であっても良い。ロボット120は、ロボット120が経路470に沿って移動するときに画像センサ210がとらえた画像を受信する(540)。画像は、ラックのような規則的に形づくられた構造を含む、環境内の物体をとらえても良い。例えば、ロボット120は、規則的に形づくられた構造を視覚的に認識するために、視覚的参照エンジン240のアルゴリズムを使用しても良い。
【0061】
ロボット120は、画像センサ210がとらえた画像を分析して、ロボット120が通り過ぎた、保管サイトの規則的に形づくられた構造の数を追跡することによって、経路470でのロボット120の現在位置を特定する(540)。ロボット120は、様々な画像処理技術と物体認識技術を使用して、規則的に形づくられた構造を特定し、ロボット120が通り過ぎた構造の数を追跡しても良い。図4に示された経路470に関して、ロボット120は、ラック410に対向しつつ、ターニングポイント476まで移動しても良い。ロボット120は、自身が2つのラック410を通り過ぎたので、目標通路に到着したと決定する。応じて、ロボット120は、反時計回りに回転して、目標ラックに対向して目標通路に入る。ロボット120は、目標の列に着くまで、自身が通り過ぎた列の数を数える。目標の行に従って、ロボット120は上又は下に垂直に移動して、目標位置に到着しても良い。目標位置に到着すると、ロボット120は、目標位置で在庫品の写真を撮ることのような、入力コマンドで特定された行動を実行する。
【0062】
例示の水平飛行作業
図6Aは、飛行ロボット602の飛行経路を示す概念図である。飛行ロボット602は、第1表面レベル605を有する第1領域604、第2表面レベル607を有する第2領域606、及び第3表面レベル609を有する第3領域608の上を移動する。例えば、第1の領域604は床に対応しても良く、第2及び第3の領域606及び608は床上の障害物(例えば、床上の物体、又は保管サイトの設定において床上に置かれたパレット及び在庫品アイテム)に対応しても良い。図6Aは、特に、屋内飛行や低高度の屋外飛行など、高度を正確に測定する必要がある設定において、ほぼ一定の高度で水平飛行を行うように飛行ロボットを移動させることの課題を示す。従来、飛行ロボットは気圧計で気圧の変化を測定し、高度を推測することがある。しかし、屋内や低高度の設定では、飛行ロボット602が高度を測定できるようにするためには、気圧変化が十分に大きくないか、あるいは測定できない程度であることさえある。
【0063】
図6Aは、高度を測定するために距離センサを使用する飛行ロボット602を示す。飛行ロボット602は、飛行ロボット602が移動する表面から一定の距離を維持するようにプログラムされている。距離センサは、飛行ロボット602とその下の表面との間の比較的正確な距離測定値を生成することがあるが、距離センサは、センサのエミッタから移動し、表面によって反射されてセンサのレシーバに戻る信号(例えば、レーザ)の往復時間を測定することが多いので、距離センサは、異なる領域のレベルの変化を決定することができない。第2の領域606は第1の領域604から高くなっており、第3の領域608はさらに高くなっているため、下の表面から一定の距離を維持している飛行ロボット602は、図6Aに図示される飛行経路を示すことがあり、水平飛行を行うことができない。
【0064】
水平飛行を維持できないことは、飛行ロボット602の移動に様々な課題をもたらす可能性がある。例えば、図6Aに示されるタイプの飛行中の高度の望ましくない変化は、高度の変化に生じるドリフトのため、飛行ロボット602の位置及び位置特定データの生成に影響を与えることがある。屋内の設定では、検出されない高度の増加は、飛行ロボット602を建物の天井に衝突させる可能性がある。保管サイト110の設定では、図6Aに示される飛行経路は、飛行ロボット602が在庫品のスキャンを実行すること、又は保管ラックの同じ列を横切って移動することを妨げることがあり得る。
【0065】
図6Bは、いくつかの実施例による飛行ロボット610の飛行経路を示す概念図である。飛行ロボット610は、図1乃至図5で論じたロボット120の一例の場合がある。図1乃至図5における説明は保管サイトにおけるロボット120の移動に焦点を当てているが、図6B乃至図7Bにおいて議論される高度推定は屋内設定に限定されない。飛行ロボット610は、ロボット120として機能することに加えて、正確な高度測定を必要とする低高度飛行のような屋外環境でも使用されることがある。いくつかの実施例において、本開示に記載の高度推定方法は、気圧計と組み合わせて、又は気圧計の代わりに、高高度飛行ロボットに使用することもできる。飛行ロボット610は、ドローン、無人車両、自律型車両、又は飛行可能な他の適切な機械であっても良い。
【0066】
いくつかの実施例において、飛行ロボット610は、距離センサ(例えば、距離センサ239)と視覚慣性センサー(例えば、VIOユニット236)を備える。飛行ロボット610は、領域604、606及び608における表面レベルの変化にもかかわらず、水平飛行を維持するように飛行ロボット610を移動するために、距離センサ及び視覚慣性センサの解析の統合に依存することがある。ここでも、第1の領域604は床に対応しても良く、第2及び第3の領域606及び608は床上の障害物(例えば、床上の物体、又は保管サイトの設定において床上に置かれたパレット及び在庫品)に対応しても良い。
【0067】
飛行ロボット610は、飛行ロボット610が第1の領域604、第2の領域606及び第3の領域608のいずれの上を移動しているかに関わらず、垂直推定高度を決定するために、両方のセンサからのデータを用いて互いのデータを補正及び調整することがある。距離センサは、距離センサの送信機から送信され、送信機が向いている近くの表面によって反射された信号の往復時間に基づいて、距離読み取り値の非常に正確な測定値(フィート以内の誤差、時には数インチ以内の誤差、又はさらに小さい誤差)を返すことがある。しかし、距離センサからの距離測定値は、距離センサの送信機が向いている面を高くする障害物の存在のような近くの環境の変化によって影響を受けることがある。また、飛行ロボット610の向きにより、距離センサの向きも真下を向いていないことがある。例えば、図6Bにおいて、飛行ロボット610は、負のピッチ角620及び正のロール角622を有するように図示されている。その結果、距離センサが発する信号は、完全に垂直な経路ではない経路624に沿って移動する。飛行ロボット610は、IMU(IMU230など)を用いてピッチ角620とロール角622を決定する。ピッチ角620及びロール角622のデータは、視覚慣性センサによって提供されるVIOデータの一部であることがあってもよいし、IMUによって直接提供される独立したデータであってもよい。ピッチ角620及びロール角622を用いて、飛行ロボット610は、距離センサの読み取り値に基づいて、第1の推定高度630を決定することがある。第1の領域604の少なくとも一部にわたる飛行ロボット610の飛行は、第1の推定高度に基づいて制御されることがある。しかしながら、飛行ロボット610が第2の領域606上を移動するとき、距離センサからの距離測定値は、第2の領域606の高さ増加により急激に減少する。
【0068】
視覚慣性センサ(例えば、VIOユニット236)、又は単に慣性センサは、第2の領域606及び第3の領域606及び608における障害物の存在等の環境変化の影響を受けにくいことがある。慣性センサはまた、単にIMU230のような慣性センサであっても良いし、VIOユニット236のような視覚要素を含んでいても良い。慣性センサは、IMU内の加速度計及びジャイロスコープに基づいて飛行ロボット610の位置特定データを提供する。IMUは飛行ロボット610に内蔵されているので、位置特定データは近くの物体又は表面に対して相対的に測定されない。従って、データも通常、近くの物体や表面の影響を受けない。しかし、慣性センサから生成される位置データ(垂直推定高度を含む)は、IMUの加速度計から得られる加速度データを時間に関して2回積分することによって得られることが多い。位置特定データはドリフトしやすく、飛行ロボット610が比較的長い距離を移動するにつれて精度が低下する可能性がある。
【0069】
飛行ロボット610は、表面レベルの変化に関連する移行領域において、距離センサにより生成されたデータを補償するために視覚慣性センサからのデータを使用することがある。いくつかの実施例において、領域640、642、644、及び646のような移行領域において、距離センサからのデータは、表面レベルの突然の変化のために不安定になることがある。飛行ロボット610は、その垂直高度を推定するために、一時的に視覚慣性センサに切り替えることがある。移行領域の後、飛行ロボット610は距離センサに戻っても良い。両方のタイプのセンサ・データに依存して、飛行ロボット610は、図6Bに示されるように、比較的水平に(比較的同じ水平レベルで)移動し得る。高度推定方法及び移行領域の決定の詳細については、図6C乃至図7Bを参照して更に説明する。
【0070】
例示の高度推定方法
図6Cは、いくつかの実施例による、飛行ロボット610が様々な表面レベルを有する異なる領域上を移動する際に、飛行ロボット610の垂直高度レベルを推定するための例示的な方法を示すフローチャートである。飛行ロボット610は、距離センサ及び視覚慣性センサを備えていても良い。飛行ロボット610はまた、1個以上のプロセッサと、コード・命令を格納するためのメモリとを含むことがある。命令は、1個以上のプロセッサによって実行されるとき、1個以上のプロセッサに図6Cに記載の方法を実行させることがある。1個以上のプロセッサは、プロセッサ215及びFCU225内のプロセッサに対応することがある。簡単のため、図6Cに説明される方法の各ステップが飛行ロボット610の同じプロセッサ又は異なるプロセッサによって実行されても良いが、以下では、1個以上のプロセッサを「プロセッサ」と呼ぶことがある。また、図6Cに図示された方法は、図6Bの視覚的図解と併せて論じられる。
【0071】
いくつかの実施例において、飛行ロボット610は、距離センサからのデータを用いて、第1の表面レベル605を有する第1の領域604に対する飛行ロボット610の第1の推定高度630を決定することがある(650)。例えば、距離センサからのデータは、距離センサからの距離測定値の時系列の形態をとることがある。特定の場合について、飛行ロボット610のプロセッサは、距離センサのデータから距離読み取り値を受け取ることがある。プロセッサはまた、飛行ロボット610の姿勢を受け取ることがある。姿勢は、ピッチ角620、ロール角622、及びヨー角を含むことがある。いくつかの実施例では、飛行ロボット610は、ピッチ角620ロール角622によって調整された距離読み取り値から第1の推定高度630を決定するために、姿勢に関連する1個以上の角度を使用することがある。例えば、プロセッサは、1個以上の三角関係を用いて、距離読み取り値を第1の推定高度630に変換し得る。
【0072】
プロセッサは、第1の推定高度630に基づいて、第1の領域の少なくとも一部にわたる飛行ロボット610の飛行を制御する(655)。飛行ロボット610が第1の領域604上を移動する際、距離センサからの測定値は比較的安定しているはずである。飛行ロボット610は、視覚慣性センサのデータも監視することがある。視覚慣性センサのデータはまた、高度推定の読み取り値を含む位置特定データの読み取り値の時系列である場合がある。距離センサからの距離データの読み取りは、例えばレーザ距離計によって生成されることがある一方、視覚慣性センサからのz方向の位置データの読み取りは、z方向の加速度計のデータを時間に関して二重積分することによって生成されることがある。2つのセンサは異なるソース及び方法で高度を推定するため、2つのセンサからの測定値は一致しないことがある。さらに、視覚慣性センサからの測定値もドリフトの影響を受けることがある。飛行ロボット610は、視覚慣性センサからの測定値を監視し、視覚慣性センサからの測定値と距離センサからの測定値との間のバイアスを決定することがある。バイアスは2つの測定値の差の場合がある。
【0073】
プロセッサは、飛行ロボット610が、第1の領域604と、第1の表面レベル605とは異なる第2の表面レベル607を有する第2の領域606との間の移行領域640に存在すると判定する(660)。移行領域は、表面レベルが変化している領域の場合がある。移行領域は、距離センサの信号が地面に到達するのを妨げる物体のような、地上レベルの障害物の存在を示すことがある。例えば、保管サイトの設定では、移行領域は、床に置かれたパレット又は在庫品の境界である場合がある。
【0074】
様々な実施例において、移行領域及びそのサイズは、高度推定アルゴリズムの実装に応じて、異なって定義されることがある。いくつかの実施例では、移行領域は、水平方向の所定の長さに基づいて定義されることがある。例えば、移行領域は、距離センサが距離読み取り値の急激な変化を検出した後の固定長の場合がある。別の実施例では、移行領域は、継続時間に基づいて定義されることがある。例えば、移行領域は、距離センサが距離読み取り値の急激な変化を検出した後の継続時間であることがある。この時間は、所定の期間であってもよいし、飛行ロボット610の水平方向の速度に基づいて決定される相対的な期間であってもよい。
【0075】
さらに別の実施例では、移行領域は、プロセッサが、飛行ロボット610が平坦な領域に存在することが確実であると判断できなくなる領域として定義されることがある。例えば、飛行ロボット610は、そのメモリに、飛行ロボット610が平坦な領域上を移動している尤度を決定する1個以上の確率モデルを含むことがある。尤度は、飛行ロボット610が平坦な領域を移動しているときに比較的安定しているはずの距離センサからの距離データの読み取り値に基づいて決定することがある。飛行ロボット610が平坦な領域を走行している尤度が閾値未満である場合、プロセッサは、飛行ロボット610が移行領域に存在すると判定することがある。例えば、いくつかの実施例において、プロセッサは、飛行ロボット610が第1の領域604に存在する第1の尤度を決定することがある。プロセッサは、飛行ロボット610が第2の領域606に存在する第2の尤度を決定することがある。プロセッサは、第1の尤度及び第2の尤度に基づいて、飛行ロボットが移行領域640に存在すると判定することがある。例えば、第1の尤度は飛行ロボット610が第1の領域604に存在する可能性が低いことを示し、第2の尤度は飛行ロボット610が第2の領域606に存在する可能性が低いことを示している場合、方法は、飛行ロボット610が移行領域640に存在すると判定することがある。
【0076】
さらに別の実施例では、移行領域は、障害物の存在に基づいて定義されることがある。例えば、プロセッサは、距離センサからの距離読み取り値に基づいて障害物が存在するかどうかを判定することがある。プロセッサは、距離センサのデータから距離読み取り値の平均値、例えば、最新値より前の期間からの時系列距離データの平均値を決定することがある。プロセッサは、平均値と、最新のインスタンスなどの特定のインスタンスにおける特定の距離読み取り値との差を決定することがある。その差が閾値よりも大きいことに応答して、プロセッサは、特定のインスタンスにおいて、距離読み取り値に急激な変化があり、それがむしろ著しいため、障害物が存在する可能性が高いと判定することがある。プロセッサは、距離センサからの読み取り値が再び安定するまで、飛行ロボット610が移行領域に入ったと判断することがある。
【0077】
さらにもう1つの実施例では、移行は、上記の基準の任意の適切な組み合わせ、又は明確に議論されていない別の基準に基づいて定義されることがある。
【0078】
プロセッサは、飛行ロボット610が移行領域640内に存在する期間の少なくとも一部の間、視覚慣性センサからのデータを用いて、飛行ロボット610の第2の推定高度632を決定する(665)。移行領域640において、第1の表面レベル605から第2の表面レベル607への表面レベルの急激な変化は、距離センサの信号が障害物を透過して第1の表面レベル605まで移動することができないため、距離センサが第2の高さ推定値632を正確に決定することを妨げる。飛行ロボット610は、距離センサのデータを使用する代わりに、視覚慣性センサのデータに切り替える。しかしながら、上記で説明したように、距離センサの読み取り値と視覚慣性センサの読み取り値との間にはバイアスがある可能性がある。プロセッサは、視覚慣性バイアスを決定することがある。例えば、視覚慣性バイアスは、飛行ロボット610が第1の領域604に存在する期間のような移行領域640の前の期間からの視覚慣性センサの読み取り値の平均から決定されることがある。第2の推定高度632を決定する際に、プロセッサは、視覚慣性センサのデータから読み取り値を受信する。プロセッサは、視覚慣性バイアスによって調整された読み取り値を用いて第2の推定高度632を決定する。
【0079】
プロセッサは、移行領域640における第2の推定高度632を用いて、飛行ロボット610の飛行を制御する(670)。移行領域640のサイズは、ステップ660で説明したように、様々な要因に依存することがある。移行領域640内又は移行領域640の直後を移動するとき、プロセッサは、距離センサバイアスを決定することがある。例えば、移行領域では、視覚慣性センサが第2の推定高度632を提供する一方で、距離センサの信号が第2の表面レベル607で反射されるため、距離センサが距離読み取り値Dを提供することがある。このように、距離センサのバイアスは、第1の表面レベル605と第2の表面レベル607との間の差にほぼ等しい、第2の推定高度632と距離読み取り値Dとの間の差の場合がある。
【0080】
ステップ660で上述したように移行領域を定義する1個以上の因子に基づいて、プロセッサは、飛行ロボット610が移行領域を出たと判定することがある。例えば、プロセッサは、飛行ロボット610が第2の領域606に閾値期間超存在することを判定する(675)。閾値期間は、所定の長さであってもよいし、距離センサのデータの安定性に基づいて測定されることがある。プロセッサは、飛行ロボット610が第2の領域606に存在する間、飛行ロボット610の第3の推定高度634を決定するために距離センサのデータを使用することに戻る(680)。第3の推定高度634を決定するために距離センサのデータを使用する際に、プロセッサは、距離センサのバイアスを使用してデータを調整することがある。例えば、プロセッサは、距離センサからの距離測定値に距離センサバイアスを加えることがある。
【0081】
飛行ロボット610は、第3の領域608まで移動を続け、移行領域642及び移行領域644を介して第2の領域606に戻ることがある。飛行ロボット610は、距離センサからのデータと視覚慣性センサからのデータの間で切り替え、2組のデータ間の様々なバイアスを監視する方法を繰り返すことがある。
【0082】
例示の高度推定アルゴリズム
図7Aは、実施例による例示的な高度推定アルゴリズム700を示すブロック図である。高度推定アルゴリズム700は、図6Cに図示される高度推定方法を実行するために使用され得る例示的なアルゴリズムであり得る。高度推定アルゴリズム700は、図6Cに説明される方法を実行するための単なる一例である。様々な実施例において、図6Cに説明される方法は、他のアルゴリズムを使用して実行されることもある。高度推定アルゴリズム700は、高度推定器238などの状態推定器235で使用されるアルゴリズムの一部の場合がある。高度推定アルゴリズム700は、飛行ロボット610の設計に応じて、メモリに保存されたコード・命令を実行する一般的なプロセッサによって担われてもよいし、特殊用途プロセッサにプログラムされてもよい。
【0083】
高度推定アルゴリズム700は、異なる判定を行うための様々なファンクションを含んでも良い。例えば、高度推定アルゴリズム700は、障害物検出ファンクション710、下方状態検出ファンクション720、視覚慣性バイアス補正ファンクション730、距離センサバイアス補正ファンクション740、及びセンサ選択及び公開ファンクション750を含むことがある。様々な実施例において、高度推定アルゴリズム700は、異なる、より少ない、又は追加のファンクションを含むことがある。また、ファンクションを組み合わせたり、さらに分離したりしても良い。また、各ファンクションによって行われる判定は、図7Aで説明した異なるやり方で、様々なファンクションの間に分配さても良い。
【0084】
高度推定アルゴリズム700に記述されたフローは、時間における特定のインスタンスに対応することがある。飛行ロボット610のプロセッサは、高度推定アルゴリズム700を繰り返して、1個以上の時系列データを生成することがある。高度推定アルゴリズム700は、距離センサ・データ760、姿勢データ770、及び視覚慣性データ780を入力として受け取り、出力として推定高度790を生成することがある。距離センサ・データ760は、図6Bに示される線624によって示されるような距離センサからの距離読み取り値のようなmを含むことがある。姿勢データ770は、状態推定器235から生成される
【数1】
を含むことがある(以下、サーカムフレックスアクセント(^)付きzをz^、^付きφをφ^、及び^付きθをθ^と表記することがある)。z^は、状態推定器235によって生成される推定高度の場合がある。例えば、z^はz軸上の推定値の場合がある。典型的には、z軸は開始面からロボットまで上方に測定し、ロボットから開始面まで下方に測定する。そのため、z^は開始面からのロボット推定高度の場合がある。φ^は飛行ロボット610のロール角の場合がある。θ^は飛行ロボット610のピッチ角の場合がある。視覚慣性データ780は、視覚慣性センサからの高度読み取り値であるmを含むことがある。高度推定アルゴリズム700は、zと表記される最終的な推定高度790を生成する。
【0085】
障害物検出ファンクション710は、姿勢データ770のz^、φ^及びθ^と、距離センサ・データ760のmとに基づいて、障害物が検出されるか否かを判定することがある。例えば、障害物検出ファンクション710は、距離データ760からの距離読み取り値と、姿勢データ770から計算された距離読み取り値とが一致するか否か(例えば、2つの読み取り値の間の絶対差又は2乗差が閾値未満又は閾値より大きいか否か)を判定することがある。2つのデータソースが一致する場合、障害物検出ファンクション710は、障害物検出ファンクション710の出力として第1のラベルを生成することがある。第1のラベルは、障害物が検出されないことを示す。2つのデータソースが一致しない場合、障害物検出ファンクション710は、障害物が検出されたことを示す第2のラベルを出力として生成することがある。障害物検出ファンクション710は、以下の数式によって表されることがある。1は、障害物検出ファンクション710の出力の場合がある。
【数2】
ここで、
【数3】
【数4】
【0086】
下方状態検出ファンクション720は、飛行ロボット610が第1の領域(例えば、床)の上を飛行している尤度P(H)及び飛行ロボット610が第2の領域(例えば、障害物の上)の上を飛行している尤度P(H)を決定するための1個以上の確率モデルを含むことがある。下方状態検出ファンクション720は、飛行ロボット610に状態Sを割り当てる。状態は、第1の領域、第2の領域、又は移行領域に対応することがある。例えば、尤度P(H)及び尤度P(H)は飛行ロボット610が第1領域にも第2領域にもいないことを示す場合、下方状態検出ファンクション720は、飛行ロボット610が移行領域に存在することを割り当てる。下方状態検出ファンクション720は、以下の数式によって表されることがある。
【数5】
ここで、
【数6】
【数7】
:ロボットは床の上に存在する。
:ロボットは障害物の上に存在する。
M1:行列Mの1番目の列
【数8】
【0087】
視覚慣性バイアス補正ファンクション730は、距離センサ・データ760mに対する視覚慣性データ780mの平均化されたバイアスを監視する。前述のとおり、視覚慣性センサからのデータはドリフトによる誤差を生じやすい。視覚慣性センサからのデータはまた、距離センサからのデータと比較して一定のバイアスを有することもある。飛行ロボット610は、視覚慣性データ780を監視し、一定期間にわたる視覚慣性データ780の平均を決定する。平均は、視覚慣性バイアスを決定するために使用されることがあり、バイアスに基づいて視覚慣性データ780を補正する。視覚慣性バイアス補正関数730は、以下の数式によって表されることがある。b(k)は視覚慣性バイアスを表し、MAは移動平均を表す。
【数9】
は調整された視覚慣性データを表す。
S=0の場合、
【数10】
【0088】
距離センサバイアス補正ファンクション740は、飛行ロボット610が障害物の上を飛行しているときに、距離センサからの距離センサ・データ760を補償する。障害物の存在により距離センサからの信号が地上に届かないため、距離センサ・データ760の値が実際の高度よりも小さくなることがある。距離センサバイアス補正ファンクション740は、移行領域の後、飛行ロボット610が高度を推定するために距離センサを使用することに戻ったときに調整を行う。距離センサバイアス補正関数740は、以下の数式で表されることがある。b(k)は距離センサバイアスを表し、
【数11】
は調整された距離センサ・データを表す。
S=1かつtS=1<εの場合、(障害物の上)
【数12】
ここで、
【数13】
S=1:s=1後の経過時間
【0089】
センサ選択・公開ファンクション750は、様々な状況で使用されるセンサを選択し、推定高度zの最終決定を生成する。例えば、一実施例において、飛行ロボット610が第1の領域に存在する場合、飛行ロボット610は距離センサ・データ760を使用して推定高度zを決定する。飛行ロボット610が移行領域に存在する場合、飛行ロボット610は視覚慣性データ780を使用する。飛行ロボット610が閾値時間内に移行領域の後の第2の領域(例えば、障害物の上)に存在する場合、飛行ロボット610は視覚慣性データ780も使用することがある。その後、飛行ロボット610は距離センサ・データ760の使用に戻る。センサ選択及び公開ファンクション750は、以下の擬似コードによって表されることがある。
S=0の場合、(床の上)
【数14】
でなければS=1の場合、(障害物の上)
S=1<εの場合、
【数15】
でなければ
【数16】
でなければS=2の場合、(移行)
【数17】
【0090】
高度推定アルゴリズム700は、障害物の層を有する場所で実施されることがある飛行ロボットの高度を推定する例を提供する。様々な実施例において、類似の原理が障害物の複数の層に対して拡大されることがある。
【0091】
図7Bは、実施例に従って、飛行ロボット610が障害物上を飛行し水平飛行を維持する際に使用される、高度推定アルゴリズム700の異なるファンクションと、センサ・データとの使用を示す概念図である。障害物検出ファンクション710、下方状態決定ファンクション720、及びセンサ選択・公開ファンクション750は、方法全体を通して使用される。飛行ロボット610が第1の領域(例えば、床)の上を飛行している領域792では、距離センサからの読み取り値が比較的安定しているはずであるため、距離センサ・データ760が使用される。視覚慣性バイアス補正ファンクション730も、視覚慣性データ780のバイアスを監視するために実行される。移行領域794では、障害物の境界が距離センサ・データ760の急激な変化を引き起こすと距離センサ・データ760が不安定になることがあるため、距離センサ・データ760の代わりに視覚慣性データ780が使用される。
【0092】
移行領域794の直後で、閾値ε796の範囲内で、飛行ロボット610は、距離センサ・データ760が再び安定することがあると判断してもよい。この期間において、飛行ロボット610は、視覚慣性データ780を引き続き使用し、距離センサバイアス補正ファンクション740を実行して、障害物の奥行きを考慮するために距離センサ・データ760に加算されるべき補正値を決定することがある。飛行ロボット610が第2の領域798(例えば、障害物の上)にあり、飛行ロボット610も距離センサに切り替える準備ができた(例えば、距離センサのデータが再び安定した)と判断すると、飛行ロボット610は、距離センサバイアスによる調整と共に、距離センサ・データ760を用いて再び高度を推定する。飛行ロボット610はまた、視覚慣性バイアス補正ファンクション730を再度実行し、視覚慣性データ780のバイアスを監視する。この方法は、飛行ロボット610が異なる表面レベルを横切って移動する際に、類似の方法で継続することがある。
【0093】
例示の機械学習モデル
様々な実施例では、幅広い種類の機械学習技術が使用されても良い。例は、決定木と、サポートベクターマシン(support vector machines(SVMs))と、回帰と、ベイジアン・ネットワークと、遺伝的アルゴリズムのような、教師あり学習と教師なし学習と半教師あり学習の様々な形を含む。畳み込みニューラルネットワーク(CNN)と、リカレント・ニューラルネットワーク(recurrent neural networks(RNN))と、長・短期記憶ネットワーク(long short-term memory networks(LSTM))とを含む、ニューラルネットワークのような深層学習技術も、使用されても良い。例えば、視覚的参照エンジン240によって実施される様々な物体認識と、位置特定と、他のプロセスは、1以上の機械学習と深層学習技術を適用しても良い。
【0094】
様々な実施例では、機械学習モデルのトレーニング技術は、教師あり又は半教師あり又は教師なしであっても良い。教師あり学習では、機械学習モデルは、ラベルを付けたトレーニング・サンプルのセットでトレーニングされても良い。例えば、物体を分類するためにトレーニングされる機械学習モデルには、トレーニング・サンプルは、物体の種類についてのラベルを付けた物体の様々な写真であっても良い。各々のトレーニング・サンプルのラベルは、バイナリ又はマルチ・クラスであっても良い。画像分割のための機械学習モデルのトレーニングでは、トレーニング・サンプルは、手動で特定された画像の部分を有する、様々な保管サイトの規則的に形づくられた物体の写真であっても良い。場合によっては、教師なし学習技術が使用されても良い。トレーニングに使われるサンプルは、ラベルを付けられていない。クラスタリングのような様々な教師なし学習技術が使用されても良い。場合によっては、トレーニングは、ラベルを付けられたサンプルとラベルを付けられていないサンプルの混合を有するトレーニング・セットで、半教師ありとされても良い。
【0095】
機械学習モデルは、トレーニング方法の目的のゴールを記述する計量値を生成する目的関数と関係していても良い。例えば、トレーニングは、予測を生成する際の、モデルのエラー率を減じることを意図していても良い。この場合には、目的関数は、機械学習モデルのエラー率を監視しても良い。物体認識(例えば、物体検出及び分類)において、機械学習アルゴリズムの目的関数は、トレーニング・セットの物体を分類する際のトレーニングエラー率であっても良い。そのような目的関数は、損失関数と呼ばれても良い。特に、ラベルが付けられていないために、エラー率が容易に決定されない教師なし学習モデルのためには、他の形式の目的関数が使用されても良い。画像分割では、目的関数は、モデルが予測したセグメントと、トレーニング・セットに手動で特定されたセグメントとの差と一致していても良い。様々な実施例では、エラー率は、クロス・エントロピー損失、L1損失(例えば、予測値と実測値との間の絶対値差分の合計)、L2損失(例えば、二乗距離の合計)として測定されても良い。
【0096】
図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の生成のために存在しても良い。例えば、カスタム層が、様々なセグメント・ラベルを有する画像入力の、ピクセルのラベリングのために、画像分割に使われても良い。
【0097】
図8のCNN800の層の順序と層の数とは、例示のみのためである。様々な実施例では、CNN800は、1以上の畳み込み層830を含むが、プーリング層840又はリカレント層850を含んでも含まなくても良い。プーリング層840が存在する場合に、全ての畳み込み層830の後に、プーリング層840がいつも続くとは限らない。リカレント層は、CNNの他の位置に、異なる配置をされても良い。各々の畳み込み層830において、学習されるのを許可されるカーネルのサイズ(例えば3×3、5×5、7×7など)とカーネルの数とは、他の畳み込み層830と異なっていても良い。
【0098】
機械学習モデルは、特定の層及び/又はノード及び/又はカーネル及び/又は係数を含んでも良い。CNN800のようなニューラルネットワークのトレーニングは、順方向伝播と逆伝播を含んでも良い。ニューラルネットワークの各層は、隣の層の他のノードと完全に又は部分的に接続した1以上のノードを含んでも良い。順方向伝播では、ニューラルネットワークは、すぐ前の層の出力に基づいて、順方向での計算を実行する。ノードの作業は、1以上の関数により定義されても良い。ノードの作業を定義する関数は、1以上のカーネルとのデータの畳み込み、プーリング、RNNでのリカレント・ループ、LSTMの様々なゲートなどのような様々な計算作業を含んでも良い。関数は、ノードの出力の重みを調節する活性化関数も含んでも良い。異なる層のノードは、異なる関数と関連していても良い。
【0099】
ニューラルネットワークの関数の各々は、トレーニング中に調節可能な様々な係数(例えば、重み及びカーネル係数)と関連していても良い。更に、ニューラルネットワークのノードのいくつかは、順方向伝播でのノードの出力の重みを決定する活性化関数と関連していても良い。共通の活性化関数は、ステップ関数と、一次関数と、シグモイド関数と、双曲線正接(tanh)関数と、正規化線形ユニット(rectified linear unit(ReLU)関数を含んでも良い。入力が、ニューラルネットワークに提供されて、順方向にニューラルネットワークを通過した後で、結果がトレーニングのラベル又はトレーニング・セットの他の値と比較されることによって、ニューラルネットワークのパフォーマンスを判定しても良い。予測方法が、トレーニング・セットの他の画像に対して繰り返されて、特定のトレーニング・ラウンドの目的関数の値を計算しても良い。今度は、ニューラルネットワークが、確率的勾配降下法(stocgastic gradient descent(SGD))のような勾配降下法によって、逆伝播を実行し、様々な関数の係数を調節して、目的関数の値を改良する。
【0100】
順方向伝播及び逆伝播の複数のラウンドが実行されても良い。目的関数が十分に安定した(例えば、機械学習モデルが収束した)ときに、又は、トレーニング・サンプルの特定のセットに対する所定回数のラウンド後に、トレーニングを終えても良い。トレーニングされた機械学習モデルは、予測又は物体検出又は画像分割又はモデルがそのためにトレーニングされた他の適当なタスクに使用されうる。
【0101】
コンピュータ・アーキテクチャ
図9は、コンピュータ読み取り可能な媒体から命令を読み取り、プロセッサ(又はコントローラ)でその命令を実行可能な、例示のコンピューティング・マシンの構成要素を示すブロック図である。ここで述べられるコンピュータは、図9に示された1台のコンピューティング・マシン、又は仮想マシン、又は図9に示されたコンピューティング・マシンの複数のノードを含む分散コンピューティング・システム、コンピューティング・デバイスの他の適切な取り合わせを含んでも良い。
【0102】
例として、図9は、コンピュータ・システム900の例示の形のコンピューティング・マシンの図表示を示し、ここで述べられる1以上の方法をマシンに実行させるために、コンピュータ読取り可能な媒体に記憶された命令924(例えば、ソフトウェア又はプログラム・コード又は機械語)が、コンピューティング・マシン内部で実行されても良い。いくつかの実施例では、コンピューティング・マシンは、スタンドアローンの装置として作業し、又は、他のマシンに接続されて(例えば、ネットワーク化されて)いても良い。ネットワーク配備において、マシンは、サーバー-クライアント・ネットワーク環境で、サーバー・マシン又はクライアント・マシンの性能で作業しても良いし、又は、ピア・ツー・ピア(又は分散)ネットワーク環境で、ピア・マシンとして作業しても良い。
【0103】
図9で述べられるコンピューティング・マシンの構成は、在庫品管理システム140と、コンピュータ・サーバー150と、データ・ストア160と、ユーザデバイス170と、図2に示される様々なエンジンとモジュールとインターフェースとターミナルとマシンとを含むがこれに限らない、図1及び図2に示される、どんなソフトウェア構成要素又はハードウェア構成要素又は組合せの構成要素に相当しても良い。図9は、様々なハードウェア要素とソフトウェア要素を示すが、図1及び2の中で記述される構成要素の各々は、追加の又はより少ない要素を含むかもしれない。
【0104】
例として、コンピューティング・マシンは、パーソナル・コンピュータ(personal computer(PC))、又はタブレットPC、又はセットトップボックス(set-top box(STB))、又は携帯情報端末(personal digital assistant(PDA))、又は携帯電話機、又はスマートフォン、又はウェブ機器、又はネットワーク・ルーター、又はモノのインターネット(internet of things(IoT))機器、又はスイッチ又はブリッジ、又はマシンがとるべき行動を特定する命令924を実行可能な如何なるマシンであっても良い。更に、1台のマシンのみ図示されているが、「マシン」という語は、ここで述べられる1以上の方法論を実行するために、命令924を個別で又は共同で実行するマシンの集合も含むと受け取られても良い。
【0105】
例示のコンピュータ・システム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を介して通信するように構成されている。
【0106】
記憶装置916は、1以上の方法論又はここで述べられた関数を具体化した命令924が記憶されているコンピュータ読取り可能な媒体922を含む。命令924は、コンピュータ・システム900がそれらを実行中は、完全に又は少なくとも部分的に、メイン・メモリ904の中、又は、プロセッサ902の中(例えば、プロセッサのキャッシュメモリの中)に存在しても良く、メイン・メモリ904及びプロセッサ902も、コンピュータ読取り可能な媒体を構成している。命令924は、ネットワーク・インターフェース装置920を介して、ネットワーク926で送信又は受信されても良い。
【0107】
コンピュータ読取り可能な媒体922は、例示の実施例で、1つの媒体であると示されているが、「コンピュータ読取り可能な媒体」という語は、命令(例えば、命令924)を記憶できる1つの媒体又は複数の媒体(例えば、集中又は分散データベース、又は関連キャッシュ及びサーバー)を含むものと解されるべきである。コンピュータ読取り可能な媒体は、マシンが実行する命令(例えば、命令924)を記憶可能で、ここで述べられた1以上の方法論をマシンに実行させる、どんな媒体を含んでも良い。コンピュータ読取り可能な媒体は、ソリッドステートメモリと、光学式媒体と、磁気媒体の形式のデータリポジトリを含むが、これに限定されるものではない。コンピュータ読取り可能な媒体は、信号又は搬送波のような一時的な媒体を含まない。
【0108】
更なる構成上の考察
特定の実施例は、論理回路、又はいくつかの構成要素又はエンジン又はモジュール又はメカニズムを含むものとして、ここで記述されている。エンジンは、ソフトウェア・モジュール(例えば、コンピュータで取り可能な媒体上に具体化されたコード)又はハードウェア・モジュールを構成しても良い。ハードウェア・エンジンは特定の作業を実行可能な実体的な装置であり、特定の方法で構成又は配置されても良い。例示の実施例では、1以上のコンピュータ・システム(例えば、スタンドアロ-ン、クライアント又はサーバコンピュータ・システム)、又はコンピュータ・システム(例えば、プロセッサ又はプロセッサのグループ)の1以上のハードウェア・エンジンは、ここで述べられたような特定の作業を実行するために作業するハードウェア・エンジンとして、ソフトウェア(例えば、アプリケーション又はアプリケーション部分)により構成されても良い。
【0109】
様々な実施例では、ハードウェア・エンジンは、機械的に、又は、電子的に実装されても良い。例えば、ハードウェア・エンジンは、特定の作業を実行するように、(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array(FPGA))又は特定用途向け集積回路(application-specific integrated circuit(ASIC))のような専用プロセッサとして)不変に構成された専用の回路又は論理回路を含んでも良い。ハードウェア・エンジンは、ソフトウェアが特定の作業を実行するように一時的に構成される(例えば、多目的プロセッサ又は他のプログラム可能なプロセッサの中に含まれた)プログラム可能な論理回路又は回路も含んでも良い。機械的に、専用に不変に構成された回路のハードウェア・エンジン、又は一時的に構成された回路(例えば、ソフトウェアで構成される)を実行するという決定が、コストと時間を考慮してなされることはいうまでもない。
【0110】
ここで述べられた例示の方法の様々な作業は、関連の作業を実行するように(例えばソフトウェアによって)一時的に構成された又は不変に構成された、例えばプロセッサ902のような1以上のプロセッサによって、少なくとも部分的に実行されても良い。一時的に構成されていようと、不変に構成されていようと、そのようなプロセッサは、1以上の作業又は機能を実行するように動くプロセッサ実装エンジンを構成しても良い。ここに言及されるエンジンは、いくつかの例示の実施例で、プロセッサ実装エンジンを含んでも良い。
【0111】
特定の作業のパフォーマンスは、1台のマシン内に存在するだけではなく、いくつかのマシンにわたり配置された1以上のプロセッサに分散されても良い。いくつかの例示の実施例では、1以上のプロセッサ又はプロセッサ実装モジュールは、一つの地理的な位置(例えば、家庭環境内又はオフィス環境内又はサーバー・ファーム内)に存在しても良い。他の例示の実施例では、1以上のプロセッサ又はプロセッサ実装モジュールは、いくつかの地理的な位置にわたって分散していても良い。
【0112】
この開示を読むと、当業者は、ここで明らかにされた原理を通して、類似したシステム又は方法のための、更に追加の代替的な構造と機能的な設計を認識する。このように、特定の実施例及びアプリケーションが示され記述される一方で、開示された実施例が、寸分違わない構造と、ここで開示された構成要素とに限らないことを理解すべきである。様々な修正と変更とバリエーションが、添付の請求項で定義された意図及び範囲を逸脱することなく、ここで開示された配置及び作業及び方法の詳細になされる可能性があり、そのことは当業者にとって明らかである。
【0113】
(付記)
(付記1)
飛行ロボットを作動させる方法であって、
前記飛行ロボットの距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記飛行ロボットが、前記第1の領域と、前記第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域内に存在することを判定すること、
前記飛行ロボットの視覚慣性センサからのデータを用いて前記飛行ロボットの第2の推定高度を決定すること、及び、
前記移行領域における前記第2の推定高度を用いて前記飛行ロボットの前記飛行を制御すること、
を含む、方法。
【0114】
(付記2)
前記第1の領域は地上レベルに対応し、前記第2の領域は前記地上レベルに置かれた障害物に対応する、付記1に記載の方法。
【0115】
(付記3)
前記距離センサからのデータを用いて前記第1の表面レベルを有する前記第1の領域に関する前記飛行ロボットの前記第1の推定高度を決定することは、
前記距離センサの前記データからの距離読み取り値を受け取ること、
前記飛行ロボットのロール角及びピッチ角を含む、前記飛行ロボットの姿勢を受け取ること、及び、
前記ロール角及び前記ピッチ角によって調整された前記距離読み取り値から前記第1の推定高度を決定すること、
を含む、付記1に記載の方法。
【0116】
(付記4)
前記飛行ロボットが前記第1の領域と前記第2の領域との間の前記移行領域内に存在することを判定することは、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度を決定すること、
前記飛行ロボットが前記第2の領域内に存在する第2の尤度を決定すること、及び、
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定すること、
を含む、付記1に記載の方法。
【0117】
(付記5)
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定することは、
前記飛行ロボットが前記第1の領域内に存在する可能性が低いことを示す前記第1の尤度と、前記飛行ロボットが前記第2の領域内に存在しない可能性を示す前記第2の尤度との両方に応答して、前記飛行ロボットが前記移行領域内に存在することを判定すること、
を含む、付記4に記載の方法。
【0118】
(付記6)
前記飛行ロボットが前記第1の領域と前記第2の領域との間の前記移行領域内に存在することを判定することは、障害物の存在を判定することを含み、
前記障害物の存在を判定することは、
前記距離センサの前記データから距離読み取り値の平均を決定すること、
前記平均と、特定のインスタンスにおける特定の距離読み取り値との間の差を決定すること、及び、
前記差が閾値より大きいことに応答して、前記障害物が前記特定のインスタンスに存在する可能性が高いと判定すること、
を含む、付記1に記載の方法。
【0119】
(付記7)
前記飛行ロボットの前記視覚慣性センサからのデータを用いて前記飛行ロボットの前記第2の推定高度を決定することは、
前記距離センサの読み取り値と、前記視覚慣性センサの読み取り値との推定差である、視覚慣性バイアスを決定すること、
前記視覚慣性センサの前記データからの読み取り値を受け取ること、及び、
前記視覚慣性バイアスによって調整された前記読み取り値を用いて前記第2の推定高度を決定すること、
を含む、付記1に記載の方法。
【0120】
(付記8)
前記視覚慣性バイアスは、前の期間からの前記視覚慣性センサの前記読み取り値の平均から決定される、付記7に記載の方法。
【0121】
(付記9)
前記飛行ロボットが閾値期間超の間前記第2の領域内に存在することを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
をさらに含む、付記1に記載の方法。
【0122】
(付記10)
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの前記第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すことは、
距離センサバイアスを決定すること、及び、
前記距離センサバイアスによって調整された前記距離センサからの前記データを用いて前記第3の推定高度を決定すること、
を含む、付記9に記載の方法。
【0123】
(付記11)
距離センサ、
視覚慣性センサ、
前記距離センサ及び前記視覚慣性センサに連結された1以上のプロセッサ、及び、
命令を保存するように構成されたメモリ、
を含む、飛行ロボットであって、
前記命令は、前記1以上のプロセッサによって実行されるとき、
前記飛行ロボットの前記距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記第1の領域と、前記第1の表面レベルとは異なる第2の表面レベルを有する第2の領域との間の移行領域内に前記飛行ロボットが存在することを判定すること、
前記飛行ロボットの前記視覚慣性センサからのデータを用いて、前記飛行ロボットの第2の推定高度を決定すること、及び、
前記移行領域内の前記第2の推定高度を用いて前記飛行ロボットの前記飛行を制御すること、
を含む工程を前記1以上のプロセッサに実行させる、
飛行ロボット。
【0124】
(付記12)
前記第1の領域は地上レベルに対応し、前記第2の領域は前記地上レベルに置かれた障害物に対応する、付記11に記載の飛行ロボット。
【0125】
(付記13)
前記距離センサからのデータを用いて、前記第1の表面レベルを有する前記第1の領域に関する前記飛行ロボットの前記第1の推定高度を決定するための命令は、
前記距離センサの前記データからの距離読み取り値を受け取るための命令、
前記飛行ロボットのロール角及びピッチ角を含む、前記飛行ロボットの姿勢を受け取るための命令、及び、
前記ロール角及び前記ピッチ角によって調整された前記距離読み取り値から前記第1の推定高度を決定するための命令、
を含む、付記11に記載の飛行ロボット。
【0126】
(付記14)
前記第1の領域と前記第2の領域との間の前記移行領域内に前記飛行ロボットが存在することを判定するための命令は、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度を決定するための命令、
前記飛行ロボットが前記第2の領域内に存在する第2の尤度を決定するための命令、及び、
前記第1の尤度及び前記第2の尤度に基づいて、前記飛行ロボットが前記移行領域内に存在することを判定するための命令、
を含む、付記11に記載の飛行ロボット。
【0127】
(付記15)
前記飛行ロボットの前記視覚慣性センサからのデータを用いて前記飛行ロボットの前記第2の推定高度を決定するための命令は、
前記距離センサの読み取り値と、前記視覚慣性センサの読み取り値との推定差である、視覚慣性バイアスを決定するための命令、
前記視覚慣性センサの前記データからの読み取り値を受け取るための命令、及び、
前記視覚慣性バイアスによって調整された前記読み取り値を用いて前記第2の推定高度を決定するための命令、
を含む、付記11に記載の飛行ロボット。
【0128】
(付記16)
前記視覚慣性バイアスは、前の期間からの前記視覚慣性センサの前記読み取り値の平均から決定される、付記15に記載の飛行ロボット。
【0129】
(付記17)
前記命令は、実行されるとき、さらに前記1以上のプロセッサに、
閾値期間超の間、前記飛行ロボットが前記第2の領域内に存在することを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
を実行させる、付記11に記載の飛行ロボット。
【0130】
(付記18)
前記飛行ロボットが前記第2の領域内に存在する間の前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すための命令は、
距離センサバイアスを決定するための命令、及び、
前記距離センサバイアスによって調整された前記距離センサからの前記データを用いて第3の推定高度を決定するための命令
を含む、付記17に記載の飛行ロボット。
【0131】
(付記19)
距離センサと視覚慣性センサとを含む飛行ロボットを作動させる方法であって、
前記飛行ロボットの距離センサからのデータを用いて、第1の表面レベルを有する第1の領域に関する前記飛行ロボットの第1の推定高度を決定すること、
前記第1の推定高度に基づいて前記第1の領域の少なくとも一部の上での前記飛行ロボットの飛行を制御すること、
前記飛行ロボットが前記第1の領域内に存在する第1の尤度が第1の閾値未満であることを判定すること、及び、
前記第1の尤度が前記第1の閾値未満であることに応答して、前記視覚慣性センサからの前記データを用いて前記飛行ロボットの第2の推定高度を決定すること、
を含む、方法。
【0132】
(付記20)
前記飛行ロボットが第2の領域内に存在する第2の尤度が第2の閾値を超えることを判定すること、及び、
前記飛行ロボットが前記第2の領域内に存在する間に前記飛行ロボットの第3の推定高度を決定するために、前記距離センサからの前記データの使用に戻すこと、
をさらに含む、付記19に記載の方法。

図1
図2
図3
図4
図5
図6A
図6B
図6C
図7A
図7B
図8
図9
【国際調査報告】