[0029]本明細書におけるいくつかの実装形態は、操作者が指定することが可能である構造、建物、橋、パイプライン、設備、物体、現場、地理的特徴、犯罪現場、事故現場、または任意の他のスキャン対象などの3次元(3D)スキャン対象をスキャンするようにUAVを構成するための技法および配置を対象とする。例えば、UAVは、スキャン対象の最初のインジケーションに基づいてスキャン対象を自律的にスキャンするように構成可能であってよい。スキャンは、スキャン対象の高解像度3Dマップまたは他の3Dモデルを生成することなどのために完全かつ繰り返し可能なやり方で、示されたスキャン対象の、一連の画像を取得することまたは映像を取得することなどを含んでよい。本明細書におけるUAVは、凹所、でこぼこして傾いた表面、開口部、および非対称な幾何学的形状などを含むスキャン対象などの複雑な幾何学的形状を有するスキャン対象を取得することができる。
[0030]本明細書における例は、リアルタイムで飛行中でのスキャン対象の3D再構成によってスキャン対象の完全な動的な調査および取得を自動化することが可能になることなどによって、従来のシステムに対する利点を提供する。3D再構成は、最初のラフスキャンから低解像度3Dモデルを最初に生成することなどによって、範囲データに基づいてスキャン対象の外観を取得することを含んでよい。場合によっては、低解像度3Dモデルは繰り返し微調整されてよく、UAVがスキャン対象のスキャンを実行している間に(ほぼリアルタイムを含み得る)リアルタイムでの高解像度3Dモデルの3D再構成を可能にするための追加のスキャンが実行されるため、精度は改善され得る。
[0031]さらに、UAVは、UAVの手動制御によって実現可能であるよりも一貫性のある、撮像されるスキャン対象の表面の一部に対する所望の距離および向きを維持することによってスキャンされた画像の信頼できるフレーミングを自律的に提供し得る。さらに、本明細書における例は、スキャンデータの機械学習または人による精査を使用してスキャン対象の関連した特徴の堅牢な検出を可能にし得る。さらに、スキャンデータは、UAVが依然現場にある間に精査されてよく、それによって、追加のスキャンを実行するために現場に戻らなければならない可能性が低減される。さらに、本明細書における例によって、人間の操作者が注意する必要性が低減され、かつ、従来のシステムを使用して可能であるよりも、大型のスキャン対象のより迅速な広範囲にわたるスキャンが実行可能である。
[0032]いくつかの例では、UAVに搭載された1つまたは複数のプロセッサは、プログラムコードまたは他の実行可能命令によって、本明細書に説明される自律的な動作を実行するように構成されてよい。例えば、1つまたは複数のプロセッサは、意図した飛行経路に沿ってUAVを制御しかつナビゲートしてよいが、スキャン対象の最初の低解像度3Dモデルを生成するまたはこれにアクセスすること、低解像度3Dモデルに基づいてスキャン対象をスキャンするためのスキャン計画を決定すること、および、障害物を回避することも行いながらスキャン計画を実行するためのスキャンを行うためにUAVを一連の姿勢にナビゲートすることなど、本明細書に説明される他の動作も実行し得る。3Dモデルおよび/またはスキャン計画は、スキャン中にUAVによって獲得される情報に基づいてスキャン中にリアルタイムで更新され得る。さらにまたは代替的には、場合によっては、UAVから遠く離れており、かつUAVと通信しているリモートUAVコントローラまたは他のコンピューティング装置上の1つまたは複数のプロセッサは、上で論じられた動作の1つまたは複数を支援するまたは管理することなどの命令を、UAVに搭載された1つまたは複数のプロセッサに提供してよい。例えば、最初の3Dモデルは、UAVによって、UAVから遠く離れたコントローラまたは別のコンピューティング装置から受信されてよい。
[0033]スキャンを開始するために、ユーザは、ユーザインターフェースへの1つまたは複数の入力を、入力情報をUAVに提供することができるUAVコントローラまたは他のコンピューティング装置上に提示させることなどによって、関心のあるスキャン対象またはスキャン対象の一部分を最初に示してよい。1つの例として、ユーザは、スキャン対象の画像を得るためにUAVを手動でナビゲートしてよく、ユーザは、スキャン対象を示すためにユーザインターフェースに提示されるスキャン対象の画像上に多角形または他の2D形状を作成してよい。代替的には、ユーザは、ユーザインターフェースにおいてスキャン対象の画像の周りに境界ボリュームを指定してよい、3つ以上の基準点(例えば、「柱」)などに基づいて境界エリアを指定してよい、または、UAVに対してスキャン対象を指定するための、以下にさらに論じられるような複数の他の技法のいずれかを使用してよい。例えば、ユーザは、スキャン対象の形状、所望されるスキャンのタイプ、およびスキャンされることが望ましい対象の部分などに応じて、複数の異なる利用可能な技法の中から最も効果的であると決定されるスキャン対象を指定するための技法を用いてよい。
[0034]スキャン対象の受信したインジケーションに基づいて、UAVは、グローバル座標系との相関性に基づいてまたはさまざまな他の技法を通してなど、スキャン対象のインジケーションを空間における1つまたは複数の位置と相関させてよい。例えば、UAVは、例えば、3D空間におけるスキャン対象表面の場所を決定するために範囲センサなどによって最初のスキャンを実行することによって、スキャン対象の最初の粗スキャンを自律的に実行してよい。1つの例として、範囲センサは、スキャン対象の表面までの距離を決定するために使用可能である立体撮像または単眼撮像用に構成された画像センサのアレイなど、1つまたは複数の搭載画像センサによって提供されてよい。画像センサがステレオ撮像対を含む場合、UAVは、UAVからスキャン対象の表面上の1つまたは複数の点までの相対距離を決定するために同じ表面の2つの関連画像の間の視差を決定するために画像センサからの入力を使用してよい。代替的には、1つもしくは複数の単眼視画像センサからの画像が使用されてよい、および/または、UAVの既知の場所などに対する3D空間におけるスキャン対象の表面の場所を決定するためのさまざまな他の距離センシングおよび3D再構成技法が使用されてよい。
[0035]1つの例として、UAVは、ステレオ対のナビゲーション画像センサおよび/または広域ベースライン多視点ステレオ(MVS)画像センサ対からの範囲画像を、複数の点を含む表面メッシュ推定を生成することができる切り捨てられた符号付き距離関数のボリューム(volumetric Truncated Signed Distance Function(TSDF))に融合してよい。最初のTSDF生成3Dモデルは、典型的には、より低い解像度およびより低い精度のものであり得るが、これは、スキャン対象が、より高い精度に向けた十分に多様な視点および/または十分に近い距離から依然撮像されていないあるいはスキャンされていないからである。例えば、UAVの飛行が表面に近いほど、UAVがステレオ対の範囲画像を3Dモデルに融合し続ける際にTSDFにおいて表面の場所および表面の形状の推定の精度が高まる。
[0036]第1の解像度でスキャン対象の低解像度3Dモデルを生成するための最初のスキャンがUAVによって実行され得る。最初のスキャン中、UAVは、スキャン対象の1つまたは複数の表面を自律的に撮像してよく、スキャン対象に近接して飛行し、かつ最初のスキャンを実行している間に低解像度3Dモデルの完全性および/または解像度をリアルタイムで動的に改善し得る。例えば、低解像度3Dモデルは、3D空間における複数の点集合を含んでよく、その点の場所は、距離測定に基づいて決定されたスキャン対象の表面に対応する。さらに、UAVは、低解像度3Dモデルに含まれる点集合における点のいくつかまたは全てに対する各々の垂線を決定し得る。1つの例として、それぞれの垂線は、それぞれの点が位置するスキャン対象の表面に対して略垂(直)角でそれぞれの点が位置する表面から外方に延在する仮想線であってよい。例えば、それぞれの対応する垂線は、3Dモデルのそれぞれの点から、それぞれの点を取り囲むエリアにおけるスキャン対象の表面に対応する平面に略直角に外方に延在し得る。
[0037]UAVは、スキャン対象をスキャンするためのスキャン計画を生成しかつ動的に更新するために低解像度3Dモデルを使用してよい。例えば、スキャンすることは、所望の解像度または詳細などの画像を取得するためにUAVとスキャン対象との間の所望の距離(例えば、指定される地上分解能)からスキャン対象の一連の画像を取得することを含んでよい。1つの例として、スキャン計画を決定することは、UAVに搭載された1つまたは複数の画像センサを使用してスキャン対象表面からの指定された距離で、スキャン対象の複数の画像を取得するための最初のスキャンよりも高い解像度のスキャンを実行するために、UAVが取る一連の姿勢を決定することを含んでよい。1つの例として、低解像度3Dモデルに基づいて、UAVに搭載された1つまたは複数のプロセッサは、低解像度3Dモデルの少なくとも一部の生成の後にUAVが飛行している間にスキャン対象用のスキャン計画を決定してよい。スキャン計画を決定することは、どれくらいの画像を取得するか、それぞれの画像を取得するためのスキャン対象からの距離、それぞれの画像を取得する時のスキャン対象に対するUAVの向き(姿勢)(例えば、覆われる点をさらに考慮するための垂線から最も離れた角度)、取得される画像の解像度および品質、取得される画像の重複量、最高UAV飛行速度、画像を取得する間の最高側方速度および角速度、露出およびホワイトバランスなどの他のカメラ設定などのさまざまなパラメータを決定することまたは考慮に入れることを含んでよい。
[0038]スキャン計画および低解像度3Dモデルに基づいて、UAVは、スキャン対象をスキャンし、かつ3Dモデルおよび/またはスキャン計画を更新するためにリアルタイムの3D再構成を使用してよい。いくつかの例では、スキャンは、衛星測位情報を必要とすることなく、低解像度3Dモデル、またはUAVの外部のソースから提供されるスキャン対象に関する他のデータを必要とすることなく、および、ネットワーク接続を必要とすることなく、実行され得る。UAVは、スキャン計画のために決定された一連の姿勢に基づいてスキャン対象の画像を取得するように自律的にナビゲートし得る。例えば、スキャン計画に基づいて、画像は、存在し得る障害物との衝突を回避しながら1つの姿勢から次の姿勢へとUAVが飛行する間に途切れなく取得され得る。
[0039]スキャン計画に基づくスキャン対象のスキャン中、UAVは、新たにスキャンされた画像および/または表面の点までの新たに検出された距離などに少なくとも部分的に基づいて、スキャン対象のより高い解像度バージョンの3Dモデルをリアルタイムで生成するために3D再構成技法を使用してよい。本明細書における例において、「リアルタイム」は、「ほぼリアルタイム」を含んでよく、かつ、例えば、UAVが1つもしくは複数の画像の取得後に依然飛行している間に、および/またはUAVがスキャンを実行しているもしくは姿勢間を行き来しているなどの間に、処理能力が利用可能になるため、過度の遅延なく言及される処理または他の動作を実行することを指す場合がある。本明細書におけるリアルタイムの処理の実際の時間は、UAVの搭載プロセッサおよび他のコンポーネントの処理能力に基づいて変化し得る。例えば、本明細書におけるUAVは、3Dモデルを更新すること、スキャン計画を更新すること、ならびに、点群モデルおよび/または3Dメッシュモデルなどの高解像度3Dモデルを構築することなど、複数の異なる処理動作のいずれかをリアルタイムで実行してよい。
[0040]いくつかの例では、スキャンおよび3D再構成は、最初のスキャン計画に従ってスキャン対象のスキャン中に点または他の情報を3Dモデルに追加し、かつ3Dモデルに追加された情報に基づいて最初のスキャン計画を動的に更新することなどによって、反復して実行されてよい。上述されるように、UAVは、TSDFなどに基づいて、最初の低解像度3Dモデルを生成するために最初の粗スキャンを使用してよい。UAVは、TSDFによって規定された低解像度3Dモデルに対応する表面を覆うための最初のスキャン計画を決定し得る。UAVは、UAVがスキャン計画をナビゲートする際に追加の範囲画像を融合することによって3Dモデルを更新し続けながら最初のスキャン計画のいくつかまたは全てを飛行してよい。したがって、UAVがスキャン計画をナビゲートする際に3Dモデルに関する表面情報の品質は改善され続け、さらなる表面が発見される場合がある。場合によっては、3Dモデルの精度、被覆などが反復して改善されるため、スキャン計画では、先に含まれなかった新たな点を覆うこと、または先に識別されなかった障害物を回避することなどが動的に更新され得る。
[0041]高解像度3Dモデル、およびスキャン中に取得された画像は、例えば、UAVがスキャン対象のスキャンを完了した、または少なくともスキャンの一部を完了した後、ネットワーク接続などによって、UAVから1つまたは複数のコンピューティング装置にエクスポートされてよい。いくつかの例では、取得された画像および/または3Dモデル情報は、スキャン対象のスキャンが行われている際に、コントローラまたは別のコンピューティング装置に無線で送られてよい。場合によっては、画像は、スキャン対象のテクスチャ処理された3Dモデルの作成を可能にする、例えば、スキャン対象を観測する、スキャン対象の高解像度検査を実行する、または、このような高解像度3Dモデルおよび高解像度画像によって実行され得るさまざまな他の観察、コンピュータグラフィック、もしくはコンピュータモデリング動作のいずれかのために、3Dモデルの点と相関関係があってよい。
[0042]論述の目的で、画像を取得するおよび/または3Dモデルを生成するなど、スキャン対象を自律的にスキャンするようにUAVを構成するためのいくつかの例示の実装形態について説明する。しかしながら、本明細書における実装形態は、提供される特定の例に限定されるものではなく、本明細書の開示に照らすと当業者に明らかになるように、他のタイプのスキャン対象、他のタイプの車両、他のタイプの3D再構成技法、他のタイプの飛行計画技法、他のタイプのスキャン技法、および他のタイプのモデリング技法などに拡張されてよい。
[0043]図1は、いくつかの実装形態による無人航空機(UAV)102を使用して自律スキャンを実行することができる例示のシステム100を示す。この例では、UAV102を斜角で上から観測している。UAV102に加えて、システム100は、コントローラ104およびドッキングステーション106も含んでよい。コントローラ104は、ユーザ108によって制御されてよく、かつ、無線通信リンクを介してUAV102と通信するように構成されてよい。いくつかの例として、コントローラ104は、Wi-Fiネットワーク、BLUETOOTH(登録商標)無線リンク、直接ISMバンド通信、または任意の他の適した無線通信など、さまざまなタイプの無線プロトコルおよび周波数を介して通信してよい。例えば、900MHz、2.4GHz、および5.8GHzは、UAVによる双方向通信に使用される最も一般的な無線周波数であるが、本明細書における実装形態は、いかなる特定の通信タイプ、周波数、またはプロトコルにも限定されない。
[0044]コントローラ104は、無線通信リンクを介してUAV102から(映像または静止画像を含み得る)画像を受信してよい。さらに、ユーザ108は、コントローラ104に、グラフィカルユーザインターフェース(GUI)に提示される1つもしくは複数の仮想制御、および/または(図1では不可視の)コントローラ104上に含まれるジョイスティックもしくはボタンなどの1つもしくは複数の物理的制御などを介して、コマンド、例えば、「離陸」、「着陸」、「追従」をUAV102に発行させてよい。したがって、コントローラ104は、ユーザ108が、コントローラ104と関連付けられたディスプレイ上に提示されるGUIを介して可能とされる仮想制御入力に加えて手動制御入力を行うことを可能にしてよい。例示のコントローラ104について、図6に関して以下にさらに示しかつ論述する。
[0045]コントローラ104は、ユーザ108が、この例におけるスキャン対象110などのスキャン対象の自律または半自律スキャンを行うことに関連するコマンドを入力できるようにしてよい。いくつかの実装形態では、コントローラ104は、UAV102と通信しかつこれを制御するように構成されるソフトウェアを実行する、モバイル装置、タブレット、またはラップトップを含んでよい。例えば、システム100は、図15~図23に関して以下に論じられるプロセスの1つまたは複数を実行するあるいは実装するために使用されてよい。
[0046]例えば、図2~図4に関して以下にさらに論じられるように、UAV102は、推進メカニズム、1つもしくは複数の画像センサ、および、UAV102に搭載される1つもしくは複数の画像センサおよび/または他のセンサからの入力などに基づいて、UAV102をナビゲートするための推進メカニズムを制御することができる1つまたは複数のプロセッサを含む。いくつかの例では、ユーザ108は、スキャン対象110がスキャンを実行するスキャン対象であることを選択するあるいはUAV102に示すためにコントローラ104を使用してよい。スキャン対象(またはスキャン対象部分)を選択する例について、例えば、図6~図10に関して以下にさらに論じる。コントローラ104は、行われるスキャンのためのスキャン対象110の表面からの指定されるスキャン距離(例えば、地上分解能(GSD))、および、以下にさらに論じられるような他のスキャンパラメータを示すためにさらに使用されてよい。
[0047]UAV102に搭載されるプロセッサは、スキャン対象110のスキャンを実行するためにスキャン対象110の(図1には示されない)低解像度3Dモデルを生成する、受信する、あるいはこれにアクセスするための実行可能命令によって構成されてよい。この例において、スキャン対象110は、屋根116に隣接して装着されるパラボラアンテナ114を有する建物112を含む。上述されるように、実装形態は任意の特定のタイプのスキャン対象に限定されるものではなく、可能なスキャン対象のいくつかの例は本明細書の他の箇所に列挙されている。UAV102によって生成されるあるいはアクセスされる低解像度3Dモデルは、最初のより低い解像度でのスキャン対象110の最初のスキャン中に検出されたスキャン対象110の表面に対応する3D空間における点集合を含んでよい。
[0048]低解像度3Dモデルに基づいて、プロセッサは、第2のより高い解像度でのスキャン対象110の一連の画像を取得することによってスキャン対象110をスキャンするためのスキャン計画を決定しかつ実行してよい。スキャン計画は、1つまたは複数の画像センサを使用して、スキャン対象110の一連の画像を取得することを採用するためにUAV102のプロセッサによって決定される一連の姿勢を含んでよい。例えば、スキャン計画のための姿勢は、低解像度3Dモデルにおける点集合から選択される選択点および選択点のそれぞれの垂線に基づいて決定されてよい。1つの例として、スキャン計画は、各々の画像に対する中心点として使用するための点を選択し、一方で、指定される地上分解能でおよび所望の解像度で撮られた画像の所望の重複量を提供するために先の中心点に十分近い連続する中心点を選択してよい。それぞれの姿勢について、プロセッサは、UAV102を、スキャン計画の一連の姿勢をトラバースするための姿勢に対応する姿勢を取るように飛行させる推進メカニズムを制御してよい。
[0049]UAV102は、スキャン計画におけるそれぞれの姿勢からスキャン対象110の1つまたは複数の画像を取得するために1つまたは複数の画像センサを使用してよい。1つの例として、姿勢の位置は、選択点(例えば、それぞれの画像の選択された中心点)のそれぞれの垂線に沿っており、かつスキャン計画のスキャン距離パラメータに対応する選択点からの選択距離にあると決定され得る。しかしながら、本明細書における実装形態は、点の垂線に沿って画像を取得することに限定されるものではなく、むしろ、いくつかの例では、画像取得は、選択点の垂線に対する角度で行われてよい。さらに、必ずしも、点と姿勢との間の1対1の対応があるわけではない。逆に、低解像度3Dモデルにおける点は、画像の所望の解像度に対する最適な効率で、および、スキャン対象110の表面からの指定のスキャン距離で、スキャン対象の選択エリア全体を覆うための最適な姿勢を決定するための基準点を提供する。
[0050]UAV102は、スキャン計画に含まれる姿勢の視野(FOV)によってスキャン対象110の低解像度3Dモデルの点を体系的に覆うように構成されてよい。例えば、プロセッサは、低解像度3Dモデルの点集合を、覆われている点の部分集合および覆われていない点の部分集合に分割するように構成されてよい。覆われている点は、1つまたは複数の姿勢が既に指定されている低解像度3Dモデル上の点であってよく、覆われていない点は、姿勢がまだ指定されていないような点であってよい。
[0051]スキャン計画の展開中、次の姿勢を決定するために、UAV102のプロセッサは、覆われていない点の部分集合から次の中心点を選択してよく、選択した次の中心点および選択した次の中心点のそれぞれの垂線に基づいて、次の姿勢を決定してよい。例えば、次の中心点を決定することは、スキャン対象110の表面からの画像センサの指定された距離、画像センサのFOVが指定された距離で覆うことになる面積、連続した画像間の所望の重複量、および次の中心点と1つまたは複数の隣接する覆われた中心点との間の距離の関数として行われてよい。
[0052]いくつかの実装形態では、プロセッサは、スキャン対象110の全てのアクセス可能な表面の完全な被覆を得ること、姿勢に対する規則的で予測可能なパターンを有すること、および、スキャン計画の実行中のUAV102の効率的なナビゲーションを可能にすることなど、さまざまな懸念事項の均衡化に基づいて、全ての点を覆うためのスキャン計画を生成し得る。場合によっては、プロセッサは、スキャン計画に従ってスキャン対象110のスキャンを開始する前に前もってスキャン計画全体を決定してよい。他の例では、プロセッサは、スキャン計画の第1の部分を決定してよく、次いで、スキャン計画の第1の部分を実行している間にスキャン計画の残りの部分を決定してよい。さらに、プロセッサは、スキャン計画の実行中に受信された新たなセンサデータに基づいて、スキャン計画の実行中に3Dモデルおよびスキャン計画を動的に更新するように構成されてよい。1つの例として、スキャン計画の実行中に障害物に遭遇する場合、プロセッサは、障害物との衝突を回避するなどのために、障害物の場所に基づいてスキャン計画を動的に更新してよい。
[0053]場合によっては、スキャン計画および3Dモデルは、飛行中に繰り返し更新されてよい。例えば、上述されるように、UAV102は、TSDFによって規定された低解像度3Dモデルに対応する表面上の表面被覆を確実にするように最初のスキャン計画を決定してよい。UAV102は、UAV102がスキャン計画をナビゲートする際に決定される追加の範囲距離測定に基づいて3Dモデルを更新し続けながら、最初のスキャン計画の少なくとも一部をトラバースしてよい。したがって、3Dモデルに関する表面情報の精度は、UAV102がスキャン計画をナビゲートする際に改善され続ける場合がある。3Dモデルの更新に基づいて、スキャン計画では、先に含まれなかった新たな点を覆うこと、または障害物などを回避することなどが動的に更新されてよく、これによって、3Dモデルのさらなる更新およびスキャン計画のさらなる更新などがもたらされ得る。
[0054]いくつかの例では、3Dモデルは、3D点群を含んでよく、スキャン中に撮られる画像から決定される範囲は、高解像度3Dモデルを提供するために、より多くの点を3D点群に追加するために使用されてよい。さらに、いくつかの例では、メッシュ3Dモデルは、知られている3Dモデリング技法を使用する3D点群などに基づいて生成されてよい。その上、少なくとも低解像度3Dモデルは、コントローラ104を通して、またはUAV102と通信できる他のコンピューティング装置を通して、ユーザ108などのユーザによって観測するために即座に利用可能にされてよい。1つの例として、ユーザ108は、スキャン対象110の全ての所望の部分がスキャン中に取得されていることを確実にするために、および/または、欠けている画像もしくは他の欠けている情報を有する任意のエリアの再スキャンを指定するために、3Dモデルを精査してよい。3Dモデルのユーザの精査が、UAV102が依然空中にある間または着陸後などに、実地において、例えば、現場すぐの所で行われ得るため、この能力によって、その後になって追加のスキャンを実行するためにスキャン対象110の現場に戻らなければならない必要性をなくすことができる。
[0055]さらに、いくつかの例では、複数のUAV102は、スキャン対象110を同時にスキャンするために使用されてよい。例えば、複数のUAV102は、スキャン対象110を部分に分けるために互いに通信してよく、それぞれが、スキャン対象110の指定された部分をスキャンしてよい。いくつかの例では、UAV102のうちの1つは、最初に、スキャン対象110全体の低解像度3Dモデルを構築してよく、一方他の例では、それぞれのUAV102は、スキャン対象110の少なくともこれ自体の指定された部分のこれ自体の低解像度3Dモデルを構築してよい。さらに、いくつかの例では、それぞれのUAV102は、スキャン対象110のこれ自体の指定された部分に対するこれ自体のスキャン計画を計算しかつ実行してよい、または代替的には、UAV102のうちの1つは、スキャン計画を決定してよく、かつスキャン計画を他のUAV102に提供してよい。さらに別の代替策として、他の例では、リモートコンピューティング装置(例えば、コントローラ104またはモバイル装置)は、低解像度3Dモデルを構築してよい、および/またはスキャン計画を決定してよい。
[0056]図2は、いくつかの実装形態によるスキャン対象のスキャンを実行することができるUAV102の上側の例示の構成を示す。UAV102は、1つまたは複数の推進メカニズム202を含んでよい。この例では、4つの推進メカニズム202が含まれ、それぞれがプロペラ206を回転させるためのモータ204を含んでいる。1つの例として、UAV102は示されるようなクワッドコプタドローンであり得るが、本明細書における実装形態は、UAV102に対する任意の特定の構成に限定されない。
[0057]さらに、UAV102は、可視光、赤外光、および/または場合によっては、周囲の画像を取得するための他の波長の電磁放射を検知することが可能であり得るカメラなどの1つまたは複数の画像センサを含んでよい。示される例では、画像センサは、安定した、ぼけが少ない画像取得および物体追跡をサポートするためにジンバル210上に装着された高解像度の画像センサ208を含む。例えば、画像センサ208は、スキャン計画の実行中にスキャン対象の表面の高解像度スキャンに使用されてよい。
[0058]UAV102は、UAV102の本体220の上側218付近で間隔があけられた複数の低解像度画像センサ212、214、および216も含む。1つの例として、画像センサ212、214、および216は、広範なFOVおよび立体コンピュータビジョンをサポートする能力を提供するために各々の魚眼レンズによって覆われてよい。
[0059]UAV102は、(図2には示されない)1つまたは複数の搭載プロセッサも含む。例えば、UAV102は、図4に関して以下にさらに論じられるような電子部品およびハードウェア構成を含んでよい。プロセッサは、画像処理、コンピュータビジョン、ナビゲーション、スキャン対象のスキャン、および3Dモデル構築などを行うために、画像センサ208、212、214、および216から画像を受信してよい。
[0060]図3は、いくつかの実装形態によるスキャン対象のスキャンを実行することができるUAV102の底部側の例示の構成を示す。この観点から、UAV102の本体220の底部側308に配置されたさらに3つの画像センサ、すなわち、画像センサ302、画像センサ304、および画像センサ306が可視である。画像センサ302、304、および306はまた、広範な視野を提供するために各々の魚眼レンズによって覆われてよく、かつ立体コンピュータビジョンをサポート可能であってよい。いくつかの例では、低解像度画像センサ212、214、216、302、304、および306は、高解像度のローカリゼーションならびに障害物の検出および回避のための視覚慣性オドメトリ(VIO)を可能にしてよい。さらに、画像センサ208、212、214、216、302、304、および306のいくつかまたは全ては、スキャン対象の3Dモデルの構成を決定するためにTSDFに提供される範囲データを得るためにスキャン対象をスキャンするために使用されてよい。
[0061]UAV102は、例えば、図5に関して以下にさらに論じられるように、ドッキングステーション106のUAV支持体上に自律的に着陸するように構成されてよい。UAV102は、UAV102の底部側308で本体220に取り付けられる電池パック310における電池も含む。電池パック310は、UAV102がドッキングステーション106のUAV支持体上で支持される時に電池の充電ができるようにするための外部導電接点312を含む。例えば、電池パック310は、テーパ状になっており、かつドッキングステーション106のUAV支持体内に収まるような形になっていてよい。電池パック310の底面314はUAV102の最底面である。
[0062]以下に図5に関して説明される技法は、ドッキングステーション106のUAV支持体上にUAV102を着陸させるために使用され得る。例えば、UAV102がUAV支持体上に着陸すると、電池パック240の底部は、UAV支持体に接触し得、かつUAV支持体のテーパ状側面によって、UAV支持体の底部において中心となる場所に機械的に案内され得る。着陸が完了する時、電池パック310の外部電気接点312はUAV支持体上の電気接点と接触し得ることで、UAV102の電池の充電を可能にするための電気接続がなされる。例えば、ドッキングステーション106は、UAV102がUAV支持体上で支持されている間に電池を充電するように構成される充電器を含んでよい。
[0063]図4は、いくつかの実装形態による例示のUAV102の抜粋したコンポーネントを示す。本明細書における例において、UAV102は、ドローンと称されることがあり得、人間のパイロットが機内にいなくても制御された飛行が可能である任意のタイプのUAVとして実装されてよい。例えば、UAV102は、1つまたは複数の実行可能プログラムを実行する1つまたは複数の搭載プロセッサ402によって自律的に制御されてよい。さらにまたは代替的には、UAV102は、例えば、人間のパイロットによって操作される、および/またはコントローラ104上でもしくはこれと協働して実行する実行可能プログラムによって制御される遠隔に位置するコントローラ104などを通して、リモートコントローラによって制御されてよい。
[0064]示される例では、UAV102は、1つまたは複数のプロセッサ402、および1つまたは複数のコンピュータ可読媒体404を含む。例えば、1つまたは複数のプロセッサ402は、飛行、ナビゲーション、およびUAV102の他の機能を制御するためのソフトウェアまたは実行可能命令などを実行してよい。それぞれのプロセッサ402は、単一の処理ユニットまたはいくつかの処理ユニットであってよく、かつ単一のもしくは複数のコンピューティングユニットまたは複数の処理コアを含んでよい。プロセッサ402は、1つもしくは複数のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、デジタル信号プロセッサ、中央処理ユニット、グラフィックス処理ユニット、状態機械、論理回路網、および/または動作命令に基づいて信号を操作する任意の装置として実装可能である。例えば、プロセッサ402は、本明細書に説明されるアルゴリズムおよび処理を実行するように具体的にプログラミングされたまたは構成された任意の適したタイプの1つまたは複数のハードウェアプロセッサおよび/または論理回路であってよい。プロセッサ402は、本明細書に説明される機能を実行するようにプロセッサ402をプログラミングすることができる、コンピュータ可読媒体404に記憶されたコンピュータ可読命令をフェッチしかつ実行するように構成可能である。
[0065]コンピュータ可読媒体404は、コンピュータ可読命令、データ構造、プログラムモジュール、もしくはその他のコードおよびデータなどの情報の記憶の任意のタイプの技術において実装される揮発性および不揮発性メモリならびに/または取り外し可能および取り外し不可能な媒体を含んでよい。このようなコンピュータ可読媒体404は、限定はされないが、RAM、ROM、EEPROM、フラッシュメモリもしくはその他のメモリ技術、光ストレージ、ソリッドステートストレージ、磁気ストレージ、または所望の情報を記憶するために使用でき、かつコンピューティング装置によってアクセス可能である任意の他の媒体を含み得る。構成に応じて、コンピュータ可読媒体404は、本明細書に述べられる時、非一時的なコンピュータ可読媒体が、エネルギー、搬送波信号、電磁波、および信号自体などの媒体を除外する限りにおいて、あるタイプのコンピュータ可読記憶媒体であってよい、および/または有形的な非一時的媒体であってよい。
[0066]コンピュータ可読媒体404は、プロセッサ402によって実行可能である任意の数の機能要素を記憶するために使用されてよい。多くの実装形態では、これらの機能要素は、プロセッサ402によって実行可能であり、かつ実行される時、具体的には、UAV102に帰属するアクションの少なくともいくつかを実行するように1つまたは複数のプロセッサ402を構成する命令またはプログラムを含む。コンピュータ可読媒体404に記憶された機能要素は、入力を受信し、かつUAV102のナビゲーションおよびその他の機能を制御するための処理を実行し得る車両制御プログラム406を含み得る。機能要素は、本明細書に記載されるスキャン対象スキャン機能の少なくとも一部分を実行するために1つまたは複数のプロセッサによって実行され得るスキャンプログラム408をさらに含む。さらに、機能要素は、以下にさらに論じられるように、モバイル装置またはコントローラ104などのユーザ装置にUAV102によって提供され得るウェブアプリケーション409を含んでよい。例えば、ウェブアプリケーションは、ユーザがUAV102の現在の視点の画像を受信し、対象のスキャン中にUAV102のスキャン進行状況を観測し、スキャンされた画像および3Dモデルなどを受信することができるようにするためなど、ユーザ装置上のブラウザ上で実行してよい。
[0067]さらに、コンピュータ可読媒体404は、本明細書に説明されるナビゲーションおよびスキャン動作を実行するために使用されるデータを記憶し得る。よって、コンピュータ可読媒体404は、少なくとも一時的に取得された画像410、センサデータ412、1つまたは複数の3Dモデル414、1つまたは複数のスキャン計画416、およびナビゲーション/追跡情報418を記憶してよい。さらに、UAV102は、本明細書に説明されるような、多くの他の論理、プログラム、および物理コンポーネントを含んでよいが、これらは論述に関連している例に過ぎない。
[0068]ナビゲーションを支援するために、UAV102は、UAV102に搭載される全地球的航法衛星システム(GNSS)受信機420を含んでよい。GNSS受信機420は、全地球測位衛星(GPS)システム、ロシアの全地球的航法衛星システム(GLONASS)、中国の北斗衛星導航系統(BDS)、欧州連合のガリレオシステム、日本の準天頂衛星システム(QZSS)、および、インド地域航法衛星システム(IRNSS)などのGNSSの1つまたは複数の衛星から信号を受信できるようにしてよい。
[0069]UAV102は、慣性測定装置(IMU)422をさらに含んでよい。いくつかの例では、IMU422は、1つまたは複数の加速度計を使用して直線加速を検出し、かつ1つまたは複数のジャイロスコープを使用して回転速度を検出するように構成されてよい。1つの例として、IMU422は、加速および高度などの出力を提供するためにジャイロスコープおよび加速度計からの入力を処理するための3軸ジャイロスコープ、3軸加速度計、および埋め込みプロセッサを有する自給式であってよい。例えば、IMU422は、ジャイロスコープおよび加速度の組み合わせなどを使用することによって、UAV102に関する速度、加速、方位、および重力を測定かつレポートし得る。さらに、UAV102は、磁気計、気圧計、近接センサ、ライダー、レーダー、超音波、または当技術分野で知られているさまざまな他のタイプのセンサのいずれかなどの他のセンサ424を含んでよい。
[0070]さらに、UAV102は、1つまたは複数の通信インターフェース426、1つまたは複数の飛行コントローラ428、1つまたは複数の推進装置202、画像取得システム430、1つまたは複数の画像センサ432、1つまたは複数の安定化および追跡装置434、画像送信システム436、入力/出力(I/O)装置438、ならびに電力システム440を含んでよい。UAV102に含まれるコンポーネントは、(図示されない)1つもしくは複数の通信バスまたは信号線などによって、少なくとも1つまたは複数のプロセッサ402と通信できるようにしてよい。
[0071]UAV102は、図4の例に示されるよりも多いもしくは少ないコンポーネントを含んでよい、機能ユニットとして2つ以上のコンポーネントを組み合わせてよい、またはコンポーネントの異なる構成もしくは配置を有してよい。図4に示される例示のUAV102のさまざまなコンポーネントのいくつかは、1つまたは複数の信号処理および/または特定用途向け集積回路を含む、ハードウェア、ソフトウェア、またはハードウェアおよびソフトウェア両方の組み合わせで実装されてよい。
[0072]先に説明したように、推進装置202は、モータ204およびプロペラ206を備えてよい。プロペラ206は、固定ピッチであってよく、または代替的には、(例えば、ジンバルメカニズムを使用して変化する)可変ピッチプロペラを含んでよい。代替的には、推進装置202は、1つもしくは複数の可変ピッチジェットエンジン、または、力を与える効果を有する任意の他の方式の推進装置および付随のアクチュエータを含んでよい。推進装置202は、例えば、それぞれのプロペラの速度を変化させるための飛行コントローラ428によって制御されるまたはこれに含まれる電子速度コントローラによって加えられるスラストを変化させるためのコントローラを含んでよい。
[0073]飛行コントローラ428は、車両制御プログラム406から入力データ(例えば、センサデータ、画像データ、生成された軌道、または他の命令)を受信し、データおよび/または命令を解釈し、ならびにUAV102の推進装置202に制御信号を出力するように構成されるハードウェアおよび/またはソフトウェアの組み合わせを含んでよい。代替的にはまたはさらに、飛行コントローラ824は、別のコンポーネントまたは装置(例えば、プロセッサ402および/またはリモートコンピューティング装置もしくはコントローラ104)によって生成された制御コマンドを受信し、それらの制御コマンドを解釈し、およびUAV102の推進装置202に対する制御信号を生成するように構成されてよい。いくつかの実装形態では、先に述べたUAV102の車両制御プログラム406は、飛行コントローラ428、および/またはUAV102の他のコンポーネントの任意の1つもしくは複数を含んでよい。代替的には、飛行コントローラ428は、車両制御プログラム406と別個のコンポーネントとして存在し得る。
[0074]通信インターフェース426は、電磁信号の形態などの通信信号の送信および受信を可能にし得る。電磁通信信号の送信および受信は、銅線ケーブル布線もしくは光ファイバケーブル布線などの物理媒体上で実行されてよい、または例えば、無線周波数(RF)受信機を介して無線で実行されてよい。いくつかの実装形態では、通信インターフェース426は、(図4には示されない)RF回路網を含んでよい。このような実装形態では、RF回路網は、電気信号を電磁信号に/電磁信号から変換し、かつ電磁信号を介して通信ネットワークおよび他の通信装置と通信してよい。RF回路網は、限定はされないが、アンテナシステム、RF送受信機、1つまたは複数の増幅器、同調器、1つまたは複数の発振器、デジタル信号プロセッサ、CODECチップセット、加入者識別モジュール(SIM)カード、およびメモリなどを含む、これらの機能を実行するための知られている回路網を含んでよい。RF回路網は、(パブリック、プライベート、ローカル、およびワイドエリアを含む)通信ネットワーク上のデータの送信および受信を容易にし得る。例えば、通信は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、またはインターネットなどのネットワークのネットワーク上のものであってよい。
[0075]通信は、(例えば、イーサネットを介して)有線伝送媒体上でまたは無線で容易にされ得る。無線通信は、携帯電話無線ネットワーク、無線ローカルエリアネットワーク(LAN、例えば、Wi-Fi)、および/またはメトロポリタンエリアネットワーク(MAN)、ならびに他の方式の無線通信上のものであってよい。無線通信では、限定はされないが、汎欧州デジタル移動電話通信方式(GSM)、拡張データGSM環境(EDGE)、高速ダウンリンクパケットアクセス(HSDPA)、広帯域符号分割多元接続(W-CDMA)、符号分割多元接続(CDMA)、時分割多元接続(TDMA)、BLUETOOTH(登録商標)、Wireless Fidelity(Wi-Fi)(例えば、IEEE802.11nおよび/またはIEEE802.11ac)、ボイスオーバーインターネットプロトコル(VoIP)、Wi-MAX、または、任意の他の適した通信プロトコルを含む複数の通信規格、プロトコル、および技術のいずれかを使用し得る。
[0076]通信インターフェース426は、1つまたは複数のネットワークなどにわたって、さまざまな他の装置との通信を可能にするための1つまたは複数のインターフェースおよびハードウェアコンポーネントを含んでよい。例えば、通信インターフェース426は、本明細書の他の箇所にさらに列挙されるように、インターネット、ケーブルネットワーク、セルラーネットワーク、無線ネットワーク(例えば、Wi-Fi)および有線ネットワーク(例えば、光ファイバおよびイーサネット)、ならびにBLUETOOTH(登録商標)などの近距離無線通信の1つまたは複数による通信を可能にし得る。例えば、900MHz、2.4GHz、および5.8GHzは、UAVと通信するために使用される最も一般的な無線周波数であるが、本明細書における実装形態は任意の特定の周波数に限定されるものではない。
[0077]入力/出力(I/O)装置438は、UAV102のある特定の機能と対話するあるいはこれらを動作させるために使用されてよい、物理的ボタン(例えば、プッシュボタン、ロッカボタンなど)、LED、ダイアル、ディスプレイ、タッチ画面ディスプレイ、およびスピーカなどを含んでよい。UAV102はまた、さまざまなコンポーネントに電力供給するための電力システム440を含む。電力システム440は、電力管理システム、1つまたは複数の電源(例えば、電池、交流など)、充電システム、停電検出回路、電力変換装置または変換器、電源状態表示器(例えば、発光ダイオード(LED))、ならびにコンピュータ化装置における電力の生成、管理、および分散と関連付けられた任意の他のコンポーネントを含み得る。
[0078]UAV102の画像取得システム430は、いくつかの例において図2および図3に関して上で論じた画像センサ208、212、214、216、302、304、および306のいくつかまたは全てに対応し得る画像センサ432を含んでよい。例えば、画像センサ208、212、214、216、302、304、306は、カメラであってよく、かつ、(静止画像および/または映像を含む)画像を取得するための1つまたは複数の光センサを含んでよい。いくつかの実装形態において、UAV102は、スキャン対象の画像取得専用のいくつかのカメラ422と、(例えば、視覚慣性オドメトリを通して)視覚的なナビゲーションのための画像取得専用のその他のカメラとを含み得る。例えば、高解像度画像センサ208は、高解像度画像を取得するために使用されてよく、低解像度画像センサ212~216および302~306は、ナビゲーションおよび距離推定などのために使用されてよい。
[0079]安定化および追跡装置434は、UAV102の動き、および/またはスキャン対象、スキャン対象上の点、もしくは物体などの追跡に基づいて、UAV102の本体に対する画像センサ208などの画像センサの向きおよび/または位置を調節するための1つまたは複数の装置を含んでよい。このような安定化および追跡装置434は、図2に関して上に論じられるジンバル210など、機械式ジンバルまたはデジタル/機械混成ジンバルなどを含んでよい。例えば、UAV102に対するスキャン対象を追跡している間、安定化および追跡装置434は、画像センサ208などのカメラの向きを調節可能であることで、スキャン対象上の点などの追跡されるスキャン対象が、UAV102が動いている間の画像センサ208の視野(FOV)の中心になり続けるようにする。画像送信システム436は、取得された映像をリモートコンピューティング装置などにリアルタイムで送信するように構成されてよい。例えば、場合によっては、画像送信システム436は、コントローラ104などと通信するために使用されたものと、別個の送信プロトコルおよび通信インターフェースを使用して画像を送信してよい。
[0080]いくつかの例では、航空機と同様に、UAV102は、揚力およびナビゲーションを実現するために1つまたは複数の推進装置202と共に固定翼または他の空気力学的表面を利用してよい。代替的には、他の例では、ヘリコプタと同様に、UAV102は、重力に逆らい、かつ揚力およびナビゲーションを実現するために、1つまたは複数の推進装置202を直接使用してよい。(ヘリコプタの場合のような)推進力による揚力は、いくつかの実装形態において利点をもたらし得るが、これは、固定された空気力学的表面を揚力に用いるUAVと比較して、全ての軸線に沿った動きがより制御されるようにすることが可能になるからである。
[0081]図1~図4に示されるUAV102は、例示の目的で提供された一例である。本開示によるUAV102は、示されるよりも多いまたは少ないコンポーネントを含んでよい。例えば、クワッドコプタが示されているが、UAV102は任意の特定のUAV構成に限定されるものではなく、本開示の利益を有する当業者には明らかであるように、ヘキサコプタ、オクトコプタ、固定翼航空機、または任意の他のタイプの独立的に操縦可能な航空機を含んでよい。さらに、スキャン対象のスキャンを実行するための自律UAV102のナビゲーションを制御するための技法が本明細書に説明されているが、説明された技法は、他のタイプの車両(例えば、宇宙機、陸上車、船舶、水中船など)による案内ナビゲーションに同様に適用されてよい。
[0082]図5は、いくつかの実装形態によるUAV102の自律離陸、着陸、および充電を可能にするために使用され得るドッキングステーション106の一例を示す。ドッキングステーション106は、基準504、および電池充電器のための帯電接点506を有するUAV支持体502を含む。ドッキングステーション106は、扉510を有する矩形のボックスの形状のボックス508を含む。ドッキングステーション106は、UAV支持体502を支持し、かつUAV支持体502が、UAV102の離陸および着陸を可能にするためにボックス508の外側に、またはUAV102の格納および/もしくは補給サービスのためにボックス508の内側に位置付け可能にする格納式アーム512をさらに含む。ドッキングステーション106は、ボックス508の外側上面516上に第2の予備基準514を含む。基準504および予備基準514は、(図5には示されない)UAV102によって検出され、かつUAV支持体502上での正確な着陸を可能にするためにドッキングステーション106に対するUAV102の視覚的ローカリゼーションに使用され得る。
[0083]UAV支持体502は、UAV支持体502の支持面518上にUAV102の底面314を受けるように構成される漏斗状のまたはその他の内向きにテーパ状の幾何学的形状を有する。UAV支持体502のテーパ状側面は、着陸中に電気接点506をUAV102上の電気接点312と位置合わせするために、UAV102の底面314を支持面518上の中心位置に機械的に案内するのに役立ち得る。例えば、電気接点506は、UAVがUAV支持体502上に位置付けられている間にUAV支持体502がUAV102の電池を充電できるようにし得る。とりわけ、ドッキングステーション106は、UAV102がUAV支持体502上にある間にUAV102の電池を充電するように構成される(図5には示されない)充電器を含んでよい。
[0084]ボックス508は、(図示されない)第1の構成においてUAV支持体502およびアーム512を封入するように、ならびに、第2の構成においてUAV支持体502およびアーム512を露出するように構成され得る。ドッキングステーション106は、ボックス508の扉510を開放すること、およびアーム512を引き伸ばしてUAV支持体502をボックス508の内側からボックス508の外側に移動させることを含むステップを実行することによって、第1の構成から第2の構成に自動的に移行するように構成されてよい。
[0085]アーム512が引き伸ばされる時、UAV支持体502はドッキングステーション106のボックス508から離れて位置付けられ、これによって、着陸中のUAV102のプロペラからのプロペラの後流が低減または防止可能であるため、着陸動作が簡略化される。アーム512は、離陸および着陸中のプロペラの後流の問題をさらに軽減するためにプロペラの後流を向け直すための空気力学的カウリングを含んでよい。ドッキングステーション106は、UAV102の自動着陸および充電を可能にし得る。
[0086]例えば、基準504は根本的基準であってよく、予備基準514は、UAV102がドッキングステーション106に近づくと距離が遠くなることによる視覚ローカリゼーションを容易にするために、ルート基準504より大きい場合がある。例えば、予備基準322は、UAV102の画像センサが取得した予備基準514の画像に基づいて、UAV102に対する予備基準514の姿勢(すなわち、位置および向き)の検出および決定を可能にする非対称パターンを含んでよい。例えば、UAV102のプロセッサ(例えば、プロセッサ402)は、UAV102の画像センサを使用して取得された少なくとも1つの画像において予備基準514を検出するように構成されてよい。プロセッサ402は、少なくとも1つの画像に基づいて予備基準514の姿勢を決定してよく、予備基準の姿勢に基づいて、推進メカニズムによって、UAV支持体502の近辺における第1の場所まで、UAV102を飛行させてよく、UAV102はUAV支持体502上に狙いを定めかつそこに着陸する基準504を同様に検出し得る。
[0087]ドッキングステーション106は、UAV102の自動着陸および充電を可能にしてよく、これはさらにまた、スキャンするための複数の電池パックを必要とする大型のスキャン対象(例えば、大規模な建設現場、橋、建物など)のユーザが介入しない自動スキャンを可能にし得る。例えば、スキャン計画の実行を開始後、およびスキャン計画の完了前、UAV102が電池を充電するためにまたは電池を取り替えるためにドッキングステーション106に戻る必要がある時、UAV102は、スキャン計画に従って実行される必要があるスキャン計画の一連の姿勢の次の姿勢を示すスキャン計画状況を記憶可能である。スキャン計画状況を記憶後、UAV102は、UAV102をドッキングステーション106のUAV支持体502上に着陸させるために飛行させるように推進メカニズムを制御する。着陸後、UAV102は、電池が少なくとも閾値量まで充電されることが示されるまで待機してよい。
[0088]さらに、いくつかの例では、充電中、UAV102は、任意の不完全な画像処理タスク、3Dモデル更新、および/または飛行中にまだ実行されていない場合があるスキャン計画更新を行ってよい。さらに、充電中、UAV102は、任意の画像、現在の3Dモデル、および/または他のデータの、コントローラ、モバイル装置、もしくはサーバコンピューティング装置への転送を行ってよい。充電閾値に達した後、UAV102は、UAV102にUAV支持体502からの離陸を行わせるように推進メカニズムを制御し、かつスキャン計画状況にアクセスしてよく、および、スキャン計画状況に基づいて、UAV102に次の姿勢を取るために飛行させ、かつスキャン計画の実行を継続させるように推進メカニズムを制御する。さらに、いくつかの例では、UAV102は、充電前または充電中にスキャン計画の更新を行っていてもよく、その場合UAV102は、スキャン計画状況として記憶された次の姿勢に進むのではなく、更新されたスキャン計画に従って新たなまたは異なる姿勢を取ってよい。
[0089]いくつかの実装形態では、UAV102をUAV支持体502上に着陸させるように推進メカニズムを制御することは、UAVを保持するように構成されるUAV支持体502を含むドッキングステーション106の近辺における第1の位置までUAV102を飛行させるようにUAV102の推進メカニズムを制御することであって、UAV支持体502はUAV支持体502上に基準504を含み、ドッキングステーション106はドッキングステーション106上に第2の基準514を含む、推進メカニズムを制御することと、UAV102の画像センサを使用して取得された1つまたは複数の画像にアクセスすることと、1つまたは複数の画像のうちの少なくとも1つの画像において第2の基準514を検出することと、1つまたは複数の画像に基づいて第2の基準514の姿勢を決定することと、UAV102を、ドッキングステーション106の近辺における第2の場所まで飛行させるようにUAV102の推進メカニズムを制御することと、UAV102の画像センサを使用して取得された1つまたは複数の画像にアクセスすることと、1つまたは複数の画像のうちの少なくとも1つにおける基準504を検出することと、1つまたは複数の画像に基づいて基準504の姿勢を決定することと、基準504の姿勢に基づいて、UAV102をUAV支持体502上に着陸させるように推進メカニズムを制御することと、を含む。
[0090]自動着陸すること、UAV102がUAV支持体502上にある間にドッキングステーション106に含まれる充電器を使用してUAV102の電池を充電すること、次いで、UAV102が中止した姿勢でスキャン計画を再開することのための上述した技法は、ユーザの介入なく自律的にスキャンされ得るスキャン対象のサイズを大幅に増大させることができる。したがって、本明細書におけるドッキングステーション106は、自動着陸、充電、離陸、および、UAV102による自動ミッション計画および実行を可能にする。いくつかの実装形態は、そのようなシステムの信頼できる動作を可能にし、かつシステムが多種多様なコンシューマアプリケーションおよび商用アプリケーションにアクセスできるようにする関連したアプリケーションプログラミングインターフェース(API)設計を含んでよい。
[0091]図6は、いくつかの実装形態によるUAV用のコントローラ104の一例を示す。コントローラ104は、UAV102を制御し、かつUAV102から受信されたデータ(例えば、画像)を精査するためのグラフィックユーザインターフェース602を提供し得る。コントローラ104は、UAV102のステータスを制御しかつ観測するための仮想制御およびステータスインジケータを提供し得るタッチ画面604を含む。例えば、カメラ設定仮想制御608は、ユーザが、UAV102上の少なくとも高解像度画像センサ208の解像度および他の設定を制御できるようにしてよい。さらに、電池充電レベルインジケータ610は、UAV102上の電池の現在の状態を示す。信号強度インジケータ612は、UAV102との通信の現在の信号強度を示し得る。設定仮想制御614は、ユーザがコントローラ104の設定を制御できるようにしてよい。また、マップ仮想制御616は、ユーザがマップ上のUAV102の場所を観測することができるようにしてよい。ホーム仮想制御618は、ユーザがユーザインターフェース602のホーム画面に戻ることができるようにしてよい。記録仮想制御620は、ユーザが、画像センサ208の視野において現在の光景の記録を手動で開始または停止できるようにしてよい。スキル仮想制御622はユーザがスキル設定を制御できるようにしてよい。ケーブルカム仮想制御624は、ユーザが、UAVが移動する2つの地点の間の特定の進路を設定できるようにしてよい。
[0092]さらに、ユーザインターフェースは、タッチ画面604上に提示される高解像度画像センサ208の現在の視野の画像626(例えば、ライブビデオ画像)を含んでよい。この例では、提示された画像が図1に関して上で論じられたスキャン対象110を含むと仮定する。複数のさらなる仮想制御630は、画像626に重ね合わせられてよく、かつ、図7に関して以下にさらに論じられるようなさらなる機能を提供し得る。
[0093]この例では、タッチ画面604は、スマートフォン、タブレットコンピューティング装置、または、コントローラ付属品634を使用してコントローラ104に装着可能である他のコンピューティング装置などのモバイル装置632の一部分である。コントローラ104は、左ジョイスティック638、右ジョイスティック640、ホームボタン642、発進/着陸ボタン644、コントローラ104のステータスを示すLEDステータスインジケータ646、および、ここでは不可視の他の物理的制御などの複数の物理的制御を含むコントローラ本体636をさらに含んでよい。いくつかの例では、Wi-Fiアンテナは、コントローラ付属品634に含まれてよく、それによって、コントローラ104は、モバイル装置632だけで可能であり得るUAV102とのより長い距離の通信のための通信範囲拡張能力を提供し得る。
[0094]1つの例として、モバイル装置632(または、UAV102から遠く離れた別のコンピューティング装置)は、モバイル装置632のプロセッサ上のアプリケーションを実行してよい。1つの例として、アプリケーションは、図4に関して上に論じられるウェブアプリケーション409を実行するブラウザを含んでよい。ウェブアプリケーション409は、UAV102によってモバイル装置632に供給されあるいは提供され得る。場合によっては、ウェブアプリケーション409または別のアプリケーションは、上に論じられるユーザインターフェース602を提供してよく、かつ、UAV102との通信を可能にすること、およびUAV102の遠隔制御を可能にすることなど、モバイル装置632に関して本明細書に説明される他の機能性を提供してよい。また、場合によっては、モバイル装置632は、アプリケーションによって、UAV102から受信される画像および場所情報に基づいてスキャン対象の低解像度3Dモデルを生成するように、および/または、スキャン対象のためのスキャン計画を生成するように構成されてよい。さらに、場合によっては、アプリケーションは、BLUETOOTH(登録商標)無線などなどを介してコントローラ104へのモバイル装置632の無線接続を可能にしてよい。
[0095]いくつかの実装形態において、本明細書におけるいくつかの例において、そうでない場合はUAV102によって実行される場合がある処理の一部(例えば、画像処理および制御機能)は、その代わりに、コントローラ104のプロセッサ、またはモバイル装置632などのUAV102から遠く離れた別のコンピューティング装置上で実行しているアプリケーションによって行われてよい。したがって、場合によっては、低解像度3Dモデルおよび/またはスキャン計画の生成は、UAV102によって実行される代わりにコントローラ104またはモバイル装置632によって実行されてよい。このような場合、リモートコンピューティング装置104または632は、UAV102によって提供される画像コンテンツを使用して双方向通信機能を提供し得る。例えば、図15~図23の処理のさまざまなステップは、UAV102と通信しているリモートコンピューティング装置(例えば、コントローラ104またはモバイル装置632)のプロセッサを使用して実施されてよい。さらに、いくつかの例では、処理負荷は、処理回数の短縮などを実現するために、UAV102上のプロセッサ402とリモートコンピューティング装置104、632上のプロセッサとの間で配分されてよい。本明細書における本開示の利益を有する当業者には、多数の他の変形が明らかとなるであろう。
[0096]図7は、いくつかの実装形態によるスキャンされるスキャン対象を選択することの一例700を示す。この例では、画像626は、図1に関して上に論じられるスキャン対象110の画像を表示するコントローラ104のユーザインターフェース602に提示される図6に関して上に論じられる画像626に対応し得る。この例では、ユーザが、図1に関して上に論じられる建物112をUAV102にスキャンさせることを望んでいると仮定する。したがって、ユーザは、所望のスキャン対象110の取得される画像を選択してよく、かつユーザがスキャン対象110を指定できるようにするために新たな境界ボリューム702をユーザインターフェース602に提示させるようにユーザインターフェース602を操作してよい。例えば、仮想制御630は、スキャンされるスキャン対象110を含むボリュームを指定するための境界ボリューム702を制御するためにユーザによって使用されてよい「新」704、「設定」706、「元に戻す」708、および「完了」710などの仮想制御を含んでよい。例えば、上に論じられるように、UAV102は、ユーザインターフェース602においてユーザによって指定される境界ボリューム702内の任意の構造の完全自律スキャンを実行するように構成されてよい。
[0097]この例では、コントローラ104のユーザインターフェース602は、スキャン対象110を選択するために境界ボリューム702を使用して3Dボリュームを指定するために使用されてよい。例えば、境界ボリューム702は、指714などでタッチ画面604にタッチすることなどによってユーザによって移動可能である複数のハンドル712を有する立方形または他の3D形状であってよい。ハンドル712を移動させることによって、ユーザは、ユーザインターフェース602における3Dボリュームの場所を指定するための境界ボリューム702の縁部716の場所を操作してよい。
[0098]代替的には、他の例では、ユーザは、立方形の境界ボリュームのサイズおよび形状を規定するための中心点の方へまたはこれから離れて移動させるように立方形の境界ボリュームの側面のいずれかを選択してよい。例えば、ユーザは、立方形の中心の方へまたはこれから離れて拡張するように立方形の1つのまたは対向する対の側面をタップあるいは選択してよい。さらに別の例として、ユーザは、境界ボリュームに対する幅、奥行き、高さ、および回転の規模を指定することなどによって、境界ボリュームの規模を手動で指定してよい。さらに、立方形は、論述の目的で境界ボリュームの形状として示されているが、本明細書における実装形態は任意の特定の形状に限定されない。さらに、境界ボリュームのサイズおよび形状を調節するための多数の他の変形は、本開示の利益を有する当業者には明らかであろう。
[0099]ユーザがスキャン対象110の所望の一部を包含するように境界ボリューム702を位置付けている時、ユーザは、スキャン対象110に対して境界ボリューム702の位置を設定するために「設定」仮想制御706を選択してよい。さらに、ユーザは、画像取得解像度、ならびに、実行されるスキャンのためのスキャン対象110からの指定された距離、および取得される画像の重複量などの他のスキャンパラメータを指定するためにユーザインターフェース602をさらに使用してよい。
[00100]いくつかの例では、境界ボリューム702上の縁部716および/またはハンドル712(隅)の場所は、UAV102によって世界基準系におけるナビゲーションに使用されてもよいグローバル座標系におけるグローバル座標と相関関係があってよい。1つの例として、世界基準系は、局所的に線形化したGNSS座標系に対応する場合があり、起点は所与のGNSS座標のセット(すなわち、緯度、経度、高度)に対応する。したがって、UAV102は、境界ボリューム702によって示される実世界ボリュームの場所を決定するために、境界ボリューム702の場所を実世界の緯度、経度、および高度の座標に相関させることができてよい。さらにまたは代替的には、UAV102は、ナビゲーションを実行してよく、かつこの空間における場所、ひいては、離陸地点に基づく、さらにIMUおよび磁気計などからの入力に基づく、スキャン対象110の表面の場所を決定してよい。
[00101]選択された境界ボリューム702に基づいて、UAV102は、最初に、スキャン対象110のラフな低解像度3Dモデルを生成するためにスキャン対象110の最初の低解像度スキャンを実行してよい。以下にさらに論じられるように、UAV102は、次いで、低解像度3Dモデルに基づくスキャン計画を決定してよく、かつ、指定された画像取得パラメータを使用して境界ボリューム702内のスキャン対象110の全ての表面を覆うことを試みるようにスキャン計画に対して決定された姿勢に基づいて、スキャン対象110をスキャンすることに進んでよい。場合によっては、画像取得を実行するための画像取得パラメータおよび姿勢は、取得されたスキャン対象110の高品質3D再構成を確実にするために適応的に決定されてよい。例えば、ユーザインターフェース602は、異なる解像度における異なるタイプのスキャン対象またはスキャン対象の異なる部分、例えば、低解像度/遠距離の木、最高解像度/近距離のコンクリート、中解像度/中距離の鉄骨、最高解像度/近距離のボルトまたはその他の締め具などを取得するためのセマンティックセグメンテーションを指定するためにさらに使用されてよい。いくつかの例では、これらの異なる解像度は、ある特定のタイプのスキャン対象などに対するデフォルトの設定として前もって設定されてよい。例えば、UAV102に搭載された実行可能な機械学習モデルは、スキャン対象の上述される異なる部分を認識するようにトレーニングされてよく、かつ、特定の認識されている対象部分に対する推奨されるスキャン距離および画像解像度を自動的に提供してよい。
[00102]さらに、いくつかの例では、スキャン中に取得される取得画像は、UAV102上で実行してよいニューラルネットなどの機械学習モデル、リモートコンピューティング装置(コントローラ104またはモバイル装置632)、またはクラウドサーバなどの別のコンピューティング装置に提供されてよい。例えば、機械学習モデルは、(例えば、スキャン中に)リアルタイムでスキャン対象110における損傷、腐食、またはその他の問題点を検出するように構成されてよく、かつ、ある問題点が検出される時、より高い解像度またはより近い距離などでより綿密な検査を無人航空機に実行させてよい。取得が実行されていると、ユーザインターフェース602は、リアルタイムで更新され得るため、ユーザは、所望のエリア上で、かつ、所望の解像度、角度、および選択されたスキャン対象からの距離などの所望のパラメータに従って実行されていると決定することができる。
[00103]図8は、いくつかの実装形態によるスキャン対象を選択する一例800を示す。この例では、図7と同様に、画像626は、スキャン対象110の画像を表示するコントローラ104のユーザインターフェース602に提示される図6に関して上に論じられる画像626に対応し得る。この例では、ユーザが図1に関して上に論じられる建物112をUAV102にスキャンさせることをユーザが望んでいると仮定する。したがって、ユーザは、所望のスキャン対象110の取得される画像を選択してよく、かつ、スキャン対象110をUAV102に対して指定するために、スキャン対象またはスキャン対象110の一部の周りに多角形または他の2D形状802を描くようにユーザインターフェース602を操作してよい。
[00104]この例では、ユーザは、UAV102にスキャン対象110を示すためにユーザインターフェース602におけるあるエリアを指定してよい。例えば、ユーザは、スキャン対象110の周りに多角形の外周(すなわち、境界線)を描くために少なくとも3つの基準点またはハンドル804を使用してよい。UAV102は、指定された外周内のスキャン対象110を調査するように構成されてよく、いくつかの例では、指定された外周に対応する検出されたスキャン対象の周りにプリズムのボリュームを提示してよい。例えば、ユーザは、UAVがスキャンを開始する前に、表面までの距離および他のスキャンパラメータを調節できるようにしてよい。
[00105]さらに、図8の例において多角形が示されているが、他の例では、スキャン対象の周りにまたはスキャン対象上に外周を作成するための任意の他の技法が使用されてよい。例えば、本明細書における本開示の利益を有する当業者には明らかであるように、ユーザは、画像602におけるスキャン対象上にまたはスキャン対象の周りに円形、楕円形、不規則な線などを描いてよい。
[00106]図9は、いくつかの実装形態によるスキャン対象を選択することの一例900を示す。この例では、ユーザは、図9に示されるように一般的に平面図画像であり得る、スキャン対象110の画像を得ることなどのためにスキャン対象110上のある位置までUAV102をナビゲートしてよい。別の例として、ユーザは、スキャン対象110の指定された座標をUAV102に提供してよく、UAV102は自身を、スキャン対象110の画像を得るために指定された座標までナビゲートしてよい。別の例として、ユーザは、緯度および経度情報と共にユーザインターフェース602に提供され得るスキャン対象の衛星画像または他の先に獲得された空中画像を使用してよい。
[00107]この例では、外周904を描くための基準点902は、概念上は柱に対応し得、これは、UAV102がまた、床と、柱の高さに対応する天井との間の垂直面をスキャンすることをUAV102に示し得る。例えば、スキャン対象110の基部に隣接する地表は、スキャン対象110の側視を使用して天井の高さを手動入力することまたは調節することのどちらかによって、ユーザによって調節され得る柱に対するデフォルトの床であってよい。よって、ユーザが地表まで通してスキャンすることを望まない場合、ユーザは床を上方に調節してよい。さらに、スキャンする天井(すなわち、上限)はまた、ユーザによって指定されてよい。したがって、柱はスキャンが行われる範囲内のボリュームを規定するために使用され得るが、スキャン対象の平面図または他の図は、場合によっては、スキャン対象および境界ボリュームを示すのに十分であり得る。さらに、論述の目的でスキャン対象110の平面図で使用されている基準点902が示されているが、本明細書における実装形態はこれらに限定されるものではなく、柱は、スキャン対象の側面図または底面図で使用され得る。
[00108]さらに、この例および図7の例における技法は、UAV102が進入を許可されない飛行禁止区域を指定するためにも使用されてよい。例えば、スキャン対象が橋である場合、橋の上面は、UAV102と橋上の交通対象との起こり得る接触を回避するために飛行禁止区域と指定されてよい。例えば、上で論じられる柱に対する天井は、UAV102が渡ることを許可されないジオフェンスを確立してよい。同様に、図7の境界ボリュームの1つまたは複数の表面はまた、ジオフェンスとして指定されてよい。したがって、UAV102にスキャンされる対象を指定することに加えて、ユーザインターフェース602はまた、スキャン対象110の領域、または、UAV102が進入可能とされないスキャン対象110の周りの領域を指定するために使用されてよい。
[00109]さらに、ユーザインターフェース602を使用して基準点902を移動させることを使用するための代替策として、UAV102は、柱の場所または他の基準点の場所を確立するために使用されてよい。例えば、ユーザは、UAV102を基準点902のそれぞれの場所までナビゲートしてよく、UAV102が柱を確立するための所望の場所にある時、ユーザは、その場所において柱を設定するために設定ボタン706を選択してよい。ユーザは、柱が確立されるのが望ましいそれぞれの場所までUAV102をナビゲートしてよく、それによって、スキャン対象を示すための多角形904を指定してよい。
[00110]柱902の床および天井は、所望の床の高さおよび所望の天井の高さまでUAV102を手動でナビゲートすることによって同様に確立され得る。代替的には、デフォルトの床および天井の場所は、他の例で使用されてよい。さらに、図9について説明される2つの技法の組み合わせも使用されてよい。例えば、ユーザは、柱902の場所を確立するために複数の場所までUAVを最初にナビゲートしてよく、ユーザは次いで、1つまたは複数の柱902を所望の場所にドラッグすること、または床または天井の高さを手動で入力することなどによって、ユーザインターフェース602を使用して、柱902の場所、および/または床もしくは天井の場所を調節してよい。多数の他の変形は本明細書における本開示の利益を有する当御者には明らかであろう。
[00111]図10は、いくつかの実装形態によるスキャン対象を選択することの一例1000を示す。1つの例として、ユーザは、ユーザインターフェース602に提示され得るスキャン対象110の画像を得るようにUAV102を手動でナビゲートしてよい。別の例として、ユーザは、スキャン対象110の指定された座標をUAVに提供してよく、UAV102は自身を、スキャン対象110の画像を得るために指定された座標までナビゲートしてよい。ユーザは、この例における屋根116などのスキャン対象110の可視の表面をタップあるいは選択してよい。
[00112]ユーザインターフェース602を提示するモバイル装置632上で実行しているアプリケーションは、ユーザがタップした表面に対応する多角形または他の2D形状1002を提案するように構成されてよい。例えば、モバイル装置632上で実行しているアプリケーションは、縁部の認識、または、ユーザがタップした表面(屋根116)に対応する多角形などの2D形状1002を決定するためのさまざまな他のコンピュータビジョン法のいずれかを使用してよい。これに基づいて、ユーザインターフェースは、選択された表面に重ね合わせられた多角形または他の2D形状1002の画像を生成する。必要に応じて、ユーザは、縁部1004と、ユーザが選択することを望んでいる選択された表面(屋根116)の縁部1006とを位置合わせするためにタッチしかつドラッグするなどによって、2D形状1004の縁部1004を調節し得る。
[00113]いくつかの例では、ユーザは、ユーザがスキャンさせることを望んでいるスキャン対象のそれぞれの表面を選択してよい。代替的には、別の例として、UAV102は、構造の1つの表面の選択に基づいて、隣接する構造全体をスキャンするように構成されてよい。例えば、構造の1つの表面の選択に基づいて、UAVは、構造の表面全てを決定するために構造を調査してよい。別の例として、モバイル装置632は、一般的なまたは隣接する構造を認識することができる機械学習モデルまたは他の論理を用いてよい。したがって、これらの例では、スキャン対象110の一部分を選択することは、スキャン対象110全体の選択をもたらし得る。よって、本明細書における実装形態は、スキャンする対象の一部分だけの選択を可能にし、または代替的には、構造の一部分だけの選択に基づいて、構造全体の選択などを自動化し得る。
[00114]場合によっては、ユーザインターフェース602を使用するユーザによって行われた選択に基づいて、スキャンするスキャン対象110として取得されることが望ましい構造の一部は、1008で示されるように選択されたスキャン対象1002を強調表示すること、選択されたスキャン対象1002を異なる色でペイントすること、または選択されたスキャン対象1002の輪郭を描くことなどによって、選択されているとしてユーザに対して視覚的に区別させてよい。場合によっては、適応線/エッジ検出アルゴリズムでは、3D深度データおよび/または2D外観データを使用してスキャン対象に対するIDシグネチャを展開してよい。さらに、拡張現実は、ユーザが、スキャン対象構造(または非スキャン対象構造)の選択の誤りまたは分類の誤りを補正できるようにするためにユーザインターフェース602における選択されたスキャン対象構造に属する全てのものを見せるために使用されてよい。
[00115]図11は、いくつかの実装形態によるスキャン対象を選択することの一例1100を示す。この例では、ユーザは、UAV102によるスキャンのためのスキャン対象1108を選択するようにスキャン対象1108のエリア1106をペイントするために構造または他の特徴1104の静止画像1102を使用してよい。例えば、画像1102は、モバイル装置のユーザインターフェース602に提示されてよく、ユーザは、1106で示されるように、スキャンする構造1104の所望のエリアにわたってタッチ画面604(または非タッチディスプレイ上のマウス/カーソル)を指714でドラッグしてよい。
[00116]いくつかの例では、ユーザは、画像の所望のエリアを埋めるためにスクラブ動作を使用してよい。構造1104の外観および/または3D幾何学的形状はまた、縁部認識などに基づくエリアの自動選択などのためにペイントを拡張するおよび/または支援するために使用され得る。さらに、構造1104の異なるエリアは、異なる色または他の視覚的インジケータでペイントあるいは強調表示されてよく、それぞれの異なる色は、他の着色エリアのものとは異なる、これ自体のスキャンパラメータを有し得る。異なるスキャンパラメータの例は、構造表面からの異なる距離、異なる視野角、異なる取得画像の重複、または異なるカメラ解像度設定などを含んでよい。
[00117]さらに、線形構造のスキャンを指定するための別の例として、ユーザは、ユーザインターフェース602に提示される画像の一部における(図11には示されない)円形を描いてよく、かつ、UAV102の現在の中間域を決定してよい。これによって、ユーザは、UAV102のスキャン距離(地上分解能)をロックすることができるが、依然、自律制御下、または代替的にはユーザ制御下のどちらかで横方向に飛行する。UAV102が中心にある限り、平面であろうと線形であろうと、UAV102は、閾値範囲(例えば、数マイル)内または閾値飛行時間内などで、中心に沿って移動している間に指定された特徴から所望の距離の範囲内にとどまるように構成されてよい。例えば、電力線、パイプ、または他の線形3D構造の検査は、UAV102が電池を使い果たす前に戻ることができることを確実にするために、選択されたスキャン対象からUAV102までのスキャン距離、および、線形構造に沿ったUAV102の指定される最高閾値移動範囲を指定することだけで行われてよい。
[00118]図12は、いくつかの実装形態によるスキャン対象を選択することの一例1200を示す。この例では、UAV102は、高い規則性を有するが、サイズ、高さ、色、または他の些細な特徴のある程度の変化を有する特定の構造の自律取得を実行するように事前構成されてよい。このような構造の例には、送電塔、ジェット旅客機、および携帯電話基地局などが含まれ得る。したがって、モバイル装置または他のコンピュータ化装置のユーザインターフェース602に提示される構造1204の画像1202は、実際の構造、同様の構造、または同様の構造の以前のスキャンの3Dモデルであってよい。ユーザは、ユーザが取得することを望んでいる画像1202における構造1204の1つまたは複数の部分をタップあるいは選択してよい。ユーザがさらに、スキャン用のスキャンパラメータを既に指定してよいまたは後に指定してよい。
[00119]選択に基づいて、ユーザには、例えば、強調表示する、輪郭を描く、またはペイントすることなどによって、取得されることになる構造1204の部分の視覚インジケーションがユーザインターフェース602において提示されてよい。さらに、場合によっては、ユーザは、追加の部分をタップする、またはある特定の部分の選択を取り消すために選択された部分をタップすることなどによって、選択された部分を調節可能であってよい。さらに、構造1204の異なるエリアは、異なる色または他の視覚的インジケータでペイントあるいは強調表示されてよく、それぞれの異なる色は、他の着色エリアのものと異なるこれ自体のスキャンパラメータを有してよい。異なるスキャンパラメータの例には、構造表面からの異なる距離、異なる視野角、異なる取得画像の重複、または異なるカメラ解像度設定などでスキャンすることを含んでよい。例えば、構造1204の主支持体1206は、スキャンパラメータの第1のセットを示すために第1の色で強調表示されてよく、構造1204のトラス1208は、スキャンパラメータの第2の異なるセットを示すために第2の異なる色で強調表示されてよい。
[00120]いくつかの例では、機械学習モデルなどは、スキャン対象として選択され得るさまざまな構造および構造部分の認識を行うためにユーザインターフェース602および/またはUAV102によって使用されてよい。例えば、機械学習モデルは、構造の部分の選択中に複数のユーザによって行われる選択および調節に基づいてトレーニングされ得る。スキャンを行うためにUAV102が飛行している間、UAV102は、構造1204の同じ部分を認識するために、およびユーザによって指定されたやり方でこれらの部分をスキャンするために、機械学習モデルを使用してよい。さらに、ユーザインターフェースと対話するためのいくつかの例示のユーザインターフェースおよび技法は、本明細書においてスキャンするスキャン対象を選択するように説明されているが、本明細書における実装形態は提供される例に限定されるものではなく、本明細書における本開示の利益を有する当業者には明らかであるように、スキャンするスキャン対象を指定するためのさまざまな他の技法が使用されてよい。
[00121]図13は、いくつかの実装形態による、生成され得る低解像度3Dモデル1300の一例を示す。例えば、図7~図12に関して上に論じられるように、ユーザは、スキャン対象110などのスキャン対象を指定するためのさまざまな技法のいずれかを用いてよい。例えば、境界ボリューム702は、図7に関して上に論じられるようにスキャン対象110を指定するために使用されていてよい。スキャン対象110の選択後、UAV102は、選択されたスキャン対象110の最初の低解像度スキャンを実行してよく、かつスキャン対象110の粗いあるいは低解像度の3Dモデル1300を構築してよい。低解像度3Dモデルは、モバイル装置632のユーザインターフェース602に提示されてよい。
[00122]1つの例として、スキャン対象110を指定する受信した入力に基づいて、1つまたは複数の最初の姿勢は、低解像度3Dモデル1300を生成するためにスキャン対象110の1つまたは複数の表面に関する距離(範囲)情報を取得するように、UAV102がいくつかの姿勢を取ることができるようにするために、UAV102、モバイル装置632、またはコントローラ104などによって生成されてよい。例えば、スキャン対象110の境界ボリューム702または他のインジケーションに基づいて、UAV102は、例えば、上で論じられ、かつUAV102からスキャン対象110の表面までの距離を検出するために立体コンピュータビジョン用に構成されることなどによって、1つまたは複数の範囲センサとして使用される画像センサ212~216および302~306のうちの1つまたは複数によって最初のスキャンを実行することによって、スキャン対象110の最初の粗スキャンを自律的に実行してよい。
[00123]取得された画像に基づいて、UAV102はまたは別のコンピューティング装置(例えば、コントローラ104またはモバイル装置632)は、例えば、第1の解像度で、スキャン対象110の低解像度3Dモデル1300を生成してよい。1つの例として、最初のスキャン中、UAV102は、スキャン対象110の表面の画像を自律的に取得してよく、かつ、最初のスキャンを実行するためにスキャン対象110に近接して飛行している間に、リアルタイムで3D再構成技法を使用して低解像度3Dモデルを動的に構築してよい。例えば、低解像度3Dモデル1300は、スキャン対象110の表面に対応する3D空間における複数の点集合1302を含んでよい。さらに、低解像度3Dモデル1300は、点集合1302における点1302のいくつかまたは全てに対してそれぞれの垂線1304を含んでよい。1つの例として、それぞれの垂線1304は、それぞれの点1302が位置するスキャン対象110の表面に対する略垂(直)角でそれぞれの点1302が位置する表面から外方に延在する仮想線であってよい。例えば、垂線1304は、それぞれの表面の点1302から、点1302を取り囲むエリアにおけるスキャン対象110の表面に対応する平面に略直角に外方に延在し得る。
[00124]1つの例として、UAV102は、多視点ステレオ分析を容易にするために、スキャン対象110より上あるいはこの付近の、および間隔があけられた場所で取得されたいくつかの画像に基づいて、スキャン対象110の最初の低解像度3Dモデル1300を決定するように構成されてよい。例えば、UAV102のプロセッサ402は、UAV102にスキャン対象110付近の複数の位置(姿勢)を取るために飛行させるように推進メカニズム202を制御するように構成されてよい。UAV102は、1つまたは複数の画像センサ(例えば、低解像度画像センサ212~216および/または302~306)を使用して、スキャン対象110付近の異なる各々の位置からスキャン対象110の複数の画像を取得してよい。1つの例として、複数の画像の各々の位置は、所定の範囲内のスキャン対象110の2つ以上の画像の間の視差を実現するために2つ以上の位置の間の間隔を調節することによって選択されてよい。
[00125]UAV102は、範囲画像をTSDFに融合することに基づいて、または3D空間におけるスキャン対象の表面の場所を決定するための他の技法を使用して、スキャン対象110の低解像度3Dモデル1300を決定してよい。いくつかの実装形態では、スキャン対象110の複数の画像が取得されるスキャン対象110より上のあるいはこの付近の複数の位置は、直線に沿って位置し得る。いくつかの実装形態において、スキャン対象の複数の画像が取得されるスキャン対象110の付近の複数の位置は、スキャン対象110の周囲の円形に位置する。さらに、UAV102の3Dモデル構築機能は、ある領域固有のヒューリスティックを含んでよい。例えば、スキャン対象110が橋である場合、UAV102は、(例えば、交通対象との衝突を回避するために)橋の上を飛行しないように構成されてよい。
[00126]低解像度3Dモデル1300がUAV102以外のコンピューティング装置によって構築されるが、UAV102がスキャン計画を決定するように構成される場合、UAV102は上で論じられる1つまたは複数の通信インターフェースを介して低解像度3Dモデル1300を受信してよい。代替的には、いくつかの例において、低解像度3Dモデル1300およびスキャン計画は両方共、コントローラ104またはモバイル装置632などのUAV102以外のコンピューティング装置によって決定され得る。
[00127]いくつかの例では、低解像度3Dモデル1300は、スキャン対象110の表面上の3D空間において点集合1302を各々の垂線1304と共に符号化してよい。いくつかの実装形態において、点集合はまばらであってよい。例えば、スキャン対象は、1つまたは複数の物体を含んでいる空間の面積またはボリュームであってよい。例えば、スキャン対象は、犯罪現場、車、トラック、橋、建設現場、または任意の他の物体であってよい。場合によっては、低解像度3Dモデルは、ボクセル占有マップまたは符号付き距離マップを含んでよい。例えば、低解像度3Dモデルは、1つまたは複数の距離センサ(例えば、立体コンピュータビジョン、レーダーセンサ、ライダーセンダなどのために構成された画像センサのアレイ)が収集したセンサデータに基づいて生成されてよい。
[00128]いくつかの実装形態において、低解像度3DモデルにアクセスしているUAV102は、スキャン対象からの安全な距離で動作している間に、距離センサ(例えば、画像センサ)を使用して比較的低解像度のスキャンを実行することによって最近生成した低解像度3Dモデルそのものを有してよい。いくつかの例において、スキャン対象は、スキャン撮像に使用される一貫した距離よりも長い距離から低解像度3Dモデルを生成するためにスキャンされてよい。低解像度3Dモデルにはさまざまなやり方でアクセスしてよい。例えば、低解像度3Dモデルには、センサインターフェースを介して距離センサから、またはUAV102に搭載されたメモリから直接読み取ることによってアクセスしてよい。さらに、以下に論じられるように、低解像度3Dモデルは、高解像度3Dモデルを提供するためにスキャン計画の実行中に反復して微調整されてよい。
[00129]図14は、いくつかの実装形態によるスキャン計画を生成することの一例1400を示す。低解像度3Dモデルを生成または受信した後に、UAV102(または他のコンピューティング装置)は、低解像度3Dモデルが生成されたスキャン対象110をスキャンするための最初のスキャン計画を生成してよい。低解像度3Dモデル1300がUAV102以外のコンピューティング装置によって構築されるが、UAV102がスキャン計画を決定するように構成される場合、UAV102は、上に論じられる1つまたは複数の通信インターフェース426を介して低解像度3Dモデル1300を受信してよい。
[00130]代替的には、いくつかの例において、低解像度3Dモデル1300およびスキャン計画は両方共、コントローラ104またはモバイル装置632などのUAV102以外のコンピューティング装置によって決定されてよい。さらに別の例として、スキャン計画を決定するUAV102ではなく、スキャンするためのさまざまな異なるタイプのパターンは、ユーザによって、または芝刈り機パターンもしくは螺旋パターンなどのデフォルトによって指定されてよい。いくつかの例では、ユーザインターフェース602は、2Dもしくは3D拡張現実視点または固定視点(frozen view)などで、UAV102が指定された表面のスキャンを始める前に、ユーザインターフェースにおいてパターンのマッピングをユーザに提示してよい。場合によっては、ユーザは、スキャン対象110の表面から指定された距離でUAV102が指定されたスキャン対象110の画像の取得を自律的に実行し始める前に、スキャン計画を観測しかつ承認してよい。他の例において、UAV102は、スキャン対象1002を指定すること以外に、ユーザからの追加の入力なく完全に自律的に進んでよい。
[00131]上述されるように、スキャン計画は、高解像度画像センサ208などを使用して、スキャン対象110の一連の画像を取得するためのUAV102が取る一連の姿勢1402を含んでよい。例えば、スキャン計画の姿勢1402は、低解像度3Dモデル1300における点集合1302からの1つまたは複数の選択された点1302、および選択された点1302のそれぞれの垂線1304に基づいて決定されてよい。スキャン計画を実行している間、それぞれの姿勢1402について、プロセッサ402は、スキャン計画の一連の姿勢1402の指定された姿勢1402に対応する向きを取るためにUAV102を飛行させるように推進メカニズム202を制御してよい。
[00132]UAV102は、スキャン計画におけるそれぞれの姿勢1402からスキャン対象110の1つまたは複数の画像を取得するために1つまたは複数の画像センサ208、212~216および302~306を使用してよい。1つの例として、姿勢の位置は、選択された点1302のそれぞれの垂線1304に沿っており、かつスキャン計画のスキャン距離パラメータに対応する選択された点からの指定された距離にあると決定され得る。しかしながら、本明細書における実装形態は、垂線1304に沿って画像を取得することに限定されるものではなく、いくつかの例では、画像取得は、選択された点1302の垂線1304に対する角度で実行されてよい。さらに、必ずしも、点と姿勢との間の1対1の対応があるわけではない。それとは反対に、低解像度3Dモデルにおける点は、画像の所望の解像度、画像間の所望の重複量、および、スキャン対象110の表面からの所望のスキャン距離に対する最適な効率で、スキャン対象110の選択エリア全体を覆うための最適な姿勢を決定するための基準点を提供する。
[00133]UAV102は、スキャン計画に含まれる姿勢1402の視野(FOV)で、スキャン対象110の低解像度3Dモデル1300の点を体系的に覆うように構成されてよい。例えば、UAV102のプロセッサ402は、低解像度3Dモデル1300の点集合1302を、覆われている点の部分集合および覆われていない点の部分集合に分割するように構成されてよい。覆われている点は、1つまたは複数の姿勢1402が既に指定されている低解像度3Dモデル1300上の点1302であってよく、覆われていない点は、姿勢1402がまだ指定されていないような点1302であってよい。
[00134]スキャン計画は、画像センサの1つまたは複数を使用してスキャン対象の画像を取得するためにUAV102が取る一連の姿勢を含んでよい。スキャン計画の姿勢は、低解像度3Dモデルの点集合1302から選択された点、および選択された点1302のそれぞれの垂線1304に基づいて決定される。いくつかの実装形態では、姿勢の位置は、スキャン計画のスキャン距離パラメータ(例えば、地上分解能(GSD))に対応する選択された点からの距離で選択された点のそれぞれの垂線に沿っていると決定され得る。例えば、姿勢1402は、スキャン対象110の低解像度3Dモデル1300の全ての点1302が(例えば、許容可能な距離および角度における視野内に示される)スキャン計画の少なくとも1つの姿勢1402の視野によって覆われるまで、スキャン計画に反復して追加されてよい。いくつかの実装形態では、低解像度3Dモデルからの覆われていない点は、姿勢1402の位置および向きを決定する新たな姿勢1402の視野に対する中心点としての役割を果たすようにランダムに選択されてよい。いくつかの実装形態では、低解像度3Dモデル1300からの覆われていない点は、スキャン計画によって取得される画像に対する重複パラメータなど、1つまたは複数の制約を受ける新たな姿勢によって覆われることになる、覆われていない点の数を最大にするように選択され得る。
[00135]スキャン計画の展開中、次の姿勢1402を繰り返し決定するために、UAV102のプロセッサは、覆われていない点の部分集合から姿勢1402に対する次の中心点を選択してよく、かつ選択された次の中心点、および選択された次の中心点のそれぞれの垂線1304に基づいて、新たな姿勢1402を決定してよい。例えば、次の中心点を決定することは、スキャン対象110の表面から画像センサまでの指定された距離、画像センサのFOVが指定された距離で覆うことになる面積、連続した画像間の所望の重複量、および次の中心点と1つまたは複数の隣接する覆われた中心点との間の距離の関数として行われてよい。
[00136]プロセッサ402は、新たな姿勢1402がスキャン計画に追加されると、覆われている点集合と覆われていない点集合との分割を更新するように構成されてよい。いくつかの実装形態では、プロセッサ402は、評価中の点1302からの姿勢1402までの距離をチェックし、かつ評価中の点1302の垂線1304と姿勢1402の選択された中心点の垂線1302との間の角度をチェックするように構成されてよい。さらに、プロセッサ402は、光線試験を使用して姿勢1402から評価中の点のオクルージョンをチェックしてよく、かつ距離、角度、および/または光線試験に基づいて、姿勢1402によって覆われているかまたは覆われていないかで評価中の点を識別してよい。
[00137]プロセッサ402は、さまざまなトラバース法のいずれかを使用して、UAV102によってトラバースされる姿勢1402の順序を決定するように構成されてよい。例えば、姿勢1402をトラバースする順序は、巡回セールスマンアルゴリズムを使用して決定されてよい。1つの例として、用いられる巡回セールスマンアルゴリズムはクリストフィードのアルゴリズムであってよいが、本明細書における実装形態は、任意の特定のアルゴリズムまたはトラバース法に限定されない。
[00138]いくつかの実装形態では、プロセッサ402は、スキャン対象110の全てのアクセス可能な表面の完全な被覆を得ること、姿勢1402に対する規則的で予測可能なパターンを有すること、および、トラバース時間を最短化することなどのためにスキャン計画の実行中のUAV102の効率的なナビゲーションを可能にすることなど、さまざまな懸念事項の均衡化に基づいて、全ての点1302を覆うためのスキャン計画を生成し得る。場合によっては、プロセッサ402は、スキャン計画に従ってスキャン対象110のスキャンを開始する前に前もってスキャン計画全体を決定してよい。他の例では、プロセッサ402は、スキャン計画の第1の部分を決定してよく、次いで、スキャン計画の第1の部分を実行している間にスキャン計画の残りの部分を決定してよい。
[00139]さらに、プロセッサ402は、スキャン計画の実行中に受信した新たなセンサデータに基づいて、スキャン計画の実行中に3Dモデルおよびスキャン計画を反復してかつ動的に更新するように構成されてよい。1つの例として、スキャン計画の実行中に障害物に遭遇する場合、プロセッサ402は、障害物との衝突を回避するなどのために、障害物の場所に基づいてスキャン計画を更新してよい。よって、プロセッサ402は、進行中に遭遇した障害物にスキャン計画を動的に適応させるように構成されてよい。例えば、プロセッサ402は、スキャン計画にアクセスし、障害物に対してスキャン計画の次の姿勢をチェックし、および、障害物の検出に応答して、次の姿勢の視野の中心におけるスキャン対象の表面の垂線に沿った位置に位置するバックアップ姿勢を決定してよい。プロセッサ402は、障害物に対するバックアップ姿勢をチェックしてよく、かつバックアップ姿勢の障害物がないことに応答して、UAV102がバックアップ姿勢を取るために飛行させるように推進メカニズムを制御してよい。バックアップ姿勢において、UAV102は、1つまたは複数の画像センサ(例えば、画像センサ208)を使用して、バックアップ姿勢からのスキャン対象の1つまたは複数の画像を取得してよい。
[00140]さらに、スキャン対象110のスキャンが実行されると、追加の距離情報が決定され、かつ3Dモデルを微調整するために使用されてよい。例えば、UAV102は、新たにスキャンされた画像および/または新たに検出された表面の点までの距離などに少なくとも部分的に基づいて、スキャン対象110の高解像度バージョンの3Dモデルをリアルタイムで生成するために3D再構成技法を使用してよい。例えば、UAVは、高解像度3D点群モデルを構築してよい、および/または点群モデルなどに基づいて3Dメッシュモデルを生成してよい。
[00141]いくつかの例において、スキャンおよび3D再構成は、最初のスキャン計画に従ってスキャン対象のスキャン中に点または他の情報を3Dモデル1300に追加し、かつ3Dモデルに追加された情報に基づいて最初のスキャン計画を動的に更新することなどによって、繰り返し実行されてよい。上述されるように、UAV102は、TSDFなどに基づいて、最初の低解像度3Dモデル1300を生成するために最初の粗スキャンを使用してよい。UAV102は、TSDFによって規定された低解像度3Dモデルに対応する表面における表面被覆を確実にするための最初のスキャン計画を決定し得る。UAV102は、UAV102がスキャン計画をナビゲートする際に追加の範囲画像を融合することによって3Dモデル1300を更新し続けながら最初のスキャン計画のいくつかまたは全てを飛行してよい。したがって、UAVがスキャン計画をナビゲートする際に3Dモデルに関する表面情報の品質は改善され得る。さらに、3Dモデルの精度、被覆などが繰り返し改善されるため、スキャン計画では、先に含まれなかった新たな点を覆うこと、または障害物を回避することなどのために動的に更新されてよい。
[00142]UAV102はまた、1つまたは複数の画像センサ(例えば、画像センサ208)のカメラパラメータを、スキャン計画の実行中に遭遇した状態に動的に適応させるように構成されてよい。例えば、プロセッサ402は、現在の照明状態に関するデータに基づいて(例えば、画像センサの自動露出モジュールによって返される自動露出パラメータに基づいて)露出時間、ホワイトバランスパラメータ、および/またはセンサゲイン(例えば、ISO値)を更新するように構成されてよい。さらに、いくつかの例では、スキャンの結果は、損傷エリア、腐食エリア、およびメンテナンスが必要なエリアなどの関心領域を認識するための機械学習モデルなどによって、リアルタイムで調べられてよい。場合によっては、機械学習モデルは、UAV102に搭載されて実行されてよく、かつ、画像センサの解像度を増大させること、および/または認識されている関心領域の画像を取得する時に指定されたスキャン距離を短縮することをスキャンプログラム408で行わせ得る出力を提供し得る。
[00143]スキャン計画の実行中、UAV102の推進メカニズムは、スキャン計画の一連の姿勢のうちの1つに対応する姿勢1402を取るためにUAV102を飛行させるように制御されてよい。UAV102は、1つまたは複数の画像センサを使用して、それぞれの姿勢1402からのスキャン対象の1つまたは複数の画像を取得してよい。例えば、画像は、新たに追加された点を含めて、スキャン対象の3Dモデルの点集合の全てを覆う画像が取得されるまで、スキャン計画の姿勢1402のそれぞれに対して取得され得る。いくつかの実装形態では、プロセッサ402は、スキャン対象110の1つまたは複数の表面の合成画像を得るために、取得された画像をまとめ合わせるように構成されてよい。
[00144]スキャン中、UAV102は、スキャン対象110の画像を撮る間計算された経路を飛行してよい。障害物を回避することに加えて、UAV102は、障害物の回避または画像の位置合わせの改善のような事態に対して経路を動的に更新してよい。例えば、UAV102は、進行中に遭遇した障害物を考慮するようにスキャン計画を動的に適応させてよい。例えば、図23のプロセス2300は、スキャン計画の実行中に遭遇する障害物にスキャン計画を動的に適応させるために実装されてよく、図15~図17および図22のプロセスは、スキャン計画および3Dモデルを反復してかつ動的に更新するために実装されてよい。
[00145]UAV102がスキャンを完了している、または(例えば、電池の残量不足または車両の故障により)スキャンを中断しなければならない時、UAV102は、自動的にその離陸地点に戻りかつ着陸し得る。UAV102がスキャン計画の完了前に着陸しなければならない限りにおいて、UAV102はスキャン計画に対する進捗状況を保存し得ることで、UAV102を着陸させる状態がどんなものであっても解決された後にUAV102が離陸したところで、UAV102または異なるUAVがスキャンし始めることができるようにする。例えば、スキャン計画を開始した後および完了する前に、UAV102は、スキャン計画の一連の姿勢の次の姿勢を示すスキャン計画状況を記憶してよい。スキャン計画状況を記憶した後、UAV102は、UAV102を着陸させるために飛行させるように推進メカニズムを制御してよい。着陸後、UAV102は、UAV102を再び離陸させるために飛行させるように推進メカニズムを制御してよい。UAV102は、スキャン計画状況にアクセスしてよく、かつスキャン計画状況に基づいて、UAV102が、次の姿勢を取るために飛行させ、かつスキャン計画を実行し続けるように推進メカニズムを制御してよい。
[00146]スキャン計画は、UAV102の少なくとも一連の姿勢を含んでよく、かつより多くの情報を含み得る。姿勢は、さまざまな座標系(例えば、グローバル座標系、もしくはUAV102のためのドッキングステーション106もしくは他の離陸場所に対する座標系、または、スキャンされているスキャン対象に対する座標系において符号化され得る。スキャン計画状況は、視覚慣性オドメトリ(VIO)システムと組み合わせて、充電後にスキャン計画における次の姿勢を取るために使用されてよい。例えば、UAV102は、ドッキングステーション106上に自動的に着陸してよく、この電池を自動的に充電後、保存された状況情報に基づいて次の姿勢でスキャンを再開するためにドッキングステーション106から離陸してよい。
[00147]スキャン計画の実行が完了する時、収集されたデータ(例えば、スキャン対象の表面の高解像度画像および関連するメタデータ)は、観測またはオフライン分析のために別のコンピューティング装置(例えば、コントローラ104、モバイル装置632、またはクラウドサーバ)に送信され得る。高解像度3Dモデルはまた、まだ送られていない場合、ユーザのコンピューティング装置に送信され得る。いくつかの実装形態では、スキャン計画の実行の進捗または有効性を要約しているステータスレポートが提示されてよい。さらにまたは代替的に、モバイル装置632上のユーザインターフェースは、UAV102から3Dモデルを獲得することなどによって、スキャン対象の3Dモデルを提示してよい。連続する姿勢がトラバースされるため、モバイル装置632は、画像が取得されている3Dモデルの部分を、ペイント、強調表示、あるいは視覚的に区別し得る。したがって、ユーザは、欠けているエリアを検出するなどのために、スキャン対象をスキャンする際のUAV102の進捗を観測することができる。さらに、UAV102から受信したデータは、スキャン対象のまとめ合わせられた合成画像、取得された写真、ならびに、カメラの姿勢および飛行概要データ(例えば、取得された写真、完了した飛行の割合、飛行時間など)を含むメタデータを含み得る。
[00148]スキャン計画の実行中または実行後、プロセッサ402は、スキャン対象110の高解像度3Dモデルを生成してよい。いくつかの例では、高解像度3Dモデルは3D点群を含んでよく、スキャン中に撮られた画像は、3D点群上の点と相関関係があってよい。さらに、いくつかの例において、メッシュモデルは、知られている3Dモデリング技法を使用して3D点群に基づいて生成されてよい。さらに、3Dモデルは、コントローラ104、モバイル装置632を使用することによって、またはUAV102と通信できる他のコンピューティング装置を通してなど、ユーザ108が観測するために即時に利用可能にされ得る。1つの例として、ユーザは、スキャン対象110の全ての所望の部分がスキャン中に取得されることを確実にするために、および/または欠けている画像もしくは他の欠けている情報を有する任意のエリア、もしくは、より高い解像度もしくはより近い距離などでの再スキャンを保証することに十分な関心があると考えられる関心のあるエリアを再スキャンすることを指定するために、高解像度3Dモデルおよび関連する被覆を観測することができる。
[00149]図15~図23は、いくつかの実装形態による例示のプロセスを示すフロー図を含む。プロセスは、一連の動作を表す論理フロー図におけるブロックの集合として示され、その一部または全ては、ハードウェア、ソフトウェア、またはこれらの組み合わせで実施されてよい。ソフトウェアの文脈では、ブロックは、1つまたは複数のプロセッサによって実行される時、列挙された動作を実行するようにプロセッサをプログラムする、1つまたは複数のコンピュータ可読媒体に記憶されたコンピュータ実行可能命令を表し得る。一般に、コンピュータ実行可能命令は、特定の機能を実行する、または特定のデータ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、およびデータ構造などを含む。ブロックが記載されている順序は、限定として解釈されるべきではない。任意の数の記載されたブロックは、プロセスまたは代替プロセスを実装するために任意の順序でおよび/または並列に組み合わせ可能であり、ブロックの全てが実行される必要はない。論述の目的で、プロセスは、本明細書における例に説明された環境、システム、および装置に関して説明されているが、プロセスは、多種多様な他の環境、システム、および装置で実装されてよい。
[00150]図15は、いくつかの実装形態による3Dモデルおよび/またはスキャン計画の反復更新の例示のプロセス1500を示す。いくつかの例では、プロセス1500は、UAV102の1つまたは複数のプロセッサ402上でスキャンプログラム408を実行することによって少なくとも部分的にUAV102によって実行されてよい。
[00151]例えば、上述されるように、いくつかの例において、その3Dモデルおよびスキャン計画は、スキャン対象のスキャン中に反復して微調整あるいは更新され得る。最初のスキャン計画に従ってスキャンが実行されると、新たな点または他の情報を3Dモデルに追加するために3D再構成が使用されてよい。3Dモデルの更新に基づいて、最初のスキャン計画は、新たな姿勢を追加することまたは既存の姿勢を修正することなどによって、動的に更新されてよい。上述されるように、UAV102は、TSDFなどに基づいて、最初の低解像度3Dモデルを生成するために最初の粗スキャンを使用してよい。UAVは、TSDFによって規定された低解像度3Dモデルに対応する表面における表面被覆を確実にするための最初のスキャン計画を決定し得る。UAV102は、UAV102がスキャン計画をナビゲートする際に追加の範囲画像を融合することによって3Dモデルを更新し続けながら最初のスキャン計画のいくつかまたは全てを利用して飛行してよい。したがって、UAVがスキャン計画をナビゲートする際に3Dモデルに関する表面情報の品質は改善され続ける場合がある。場合によっては、3Dモデルの精度、被覆などが反復して改善されるため、スキャン計画では、先にスキャン計画に含まれなかった新たな点を覆うこと、および/または最初のスキャン計画の実行中に遭遇する障害物を回避することなどが動的に更新されてもよい。
[00152]1502において、UAV102はスキャン対象のインジケーションを受信してよい。例えば、UAV102は、図6~図12などに関して上に論じられるさまざまな技法のいずれかによってスキャン対象のインジケーションを受信してよい。
[00153]1504において、UAV102は、示されたスキャン対象のスキャンパラメータを受信してよい。いくつかの例では、スキャンパラメータのいくつかは、特定のタイプのスキャンおよび/または構造もしくは光景などに対するデフォルトのパラメータとして前もって設定されてよい。例えば、橋に対して実行されるスキャンは、パラメータの第1のデフォルトのセットを有してよく、事故現場に対して実行されるスキャンは、パラメータの第2の異なるデフォルトのセットを有してよい。ユーザは、さまざまな事態に順応するようにパラメータを手動で調節してよい。スキャンパラメータの例には、本明細書の他の箇所にも論じられるように、対象表面からのスキャン距離(地上分解能)、取得された画像の重複、解像度、ズーム量、および露出時間などの取り込まれた画像のカメラ設定が含まれ得る。
[00154]1506において、スキャン対象のインジケーションを受信することに応答して、UAV102は、指定されたスキャン対象の最初のラフスキャンに基づいて低解像度3Dモデルを生成してよい。例えば、受信されるインジケーションのタイプに応じて、UAVは、搭載画像センサを使用して1つまたは複数の範囲画像を取得するためにスキャン対象に近接してナビゲートしてよい。例えば、UAVは、ステレオ対のナビゲーション画像センサおよび/または広域ベースライン多視点ステレオ(MVS)画像センサ対からの範囲画像を、複数の点およびその点のそれぞれに対する各々の垂線を含む表面メッシュ推定を生成するために使用されるTSDFボリュームに融合してよい。最初のTSDF生成3Dモデルは、典型的には、低解像度3Dモデルであり得、かつより低い精度を有し得るが、これは、スキャン対象が、より高い精度の、ひいてはより高い解像度の3Dモデルを生成するための十分に多様な視点からまたは十分に近い距離でまだ撮像されていないあるいはスキャンされていないからである。例えば、UAV102が取得する対象表面の画像が多いほど、およびUAV102の飛行が表面に近いほど、UAV102がステレオ対の範囲画像を3Dモデルに融合し続ける際にTSDFにおいて表面の場所および形状の推定の精度が高まる。
[00155]1508において、UAV102は、低解像度3Dモデルに基づいて最初のスキャン計画を生成してよい。1つの例として、上述されるように、スキャン計画の決定は、第1の姿勢の中心点としての低解像度3Dモデルの第1の点で開始することと、低解像度3Dモデルにおける全ての点が少なくとも1つの姿勢の視野によって覆われるまでその点から外方に連続して進行することとを含み得る。
[00156]1510において、UAV102は、スキャン計画における姿勢のトラバース中にスキャン計画において指定された姿勢で画像を取得してよい。いくつかの例では、UAV102は、例えば、画像が取得される際に、取得された画像、ならびに/または取得された姿勢および3Dモデル上の取得された点の姿勢情報のうちの少なくとも一部を、モバイル装置632またはコントローラ104に提供してよい。
[00157]1512において、UAV102は、スキャン計画の実行中に取得された画像に基づいて3Dモデルを更新してよい。例えば、UAV102がスキャン対象表面の高解像度画像を取得するために画像センサ208を使用している間に、UAV102はまた、UAV102の既知の場所からスキャン対象の表面までの距離の追加の距離測定値を収集するために追加の画像センサ212、214、216、302、304、および306を用いてよい。UAV102は、3Dモデルに対する追加の点のそれぞれの垂線を生成するために、画像センサ212、214、216、302、304、および306からの追加の範囲画像をTSDFボリュームに融合することなどの3D再構成技法を用いてよい。したがって、UAV102がスキャン計画を実行する際に、3Dモデルは、低解像度3Dモデルから高解像度3Dモデルに変換され得る。
[00158]1514において、3Dモデルの更新に基づいて、UAV102は、スキャン対象に対するスキャン計画を更新してよい。例えば、新たな覆われていない点が3Dモデルに追加される場合、UAV102は、3Dモデルにおける追加の覆われていない点を覆うための追加の姿勢を決定するためにスキャン計画を動的に更新してよい。さらに、UAVが1つまたは複数の姿勢における1つまたは複数の点の取得を妨げる障害物に遭遇する場合、UAVはこれらの点を取得するための代替姿勢を決定してよい。スキャン計画の更新後、プロセスは1510に戻って、スキャン計画に基づいて画像を取得し続けてよい。したがって、1515に示されるように、UAV102は、3Dモデルがスキャン中に継続的に更新される反復ループを実行してよく、スキャン計画は、スキャン計画にまだ含まれていないモデルの任意の追加の部分を覆うために動的に更新されてよい。この反復プロセスは、場合によっては、1506で生成される最初の低解像度3Dモデルより実質的に精確であり得る高解像度3Dモデルの生成を可能にする。いくつかの例では、スキャン計画がもはや更新されず、スキャン計画の実行が完了する時、プロセスは1516に進んでよい。他の例では、1516またはこの一部は、例えば、取得された画像、更新された3Dモデル情報、および/またはスキャン情報が利用可能になると、反復ループ1515の実行中に実行されてよい。
[00159]1516において、UAV102は、UAV102に搭載されたメモリにおいて、スキャン中に取得された高解像度3Dモデルおよび画像を記憶してよい、ならびに/または、高解像度3Dモデル、取得された画像、および/もしくはUAV102からの姿勢場所情報(例えば、それぞれの姿勢に関するGNSS場所情報または他の場所情報)などのスキャン情報を、コントローラ104、モバイル装置632、および/もしくはネットワーク上に位置するサーバなどの1つもしくは複数のコンピューティング装置にエクスポートしてよい。UAV102は、スキャンを実行している間に、または代替的には、UAV102がスキャン対象のスキャンを完了した後、この情報の少なくとも一部をエクスポートしてよい。
[00160]いくつかの例では、3Dモデル情報、取得された画像、ならびに/またはスキャン進捗およびスキャン姿勢情報は、スキャン対象のスキャンが行われている際に、コントローラ104、モバイル装置632、または別のコンピューティング装置に無線で送られてよい。他の例では、画像は、UAV102に搭載された取り外し可能なメモリカードに記憶され、かつ飛行が完了した後に除去されてよい。さらに、スキャン中にスキャン進捗およびスキャン姿勢場所情報を受信することによって、ユーザは、取得される点に対応するエリアを強調表示、ペイント、あるいは視覚的に区別することなどによって、画像が取得された3Dモデル上の点を更新するモバイル装置上に提示されるユーザインターフェースを使用してスキャンの被覆を追跡することができてよい。場合によっては、画像は、スキャン対象を観測すること、スキャン対象の高解像度検査、または、このような高解像度3Dモデルおよび高解像度画像で実行されてよいさまざまな他の観察、コンピュータグラフィック、もしくはコンピュータモデリング動作のうちのいずれかを実行することなど、スキャン対象のテクスチャ処理された3Dモデルの作成を可能にするように高解像度3Dモデル上の点と相関関係があってよい。例えば、追加のモデル構築およびレンダリングは、高解像度3Dモデル、スキャンされた画像、ならびに、UAV102から受信した他のスキャンデータおよびメタデータを使用して、1つまたは複数の他のコンピューティング装置上で実行されてよい。
[00161]図16は、いくつかの実装形態によるUAV102の例示の論理構成1600を示す。上述されるように、いくつかの例では、スキャンプログラム408および車両制御プログラム406は、スキャン対象をスキャンするようにUAV102を制御するために、任意の数のシステムおよびセンサなどからの入力を受信するためにUAV102の1つまたは複数のプロセッサ402によって実行されてよい。例えば、スキャンプログラム408および車両制御プログラム406は、メモリまたは他のコンピュータ可読媒体404に記憶され、かつ1つまたは複数のプロセッサ402によって実行可能な命令として実装されてよい。代替的には、いくつかの例では、スキャンプログラム408の少なくとも一部は、コントローラ104またはモバイル装置632などの異なるコンピューティング装置上で実行されてよい。
[00162]図16に示されるように、車両制御プログラム406は、動作計画プログラム1606、追跡および/またはナビゲーションプログラム1607、ならびに自律プログラム1608を含んでよいが、他の例において、より多くのまたはより少ないプログラムおよびモジュールが車両制御プログラム406に含まれてよい。動作計画プログラム1606は、物理的環境の中でUAV102を自律的に操縦するようにUAV102を構成するために実行されてよい。さらに、追跡および/またはナビゲーションプログラム1607は、UAVの目的地を決定すること、および/またはUAV102に対して決定されるさまざまな他の目標を実行することなどのために、飛行中にUAV102の1つまたは複数の目標を決定してよい。さらに、自律プログラムは、物体までのおよび画像センサの位置に対する距離などを決定することなど、自律飛行を可能にするための処理を実行してよい。いくつかの例では、追跡/ナビゲーションプログラム1607は、画像処理機能、物体検出および追跡アルゴリズム、ならびに同一性認識アルゴリズムなど(図示せず)を含んでよい。さらに、いくつかの実装形態において、動作計画プログラム1606、追跡/ナビゲーションプログラム1607、および/または自律プログラム1608のうちの1つまたは複数は、車両制御プログラム406に組み合わせられるのではなく、別個のプログラムであってよい。
[00163]いくつかの実装形態において、動作計画プログラム1606は、物理的環境の3D空間の中で計画軌道を生成するために実行されてよい。例えば、UAV102の計画動作は、画像センサ208、212~216、および302~306を含み得る画像取得システム430から受信される画像に少なくとも部分的に基づいてよい。さらに、いくつかの実装形態において、動作計画プログラム1602は、自律プログラム1608、ならびに、IMU422、GNSS受信機420、および/または、気圧計、近接センサ、磁気計、レーダー、およびライダーなどの他のセンサ424などの他のセンサおよび装置から受信された情報に頼る場合がある。
[00164]さらに、いくつかの例において、車両制御プログラム406は、1つまたは複数の通信インターフェース426を通して、リモートコンピューティング装置またはコントローラ1612、例えば、コントローラ104、モバイル装置632、または他のコンピューティング装置などの外部ソースから1つまたは複数の制御入力1610を受信し得る。例えば、制御入力1610は、1つまたは複数の指定されたナビゲーション目標を示し得る。例えば、制御入力1610は、車両制御プログラム406と関連付けられたAPIを介した呼び出しを含んでよい。例えば、API呼び出しは、1つまたは複数のナビゲーション目標を動作計画プロセスの一部として設定するためにリモートコンピューティング装置またはコントローラ1612上で実行するアプリケーションによってなされてよい。ナビゲーション目標は、例えば、他の物体との衝突を回避すること、特定の物体に追従するように操縦すること、特定の場所まで操縦すること、および、特定のエリアをトラバースすることなどを含んでよい。いくつかの実装形態において、生成された計画軌道は、UAV102が物理的環境を自律的にナビゲートする際に、通信インターフェース426を介して受信された新たな入力(例えば、新たなセンサデータおよび/または新たな制御入力1610に基づいて連続してまたは継続的に(すなわち、規則的または不規則的な間隔で)更新されてよい。
[00165]いくつかの実装形態において、車両制御プログラム406は、動作計画プログラム1606によって生成される計画軌道に沿ってUAV102を操縦させるように構成される制御コマンドを生成してよい。例えば、制御コマンドは、例えば、図2および図3に関して上に論じられた1つまたは複数の推進装置202を制御するために1つまたは複数の飛行コントローラ428に提供され得る。
[00166]別個に、または動作計画プログラム1606と併せて動作する追跡/ナビゲーションプログラム1607は、例えば、受信した画像または他の受信したセンサ情報に基づいて、および/またはリモートコンピューティング装置もしくはコントローラ1612からの1つもしくは複数の制御入力1610に基づいて、および/または1つもしくは複数の指定されたナビゲーション目標、とりわけ、動作計画に基づいて、物理的環境におけるナビゲーションなどのためのナビゲーション機能を決定するように構成されてよい。
[00167]追跡/ナビゲーションプログラム1607は、例えば、物理的環境における物体、構造、および陸標の測定された、推定された、および/もしくは予測された位置、向き、および/もしくは軌道に基づいてUAV102を操縦するために、動作計画プログラム1606および自律プログラム1608と通信してよい。例えば、追跡/ナビゲーションプログラム1607は、動作計画プログラム1606にナビゲーション目標を実現するための適した飛行経路を決定させるためにナビゲーション目標を動作計画プログラム1606に通信してよい。さらに、追跡/ナビゲーションプログラム1607は、上に論じられるタッチ画面604などの関連したディスプレイ上での提示のために、リアルタイム映像などの画像1614をリモートコンピューティング装置またはコントローラ1612に継続的に送ってよい。
[00168]さらに、自律プログラム1608は、自律飛行を可能にするために、ならびに、範囲情報、視覚慣性オドメトリ(VIO)情報、および/または、ジンバル位置決め情報1615などの情報をスキャンプログラム408に提供するために、動作計画プログラム1606および追跡/ナビゲーションプログラム1607を実行して、呼び出して、あるいはこれと対話してよい。例えば、動作計画プログラム1606は、ナビゲーション画像センサ、例えば、画像センサ212、214、216、302、304、306など、画像取得システムから画像を受信してよく、かつ、スキャン対象上のさまざまな点への距離を決定するための範囲決定に関するステレオ画像分析を使用してよい。したがって、この範囲情報、ならびに動作計画プログラム1606および/または追跡/ナビゲーションプログラム1607によって決定された他の情報は、スキャンプログラム408にこれらの画像処理ステップを繰り返させるではなく、自律プログラム1608によってスキャンプログラム408に提供されてよい。例えば、情報1615は、上に論じられるように3Dモデルを生成または更新するために使用されてよい。
[00169]スキャンプログラム408は、車両制御プログラム406によって、スキャン対象の画像を取得するためにUAV102を所望の場所にナビゲートさせるように、車両制御プログラム406に姿勢1616を送ってよい。例えば、姿勢1616は、スキャン計画を生成するために使用するための低解像度3Dモデルを生成するように、スキャン計画を実行するための、および/またはスキャン対象の最初のラフスキャンを実行するための姿勢であってよい。例えば、姿勢1616は、車両制御プログラム406によって受信され、かつ動作計画プログラム1606、追跡/ナビゲーションプログラム1607、または自律プログラム1608のうちの少なくとも1つに提供されてよく、これによって、UAV102を個々の姿勢にどのようにナビゲートするかが決定され得る。
[00170]スキャンプログラム408は、リモートコンピューティング装置またはコントローラ1612から1つまたは複数のスキャン対象入力1618を最初に受信してよい。例えば、スキャン対象入力1618は、図7~図12に関して上に論じられる技法のいずれかを含み得る、またはさまざまな他の技法のいずれかによって、スキャンされるスキャン対象を示してよい。例えば、別の例として、スキャン対象入力1618は、UAV102の近辺におけるスキャン対象の先に構成された低解像度3Dモデルを含んでよい。スキャン対象入力1618は、スキャンが実行される対象表面からの指定された距離、画像重複量、解像度、ズーム、および露出などのスキャンカメラ設定などのさまざまなスキャンパラメータをさらに含んでよい。
[00171]スキャン対象入力1618を受信することに基づいて、スキャンプログラム408は、複数の動作1620~1636を実行するためにプロセッサ402によって実行されてよい。例えば、場合によっては、図16のプロセスは、上に論じられる図15のプロセス、および以下に論じられる図17のプロセスの一部または全てを含んでよく、かつ、図15および図17のプロセスの実行中にUAV102のコンポーネント間の対話の1つの例を提供する。
[00172]1620において、プロセッサ402は、スキャン対象のスキャンを開始するために上に論じられるスキャン対象入力1618などのスキャン対象情報およびスキャンパラメータを受信してよい。
[00173]1622において、プロセッサ402は、受信したスキャン対象入力1618に基づいて、最初のスキャンの姿勢1616を車両制御プログラム406に送ってよい。例えば、スキャンプログラム408は、スキャン対象の最初の低解像度スキャンを実行するために複数の姿勢1616を車両制御プログラム406に送ってよい。1つの例として、スキャン対象入力1618が境界ボリュームを含む場合、最初のスキャンの姿勢1616は境界ボリューム情報に基づいてよい。例えば、姿勢1616は、対角線上に対向し、かつ、境界ボリュームの3Dボリュームの範囲内の任意のスキャン対象表面を取得しかつ認識するために、境界ボリュームの中心の方へ画像センサの視野を向ける、境界ボリュームの上部の隅または縁部のうちの少なくとも2つへのナビゲーションを含んでよい。代替的には、単一の多角形または他の2D形状がスキャン対象を指定するために使用されるなどの場合、UAVは、全般的に、多角形によって示されるエリアを包含する少なくとも1つの画像を得るために多角形上の視点にナビゲートしてよい。いくつかの例において、示されたスキャン対象のラフスキャンを実行するためにわずか1つまたは2つの姿勢1616が用いられ得るが、他の例では、スキャン対象の低解像度3Dモデルを生成するためにスキャン対象に関する十分な情報を取得するためにより多い姿勢1616が用いられてよい。
[00174]1624において、プロセッサ402は、スキャン対象の最初のスキャンからの画像を受信してよい。例えば、画像は画像取得システム430から受信され得る。いくつかの例では、画像は、2つ以上の異なる画像センサによるものであってよく、かつスキャン対象上の同じ点の少なくとも一対の関連した画像の間の視差を決定することなどに基づいて、UAV102からスキャン対象の表面までの距離(範囲)のより容易な決定を可能にするために同時に撮られてよい。代替的には、他の例において、上に論じられるように、繰り返しの処理を回避するために、範囲情報およびUAV位置情報は、自律プログラム1608から受信されてよく、かつ以下に論じられるように、3Dモデルを生成または更新するためにスキャンプログラム408によって使用されてよい。
[00175]1626において、プロセッサ402は、最初のスキャンの間に受信された画像から決定される範囲情報に基づいて低解像度3Dモデルを生成してよい。例えば、取得された画像から決定されたスキャン対象の表面までの決定された距離に基づいて、プロセッサ402は、取得された画像から決定される範囲に基づいて決定された3D空間における複数の点を含み得るスキャン対象のラフなあるいは低解像度の3Dモデルを生成し得る。さらに、プロセッサ102は、低解像度3Dモデルにおける点のいくつかまたは全てのそれぞれの垂線を決定し得る。1つの例として、図17に関して以下にさらに論じられるように、低解像度3Dモデル(および後続の3Dモデルの更新)は、切り捨て符号付き距離関数(TSDF)を使用して、または、当業者にはよく知られている他の適した技法によって、生成されてよい。いくつかの例において、低解像度3Dモデル1627は、ユーザが低解像度3Dモデルを観測することができるようにユーザインターフェースに提示するためにリモートコンピューティング装置またはコントローラ1612に送られてよい。
[00176]1628において、プロセッサ402は、低解像度3Dモデルに基づいてスキャン計画を決定してよい。1つの例として、上述されるように、スキャン計画の決定は、低解像度3Dモデルにおける全ての点がスキャン計画における少なくとも1つの姿勢の視野によって覆われるまで、第1の姿勢の中心点として低解像度3Dモデルの第1の点で開始することと、その点から外方に反復して進むこととを含んでよい。
[00177]1630において、プロセッサ402は、スキャン計画の姿勢1616を車両制御プログラム406に送ってよい。例えば、スキャン計画の姿勢1616を受信することに応答して、車両制御プログラム406は、UAV102に、スキャン対象の画像を取得するためにスキャン計画における姿勢1616をトラバースさせてよい。車両制御プログラム406(またはスキャンプログラム408)は、巡回セールスマンアルゴリズム、芝刈り機パターン、螺旋パターン、または任意の他の適したアルゴリズムなどを使用することによって、スキャン計画における姿勢の効率的なトラバースを決定するための複数の技法のいずれかを使用してよい。いくつかの実装形態において、追跡/ナビゲーションプログラム1607は、1つまたは複数の安定化/追跡装置812(例えば、ジンバル210)に、スキャン計画の現在の姿勢に対するUAV102の動きおよび向きなどに基づいて、UAV102の本体に対する画像センサ208の向きおよび/または位置を調節させる制御コマンドを生成するようにさらに構成されてよい。例えば、スキャン対象をスキャンしている間、ジンバル210は、スキャンされるスキャン対象の表面に対するUAV102の現在の本体の向きを考慮に入れながら、画像センサ208が、スキャン計画に従ってそれぞれの姿勢でスキャン対象上の点の画像を取得できるように継続的に調節されてよい。
[00178]1632において、プロセッサ402は、スキャン計画における姿勢のトラバース中に取得される画像を受信してよい。例えば、画像取得システム430は、取得された画像の少なくともいくつかをスキャンプログラム408および/または自律プログラム1608に提供してよい。さらに、いくつかの例において、スキャンプログラム408は、画像1633が画像取得システム430から受信される際に、少なくともいくつかの画像1633をリモートコンピューティング装置またはコントローラ1612に提供してよい。いくつかの例において、画像1633は、スキャン計画の実行中にまたはスキャン計画の実行後に、画像取得システム430からリモートコンピューティング装置またはコントローラ1612に直接提供されてよい。
[00179]1634において、プロセッサ402は、スキャン計画の少なくとも一部を実行中に受信された取得された画像に基づいて、高解像度3Dモデルを生成するために3Dモデルを更新してよい。1つの例として、低解像度3Dモデルと同様に、更新された高解像度3Dモデルは、スキャン計画の実行中に取得され、かつスキャン対象の表面を表す点の実際の場所に対して精度がより高い、画像センサ212、214、216、302、304、306の複数のものからの画像のTSDF融合などに基づいて決定された3D点群または3Dメッシュを含んでよい。場合によっては、更新された3Dモデルを決定するための範囲または他の距離情報の少なくとも一部は、動作計画プログラム1606によって生成される範囲および場所情報などに基づいて、自律プログラム1608から受信され得る。更新された高解像度3Dモデルは、最初のスキャンから決定された低解像度3Dモデルと比較すると解像度がより高い。さらに、いくつかの例において、更新された高解像度3Dモデル1635は、スキャン計画の実行中または実行後に、リモートコンピューティング装置またはコントローラ1612に送られてよい。例えば、3Dモデルは、UAV102が飛行中でありかつスキャン計画をトラバースしている際にリアルタイムで更新されてよい。
[00180]1636において、プロセッサ402は、3Dモデルの1つもしくは複数の更新、および/またはスキャン計画の実行中に障害物に遭遇することなどに基づいて、スキャン計画を更新するかどうかを決定してよい。そのような場合、プロセスは1328に戻って、更新されたスキャン計画を決定する。例えば、更新された3Dモデルにおいて新たなあるいは覆われていない点がある場合、スキャン計画はそれらの点を覆いかつスキャンするために更新されてよい。スキャン計画を新たな点に適応させるための例示のプロセスについて、図22に関して以下にさらに論じる。さらに、スキャン計画からの1つまたは複数の姿勢を取得することを妨げる障害物に遭遇する場合、スキャン計画は、障害物により覆われていないままである点に対する1つまたは複数の姿勢を決定するために更新されてよい。障害物に適応させるための例示のプロセスについて、図23に関して以下にさらに論じる。
[00181]図17は、いくつかの実装形態による、3Dモデルを生成するための例示の論理構成およびプロセス1700、ならびに更新されたスキャン計画を示す。この例では、スキャンプログラム408は、3Dモデル生成および更新プログラム1702、動的スキャン計画プログラム1704、および、高解像度3Dモデル生成プログラム1706を含んでよい。例えば、3Dモデル生成および更新プログラム1702は、UAV102が、画像センサ208、212,214、216、302、304、および306(図17に図示せず)によって取得されたスキャン対象の画像1708に基づいて3Dモデルを生成かつ更新するために飛行している間に、UAV102に搭載された3D再構成をリアルタイムで実行してよい。
[00182]さらに、動的スキャン計画プログラム1704は、3Dモデル生成および更新プログラム1702から受信した3Dモデル情報1710に基づいて、スキャン計画を生成または更新してよい。例えば、3Dモデル情報1710は、最初に、最初のスキャン計画を生成するための低解像度3Dモデル情報を含んでよく、後に、更新された3Dモデル情報に基づいて更新されたスキャン計画を生成するための更新された3Dモデル情報を含んでよい。さらに、高解像度3Dモデル生成プログラム1706は、1712において示されるように、例えば、高解像度3Dモデルを出力するためのフォトグレードレベルで、UAV102に搭載された追加の3D再構成を行うために実行されてよい。場合によっては、図17に関して論じられるプロセスは、図15および図16に関して上に論じられるプロセスの一部分として実行されてよい。
[00183]1つの例として、自律プログラム1608は、UAV102用の自律ナビゲーションを可能にするために使用され、かつ本明細書における3Dモデルを生成または更新するために3D再構成中にも使用されてよい、堅牢な高速ローカリゼーションおよび深度/距離範囲推定を提供し得る。よって、1714において示されるように、自律プログラム1608は、ローカリゼーション情報、範囲情報、視覚慣性オドメトリ(VIO)情報、および/またはジンバル推定情報をスキャンプログラム408に提供してよい。3Dモデル生成および更新プログラム1702は、基本的にドリフトのないローカリゼーションによってスキャン対象の計量的に一貫性のある幾何学的形状の3Dモデルを構築するために3D再構成を実行する際に使用するために自律プログラム1608から受信したローカリゼーションおよび範囲情報を用いてよい。3Dモデル生成および更新プログラム1702によって生成された3Dモデルは、高解像度3Dモデル生成プログラム1706によって精度および詳細の改善のためにさらに微調整されてよい。いくつかの例において、高解像度3Dモデル生成プログラム1706は、スキャン計画の少なくとも一部の完了後に実行されてよいが、他の例では、高解像度3Dモデル生成プログラム1706は、スキャン計画の少なくとも一部を完了後にUAV102がスキャン対象をスキャンしているあるいは依然飛行している間にリアルタイムで実行されてもよく、このタイミングは、UAV102の搭載処理機能に部分的に依存し得る。さらに、他の例では、UAV102は、着陸後に高解像度3Dモデル生成プログラム1706の少なくとも一部を実行してよい。さらに別の代替策として、最後に、高解像度3Dモデル生成プログラム1706の動作の少なくとも一部は、UAV102と通信するおよび/またはUAV102からデータを受信することができる(図17には全て示されていない)コントローラ104、モバイル装置632、または、別のリモートコンピューティング装置などのリモートコンピューティング装置上で実行されてよい。
[00184]受信したVIO情報は、車両運動の飛行中推定、画像センサ情報、およびIMUバイアスを含み得る。例えば、いくつかの例は、2つの画像フレーム間の点を追跡するために使用されてよい特徴追跡を含んでよい。場合によっては、VIO情報は、IMUベース位置情報および/またはGNSSベース位置情報と相関関係があってよい。いくつかの例において、自律プログラム1608は、動作計画プログラム1606、および/または追跡/ナビゲーションプログラム1607を含んでよいが、そうでない場合、自律プログラムは、動作計画プログラム1606および/または追跡/ナビゲーションプログラム1607からデータを受信してよい。
[00185]さらに、ジンバル推定情報は、ジンバル画像センサ(例えば、図2および図3に関して論じられた例示のUAV102における画像センサ208)の回転または他の位置を示してよい。例えば、ジンバル画像センサ208の回転は、画像センサ208からの画像の画素を、他の画像センサ212、214、216、302、304、および306の1つまたは複数からの画像の画素と相関させることによって、UAV本体に対して推定され得る。さらに、ピッチおよびロールに関する初期推定は、IMU重力ベクトルに基づいて決定され得る。さらに、ヨーは、IMUに含まれ得る、またはIMUと別個であり得るジャイロスコープからの入力に基づいて決定され得る。
[00186]いくつかの例において、自律プログラム1608は、UAV102からスキャン対象の表面までの範囲を決定してよい。例えば、自律プログラム1608は、UAV102の既知の場所に対する3D空間におけるそれらの点の場所を決定するために、UAV102からスキャン対象の表面上の1つまたは複数の点までの範囲(距離)を予測するように、選択された画像センサ212、214、216、302、304、および306から得られた画像を使用するために、画像センサ212、214、216、302、304、および306のステレオ対を動的に選択してよい。場合によっては、自律プログラム1608は、いくつかの例において特徴照合を含み得る、UAV102の場所に対するスキャン対象の表面の点の範囲を決定するためのオプティカルフロー技法を用いてよい。例えば、ドリフトを回避するためのUAV102の精確なローカリゼーションは、3D空間における3Dモデルの表面の識別された点の決定された場所に関して一貫性のある精確な3Dモデルを実現するのに役立ち得る。
[00187]さらに、自律プログラム1608は、スキャン計画における姿勢間の移動などのために、UAV102用に最適化された動作計画を決定するために、図16に関して上に論じられる動作計画プログラム1606を呼び出してあるいはこれと対話してよい。例えば、動作計画プログラム1606は、センサから受信した情報、およびスキャン計画の姿勢に基づいて決定される姿勢の目的地に基づいて、車両力学、障害物回避、およびUAV102のための飛行軌道を生じさせるための平滑性を均衡化する、UAV102のための飛行経路を決定するためのイベントドリブン予測制御を実行してよい。
[00188]1つの例として、スキャンプログラム408は、1716において示されるように、スキャン対象インジケーションおよびスキャンパラメータを受信することを含み得るスキャン対象情報を受信してよい。受信したスキャン対象情報に基づいて、動的スキャン計画プログラム1704は、示されるスキャン対象の最初のラフスキャンを行うための1つまたは複数の最初の姿勢を決定するために、上述される技法を使用してよい。動的スキャン計画プログラム1704は、UAV102から、スキャン対象の表面上の点までの範囲を決定するために、少なくとも部分的に、UAV102に、画像を取得するための1つまたは複数の姿勢の場所にナビゲートさせるように、姿勢情報1720としての1つまたは複数の姿勢を自律プログラム1608に提供し得る。決定されたローカリゼーション情報および範囲決定は、1714において示されるように、3Dモデル生成および更新プログラム1702に提供されてよい。
[00189]3Dモデル生成および更新プログラム1702は、1714において自律プログラム1608から受信した範囲決定(例えば、「深度マップ」ともいう)を、TSDFに基づいて陰関数曲面を表すボリュームグリッドに集約するようにプロセッサ402を構成するために実行され得る。1つの例として、ステレオ対画像(または、そうでない場合、連続したモノ画像)からの深度マップは、TSDFボリュームを使用して3Dモデルに融合されてよい。例えば、深度マップの融合は、3D空間における既知の場所を有する3D点群を決定するために、範囲測定値のそれぞれのセットについて計算された個々のTSDFの加重平均を使用して行われ得る。上に論じられるように、例えば、図15および図16に関して、3Dモデルは、スキャン計画が実行されると反復して更新されてよく、スキャン計画は、3Dモデルが更新されると反復して更新されてよい。TSDF融合を実行する追加の詳細は、当技術分野では知られており、本明細書において詳細に説明されない。1718において示されるように、3Dモデル生成および更新プログラム1702は、低解像度3Dモデルおよび後の更新をリモートコンピューティング装置1718に出力してよい。例えば、コントローラおよび/またはモバイル装置632は、ディスプレイ上のユーザインターフェースにおいて3Dモデルの画像を提示し得る。
[00190]3Dモデル生成および更新プログラム1702は、第1の画像における照合画素が第2の画像に相対的であるものとする場所を決定するために一対のステレオ画像において取得された照合特徴の間の差異または類似性を決定するためにさらに実行され得る。この決定に基づいて、3Dモデル生成および更新プログラム1702は、3Dモデルにおいて含めるように、および、3Dモデルをより全体的に一定になるように、画像における特徴の深度推定を改善するために、2つの画像における照合画素または対応する特徴が互いに相対的なかつ3Dモデルに相対的な場所の場所推定を調節してよい。画像を比較することに基づいて3Dモデル上の点に関する場所情報を調節することによって、3Dモデル生成および更新プログラム1702は、リアルタイムのドリフトのないローカリゼーションを可能にする。
[00191]3Dモデル生成および更新プログラム1702は、精度の改善を実現するようにスキャン対象構造の数式からアセンブリを生成するために、3Dモデル上の複数の特徴の場所を連続して最適化するように複数の照合画像をまとめて比較することに基づいて、スキャン対象に対して決定される点の3D座標を数学的に最適化するためにさらに実行されてよい。よって、複数の画像における特徴に対応する3Dモデルにおける点の場所は、3Dモデルの全体的な一貫性を改善するために複数の画像間の差異に基づいて互いに対して調節されてよい。したがって、3Dモデル生成および更新プログラム1702は、起こり得るドリフトまたは他の矛盾を調節するために3Dモデルの点の場所を微調整するようにTSDFと比較および最適化結果とを組み合わせる、ドリフトのない姿勢および一貫したグローバルマップを計算してよい。
[00192]飛行中、3Dモデル生成および更新プログラム1702は、スキャン対象のTSDF3Dモデルを構成してよい。TSDFのエクステントおよび解像度は、3Dモデル生成および更新プログラム1702の実行開始時に固定されてよく、UAV102がスキャン対象の追加のスキャンを実行する際に、TSDFは、その時に最も最適化された姿勢などを使用することによって、自律プログラム1608から受信した範囲データを使用して更新されてよい。
[00193]3Dモデル生成および更新プログラム1702は、上に論じられる、リアルタイムの3D再構成および姿勢調節分析に基づくスキャン計画に従って、UAVによって使用される姿勢を微調整するためにさらなる反復を実行してよい。例えば、3Dモデル生成および更新プログラム1702は、自律プログラム1608によって処理される新たに取得された画像に基づいて追加のTSDF融合を実行するための姿勢の微調整を決定してよい。
[00194]動的スキャン計画プログラム1704は、取得解像度、距離、角度、重複などの指定されたパラメータに対して、3Dモデルに対応する指定されたスキャン対象の表面の画像を取得するための複数の姿勢を含むスキャン計画を作成または更新するために、3Dモデル生成および更新プログラム1702によって作成された3Dモデルを使用するようにプロセッサ402を構成するために実行されてよい。動的スキャン計画プログラム1704は、3Dモデル生成および更新プログラム1702から3Dモデル情報1710として更新された3Dモデル(または少なくとも3Dモデル更新情報)を受信してよく、かつスキャン対象の広範囲にわたるスキャン中に3Dモデルの精度の改善あるいは更新が行われる際にスキャン計画を反復して微調整してよい。
[00195]反復して更新されたスキャン計画に基づいて、UAV102は、典型的な人間パイロットの信頼性に勝るスキャン対象の被覆を実現し得る。スキャン計画(例えば、少なくとも、スキャン計画または更新されたスキャン計画に関する姿勢情報1720)は、現在のスキャン計画に対応する姿勢情報1720に基づいて指定された姿勢を取るようにUAV102の動作計画および制御を可能にするために、自律プログラム1608および/または車両制御プログラム406の他のプログラムに提供され得る。
[00196]いくつかの例では、画像比較から決定された差異に基づいて、ナビゲーション座標フレーム(例えば、VIOが中にあるフレーム)と、真のナビゲーションフレームの現在の最良の推定との間の差異を表す姿勢変換が生成され得る。この技法は、VIO測定におけるドリフトを考慮する場合があり、かつ姿勢変換に基づいてUAV102がVIO姿勢を補正できるようにする。したがって、これらの技法を使用することによって、3Dモデル生成および更新プログラム1702は、UAVローカリゼーションで生じ得るドリフトの影響を最小化することができ、それによって、3D空間における3Dモデルの点の場所の精度が高まる。さらに、3Dモデル生成および更新プログラム1702は新たな画像が受信されると3Dモデルを継続的に更新し、スキャン計画はまた、3Dモデルの更新に従って更新されるため、UAV102は、スキャン対象の片側のみが、受信したスキャン対象インジケーション情報において示されている場合があっても、スキャン対象全体(例えば、全ての露出した側面)を自律的にスキャンしてよい。
[00197]さらに、同じUAVの複数の飛行間の、または同じスキャン対象の異なる部分をスキャンする2つの異なるUAVの飛行間のリローカリゼーションについて、スキャンプログラム408は、画像対の間の相対姿勢推定に関する特徴を照合し得る。例えば、スキャンプログラム408は、UAV102がスキャン対象および3Dモデルに対するこの現在の場所を決定できるようにするために2つ以上の別個の画像上の特徴を照合してよい。1つの例として、UAV102がこの電池を充電するために図5に関して上に論じられるドッキングステーション106に戻ると仮定する。充電を完了すると、UAV102(または別のUAV102)は、離陸し、かつUAV102が中止した姿勢に戻ろうと試みることができる。UAV102は、スキャン計画を再開する前に撮られた1つまたは複数の現在の画像を、UAV102がドッキングステーションに戻るためにスキャン計画を休止する以前の姿勢で撮られた1つまたは複数の以前の画像と比較してよい。現在の画像を以前の画像と比較することに基づいて、UAV102は、スキャン計画を再開するために初期位置合わせを決定するための画像対の間の相対姿勢推定を決定してよい。
[00198]さらに、スキャンプログラム408は、姿勢情報および取得された画像1722を高解像度3Dモデル生成プログラム1706に提供してよい。高解像度3Dモデル生成プログラム1706は、3Dモデル生成および更新プログラム1702と同様に、しかしながら、受信した画像全てを、またはよりインテリジェントにおよび精度を最大限にするために画像間の高解像度の対応関係を使用して同時確率を考慮する多数の受信した画像を処理するバッチ式に、カメラ姿勢およびまばらな点を最適化するようにプロセッサ402を構成するために実行されてよい。
[00199]高解像度3Dモデル生成プログラム1706は、例えば、高解像度画像センサ208によって取得されたおよびより詳細な3D再構成を実行する、高解像度画像からの深度画像を計算するために実行されてよい。いくつかの例では、高解像度3Dモデル生成プログラム1706は飛行中に実行されてよく、これによって、表面および計画取得経路をマッピングする能力が与えられる。例えば、高解像度3Dモデル生成プログラム1706は、入力として2つの画像を受信してよく、対応関係、およびこれらの対応関係の信頼度を計算してよい。それぞれの対応関係は、元の画像までたどることができ、これらの対応関係は、範囲値を三角測量するために3Dに投影されてよい。それぞれのパスのために、高解像度3Dモデル生成プログラム1706は、対応関係を元の画像までたどり、かつ画像における特徴までの範囲を得るために三角測量してよい。
[00200]高解像度3Dモデル生成プログラム1706は、最後に最適化された姿勢、較正、および高解像度範囲画像を採用してよく、かつこれらを点群またはTSDFに融合してよい。例えば、高解像度3Dモデル生成プログラム1706は、三角測量を行ってよい、または高解像度範囲画像から高解像度メッシュ3Dモデルを構成するためにマーチングキューブ法を使用してよい。TSDFがこのプロセスに用いられる時、TSDFは、上に論じられた3Dモデル生成および更新プログラム1702によって用いられたものとは異なる高解像度関数であり得る。したがって、高解像度3Dモデル生成プログラム1706は、スキャン対象の表面幾何構造を表す複数の多角形を含む高解像度メッシュ3Dモデルを生成してよい。代替的には、他の例において、点群3Dモデルが生成され得る。
[00201]高解像度3Dモデル生成プログラム1706は、スキャンされた画像をUVテクスチャなどのテクスチャとして、高解像度3Dモデル生成プログラム1706によって生成された3Dメッシュモデルに適用する視点を選択するためにさらに実行されてよい。代替的には、点群モデルが生成される場合、スキャンされた画像は点群をテクスチャ処理するために使用されてよい。例えば、UVマッピングは、各々のU座標およびV座標などに基づいて、取得された画像を3Dモデル上のこれらの正しい場所と照合するためのテクスチャマッピングのために、取得された高解像度画像を高解像度3Dモデルの表面上に投影して、スキャン対象の精確な高解像度のテクスチャ処理された3Dモデルを提供するために使用され得る。
[00202]スキャン対象のメッシュ3Dモデルが生成された場合、高解像度3Dモデル生成プログラム1706は、メッシュから多角形を選択し、選択された多角形に適用するためのテクスチャを決定するために選択された多角形の場所に適合する1つまたは複数の取得された画像を決定するために実行されてよく、かつ、決定されたテクスチャを選択された多角形の面に適用してよい。これらのステップは、メッシュ3Dモデルにおけるそれぞれの多角形に対して繰り返されてよい。高解像度3Dモデル生成プログラム1706はまた、メッシュ3Dモデルをより一貫性あるものにするために、複数の多角形の間の画像コンテンツおよび/またはテクスチャならびに視点を整列させるためにメッシュ頂点に対する微調整段階を実行してよい。高解像度3Dモデル生成プログラム1706は、1712において示されるように、いくつかの例において完全にテクスチャ処理され、かつさまざまな角度からスキャン対象を観測すること、損傷、欠陥、摩耗、腐食などに関するスキャン対象の詳細な検査を実行することなどのさまざまな応用に使用可能であり得る高解像度3Dモデルを出力してよい。
[00203]図18は、いくつかの実装形態によるスキャン対象を指定するための例示のプロセス1800を示すフロー図である。いくつかの例では、プロセス1800の少なくとも一部は、例えば、図6~図12に関して上に論じられるように、コントローラ104および/またはモバイル装置632などのリモートコンピューティング装置によって実行されてよい。
[00204]1802において、リモートコンピューティング装置は、UAV102によって取得された意図したスキャン対象の画像を含むユーザインターフェースを提示してよい。1つの例として、ユーザは、所望のスキャン対象を、UAV102の少なくとも1つの画像センサによって観測することができる場所および向きにUAV102を手動でナビゲートしてよい。したがって、スキャン対象の画像は、ユーザインターフェース602において提示されてよく、ユーザインターフェース602は、図6~図10に関して上に論じられる技法のいずれかを使用してスキャン対象の選択を可能にし得る。
[00205]1804において、リモートコンピューティング装置は、ユーザインターフェース602を介して、ユーザインターフェース602に提示される画像に含まれるスキャン対象を選択するために1つまたは複数のユーザ入力を受信し得る。1つの例として、ユーザは、所望のスキャン対象の周りの3Dボリュームを指定するために境界ボリュームを操作してよい。別の例として、ユーザは、スキャン対象の一部をタップしてよく、かつスキャン対象の形状または縁部などを認識することに基づいて、スキャン対象を選択するための認識を行うためにリモートコンピューティング装置上で実行しているアプリケーションに頼る場合がある。さらに別の例として、ユーザは、ユーザインターフェースにおいてスキャン対象を選択するためのペイント機能を使用してよい。さらに別の例として、ユーザは、画像におけるスキャン対象の1つまたは複数の部分を選択してよく、リモートコンピューティング装置は、送電塔、ジェット旅客機、または携帯電話基地局など、高い規則性を有する特有の構造であるとしてスキャン対象の認識を行ってよく、かつこの認識に基づいてスキャン対象の残りの部分を選択してよい。
[00206]1806において、リモートコンピューティング装置は、ユーザインターフェース602の画像において選択されたスキャン対象のインジケーション、およびUAV102が示されたスキャン対象のスキャンを実行するというインジケーションをUAV102に送ってよい。
[00207]1808において、リモートコンピューティング装置は、UAV102からスキャン対象の低解像度3Dモデルを受信してよく、かつリモートコンピューティング装置のディスプレイ上のユーザインターフェースにおいて低解像度3Dモデルを提示してよい。例えば、ユーザは、ユーザがスキャンさせることを望んでいるスキャン対象の部分をUAV102がスキャンしていることを確実にするために、スキャン対象の低解像度3Dモデルを精査可能にしてよい。
[00208]1810において、リモートコンピューティング装置は、UAVからのスキャン計画、および/またはUAV102が示されたスキャン対象のスキャンを開始したというインジケーションを受信してよい。例えば、UAV102は、スキャン対象の低解像度3Dモデルを生成することなどのために、スキャン対象の最初のスキャンを取得するための1つまたは複数の姿勢に自律的にナビゲートしてよい。ユーザは、スキャン対象の最初のスキャン中にUAV100上の画像センサの1つまたは複数から映像を受信することに基づいて、UAVの視点を観測することが可能であってよい。
[00209]1812において、リモートコンピューティング装置は、対象のスキャン中に取得された姿勢の姿勢情報をUAV102から受信してよい。
[00210]1814において、受信した姿勢情報に基づいて、UAV102によって既に取得されている姿勢に対応する3Dモデルの一部を、ユーザインターフェースに提示された3Dモデルの他の部分と視覚的に区別し得る。例えば、スキャン対象の所望のエリアの全てがUAV102によってスキャンされることを確実にするためにスキャンが実行される際に、ユーザはUAV102によって実行されるスキャンを監視することができてよい。取得されたエリアには、強調表示、異なる色でのペイント、輪郭を描くこと、あるいは、まだ取得されていないエリアとの視覚的な区別が行われてよい。
[00211]1816において、リモートコンピューティング装置は、更新された3Dモデルおよび/または更新されたスキャン計画を受信してよい。先に述べたように、場合によっては、UAVは、スキャン中に得られた追加の情報に基づいて3Dモデルを更新してよく、さらに、3Dモデルの更新に基づいてスキャン計画を更新してよい。いくつかの例において、リモートコンピューティング装置は、ユーザインターフェースにおいて更新された3Dモデルをおよびスキャン計画を提示してよい。
[00212]図19は、いくつかの実装形態によるスキャン対象の低解像度3Dモデルを生成するための例示のプロセス1900を示すフロー図である。いくつかの例において、プロセス1900の少なくとも一部は、スキャンプログラム408および車両制御プログラム406を実行することなどによって、UAV102によって実行されてよい。代替的には、いくつかの例において、プロセス1900の少なくとも一部は、コントローラ104および/またはモバイル装置632などのUAV102から遠く離れたコンピューティング装置によって実行されてよい。
[00213]1902において、UAV102は、スキャン対象のインジケーションを受信してよい。例えば、上に論じられるように、UAV102は、コントローラ104および/もしくはモバイル装置632などのリモートコンピューティング装置、または、UAV102と通信することができる任意の他のコンピューティング装置からスキャン対象のインジケーションを受信してよい。
[00214]1904において、UAV102は、示されたスキャン対象に対応する表面の画像を取得するための1つまたは複数の姿勢を決定してよい。例えば、図7などに関して論じられるように、境界ボリュームがスキャン対象を指定するために使用される場合、UAV102は、境界ボリュームを、境界ボリューム内の任意の表面の画像を取得するための現実世界の場所に相関させることに基づいて、示されたスキャン対象の画像を取得するための1つまたは複数の場所および視界を決定してよい。
[00215]1906において、UAV102は、それぞれの姿勢で複数の画像を取得するための決定された1つまたは複数の姿勢へと飛行するようにUAVの推進メカニズムを制御してよい。例えば、UAVは、スキャン対象の表面上の点までの距離を決定するために画像センサが立体視レンジファインダとして使用可能であるように、2つ以上の画像センサと同時に画像を取得してよい。
[00216]1908において、UAV102は、関連した画像における点間の視差を決定することに基づいて、UAVから画像において取得された表面までの距離を決定してよい。例えば、UAV102は、スキャン対象の表面上のそれぞれの点のそれぞれの距離を決定するために複数の画像の多視点ステレオ分析を用いてよい。
[00217]1910において、UAV102は、画像において取得された表面上の点までの決定された距離に基づいて、スキャン対象サービスの低解像度3Dモデルを生成してよい。例えば、低解像度3Dモデルは、3D空間における場所が、UAV102上の複数の画像センサを使用して取得された点の2つ以上の画像の間の視差またはその他の差異を決定することなどの画像分析に基づいて決定されてよい複数の点を含んでよい。1つの例として、低解像度3Dモデルは、切り捨て符号付き距離関数などの応用に部分的に基づいて、決定されてよい。
[00218]1912において、UAV102は、スキャン対象の低解像度3Dモデルの点の少なくともいくつかに対する垂線を決定してよい。1つの例として、垂線は、各々の点が位置するスキャナ対象の表面に全般的に垂直である低解像度3Dモデルの点から外方に延在する仮想線であってよい。
[00219]1914において、UAV102は、低解像度3Dモデルをリモートコンピューティング装置に送ってよい。例えば、低解像度3Dモデルは、コントローラ104、モバイル装置632、または、UAV102と通信し得るUAV102から遠く離れた他のコンピューティング装置に送られてよい。
[00220]図20は、いくつかの実装形態によるスキャン対象の低解像度3Dモデルを生成するための例示のプロセス2000を示すフロー図である。いくつかの例において、プロセス2000の少なくとも一部は、スキャンプログラム408および車両制御プログラム406を実行することなどによって、UAV102によって実行されてよい。代替的には、いくつかの例において、プロセス2000の少なくとも一部は、コントローラ104および/またはモバイル装置632などのUAV102から遠く離れたコンピューティング装置によって実行されてよい。
[00221]2002において、UAV102はスキャン対象のためのスキャン計画を決定するために低解像度3Dモデルにアクセスしてよい。1つの例として、UAV102は、図19に関して上に論じられるように、低解像度3Dモデルを決定していてよい。他の例では、UAV102は、リモートコンピューティング装置などなどから低解像度3Dモデルを受信してよい。
[00222]2004において、UAV102は、低解像度3Dモデルの点集合を、覆われている点の部分集合および覆われていない点の部分集合に分割してよい。最初に、低解像度3Dモデルの点全てが覆われていない場合がある。
[00223]2006において、UAV102は、新たな姿勢を決定するために覆われていない点の部分集合から次の中心点を選択してよい。例えば、UAV102は、先に決定された姿勢に対する先に選択された中心点からの中心点までの距離に基づいて、さらに、中心点および周辺エリアの画像を取得するために使用されることになる画像センサの視野によって覆われることが予測されるエリア、画像が取得される時に点が位置するスキャン対象の表面からUAV102までの予想される距離、および、スキャン対象の取得された連続画像間の所望の重複量に基づいて、連続姿勢を決定するために覆われていない点集合から次の点を選択してよい。例えば、中心点は、それぞれの姿勢に対して取得された画像の視野の略中心にあることが予想され得る。
[00224]2008において、UAV102は、選択された中心点、および選択された中心点に対するそれぞれの垂線に基づいて新たな姿勢を決定してよい。
[00225]2010において、UAV102は、新たな姿勢の視野によって覆われることになる、覆われていない点集合の点を決定してよい。
[00226]2012において、UAV102は、新たな姿勢の被覆に基づいて、覆われている点集合および覆われていない点集合を更新してよい。
[00227]2014において、UAV102は、低解像度3Dモデルにおいて覆われていない点のいずれかが残っているかどうかを決定してよい。そうである場合、プロセスは2006に戻って次の中心点を選択する。そうでない場合、プロセスは2016に進む。
[00228]2016において、覆われていない点が残っていない時、UAV102は、スキャン計画の姿勢をトラバースする順序を決定してよい。例えば、芝刈り機トラバース経路を使用すること、巡回セールスマンアルゴリズムを適用すること、または螺旋トラバース経路を適用することなど、スキャン計画の姿勢をトラバースするためのさまざまな異なる方策が使用されてよい。
[00229]図21は、いくつかの実装形態による、低解像度3Dモデルの点が姿勢によって覆われているかどうかを決定するための例示のプロセス2100を示すフロー図である。いくつかの例において、プロセス2100の少なくとも一部は、スキャンプログラム408を実行することなどによって、UAV102によって実行されてよい。代替的には、いくつかの例において、プロセス2100の少なくとも一部は、コントローラ104および/またはモバイル装置632などのUAV102から遠く離れたコンピューティング装置によって実行されてよい。いくつかの例において、プロセス2100は、図20のプロセス2000のブロック2010に対応し得る。
[00230]2102において、UAV102は、姿勢の中心点から評価中の点までの距離を決定してよい。
[00231]2104において、UAV102は、画像が取得されることになる予想される距離で姿勢に使用されることになる画像センサの視野のサイズを決定してよい。
[00232]2106において、UAV102は、姿勢に使用されることになる予想される距離で画像センサの視野の決定されたサイズ内に評価中の点はあるかどうかを決定してよい。そうである場合、プロセスは2108に進む。そうでない場合、プロセスは2114に進む。
[00233]2108において、UAV102は、評価中の点の垂線と姿勢に対する中心点の垂線との間の角度が閾値角度を上回るかどうかを決定してよい。例えば、2つの垂線間の角度が45度、60度、または何らかの他の閾値量を上回る場合、評価中の点が画像センサの視野の範囲内にあっても、評価中の点が適当に覆われていない場合がある。角度が閾値を上回る場合、プロセスは2114に進む。そうでない場合、プロセスは2110に進む。
[00234]2110において、UAV102は、評価中の点が姿勢に対する画像センサの予想される場所に対して遮蔽されているかどうかを決定してよい。1つの例として、遮蔽についてのチェックは、光線試験などを使用して行われてよい。評価中の点が遮蔽されている場合、点は覆われておらず、プロセスは2114に進む。評価中の点が遮蔽されていない場合、プロセスは2112に進む。
[00235]2112において、UAV102は、ブロック2102~2110の結果に基づいて、点が覆われていると決定し得る。
[00236]2114において、UAV102は、ブロック2102~2110の結果に基づいて、点は覆われていないと決定し得る。
[00237]図22は、いくつかの実装形態による、低解像度3Dモデルの更新に基づいてスキャン計画を動的に更新するための例示のプロセス2200を示すフロー図である。いくつかの例において、プロセス2200の少なくとも一部は、スキャンプログラム408を実行することなどによって、UAV102によって実行されてよい。代替的には、いくつかの例において、プロセス2200の少なくとも一部は、コントローラ104および/またはモバイル装置632などのUAV102から遠く離れたコンピューティング装置によって実行されてよい。
[00238]2202において、スキャン計画の実行中に、UAV102は、スキャン対象の低解像度3Dモデルの更新を示す画像またはセンサデータを受信してよい。
[00239]2204において、UAV102は、受信したデータに基づいて低解像度3Dモデルを更新してよい。
[00240]2206において、UAV102は、既存のスキャン計画に対して既に実行されている姿勢、および、既に確立されているが既存のスキャン計画に対してまだ実行されていない姿勢のFOVに基づいて、更新された低解像度3Dモデルの点集合を、覆われている点の部分集合および覆われていない点の部分集合に分割してよい。
[00241]2208において、UAV102は、既存のスキャン計画に対して覆われていない点があるかどうかを決定してよい。そうである場合、プロセスは2212に進む。そうでない場合、プロセスは2210に進む。
[00242]2210において、UAV102は、既存のスキャン計画の実行を進めてよい。
[00243]2212において、UAV102は、覆われていない点の部分集合を覆うための1つまたは複数の新たな姿勢を決定することに基づいて、更新されるスキャン計画を決定してよい。
[00244]2214において、UAV102は、先のスキャン計画の代わりに、更新されたスキャン計画を実行してよい。
[00245]図23は、いくつかの実装形態による、スキャン計画を障害物に動的に適応させるための例示のプロセス2300を示すフロー図である。いくつかの例では、プロセス2300の少なくとも一部は、スキャンプログラム408および車両制御プログラム406を実行することなどによって、UAV102によって実行されてよい。代替的には、いくつかの例において、プロセス2300の少なくとも一部は、コントローラ104および/またはモバイル装置632などのUAV102から遠く離れたコンピューティング装置によって実行されてよい。
[00246]2302において、スキャン計画の実行中に、UAV102は、障害物に対するスキャン計画の選択された次の姿勢をチェックしてよい。
[00247]2304において、障害物が検出される場合、プロセスは2310に進む。そうでない場合、プロセスは2306に進む。
[00248]2306において、UAV102を選択された姿勢にナビゲートしてよい。
[00249]2308において、UAV102は選択された姿勢で画像取得を実行してよい。場合によっては、画像取得は、姿勢に対する目標点の垂線に沿って直角に実行されてよい。他の例では、上述されるように、画像取得は直角の画像取得に限定されない。
[00250]2310において、選択された姿勢に対する障害物が検出された時、UAV102は、選択された姿勢を置き換えるためのバックアップ姿勢を決定してよい。
[00251]2312において、UAV102は、障害物に対してバックアップ姿勢をチェックしてよい。
[00252]2314において、障害物が検出される場合、プロセスは2320に進む。そうでない場合、プロセスは2316に進む。
[00253]2316において、UAV102をバックアップ姿勢にナビゲートしてよい。
[00254]2318において、UAV102はバックアップ姿勢で画像取得を実行してよい。例えば、UAV102は、距離パラメータ(GSD)において指定されるよりも所望の表面に対して遠いまたは近いなど、目標点の垂線に沿って直角に画像を取得しようと試みる場合がある。さらに、他の例において、バックアップ姿勢は直角でなくてよい。
[00255]2320において、UAV102は、別のバックアップ姿勢があるかどうかを決定してよい。そうである場合、プロセスは2310に進む。そうでない場合、プロセスは2322に進む。
[00256]2322において、UAV102は、障害物によって認められるような選択された姿勢に対する斜め画像取得を実行してよい。例えば、スキャンパラメータは、通常画像取得に対する直角から最大限離れた角度を含んでいてよい。しかしながら、障害物がある場合、パラメータは無視される場合があり、遮られた表面の取得は、目標点を取得することができるバックアップ姿勢がない場合、最大角度パラメータを超える斜角で実行されてよい。
[00257]プロセスは、スキャン計画における次の姿勢に対する障害物があるかどうかを決定するために2302に戻ってよい。例えば、選択された姿勢に対応するスキャンが、元の姿勢もしくはバックアップ姿勢から、または別の位置(例えば、現在の位置)から斜めに実行されると、UAV102は、処理のために次の姿勢でスキャン計画を続行してよい。
[00258]本明細書に説明される例示のプロセスは、論述の目的で提供されるプロセスの単なる例である。本明細書の開示に照らすと多数の他の変形が当業者には明らかとなろう。さらに、本明細書の開示は、プロセスを実行するための適したフレームワーク、アーキテクチャ、および環境のいくつかの例を示しているが、本明細書における実装形態は、示されかつ論じられる特定の例に限定されない。さらに、本開示は、記載されかつ図面に示されるようなさまざまな例示の実装形態を提供する。しかしながら、本開示は、本明細書に説明されかつ示される実装形態に限定されず、当業者に知られているように、または当業者に知られることになるように、他の実装形態に拡張可能である。
[00259]本明細書において説明されるさまざまな命令、プロセス、および技法は、コンピュータ可読媒体に記憶され、かつ本明細書におけるプロセッサによって実行されるコンピュータプログラムおよびアプリケーションなどのコンピュータ実行可能命令の一般的な文脈において考慮され得る。一般に、プログラムおよびアプリケーションという用語は、区別なく使用されてよく、特定のタスクを実行するまたは特定のデータ型を実装するための命令、ルーチン、モジュール、オブジェクト、コンポーネント、データ構造、実行可能コードなどを含み得る。これらのプログラムおよびアプリケーションなどは、ネイティブコードとして実行されてよい、または仮想マシンもしくは他のジャストインタイムコンパイル実行環境などにダウンロードされかつ実行されてよい。典型的には、プログラムおよびアプリケーションの機能性は、さまざまな実装形態において望ましいように組み合わせまたは分散されてよい。これらのプログラム、アプリケーション、および技法の実装形態は、コンピュータ記憶媒体に記憶されてよい、または何らかの形態の通信媒体にわたって送信されてよい。
[00260]主題について、構造的特徴および/または方法論的動作に特有の文言で記載しているが、添付の特許請求の範囲に規定された主題が必ずしも記載された特定の特徴または動作に限定されないことは理解されたい。むしろ、特定の特徴および動作は、特許請求の範囲を実装する例示的な形態として開示されている。