(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-13
(54)【発明の名称】飛行ロボットにおける薄い物体の検出及び回避
(51)【国際特許分類】
G06T 7/70 20170101AFI20241106BHJP
G06V 10/82 20220101ALI20241106BHJP
G06T 7/00 20170101ALI20241106BHJP
【FI】
G06T7/70
G06V10/82
G06T7/00 350C
G06T7/00 650Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024525711
(86)(22)【出願日】2022-11-01
(85)【翻訳文提出日】2024-06-28
(86)【国際出願番号】 US2022048500
(87)【国際公開番号】W WO2023076709
(87)【国際公開日】2023-05-04
(32)【優先日】2021-11-01
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】523008037
【氏名又は名称】ブルックハースト ガレージ インコーポレイテッド
(74)【代理人】
【識別番号】100095407
【氏名又は名称】木村 満
(74)【代理人】
【識別番号】100132883
【氏名又は名称】森川 泰司
(74)【代理人】
【識別番号】100148633
【氏名又は名称】桜田 圭
(74)【代理人】
【識別番号】100147924
【氏名又は名称】美恵 英樹
(72)【発明者】
【氏名】キム、ユン ジュン
(72)【発明者】
【氏名】リ、キュムアン
【テーマコード(参考)】
5L096
【Fターム(参考)】
5L096CA02
5L096DA02
5L096FA06
5L096FA59
5L096FA66
5L096FA69
5L096HA03
5L096HA11
(57)【要約】
飛行ロボットは、環境の画像をとらえるための画像センサを含む。前記ロボットは、第1の場所においてとらえられた第1の画像を受け取る。前記ロボットは、第1の画像内の1個以上の第1の画素を識別する。第1の画素は、第1の画像において識別される物体のターゲットとなる1個以上の特徴に対応する。前記ロボットは、第2の場所でとらえられた第2の画像を受け取る。前記ロボットは、第1の場所から第2の場所までの前記ロボットの移動を推定する距離データを受け取る。前記ロボットは、第2の画像内の第2の画素を識別する。第2の画素は、第2の画像に現れる前記物体のターゲットとなる特徴に対応する。前記ロボットは、前記距離データによって提供される、前記ロボットの移動に関する第1の画素からの第2の画素の場所の変化に基づいて、前記ロボットと前記物体との推定距離を決定する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
飛行ロボットを作動させる方法であって、
前記飛行ロボットによって第1の場所でとらえられた、環境の第1の画像を受け取ること、
前記第1の画像内の物体を識別すること、
前記物体のターゲットとなる1個以上の特徴に対応する、前記第1の画像内の第1の画素の1個以上を識別すること、
前記飛行ロボットによって第2の場所でとらえられた、環境の第2の画像を受け取ること、
前記第1の場所から前記第2の場所までの前記飛行ロボットの移動を推定する、前記飛行ロボットの距離データを受け取ること、
前記物体の前記ターゲットとなる1個以上の特徴に対応する、前記第2の画像内の第2の画素の1個以上を識別すること、及び、
前記距離データによって提供される前記飛行ロボットの移動に関する、前記第1の画素の1個以上からの前記第2の画素の1個以上の場所の変化に基づいて、前記飛行ロボットと前記物体との推定距離を決定すること、
を含む、方法。
【請求項2】
前記物体は畳み込みニューラルネットワークによって識別される、請求項1に記載の方法。
【請求項3】
前記畳み込みニューラルネットワークは拡張畳み込み層を含む、請求項2に記載の方法。
【請求項4】
前記第1の画像内の第1の画素の1個以上を識別することは、
前記物体に対応するように投影された前記第1の画像内の画素にタグ付けをすること、
前記画素をクラスタ化して複数の輪郭(contour)を形成すること、
前記輪郭をマージしてマージされた輪郭を形成すること、及び、
前記マージされた輪郭内の画素から前記ターゲットとなる1個以上の特徴を識別すること、
を含む、請求項1に記載の方法。
【請求項5】
マージする前に、サイズに基づいて前記輪郭の1個以上がフィルタリングされる、請求項4に記載の方法。
【請求項6】
前記ターゲットとなる1個以上の特徴は、前記物体の遠端の1個以上である、請求項1に記載の方法。
【請求項7】
前記第2の画像内の第2の画素の1個以上を識別することは、
前記距離データに基づいて、前記第2の画像内の前記第1の画素の1個以上の場所を投影すること、及び、
前記第1の画素の1個以上の投影された場所に基づいて、前記第2の画素の1個以上を識別すること、
を含む、請求項1に記載の方法。
【請求項8】
前記物体は画素10個未満の幅の薄い物体である、請求項1に記載の方法。
【請求項9】
前記物体はワイヤである、請求項1に記載の方法。
【請求項10】
前記距離データは慣性測定装置(IMU)から生成される、請求項1に記載の方法。
【請求項11】
1個以上のプロセッサと、
命令を保存するように構成されたメモリと、
を含む、飛行ロボットであって、
前記命令は、前記1個以上のプロセッサによって実行されるとき、
第1の場所でとらえられた環境の第1の画像を受け取ること、
前記第1の画像内の物体を識別すること、
前記物体のターゲットとなる1個以上の特徴に対応する、前記第1の画像内の第1の画素の1個以上を識別すること、
第2の場所でとらえられた環境の第2の画像を受け取ること、
前記第1の場所から前記第2の場所までの前記飛行ロボットの移動を推定する、前記飛行ロボットの距離データを受け取ること、
前記物体の前記ターゲットとなる1個以上の特徴に対応する、前記第2の画像内の第2の画素の1個以上を識別すること、及び、
前記距離データによって提供される、前記飛行ロボットの移動に関する、前記第1の画素の1個以上からの前記第2の画素の1個以上の場所の変化に基づいて、前記飛行ロボットと前記物体との推定距離を決定すること、
を前記1個以上のプロセッサに実行させる、
飛行ロボット。
【請求項12】
前記物体は畳み込みニューラルネットワークによって識別される、請求項11に記載の飛行ロボット。
【請求項13】
前記畳み込みニューラルネットワークは拡張畳み込み層を含む、請求項12に記載の飛行ロボット。
【請求項14】
前記第1の画像内の第1の画素の1個以上を識別するための命令は、
前記物体に対応するように投影された前記第1の画像内の画素にタグ付けをすること、
前記画素をクラスタ化して複数の輪郭を形成すること、
前記輪郭をマージしてマージされた輪郭を形成すること、及び、
前記マージされた輪郭内の画素から前記ターゲットとなる1個以上の特徴を識別すること、
を前記プロセッサに実行させる命令を含む、
請求項11に記載の飛行ロボット。
【請求項15】
マージする前に、サイズに基づいて前記輪郭の1個以上がフィルタリングされる、請求項14に記載の飛行ロボット。
【請求項16】
前記ターゲットとなる1個以上の特徴は、前記物体の遠端の1個以上である、請求項11に記載の飛行ロボット。
【請求項17】
前記第2の画像内の第2の画素の1個以上を識別するための命令は、
前記距離データに基づいて、前記第2の画像内の前記第1の画素の1個以上の場所を投影すること、及び、
前記第1の画素の1個以上の投影された場所に基づいて、前記第2の画素の1個以上を識別すること、
を前記プロセッサに実行させる命令を含む、
請求項11に記載の飛行ロボット。
【請求項18】
前記物体は画素10個未満の幅の薄い物体である、請求項11に記載の飛行ロボット。
【請求項19】
前記物体はワイヤである、請求項11に記載の飛行ロボット。
【請求項20】
慣性測定装置(IMU)をさらに含み、前記距離データは前記IMUから生成される、請求項11に記載の飛行ロボット。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
この出願は2021年11月1日に提出された米国仮特許出願番号第63/274,450号の利益を主張し、米国仮特許出願番号第63/274,450号の全体を参照としてここに取り込む。
【0002】
(技術分野)
本開示は、一般にロボットによる物体の検出に関し、より具体的には、薄い(thin)物体を検出及び回避するためにニューラル・ネットワークを使用するロボットに関する。
【背景技術】
【0003】
ドローンのような飛行ロボットが自律的であるためには、飛行ロボットは物体に衝突することなく環境内を航行する必要がある。物体の大きさや形状のために、ある種の物体はロボットのセンサーで検出するのがより困難である。例えば、電線は細すぎて、ロボットが電線の奥行きの測定値を伴う点群データを生成できないことが多いので、最新鋭のロボットでも、電線やケーブルを検出することはできない。飛行ロボットは、手動で制御しなければ、電線に衝突して、物的損害及び潜在的に危険な状態を引き起こすことが多い。
【発明の概要】
【課題を解決するための手段】
【0004】
実施形態は、環境の画像をとらえる画像センサを含む飛行ロボットに関する。飛行ロボットは、第1の場所でとらえられた環境の第1の画像を受け取る。飛行ロボットは、第1の画像内の物体を識別する。物体は薄い物体の場合がある。飛行ロボットは、識別された物体の1個以上の対象となる特徴に対応する、第1の画像内の1個以上の第1の画素を識別する。飛行ロボットは、第2の場所でとらえられた、環境の第2の画像を受け取る。飛行ロボットは、第1の場所から第2の場所への飛行ロボットの移動を推定する距離データを受け取る。飛行ロボットは、第2の画像に現れた物体のターゲットとなる特徴に対応する第2の画像中の1個以上の第2の画素を特定する。飛行ロボットは、距離データによって提供される飛行ロボットの移動に関する第1の画素からの第2の画素の位置の変化に基づいて、飛行ロボットと物体との間の推定距離を決定する。
【図面の簡単な説明】
【0005】
【
図1】いくつかの実施例による、例示の保管サイトのシステム環境を示すブロック図である。
【
図2】いくつかの実施例による、例示のロボットと、例示のベース・ステーションとの構成要素を示すブロック図である。
【
図3】いくつかの実施例による、保管サイトの在庫品を管理する例示の方法を表すフローチャートである。
【
図4】いくつかの実施例による、ロボットを備える保管サイトの例示のレイアウトの概念図である。
【
図5】いくつかの実施例による、ロボットの例示のナビゲーション方法を表すフローチャートである。
【
図6】いくつかの実施例による薄い物体を検出するロボットを示す概念図である。
【
図7】いくつかの実施例による、環境における薄い物体を検出するためのロボットの例示の方法を表すフローチャートである。
【
図8A】いくつかの実施例による、例示の機械学習モデルを示すブロック図である。
【
図8B】いくつかの実施例による、別の例示の機械学習モデルを示すブロック図である。
【
図9】いくつかの実施例による、例示のコンピューティング・マシンの構成要素を示すブロック図である。
【0006】
説明の目的のためにのみ、非限定的な様々な実施例を、図は表し、詳細な説明は記載する。
【発明を実施するための形態】
【0007】
図と以下の説明は、実例として好ましい実施例に関するのみである。当業者は、開示されたものの本質を逸脱しない範囲で採用されうる現実的代案として、ここで開示される構造と方法の代わりの実施例を認識する可能性がある。
【0008】
ここで、参照は、いくつかの実施例の詳細においてなされ、参照の例は、添付の図に示される。なお、実行可能な類似した又は同様の参照番号が数字で使用される場合はいつでも、類似した又は同様の参照番号は、類似した又は同様の機能を示す可能性がある。図は、説明目的のためにのみ開示されたシステム(又は方法)の実施例を表す。当業者は、ここに示される構造と方法の代わりの実施例が、ここに記述される本質を逸脱しない範囲で採用されうると、以下の説明からすぐに認めるだろう。
【0009】
実施例は、環境内の薄い物体を識別し、ロボットと識別された薄い物体との間の距離を推定するために、機械学習モデルを使用することによって、環境内を移動する飛行ロボットに関する。ロボットは、薄い物体に対応するピクセルを残りのピクセルから区別する畳み込みニューラルネットワークを使用する薄い物体の検出器を含むことがある。ロボットは、薄い物体の識別可能な特徴を検出し、ロボットの画像センサによってとらえられた異なる画像フレームにわたって、識別された特徴の動きを追跡することがある。ロボットの動きと、状態推定器及び慣性計測ユニットによって生成されることがある姿勢評価に基づき、ロボットは画像に現れた識別された特徴の動きを分析し、ロボットと薄い物体との間の推定距離を決定する。
【0010】
システムの概要
図1は、いくつかの実施例による、例示のロボットに手助けされる又は完全に自律的な保管サイトのシステム環境100を示すブロック図である。例として、システム環境100は、保管サイト110と、ロボット120と、ベース・ステーション130と、在庫品管理システム140と、コンピュータ・サーバー150と、データ・ストア160と、ユーザデバイス170とを含む。システム環境100の実在物と構成要素は、ネットワーク180を介して互いに通信する。様々な実施例では、システム環境100は、異なる、又はより少しの、又は追加の構成要素を含んでも良い。また、システム環境100の各々の構成要素が単数形で記述されている場合も、システム環境100は、各々の構成要素を1以上含んでも良い。例えば、保管サイト110は、1以上のロボット120と、1以上のベース・ステーション130を含んでも良い。各々のロボット120が、対応するベース・ステーション130を有していても良いし、又は、複数のロボット120がベース・ステーション130を共有しても良い。
【0011】
保管サイト110は、グッズと商品と食料雑貨と品物とコレクションのような在庫品を、保管する又は売る又は展示する、どのような適当な施設であっても良い。例示の保管サイト110は、倉庫と、在庫品用地と、本屋と、靴屋と、アウトレットと、他の小売店と、図書館と、博物館などを含んでも良い。保管サイト110は、いくつかの規則正しく形づくられた構造を含んでも良い。規則正しく形作られた構造は、物が、不変的であるか一時的であるか、固定されているか可動であるか、荷重負荷であるか否か、にかかわらず、容易に特定可能な規則正しい形状又は輪郭(contour)を有する、保管サイト内の構造、備品、器材、家具、フレーム、シェル、ラック又は他の適当な物であっても良い。規則正しく形づくられた構造は、しばしば、保管サイト110で在庫品の保管に使用される。例えば、ラック(金属のラック又はシェル又はフレーム又は他の類似した構造を含む)が、しばしば、倉庫でグッズと商品の保管に使用される。しかし、規則正しく形づくられた構造が、在庫品保管に使用される必要があるとは限らない。保管サイト110は、様々なアイテムが置かれて、体系的に保管される特定のレイアウトを含んでも良い。例えば、倉庫内では、ラックはセクション別に分類され、通路で分けられていても良い。各々のラックは、行番号と列番号を使って特定されうる複数のパレット位置を含んでも良い。保管サイトは高いラックと低いラックを含んでも良く、ある場合は、主に地上の近くに大部分の在庫品アイテムを運んでも良い。
【0012】
保管サイト110は、保管サイト110内の在庫品を追跡し、在庫品を管理するのに使用される1以上のロボット120を含んでも良い。参照の容易さのために、例え1台以上のロボット120が使用されるとしても、ロボット120は単数形で記載される可能性がある。また、いくつかの実施例では、1種類以上のロボット120が、保管サイト110に存在しうる。例えば、いくつかのロボット120は保管サイト110で在庫品をスキャンすることに特化する一方で、他のロボット120はアイテムを動かすことに特化しても良い。ロボット120は、また、自律ロボット、又は在庫品循環棚卸ロボット、又は在庫品調査ロボット、又は在庫品検出ロボット、又は在庫品管理ロボットとも呼ばれても良い。在庫品ロボットは、在庫品アイテムを追跡し、在庫品アイテムを動かし、他の在庫品管理作業を実行するのに使用されても良い。自律の程度は、実施例と実施例の間で変化しても良い。例えば、いくつかの実施例では、ロボット120が割り当てられた作業を自動的に実行するように、ロボット120は完全自律性であっても良い。他の実施例では、ロボット120が最小の人間の命令又は制御で保管サイト110を移動可能なように、ロボット120は半自律性であっても良い。いくつかの実施例では、ロボット120が、どの程度の自律性を有していても、ロボット120は遠隔操作されても良く、マニュアルモードに切り替えられても良い。ロボット120は、空中無人機、地上ロボット、車両、フォークリフト、モバイル・ピッキングロボットのような様々な種類を採用しても良い。
【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の絶対高度と相対的な高度(例えば、床上に存在する物体からの距離)を測定するのに用いられる、ソフトウェアとハードウェアの組合せであっても良い。高度推定器238は、ロボット120の地面に対する高度、又はロボット120の下の物体に対する高度を測定する距離センサ239を含めても良い。距離センサ239は、電磁波式、レーザ式、光学式、音響式、超音波式又はその他の適当な信号に基づくものであっても良い。例えば、距離センサ239は、レーザ距離計、ライダー距離計、音響距離計、超音波距離計又はレーダであっても良い。距離計は、又は(例えば赤外線、レーザ、音響等の)信号を放射する1以上のエミッタと、物で反射する信号の往復時間を感知する1以上のセンサとを含んでも良い。いくつかの実施例では、ロボット120は、単一のエミッタ距離計を装備しても良い。高度推定器238は、ロボット120の高度を推定するVIOユニット236から、データを受け取っても良いが、通常、距離センサ239と比べ、あまり正確でない方法である。ロボット120が、床又は他の水平面に置かれた様々な物と在庫品の上を飛ぶ場合、高度推定器238は、距離センサ239で生成したデータとVIOユニット236で生成したデータとを結合するためのソフトウェア・アルゴリズムを含んでも良い。高度推定器238で生成したデータは、衝突回避とターゲット位置発見のために使用されても良い。高度推定器238は、ロボット120が天井にぶつかるのを防ぐために、グローバルな最大高度を設定しても良い。高度推定器238は、ロボット120がターゲット位置を突き止めるように、ラックの行がいくつロボットの下に存在するかに関する情報も提供する。高度データは、ロボット120の垂直レベルを特定するために、ロボット120が通り過ぎた行の数と共に使用されても良い。
【0031】
視覚的参照エンジン240は、プロセッサ215により実行されうる、メモリ220に記憶されたソフトウェアの命令のセットに相当しても良い。視覚的参照エンジン240は、ロボット120の現在位置を特定し、ロボット120の近くの環境の物体とエッジと表面を同定し、物体の近くの表面と比較したロボット120の推定距離及び向き(例えば、ヨー)を特定するための、様々な画像処理アルゴリズムと位置アルゴリズムを含んでも良い。視覚的参照エンジン240は、画像センサ210から、連続画像のピクセル・データと、ポイントクラウド・データを受け取っても良い。視覚的参照エンジン240により生成された位置情報は、物体からの距離及びヨーと、ターゲット・ポイント(例えば、ターゲット物体の中心点)からの中心のオフセットとを含んでも良い。
【0032】
視覚的参照エンジン240は、画像センサ210でとらえられる画像から、画像分割を作成するための、1以上のアルゴリズムと機械学習モデルを含んでも良い。画像分割は、他の物体及び環境からとらえられた画像の中に現れている規則的に形づくられた構造の、フレーム(例えば、ラックの垂直バー又は水平バー)又は輪郭を分ける1以上のセグメントを含んでも良い。画像分割に使われるアルゴリズムは、畳み込みニューラルネットワーク(convolutional neural network(CNN))を含んでも良い。分割を実行する際に、エッジ検出アルゴリズム(例えば、キャニー演算子、ラプラス演算子、ソーベル演算子、プルウィット演算子)とコーナー検出アルゴリズムとハフ変換と他の適切な特徴検出アルゴリズムのような、他の画像分割アルゴリズムが使用されても良い。
【0033】
視覚的参照エンジン240は、物体認識(例えば、物体検出と更なる分析)も実行し、連続画像にわたる物体の相対的な動きの経過も管理する。視覚的参照エンジン240は、ロボット120が通り過ぎた、保管サイト110の規則的に形づくられた構造の数を追跡しても良い。例えば、視覚的参照エンジン240は、ラックのフレームの参照点(例えば、重心)を特定し、連続画像にわたり、参照点が画像の特定の位置を通過するか否か(例えば、参照点が画像の中心を通過するか否か)を判定しても良い。もしそうならば、視覚的参照エンジン240は、ロボット120が通り過ぎた、規則的に形づくられた構造の数を増加させる。
【0034】
ロボット120は、様々な位置情報(近くの物体に対する位置情報と位置特定情報を含む)を生成するために、様々な構成要素を使用しても良い。例えば、いくつかの実施例では、状態推定器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がとらえた画像を受け取る。画像は、ラックのような規則的に形づくられた構造を含む、環境内の物体をとらえても良い。例えば、ロボット120は、規則的に形づくられた構造を視覚的に認識するために、視覚的参照エンジン240のアルゴリズムを使用しても良い。
【0061】
ロボット120は、画像センサ210がとらえた画像を分析して、ロボット120が通り過ぎた、保管サイトの規則的に形づくられた構造の数を追跡することによって、経路470でのロボット120の現在位置を特定する(540)。ロボット120は、様々な画像処理技術と物体認識技術を使用して、規則的に形づくられた構造を特定し、ロボット120が通り過ぎた構造の数を追跡しても良い。
図4に示された経路470に関して、ロボット120は、ラック410に対向しつつ、ターニングポイント476まで移動しても良い。ロボット120は、自身が2つのラック410を通り過ぎたので、ターゲット通路に到着したと決定する。応じて、ロボット120は、反時計回りに回転して、ターゲットラックに対向してターゲット通路に入る。ロボット120は、ターゲットの列に着くまで、自身が通り過ぎた列の数を数える。ターゲットの行に従って、ロボット120は上又は下に垂直に移動して、ターゲット位置に到着しても良い。ターゲット位置に到着すると、ロボット120は、ターゲット位置で在庫品の写真を撮ることのような、入力コマンドで特定された行動を実行する。
【0062】
例示の薄い物体の検出方法
図6は、いくつかの実施例による薄い物体を検出するロボット600を示す概念図である。ロボット600は飛行ロボットであってよく、保管サイト110で使用されるロボット120の例示である場合がある。
図1乃至
図5は保管サイト内を移動するロボットに焦点を当てているが、ロボット600は、薄い物体が一般的な屋外環境や都市環境のような他の設定で使用してもよい。例えば、市街地用に設計されたドローンは、電線、標識、その他の薄い物体との衝突を避けるために、薄い物体を検出する能力を備えることがある。ロボット600は、
図2に示す構成要素の一部又は全部を含むことがある。例えば、いくつかの実施例において、ロボット600は、少なくとも画像センサ210、プロセッサ215、メモリ220、状態推定器235、及びIMU230を含む。ロボット600の他の適切な構成も可能である。
【0063】
薄い物体は、1以上の次元が薄い物体を指すことがある。薄い物体の例は、電線、水平及び垂直の棒、その他のケーブルなどを含むことがある。保管サイト110では、ワイヤ、チェーン、接続ケーブルなどの薄い物体が存在することがある。異なる設定において、様々な薄い物体が存在する。ロボット600から見て、物体が薄いかどうかは、その物体がロボット600に対してどの程度離れているかに依存することがある。例えば、ロボット600から遠い第1の物体は、ロボット600に近い第2の物体よりも薄く見える。いくつかの実施例において、物体が薄いかどうかは、物体が画像にとらえられるときに、薄い次元において物体によって占有される画素の数に基づいて定義されることがある。例えば、いくつかの実施例では、薄い次元における物体の厚さが10ピクセル未満である場合、物体は薄いと分類されることがある。いくつかの実施例では、薄い次元における物体の厚さが5ピクセル未満である場合に、物体は薄いと分類されることがある。いくつかの実施例では、物体が薄いかどうかは、画像センサの角度分解能に基づいて定義されることもある。例えば、飛行ロボットに設置された典型的なカメラは、ある角度分解能を有することがある。実施例によっては、物体が占める角度が2度、1.5度、1度などより低い場合、物体は薄い物体として分類されることがある。
図6において、薄い物体610は、そのスタンド612によって支持される水平棒610によって表される。なお、
図6における設定は説明のためだけのものである。また、細い物体610は、水平な薄い物体として示されているが、薄い物体は、垂直又は斜めなど、向きが異なる場合もある。
【0064】
ロボット600は、環境中の画像をとらえるための1個以上の画像センサを備える。ロボット600が使用する画像センサは、単一のレンズを備えたモノカメラであっても、複数のレンズを備えたステレオカメラであってもよい。いくつかの実施例において、薄い物体を検出する技術は、モノカメラを備えるロボット600が様々な薄い物体を検出することを可能にする。ロボット600は、画像センサを使用して連続的に画像をとらえてもよい。例えば、第1の場所620において、画像センサーは第1の画像630をとらえる。簡単のため、薄い物体610のみが第1の画像630に示されているが、第1の画像630は、画像センサによってとらえられた様々なものを含んでもよい。
【0065】
ロボット600は、画像センサによってとらえられた画像中の薄い物体を識別するための薄い物体の検出器を含むことがある。薄い物体の検出器は、メモリ220等のメモリに記憶され、画像を分析するためにプロセッサ215等の1個以上のプロセッサによって実行されることがあるソフトウェアアルゴリズムであってもよい。薄い物体の検出器は、画像を分析するために使用される1以上の機械学習モデルを含むことがある。機械学習モデルの構造及び訓練は、
図8A及び
図8Bに示される。例えば、
図8Bは、画像内の薄い物体を識別するために特別に訓練されることがある畳み込みニューラルネットワークの構造例を示す。薄い物体の検出器は、機械学習モデルを使用して、薄い物体に対応すると識別された画像の画素をマークすることがある。薄い物体の検出器は、シーンの残りの部分から薄い物体をセグメント化することがある。
【0066】
ロボット600はまた、薄い物体610に対するロボット600の姿勢を決定するために使用される状態推定器を含むことがある。ロボット600の姿勢は、画像センサーの姿勢によって表されることがある。状態推定器は、ロボット600の位置及び位置特定情報を追跡するために使用されるハードウェアセンサー及びソフトウェアアルゴリズムの組み合わせの場合がある。状態推定器の一例は、
図2で説明した状態推定器235であってもよい。状態推定器はまた、加速度及び方位データを生成するIMU230を含むことがある。加速度データは距離データに変換されることがある。ロボット600は、IMU230及び潜在的にはVIO236からのデータを使用して、薄い物体610に対するロボット600の姿勢を決定する。
【0067】
ロボット600は、所与の位置におけるロボット600と薄い物体610との間の距離を推定する奥行き推定器を含む。奥行き推定器は、メモリに記憶され、1個以上のプロセッサにより実行され、薄い物体の検出器及び状態推定器からの結果を用いてロボット600と薄い物体610との間の推定距離を決定するソフトウェアアルゴリズムの場合がある。奥行き推定器は、画像にとらえられた薄い物体610の画素を比較することにより、異なる位置でとらえられた2個以上の画像に基づいて推定距離を決定する。ロボット600は、ロボット600が第1の場所から第2の場所に移動する際に、画像の異なる場所にある薄い物体610をとらえる。奥行き推定器は、画素の位置及びIMU距離データを比較して、ロボット600と薄い物体610との間の距離を推定する。
【0068】
一例として、第1の位置620において、薄い物体の検出器は、第1の画像630中の薄い物体610に対応する画素をマークする。奥行き推定器は、第1の画像630内の薄い物体の画素位置を受け取る。奥行き推定器は、薄い物体610の1個以上の特定の特徴の画素位置632を特定する。特徴は、イメージセンサが薄い物体610を異なる視点からとらえる際に連続的に識別可能に映し出される、薄い物体610の容易に識別可能な部分又は領域の場合がある。例えば、特徴は、重心、中心、遠端、分位点、識別可能な小部分、又は薄い物体610に関連する任意の他の適切な部分の場合がある。第1の画像630において、奥行き推定器は、薄い物体610の両端を特徴として識別し、遠端に対応する2つの画素位置632をマークする。例えば、奥行き推定器は、画素の座標に基づき、特定の次元において最も高い値と最も低い値を有する画素位置を特定し、2つの遠端を決定することがある。
【0069】
奥行き推定器は、ロボット600が第1の位置620から第2の位置640まで移動した後に、特徴のある画素位置を比較する。第2の場所640において、ロボット600のイメージセンサは第2の画像650をとらえる。第2の画像650では、ロボット600が第2の場所640で薄い物体610の近くに位置しているため、薄い物体610が長く見える。ロボット600は垂直方向に移動していることがあるので、薄い物体610のレベルも変化している可能性がある。薄い物体の検出器は第2の画像650を分析し、薄い物体610に対応する画素をマークする。奥行き推定器は物体検出器から画素位置を受け取り、薄い物体610の特徴を特定する。例えば、奥行き推定器は再び薄い物体610の2つの遠端を特定し、2つの遠端に対応する画素位置652を決定する。画素位置652は、ロボット600が第2の場所640に移動すると、画素位置632に対して変更される。
【0070】
奥行き推定器は、画素位置632と652との間の差に基づき、状態推定器によって提供された距離データ及び姿勢に基づいて、ロボット600と薄い物体610との間の推定距離を決定する。例えば、IMUによって生成された距離データは、ロボット600が第1の場所620から第2の場所640まで移動した距離を推定するために使用されることがある。状態推定器はまた、2つの場所におけるロボット600の姿勢を提供することがある。ロボット600と薄い物体610との間の距離は、投影、線形変換、幾何学的関係のような数学的演算に基づいて計算しても良い。
【0071】
図7は、いくつかの実施例による、環境中の薄い物体を検出するためのロボットの方法の例を示すフローチャートである。
図7に図示された方法は、
図6に図示された方法の詳細な例の場合がある。
図7に例示される方法は、ロボットの1個以上のプロセッサ(例えば、CPU)によって実行可能なコンピュータ命令として記憶されるソフトウェアアルゴリズムを通じて実行される場合がある。命令は、プロセッサによって実行されると、プロセッサに、方法において説明される様々なステップを実行させる。様々な実施例において、方法中の1以上のステップは、スキップされ又は変更されてもよい。方法を実行するロボットは、ロボット600の場合がある。
【0072】
ロボットは環境の第1の画像を受け取る(710)。第1の画像は、第1の位置でとらえられることがある。ロボットは、画像をとらえる画像センサを備える。いくつかの実施例では、画像はモノカメラによってとらえられ、点群又は任意の三次元データを含む必要がないことがある。第1の位置は、ロボットが経路に沿って移動する際のロボットの瞬間的な位置の場合がある。
図7に示される方法は、ロボットが異なる場所に移動する際に繰り返し実行される連続的な方法の場合がある。画像は、環境内の様々な物体をとらえていることがある。物体の中には、物体が1個以上の次元の非常に少数の画素にしか対応しないために、従来の画像センサや点群データを用いて検出することが困難な薄い物体もある。薄い物体の位置における奥行きの変化はノイズと区別できないことが多いため、ロボットは薄い物体の奥行きデータを含む従来の点群データを生成できないことが多い。
【0073】
ロボットは第1の画像内の物体を識別する(720)。物体は薄い物体の場合がある。ロボットは、特定の標的物体を識別するように訓練された機械学習モデルを実行する薄い物体の検出器を含む場合がある。例えば、機械学習モデルは、1以上の拡張畳み込み層を含む畳み込みニューラルネットワーク(CNN)の場合がある。CNNの構造例を
図8Bに示す。機械学習モデルは、第1の画像を入力として受け取り、識別された物体に対応する画素を出力としてタグ付けする。例えば、CNNは特異的に薄い物体を識別するように訓練される場合がある。例えば、CNNは、異なる標的物体を含む様々な環境の画像の訓練セットを使用して訓練される場合がある。CNNの訓練は、画像の訓練セットに対する薄い物体の位置の識別における誤差を繰り返し減少させることを含む場合がある。機械学習モデルを訓練する際の詳細な手順については、
図8Aで説明する。
【0074】
薄い物体を識別することを例示として説明するが、
図7に描かれた方法は、他のタイプの物体を識別し、ロボットと物体との間の距離を決定するためにも使用される場合がある。
【0075】
ロボットは、第1の画像内の1個以上の第1の画素を識別する(730)。1個以上の第1の画素は、識別された物体のターゲットとなる1個以上の特徴に対応する場合がある。第1の画素の識別は、様々なサブステップを含む場合がある。一例として、ロボットは、識別された物体に対応するように投影された第1の画像内の画素にタグ付けする場合がある。ロボットは画素をクラスタ化して複数の輪郭を形成する場合がある。ロボットは輪郭をマージしてマージされた輪郭を形成する場合がある。ロボットは、マージされた輪郭内の画素からターゲットとなる特徴を識別する場合がある。
【0076】
この方法には、識別された物体に対応する画素を背景から分離する様々な画像分割技術及び物体識別技術が含まれる場合がある。画像分割は、任意の適切なアルゴリズムによって実行しても良い。いくつかの実施例では、ロボットは機械学習モデルに画像分割を実行させ、ピクセルにタグを割り当てさせる。いくつかの実施例では、ロボットはまた、一連の画像を機械学習モデルに入力し、機械学習モデルは、一連の画像に連続して現れる物体を考慮して、一連の画像から画像分割を出力する場合がある。CNNの代わりに、又はCNNに加えて、別のタイプのニューラルネットワーク、クラスタリング、マルコフランダムフィールド(MRF)などの他のタイプの機械学習モデルも、画像分割方法に使用する場合がある。機械学習技法を使用する代わりに、又は機械学習技法を使用することに加えて、エッジ検出アルゴリズム(例えば、Canny演算子、ラプラシアン演算子、Sobel演算子、Prewitt演算子)、コーナー検出アルゴリズム、Hough変換、その他の適切な特徴検出アルゴリズムなどの他の画像分割アルゴリズムを使用することもできる。
【0077】
識別された物体を表す記号がタグ付けされた画素から、ロボットはそれらの画素の領域の輪郭を作成する場合がある。各輪郭は画素クラスタと呼ばれる場合がある。これらの画素のクラスタリングは、画素間の距離、画素の色、画素の強度、及び/又は画素の他の適切な特性に基づく場合がある。ロボットは、(例えば、距離、色、及び/又は強度の点で)類似する近傍の画素をクラスタ化して、識別された物体の領域に対応する可能性が高い輪郭を作成する場合がある。様々なサブ領域に対応する複数のクラスタが、識別された物体(例えば、各ワイヤ又は別のタイプの薄い物体)ごとに作成される場合がある。ロボットは、各輪郭の基準点を決定する場合がある。基準点は、重心、一方向の最も極端な点、又は任意の関連する基準点である場合がある。例えば、ロボットは、重心を決定するために、輪郭内にある画素の画素位置の平均を決定する場合がある。
【0078】
ロボットは、ノイズフィルタリングと、それぞれの基準点に基づいて輪郭をマージする輪郭マージを実行する場合がある。ノイズフィルタリングについては、ロボットは、マージする前に、サイズに基づいて輪郭をフィルタリングする場合がある。例えば、ロボットは、面積が閾値より小さい輪郭(例えば、小さすぎる輪郭)をノイズとみなす場合がある。ロボットは十分に大きい輪郭を維持する。輪郭のマージでは、ある場合には、クラスタリングアルゴリズムは、識別された物体に対応する画素が複数の輪郭(例えば、電線の複数の領域)に分類される結果をもたらす。ロボットは、同じ識別された物体を表している可能性が高い輪郭をマージする。マージは、輪郭の基準点の位置と輪郭の境界に基づく場合がある。例えば、水平なワイヤの場合、ロボットは、同様の垂直レベルに基準点を持つ輪郭を識別し、それらの輪郭をマージする場合がある。場合によっては、2つの輪郭がマージされるとき、より小さいクラスタに属するか、どのクラスタにも識別されないかもしれない2つの輪郭の間の画素も、同じ構造として分類されるかもしれない。マージは、2つの輪郭の2つの基準点間の距離に基づく場合がある。距離が閾値より小さい場合、ロボットは2つの輪郭をマージする場合がある。
【0079】
識別された物体に対応する画素を残りの画素から分離すると、ロボットは物体内の1個以上のターゲットとなる特徴を識別する。ターゲットとなる特徴は、物体の全長に対する、分体の特定の位置の場合がある。例えば、薄い物体の場合、遠端、中心、分位点がターゲットとなる特徴として挙げられる場合がある。他の種類の物体の場合、特定の位置に加えて、又は特定の位置に代えて、ターゲットとなる特徴は、物体の識別可能な部分である場合もある。例えば、保管サイトの設定で、構造物が識別された物体である場合、構造物は、角の位置、ネジの位置、パターンの位置、標識の位置などの識別可能な部分を含む場合がある。ロボットは物体認識技術を使用してこれらの部品を識別する場合がある。ターゲットとなる特徴が物体の全長に対する特定の位置である場合、ロボットは分割された画素の座標値を使用してターゲットとなる特徴位置を決定してもよい。例えば、いくつかの実施例では、ロボットは識別された薄い物体の2つの遠端を追跡し、第1の画像の座標を記憶する。
【0080】
ロボットはシーンの第2の画像を受け取る(740)。第2の画像は、第1の場所とは異なる第2の場所でとらえられる。ロボットが移動すると、その画像センサーはシーンの追加画像をとらえ続ける。場合によっては、第2の画像は第1の画像の直後のフレームであることもある。他の場合には、第2の画像は、第1の画像と比較して画像の内容に十分に大きな変化を示す後続のフレームである。
図7は2つの画像で図示されるが、いくつかの実施例では、ロボットはまた、ロボットと識別された物体との間の距離の推定の精度を高めるために、一連の複数の画像を分析してもよい。また、ロボットが異なる場所に移動する際に動的に距離を決定するために、この方法を繰り返し実行する場合がある。
【0081】
ロボットは距離データを受け取る(750)。距離データは、第1の場所から第2の場所への飛行ロボットの移動を推定する。距離データはIMUによって生成される場合がある。ロボットは、状態推定器を用いて、第1の場所から第2の場所までのロボットの移動距離を決定する。状態推定器はまた、第1の場所及び第2の場所においてそれぞれ識別された物体に対する画像センサの相対的な姿勢を推定する場合がある。
【0082】
ロボットは、第2の画像内の1個以上の第2の画素を識別する(760)。1個以上の第2の画素は、物体のターゲットとなる特徴に対応する。第2の画素の識別は、ステップ730で説明した第1の画素の識別と同様である。いくつかの実施例では、ロボットは状態推定器によって生成された距離データ及び姿勢データにも依拠して第2の画素を特定する。状態推定器の結果に基づいて、ロボットは移動距離及びロボットの向きの変化を推定する場合がある。ロボットは、距離データ及び姿勢データに基づいて、第2の画像内のターゲットとなる特徴(1個以上の第1の画素の位置)の近傍を投影してもよい。ロボットは投影を利用してターゲットとなる特徴を特定する場合がある。例えば、ロボットは、投影された近傍のターゲットとなる特徴を検索する場合がある。その結果は、CNNによって生成された物体認識結果と組み合わせて使用される場合がある。
【0083】
ロボットは、距離データによって提供されるロボットの動きに対する1個以上の第1の画素からの1個以上の第2の画素の位置の変化に基づいて、ロボットと物体との間の推定距離を決定する(770)。本推定は、ロボットの奥行き推定器によって決定される場合がある。ロボットと識別された物体との間の距離は、投影、線形変換、幾何学的関係などの数学的演算に基づいて計算されても良い。例えば、ロボットの移動が第1の画素と第2の画素との間でbであり、対応する画素位置の視差がdである場合、ロボットと物体との間の距離zは、z=f*b/d(fはカメラの焦点距離)によって計算することができる。奥行き推定器は、識別された物体との衝突を回避するようにロボットに指示するために、飛行制御ユニットに距離を送る場合がある。例えば、飛行制御ユニットは物体を避けるためにロボットのルートを変更する場合がある。
【0084】
例示の機械学習モデル
様々な実施例では、幅広い種類の機械学習技術が使用されても良い。例は、決定木と、サポートベクターマシン(support vector machines(SVMs))と、回帰と、ベイジアン・ネットワークと、遺伝的アルゴリズムのような、教師あり学習と教師なし学習と半教師あり学習の様々な形を含む。畳み込みニューラルネットワーク(CNN)と、リカレント・ニューラルネットワーク(recurrent neural networks(RNN))と、長・短期記憶ネットワーク(long short-term memory networks(LSTM))とを含む、ニューラルネットワークのようなディープラーニング技術も、使用されても良い。例えば、視覚的参照エンジン240によって実施される様々な物体認識と、位置特定と、物体、特に薄い物体の認識と、他の処理は、1以上の機械学習とディープラーニング技術を適用しても良い。
【0085】
様々な実施例では、機械学習モデルの訓練技術は、教師あり又は半教師あり又は教師なしであっても良い。教師あり学習では、機械学習モデルは、ラベルを付けた訓練サンプルのセットで訓練されても良い。例えば、物体を分類するために訓練される機械学習モデルには、訓練サンプルは、物体の種類についてのラベルを付けた物体の様々な写真であっても良い。各々の訓練サンプルのラベルは、バイナリ又はマルチ・クラスであっても良い。画像分割のための機械学習モデルの訓練では、訓練サンプルは、手動で特定された画像の部分を有する、様々な保管サイトの規則的に形づくられた物体の写真であっても良い。場合によっては、教師なし学習技術が使用されても良い。訓練に使われるサンプルは、ラベルを付けられていない。クラスタリングのような様々な教師なし学習技術が使用されても良い。場合によっては、訓練は、ラベルを付けられたサンプルとラベルを付けられていないサンプルの混合を有する訓練セットで、半教師ありとされても良い。
【0086】
機械学習モデルは、訓練方法の目的のゴールを記述する計量値を生成する目的関数と関係していても良い。例えば、訓練は、予測を生成する際の、モデルのエラー率を減じることを意図していても良い。この場合には、目的関数は、機械学習モデルのエラー率を監視しても良い。物体認識(例えば、物体検出及び分類)において、機械学習アルゴリズムの目的関数は、訓練セットの物体を分類する際の訓練エラー率であっても良い。そのような目的関数は、損失関数と呼ばれても良い。特に、ラベルが付けられていないために、エラー率が容易に決定されない教師なし学習モデルのためには、他の形式の目的関数が使用されても良い。画像分割では、目的関数は、モデルが予測したセグメントと、訓練セットに手動で特定されたセグメントとの差と一致していても良い。様々な実施例では、エラー率は、クロス・エントロピー損失、L1損失(例えば、予測値と実測値との間の絶対値差分の合計)、L2損失(例えば、二乗距離の合計)として測定されても良い。
【0087】
図8Aを参照すると、いくつかの実施例による、例示のCNNの構造が示されている。CNN800は入力810を受け取り、出力820を生成しても良い。CNN800は、畳み込み層830とプーリング層840とリカレント層850と完全接続層860とカスタム層870のような様々な種類の層を含んでも良い。畳み込み層830は、層の入力(例えば画像)と1以上のカーネルとの畳み込みをつくって、カーネルによってフィルタにかけられた様々な種類の画像を生成し、特徴マップを生成する。各々の畳み込み結果は、活性化関数と関連付けられても良い。畳み込み層830の後に、カーネル・サイズによってカバーされる入力の部分から最大値(最大プーリング)又は平均値(平均プーリング)を選択するプーリング層840が続いても良い。プーリング層840は、抽出された特徴の空間サイズを減らす。いくつかの実施例では、一対の畳み込み層830とプーリング層840の後に、1以上のフィードバック・ループ855を含むリカレント層850が続いても良い。フィードバック855は、画像の特徴の空間的関係又は画像の物体の時間的関係を評価するのに用いられても良い。層830、840及び850の後に、互いに接続したノード(
図8Aの中では正方形で示される)を有する複数の完全接続層860が続いても良い。完全接続層860は、分類と物体検出に使用されても良い。いくつかの実施例では、1以上のカスタム層870が、特定のフォーマットの出力820の生成のために存在しても良い。例えば、カスタム層が、様々なセグメント・ラベルを有する画像入力の、ピクセルのラベリングのために、画像分割に使われても良い。
【0088】
図8AのCNN800の層の順序と層の数とは、例示のみのためである。様々な実施例では、CNN800は、1以上の畳み込み層830を含むが、プーリング層840又はリカレント層850を含んでも含まなくても良い。プーリング層840が存在する場合に、全ての畳み込み層830の後に、プーリング層840がいつも続くとは限らない。リカレント層は、CNNの他の位置に、異なる配置をされても良い。各々の畳み込み層830において、学習されるのを許可されるカーネルのサイズ(例えば3×3、5×5、7×7など)とカーネルの数とは、他の畳み込み層830と異なっていても良い。
【0089】
機械学習モデルは、特定の層及び/又はノード及び/又はカーネル及び/又は係数を含んでも良い。CNN800のようなニューラルネットワークの訓練は、順方向伝播と逆伝播を含んでも良い。ニューラルネットワークの各層は、隣の層の他のノードと完全に又は部分的に接続した1以上のノードを含んでも良い。順方向伝播では、ニューラルネットワークは、すぐ前の層の出力に基づいて、順方向での計算を実行する。ノードの作業は、1以上の関数により定義されても良い。ノードの作業を定義する関数は、1以上のカーネルとのデータの畳み込み、プーリング、RNNでのリカレント・ループ、LSTMの様々なゲートなどのような様々な計算作業を含んでも良い。関数は、ノードの出力の重みを調節する活性化関数も含んでも良い。異なる層のノードは、異なる関数と関連していても良い。
【0090】
ニューラルネットワークの関数の各々は、訓練中に調節可能な様々な係数(例えば、重み及びカーネル係数)と関連していても良い。更に、ニューラルネットワークのノードのいくつかは、順方向伝播でのノードの出力の重みを決定する活性化関数と関連していても良い。共通の活性化関数は、ステップ関数と、一次関数と、シグモイド関数と、双曲線正接(tanh)関数と、正規化線形ユニット(rectified linear unit(ReLU)関数を含んでも良い。入力が、ニューラルネットワークに提供されて、順方向にニューラルネットワークを通過した後で、結果が訓練のラベル又は訓練セットの他の値と比較されることによって、ニューラルネットワークのパフォーマンスを判定しても良い。予測方法が、訓練セットの他の画像に対して繰り返されて、特定の訓練ラウンドの目的関数の値を計算しても良い。今度は、ニューラルネットワークが、確率的勾配降下法(stocgastic gradient descent(SGD))のような勾配降下法によって、逆伝播を実行し、様々な関数の係数を調節して、目的関数の値を改良する。
【0091】
順方向伝播及び逆伝播の複数のラウンドが実行されても良い。目的関数が十分に安定した(例えば、機械学習モデルが収束した)ときに、又は、訓練サンプルの特定のセットに対する所定回数のラウンド後に、訓練を終えても良い。訓練された機械学習モデルは、予測又は物体検出又は画像分割又はモデルがそのために訓練された他の適当なタスクに使用されうる。
【0092】
図8Bは、いくつかの実施例によって、薄い物体を識別するように構造化され訓練された例示的なCNN880を示す概念図である。CNN880はCNN800の一例である場合があり、
図8Aで論じた訓練技法もCNN880に使用することができる。CNN880は、フロントエンド層882及びコンテキスト層884を含んでも良い。フロントエンド層882は、CNN800と同様の畳み込み層830とプーリング層840を含む。カーネルのサイズ、畳み込み層830の数、及びプーリングパラメータは、実施例に応じてカスタマイズされる場合がある。フロントエンド層は、入力画像内のエッジを検出し、画像内の特定の低レベルパターンを識別するために使用される場合がある。
【0093】
コンテキスト層884は、出力895を生成するために使用される1以上の拡張畳み込み層890を含む。各拡張畳み込み層890は、拡張係数と関連付けられる場合がある。拡張係数を有するカーネルは、サイズが拡張され、拡張された空間においてゼロで満たされる。例えば、拡張係数2は、行の2つの値の間にゼロを挿入し、元の行の間にゼロを有する行を挿入する。より高い拡張係数は、より多くのゼロを挿入し、カーネルのサイズをさらに拡大する。一般的な拡張係数は2、4、8、16などの場合がある。拡張された畳み込みは、CNN880がより大きなパターンをより局所的なパターンから区別することを可能にする場合がある。コンテキスト層884は、ワイヤやケーブルのような薄い物体を検出する際のCNN880の性能を向上させる場合がある1以上の拡張畳み込み層890を含む。いくつかの実施例では、拡張畳み込み層890のいくつかは、大きな拡張係数を有する場合がある。例えば、一連の拡張畳み込み層890は、d1-d2-d4-d8の拡張係数を有する場合がある。
【0094】
CNN880は、様々な薄い物体を含む画像である訓練サンプルのセットを用いて訓練される場合がある。訓練サンプルは、屋内、屋外、又は背景の異なる異なる環境の様々なシーンの実際の画像によって生成される場合がある。より多くの訓練サンプルを生成するために、画像のいくつかは、回転、拡大縮小、傾き、コントラストの調整、画像の色調の調整など、さらに操作される場合がある。画像内の薄い物体を調整して、画像のいくつかに、照明や天候などの異なる様々な条件をシミュレートさせる場合もある。
【0095】
コンピュータ・アーキテクチャ
図9は、コンピュータ読み取り可能な媒体から命令を読み取り、プロセッサ(又はコントローラ)でその命令を実行可能な、例示のコンピューティング・マシンの構成要素を示すブロック図である。ここで述べられるコンピュータは、
図9に示された1台のコンピューティング・マシン、又は仮想マシン、又は
図9に示されたコンピューティング・マシンの複数のノードを含む分散コンピューティング・システム、コンピューティング・デバイスの他の適切な取り合わせを含んでも良い。
【0096】
例として、
図9は、コンピュータ・システム900の例示の形のコンピューティング・マシンの図表示を示し、ここで述べられる1以上の方法をマシンに実行させるために、コンピュータ読取り可能な媒体に記憶された命令924(例えば、ソフトウェア又はプログラム・コード又は機械語)が、コンピューティング・マシン内部で実行されても良い。いくつかの実施例では、コンピューティング・マシンは、スタンドアローンの装置として作業し、又は、他のマシンに接続されて(例えば、ネットワーク化されて)いても良い。ネットワーク配備において、マシンは、サーバー-クライアント・ネットワーク環境で、サーバー・マシン又はクライアント・マシンの性能で作業しても良いし、又は、ピア・ツー・ピア(又は分散)ネットワーク環境で、ピア・マシンとして作業しても良い。
【0097】
図9で述べられるコンピューティング・マシンの構成は、在庫品管理システム140と、コンピュータ・サーバー150と、データ・ストア160と、ユーザデバイス170と、
図2に示される様々なエンジンとモジュールとインターフェースとターミナルとマシンとを含むがこれに限らない、
図1及び
図2に示される、どんなソフトウェア構成要素又はハードウェア構成要素又は組合せの構成要素に相当しても良い。
図9は、様々なハードウェア要素とソフトウェア要素を示すが、
図1及び2の中で記述される構成要素の各々は、追加の又はより少ない要素を含むかもしれない。
【0098】
例として、コンピューティング・マシンは、パーソナル・コンピュータ(personal computer(PC))、又はタブレットPC、又はセットトップボックス(set-top box)、又は携帯情報端末(personal digital assistant(PDA))、又は携帯電話機、又はスマートフォン、又はウェブ機器、又はネットワーク・ルーター、又はモノのインターネット(internet of things(IoT))機器、又はスイッチ又はブリッジ、又はマシンがとるべき行動を特定する命令924を実行可能な如何なるマシンであっても良い。更に、1台のマシンのみ図示されているが、「マシン」という語は、ここで述べられる1以上の方法論を実行するために、命令924を個別で又は共同で実行するマシンの集合も含むと受け取られても良い。
【0099】
例示のコンピュータ・システム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を介して通信するように構成されている。
【0100】
記憶装置916は、1以上の方法論又はここで述べられた関数を具体化した命令924が記憶されているコンピュータ読取り可能な媒体922を含む。命令924は、コンピュータ・システム900がそれらを実行中は、完全に又は少なくとも部分的に、メイン・メモリ904の中、又は、プロセッサ902の中(例えば、プロセッサのキャッシュメモリの中)に存在しても良く、メイン・メモリ904及びプロセッサ902も、コンピュータ読取り可能な媒体を構成している。命令924は、ネットワーク・インターフェース装置920を介して、ネットワーク926で送り又は受け取られても良い。
【0101】
コンピュータ読取り可能な媒体922は、例示の実施例で、1つの媒体であると示されているが、「コンピュータ読取り可能な媒体」という語は、命令(例えば、命令924)を記憶できる1つの媒体又は複数の媒体(例えば、集中又は分散データベース、又は関連キャッシュ及びサーバー)を含むものと解されるべきである。コンピュータ読取り可能な媒体は、マシンが実行する命令(例えば、命令924)を記憶可能で、ここで述べられた1以上の方法論をマシンに実行させる、どんな媒体を含んでも良い。コンピュータ読取り可能な媒体は、ソリッドステートメモリと、光学式媒体と、磁気媒体の形式のデータリポジトリを含むが、これに限定されるものではない。コンピュータ読取り可能な媒体は、信号又は搬送波のような一時的な媒体を含まない。
【0102】
更なる構成上の考察
特定の実施例は、論理回路、又はいくつかの構成要素又はエンジン又はモジュール又はメカニズムを含むものとして、ここで記述されている。エンジンは、ソフトウェア・モジュール(例えば、コンピュータで取り可能な媒体上に具体化されたコード)又はハードウェア・モジュールを構成しても良い。ハードウェア・エンジンは特定の作業を実行可能な実体的な装置であり、特定の方法で構成又は配置されても良い。例示の実施例では、1以上のコンピュータ・システム(例えば、スタンドアロ-ン、クライアント又はサーバコンピュータ・システム)、又はコンピュータ・システム(例えば、プロセッサ又はプロセッサのグループ)の1以上のハードウェア・エンジンは、ここで述べられたような特定の作業を実行するために作業するハードウェア・エンジンとして、ソフトウェア(例えば、アプリケーション又はアプリケーション部分)により構成されても良い。
【0103】
様々な実施例では、ハードウェア・エンジンは、機械的に、又は、電子的に実装されても良い。例えば、ハードウェア・エンジンは、特定の作業を実行するように、(例えば、フィールドプログラマブルゲートアレイ(field programmable gate array(FPGA))又は特定用途向け集積回路(application-specific integrated circuit(ASIC))のような専用プロセッサとして)不変に構成された専用の回路又は論理回路を含んでも良い。ハードウェア・エンジンは、ソフトウェアが特定の作業を実行するように一時的に構成される(例えば、多目的プロセッサ又は他のプログラム可能なプロセッサの中に含まれた)プログラム可能な論理回路又は回路も含んでも良い。機械的に、専用に不変に構成された回路のハードウェア・エンジン、又は一時的に構成された回路(例えば、ソフトウェアで構成される)を実行するという決定が、コストと時間を考慮してなされることはいうまでもない。
【0104】
ここで述べられた例示の方法の様々な作業は、関連の作業を実行するように(例えばソフトウェアによって)一時的に構成された又は不変に構成された、例えばプロセッサ902のような1以上のプロセッサによって、少なくとも部分的に実行されても良い。一時的に構成されていようと、不変に構成されていようと、そのようなプロセッサは、1以上の作業又はファンクションを実行するように動くプロセッサ実装エンジンを構成しても良い。ここに言及されるエンジンは、いくつかの例示の実施例で、プロセッサ実装エンジンを含んでも良い。
【0105】
特定の作業のパフォーマンスは、1台のマシン内に存在するだけではなく、いくつかのマシンにわたり配置された1以上のプロセッサに分散されても良い。いくつかの例示の実施例では、1以上のプロセッサ又はプロセッサ実装モジュールは、一つの地理的な位置(例えば、家庭環境内又はオフィス環境内又はサーバー・ファーム内)に存在しても良い。他の例示の実施例では、1以上のプロセッサ又はプロセッサ実装モジュールは、いくつかの地理的な位置にわたって分散していても良い。
【0106】
この開示を読むと、当業者は、ここで明らかにされた原理を通して、類似したシステム又は方法のための、更に追加の代替的な構造的及び機能的な設計を認識する。このように、特定の実施例及びアプリケーションが示され記述される一方で、開示された実施例が、寸分違わない構造と、ここで開示された構成要素とに限らないことを理解すべきである。様々な修正と変更とバリエーションが、添付の請求項で定義された意図及び範囲を逸脱することなく、ここで開示された配置及び作業及び方法の詳細になされる可能性があり、そのことは当業者にとって明らかである。
【0107】
(付記)
(付記1)
飛行ロボットを作動させる方法であって、
前記飛行ロボットによって第1の場所でとらえられた、環境の第1の画像を受け取ること、
前記第1の画像内の物体を識別すること、
前記物体のターゲットとなる1個以上の特徴に対応する、前記第1の画像内の第1の画素の1個以上を識別すること、
前記飛行ロボットによって第2の場所でとらえられた、環境の第2の画像を受け取ること、
前記第1の場所から前記第2の場所までの前記飛行ロボットの移動を推定する、前記飛行ロボットの距離データを受け取ること、
前記物体の前記ターゲットとなる1個以上の特徴に対応する、前記第2の画像内の第2の画素の1個以上を識別すること、及び、
前記距離データによって提供される前記飛行ロボットの移動に関する、前記第1の画素の1個以上からの前記第2の画素の1個以上の場所の変化に基づいて、前記飛行ロボットと前記物体との推定距離を決定すること、
を含む、方法。
【0108】
(付記2)
前記物体は畳み込みニューラルネットワークによって識別される、付記1に記載の方法。
【0109】
(付記3)
前記畳み込みニューラルネットワークは拡張畳み込み層を含む、付記2に記載の方法。
【0110】
(付記4)
前記第1の画像内の第1の画素の1個以上を識別することは、
前記物体に対応するように投影された前記第1の画像内の画素にタグ付けをすること、
前記画素をクラスタ化して複数の輪郭(contour)を形成すること、
前記輪郭をマージしてマージされた輪郭を形成すること、及び、
前記マージされた輪郭内の画素から前記ターゲットとなる1個以上の特徴を識別すること、
を含む、付記1に記載の方法。
【0111】
(付記5)
マージする前に、サイズに基づいて前記輪郭の1個以上がフィルタリングされる、付記4に記載の方法。
【0112】
(付記6)
前記ターゲットとなる1個以上の特徴は、前記物体の遠端の1個以上である、付記1に記載の方法。
【0113】
(付記7)
前記第2の画像内の第2の画素の1個以上を識別することは、
前記距離データに基づいて、前記第2の画像内の前記第1の画素の1個以上の場所を投影すること、及び、
前記第1の画素の1個以上の投影された場所に基づいて、前記第2の画素の1個以上を識別すること、
を含む、付記1に記載の方法。
【0114】
(付記8)
前記物体は画素10個未満の幅の薄い物体である、付記1に記載の方法。
【0115】
(付記9)
前記物体はワイヤである、付記1に記載の方法。
【0116】
(付記10)
前記距離データは慣性測定装置(IMU)から生成される、付記1に記載の方法。
【0117】
(付記11)
1個以上のプロセッサと、
命令を保存するように構成されたメモリと、
を含む、飛行ロボットであって、
前記命令は、前記1個以上のプロセッサによって実行されるとき、
第1の場所でとらえられた環境の第1の画像を受け取ること、
前記第1の画像内の物体を識別すること、
前記物体のターゲットとなる1個以上の特徴に対応する、前記第1の画像内の第1の画素の1個以上を識別すること、
第2の場所でとらえられた環境の第2の画像を受け取ること、
前記第1の場所から前記第2の場所までの前記飛行ロボットの移動を推定する、前記飛行ロボットの距離データを受け取ること、
前記物体の前記ターゲットとなる1個以上の特徴に対応する、前記第2の画像内の第2の画素の1個以上を識別すること、及び、
前記距離データによって提供される、前記飛行ロボットの移動に関する、前記第1の画素の1個以上からの前記第2の画素の1個以上の場所の変化に基づいて、前記飛行ロボットと前記物体との推定距離を決定すること、
を前記1個以上のプロセッサに実行させる、
飛行ロボット。
【0118】
(付記12)
前記物体は畳み込みニューラルネットワークによって識別される、付記11に記載の飛行ロボット。
【0119】
(付記13)
前記畳み込みニューラルネットワークは拡張畳み込み層を含む、付記12に記載の飛行ロボット。
【0120】
(付記14)
前記第1の画像内の第1の画素の1個以上を識別するための命令は、
前記物体に対応するように投影された前記第1の画像内の画素にタグ付けをすること、
前記画素をクラスタ化して複数の輪郭を形成すること、
前記輪郭をマージしてマージされた輪郭を形成すること、及び、
前記マージされた輪郭内の画素から前記ターゲットとなる1個以上の特徴を識別すること、
を前記プロセッサに実行させる命令を含む、
付記11に記載の飛行ロボット。
【0121】
(付記15)
マージする前に、サイズに基づいて前記輪郭の1個以上がフィルタリングされる、付記14に記載の飛行ロボット。
【0122】
(付記16)
前記ターゲットとなる1個以上の特徴は、前記物体の遠端の1個以上である、付記11に記載の飛行ロボット。
【0123】
(付記17)
前記第2の画像内の第2の画素の1個以上を識別するための命令は、
前記距離データに基づいて、前記第2の画像内の前記第1の画素の1個以上の場所を投影すること、及び、
前記第1の画素の1個以上の投影された場所に基づいて、前記第2の画素の1個以上を識別すること、
を前記プロセッサに実行させる命令を含む、
付記11に記載の飛行ロボット。
【0124】
(付記18)
前記物体は画素10個未満の幅の薄い物体である、付記11に記載の飛行ロボット。
【0125】
(付記19)
前記物体はワイヤである、付記11に記載の飛行ロボット。
【0126】
(付記20)
慣性測定装置(IMU)をさらに含み、前記距離データは前記IMUから生成される、付記11に記載の飛行ロボット。
【国際調査報告】