(57)【要約】【課題】飛行体を適切に制御すること。【解決手段】一実施形態に係るコンピュータシステムは、少なくとも一つのプロセッサを備え、少なくとも一つのプロセッサが、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いてウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御する。【選択図】図５
2020086802.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのプロセッサを備え、
前記少なくとも一つのプロセッサが、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いて前記ウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御する、
コンピュータシステム。
【請求項２】
前記少なくとも一つのプロセッサが、前記飛行体の位置と前記ベクトルとに基づいて前記飛行体を制御する、
請求項１に記載のコンピュータシステム。
【請求項３】
前記情報点は複数存在し、
前記少なくとも一つのプロセッサが、
前記複数の情報点から、前記飛行体の位置に応じた情報点を選択し、
前記選択された情報点の前記ベクトルに基づいて前記飛行体を制御する、
請求項２に記載のコンピュータシステム。
【請求項４】
前記選択された一つの情報点に複数の前記ベクトルが対応し、
前記少なくとも一つのプロセッサが、
前記選択された一つの情報点に対応する前記複数のベクトルから、前記飛行体の位置に応じたベクトルを選択し、
前記選択されたベクトルに基づいて前記飛行体を制御する、
請求項３に記載のコンピュータシステム。
【請求項５】
前記少なくとも一つのプロセッサが、前記飛行体の位置と前記選択されたベクトルの大きさとに基づいて前記飛行体を制御する、
請求項４に記載のコンピュータシステム。
【請求項６】
前記制御領域の少なくとも一部が複数の層を含み、
前記選択された一つの情報点に対応する前記複数のベクトルを用いて前記複数の層が表現され、
前記少なくとも一つのプロセッサが、前記複数の層のうち、前記飛行体の位置に対応する少なくとも一つの層に基づいて前記飛行体を制御する、
請求項４または５に記載のコンピュータシステム。
【請求項７】
少なくとも一つのプロセッサを備えるコンピュータシステムにより実行される、飛行体の制御方法であって、
ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いて前記ウェイポイント間の制御領域を表現する領域データに基づいて前記飛行体を制御するステップ
を含む飛行体の制御方法。
【請求項８】
ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いて前記ウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御するステップをコンピュータに実行させるプログラム。
【請求項９】
ウェイポイント間に設定された少なくとも一つの情報点のそれぞれを示す情報点情報と、
前記少なくとも一つの情報点のそれぞれについて設定された、該情報点からの少なくとも一つのベクトルを示すベクトル情報であって、該少なくとも一つのベクトルにより前記ウェイポイント間の制御領域が表現される、該ベクトル情報と
を含み、
プロセッサに、
前記情報点情報を参照させることで、飛行体の位置に応じた前記情報点を選択させ、
前記選択された情報点に対応して設定された前記ベクトル情報を参照させることで、前記飛行体の位置に応じた前記ベクトルを選択させ、
前記選択されたベクトルに基づいて前記飛行体を制御させる、
データ構造。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の一側面はコンピュータシステム、制御方法、プログラム、および／またはデータ構造に関する。
【背景技術】
【０００２】
従来から、飛行体を制御するための技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−１７４４４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示の一側面は、飛行体を適切に制御することを目的とする。
【課題を解決するための手段】
【０００５】
本開示の一側面に係るコンピュータシステムは、少なくとも一つのプロセッサを備え、少なくとも一つのプロセッサが、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いてウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御する。
【図面の簡単な説明】
【０００６】
【図１】制御領域の一例を示す図である。
【図２】制御領域の別の例を示す図である。
【図３】制御領域のさらに別の例を示す図である。
【図４】制御領域のさらに別の例を示す図である。
【図５】実施形態に係る飛行制御システムの機能構成の一例を示す図である。
【図６】実施形態に係るサーバのハードウェア構成の一例を示す図である。
【図７】領域データの一例を示す図である。
【図８】領域データの別の例を示す図である。
【図９】領域データのさらに別の例を示す図である。
【図１０】実施形態に係る飛行制御システムの動作の一例を示すフローチャートである。
【図１１】飛行状況の判定の一例を示す図である。
【発明を実施するための形態】
【０００７】
以下、添付図面を参照しながら本開示の実施形態を詳細に説明する。なお、図面の説明において同一または同等の要素には同一の符号を付し、重複する説明を省略する。
【０００８】
［システムの概要］
実施形態に係る飛行制御システム１は飛行体を制御するコンピュータシステムである。飛行体とは、空中を移動することが可能な人工物のことをいう。飛行体の種類は限定されず、例えば有人航空機でもよいし無人航空機（ドローン）でもよい。飛行体の制御方法は限定されず、例えば、飛行制御システム１は飛行体の進行方向または速度を変更してもよいし、飛行体を離着陸させてもよいし、飛行体を空中で停止させてもよい。
【０００９】
飛行制御システム１はウェイポイント間の制御領域に基づいて飛行体を飛行させてもよい。ウェイポイント（ＷＰ）とは、飛行体の飛行経路を決定するために設定される位置のことをいい、飛行体が通過すべき位置（すなわち通過点）ともいうことができる。制御領域とは、飛行体の制御内容（モード）を決定するために設定される３次元空間の範囲のことをいう。制御領域の外縁（すなわち境界）は仮想的に設定される。制御領域は、隣り合う二つのウェイポイントの間に設定される。飛行経路は３以上のウェイポイントを含んで構成されてもよく、この場合には、二つのウェイポイント間の制御領域の組合せまたは連結により、飛行経路の全体に対応する制御領域が形成される。飛行体は制御領域に基づいて複数のウェイポイントを順次経由する。
【００１０】
図１は制御領域の一例を示す図であり、具体的には、飛行経路５０の少なくとも一部を構成する三つのウェイポイント５１，５２，５３に対応する二つの制御領域６１，６２を示す。制御領域６１はウェイポイント５１，５２間を結ぶように設定され、制御領域６２はウェイポイント５２，５３間を結ぶように設定される。飛行体３０は、ウェイポイント５１，５２，５３をこの順で通過したり、逆の順序でこれらのウェイポイントを通過したりすることができる。飛行体３０の特性、気象状況などの様々な要因で、飛行体３０にとっては、ウェイポイント間を結ぶ仮想線からずれることなく飛行することが難しい場合がある。常にその仮想線上を飛行するように飛行体３０を制御しようとすると、その制御のために飛行体３０の電力が著しく消費されてしまう。飛行体３０の電池を長持ちさせるためには、制御領域を設定することで飛行体３０にある程度の飛行の自由度を持たせた方が便宜である。図１の例では、制御領域６１内を飛行している飛行体３０１と制御領域６２内を飛行している飛行体３０２とについては、飛行を制御する必要が無いかまたはほとんど無い。これに対して、飛行体３０３は制御領域から外れているので、制御領域６１，６２のいずれかの中に入るように飛行方向が制御されてもよい。
【００１１】
個々の制御領域は、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いて表される。情報点とは、二つのウェイポイント間を結ぶ仮想線上に設定される仮想点のことをいい、制御領域を定義するために用いられる。なお、ウェイポイント間を結ぶ仮想線の形状は直線でも曲線でもよく、あるいは、直線と曲線との組合せでもよい。情報点はウェイポイント上に設定されてもよい。隣り合う情報点の間隔は任意に設定されてよく、例えば、一定であってもよいし、場所に応じて異なってもよい。一例では、情報点間の間隔は、障害物が少なく飛行体３０が高速で移動可能な場所（例えば平原、山岳地帯など）であれば１０ｍ〜１５ｍでもよいし、障害物が多く飛行体３０が低速で移動すべき場所（例えば市街地）では１ｍ〜５ｍでもよい。ベクトルとは大きさおよび向きを持つ量のことをいい、有向線分で表現することができる。ベクトルの始点は情報点に対応し、終点は制御領域の外縁に対応する。ベクトルの大きさは情報点から外縁までの距離を示す。一つの情報点には少なくとも一つのベクトルが対応付けられ、典型的には複数のベクトルが対応付けられる。一つの情報点に対応付けられるベクトルの個数は何ら限定されない。一つの制御領域における複数の情報点の間でベクトルの個数が異なってもよい。
【００１２】
図１は、ウェイポイント５１，５２間に設定された複数の情報点７１と、ウェイポイント５２，５３間に設定された複数の情報点７２とを示す。図１はさらに、一つの情報点７１に対応する６個のベクトル８１と、一つの情報点７２に対応する６個のベクトル８２とを示す。制御領域６１はそれぞれの情報点７１からのベクトル（例えばベクトル８１）により定義され、制御領域６２はそれぞれの情報点７２からのベクトル（例えばベクトル８２）により定義される。図１の例では、制御領域６１，６２の形状はいずれも六角柱である。この例のように、制御領域の断面形状は、一つの情報点から延びるベクトルの終点を直線でつないだ図形であってもよい。制御領域の断面形状の決定方法はこれに限定されない。例えば、その断面形状は、一つの情報点から延びるベクトルの終点を曲線でつないだ図形であってもよく、したがって、円でもよいし楕円でもよい。
【００１３】
仮想的に設定される制御領域は任意の形状を取ることができる。したがって、所与の飛行禁止区域、任意の自然物（例えば、山、木など）、任意の構造物（例えば、建物、塔、電線など）などを避けるように柔軟に制御領域を設定することができる。二つのウェイポイント間を結ぶ制御領域は、任意の断面形状を有する筒状を呈してもよい。制御領域の形状および大きさは何ら限定されず、任意に設定されてよい。
【００１４】
図２に示すように、二つのウェイポイント間を結ぶ制御領域の断面の形状および面積は途中で変化してもよい。図２は制御領域の別の例を示す図であり、具体的には、ウェイポイント５４，５５間に設定された制御領域６３を示す。図２の例（ａ）に示すように、制御領域６３は、第１領域６３１と、該第１領域６３１よりも断面積が小さい第２領域６３２とで構成される。図２では、第１領域６３１と第２領域６３２とは斜面により滑らかにつながっている。しかし、この滑らかな接続は必須ではなく、したがって、第１領域６３１と第２領域６３２との境界が斜面ではなく鉛直面であってもよい。制御領域６３は、ウェイポイント５４，５５間を結ぶ仮想線５６上に設定された複数の情報点７３と、個々の情報点７３から延びる１以上のベクトル８３とにより特定され得る。図２の例（ｂ）は図２の例（ａ）のＩＩｂ−ＩＩｂ線断面を示す。上述したように情報点間の距離は任意に設定されてよい。図２の例（ｂ）では、断面形状が変化しない範囲では情報点７３が等間隔に配置され、断面形状が変化する付近の範囲では情報点７３がより密に設定されている。ウェイポイント５４，５５を結ぶ仮想線５６のように、ウェイポイント間を結ぶ仮想線が制御領域の外縁上にあってもよく、したがって、情報点が制御領域６３の外縁上にあってもよい。
【００１５】
図３に示すように、二つのウェイポイント間に複数の制御領域が設定されてもよい。図３は制御領域のさらに別の例を示す図であり、具体的には、ウェイポイント５７，５８間に設定された制御領域６４および制御領域６５を示す。制御領域６４，６５のいずれも、断面は扇形のような形状を呈する。図２の例と同様に、ウェイポイント５７，５８間を結ぶ仮想線５９は、制御領域６４の外縁上に位置し、制御領域６５の外縁上にも位置する。したがって、制御領域６４を定義するための情報点７４は制御領域６４の外縁上に位置し、制御領域６５を定義するための情報点７５は制御領域６５の外縁上に位置する。
【００１６】
図４に示すように、制御領域の少なくとも一部が複数の仮想の層で構成されてもよい。図４は、図２に示す制御領域６３の少なくとも一部が２層である例を示す図である。この例では、制御領域６３は、仮想線５６から見て内側に位置する第１層６３３と、仮想線５６から見て第１層６３３よりも外側に位置する第２層６３４とで構成される。第１領域６３１は第１層６３３および第２層６３４で構成され、第２領域６３２は第１層６３３のみで示される。図４の例（ｂ）は図４の例（ａ）のＩＶｂ−ＩＶｂ線断面を示す。複数の層で構成される部分に対応する情報点では、個々の層についてベクトルが定義される。図４の例では、第１層６３３はベクトル８３ｂで特定可能であり、第２層６３４はベクトル８３ａで特定可能である。第２領域６３２は単層なので、ベクトル８３ａ，８３ｂのどちらで特定されてもよい。
【００１７】
制御領域は任意の目的または周辺環境に応じて任意の個数の層に分割されてよい。例えば、制御領域は飛行体３０の飛行方法に応じて分割されてもよい。一例として、制御領域は、次のウェイポイントに向けて直進可能な領域を示す層と、飛行方向を変える必要がある領域を示す層とに分割されてもよい。あるいは、制御領域は、飛行体３０を低速で飛行させるべき層と、飛行体３０を中速（すなわち、低速よりも大きい速度）で飛行させることが可能な層と、飛行体３０を高速（すなわち、中速よりも大きい速度）で飛行させることが可能な層とに分割されてもよい。図４の例のように制御領域を複数の層に分割することで、様々な要因に応じて飛行体３０を柔軟に制御することができる。あるいは、制御領域は２種類以上の層構造を含んでもよい。たとえば、制御領域は、飛行体３０を低速で飛行させるべき層と、飛行体３０を中速で飛行させることが可能な層と、飛行体３０を高速で飛行させることが可能な層とに分割されるとともに、天気が雨である場合の層と、雨以外の天気の場合の層とに分割されてもよい。この例は、制御領域が飛行体３０の速度に応じて３層に分割されるとともに、天気に応じて２層に分割されることを意味する。
【００１８】
［システムの構成］
図５は、飛行制御システム１の機能構成の一例を示す図である。図５に示すように、本実施形態では、飛行制御システム１はサーバ１０、データベース２０、および飛行体３０を備える。サーバ１０は、飛行体３０を制御するためのコンピュータである。より具体的には、サーバ１０は、飛行体３０に指示データを送信することで、飛行体３０が制御領域に基づいて飛行するように飛行体３０を制御する。データベース２０は領域データ２１を記憶する装置である。領域データ２１および指示データのいずれも、コンピュータが読み取ることが可能な電子データであり、飛行体３０を制御するために必要なデジタル情報を含む制御データである。飛行体３０は、サーバ１０からの指示データに基づいて飛行することが可能である。サーバ１０、データベース２０、および飛行体３０は有線または無線の通信ネットワークを介してデータを送受信することができる。例えば、サーバ１０は通信ネットワークを介して、データベース２０から領域データ２１を読み出したり、飛行体３０に指示データを送信したりすることができる。
【００１９】
サーバ１０は機能モジュールとして空間特定部１１、判定部１２、指示生成部１３、および通信部１４を備える。空間特定部１１は、領域データ２１を参照することで、飛行体３０に対応する制御領域を算出する機能モジュールである。判定部１２は、飛行体３０がその制御領域の内と外のどちらに位置するかを判定する機能モジュールである。指示生成部１３は、判定部１２による判定結果に基づいて、その飛行体３０を制御するための指示データを用意する機能モジュールである。この指示データは、飛行体３０を制御するために用いられる。通信部１４は、その指示データを出力する機能モジュールである。飛行体３０はその指示データに従って制御領域内を飛行することができる。
【００２０】
図６は、サーバ１０のハードウェア構成の一例を示す。例えば、サーバ１０は制御回路１００を有する。一例では、制御回路１００は、一つまたは複数のプロセッサ１０１と、メモリ１０２と、ストレージ１０３と、通信ポート１０４と、入出力ポート１０５とを有する。プロセッサ１０１はオペレーティングシステムおよびアプリケーションプログラムを実行する。ストレージ１０３はハードディスク、不揮発性の半導体メモリ、または取り出し可能な媒体（例えば、磁気ディスク、光ディスクなど）の記憶媒体で構成され、オペレーティングシステムおよびアプリケーションプログラムを記憶する。メモリ１０２は、ストレージ１０３からロードされたプログラム、またはプロセッサ１０１による演算結果を一時的に記憶する。一例では、プロセッサ１０１は、メモリ１０２と協働してプログラムを実行することで、上記の各機能モジュールとして機能する。通信ポート１０４は、プロセッサ１０１からの指令に従って、通信ネットワークＮＷを介して他の装置（例えばデータベース２０または飛行体３０）との間でデータ通信を行う。入出力ポート１０５は、プロセッサ１０１からの指令に従って、キーボード、マウス、モニタなどの入出力装置（ユーザインタフェース）との間で電気信号の入出力を実行する。
【００２１】
サーバ１０は一つまたは複数のコンピュータにより構成され得る。複数のコンピュータが用いられる場合には、通信ネットワークを介してこれらのコンピュータが互いに接続されることで論理的に一つのサーバ１０が構成される。
【００２２】
サーバ１０として機能するコンピュータは限定されない。例えば、サーバ１０は業務用サーバなどの大型のコンピュータで構成されてもよいし、パーソナルコンピュータや携帯端末（例えばスマートフォン、タブレット端末など）などの小型のコンピュータで構成されてもよい。
【００２３】
［領域データのデータ構造］
サーバ１０により用いられる領域データ２１は制御領域を表現する。領域データ２１は、隣接する二つのウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いて制御領域を表現する。制御領域の全体は３以上のウェイポイントで構成される可能性があり、この場合には、領域データ２１は、隣接する二つのウェイポイントの組合せのそれぞれについて、少なくとも一つの情報点のそれぞれからのベクトルを用いて制御領域を表現する。
【００２４】
領域データ２１の具体的なデータ構造は限定されず、任意の手法で実装されてよい。一例では、隣接する二つのウェイポイント間の制御領域を示す領域データのデータ構造は、二つのウェイポイントのそれぞれのウェイポイントＩＤと、少なくとも一つの情報点に関する情報点データとを含む。一例では、一つの情報点に対応する情報点データは、情報点に関する情報点情報と、少なくとも一つのベクトル情報とを含む。ウェイポイントＩＤはウェイポイントを一意に特定する識別子である。情報点情報は、個々の情報点を特定するために用いられる情報であり、例えば、空間における情報点の位置を示す３次元座標を含む。３次元座標の表現方法は限定されず、例えば緯度、経度、高度などで表されてもよいし、任意の地点を基準として設定される相対値で表されてもよい。個々のベクトル情報は、一つの情報点における一つのベクトルを示す情報である。個々のベクトル情報は方向および大きさを示す。ベクトルの方向は情報点を基準として設定され、これは、ベクトル情報が、情報点を始点とするベクトルを示すことを意味する。ベクトルの大きさは情報点からの距離で表される。或る一つの情報点における少なくとも一つのベクトルは、該情報点を通る制御領域の仮想断面を定義するものであるということができ、したがって、制御領域はその仮想断面の連続体であるということができる。仮想断面は例えば垂直方向に沿って定義されてもよく、この場合には仮想断面は垂直断面である。
【００２５】
図７〜図９はいずれも、隣接する二つのウェイポイント「ＷＰ０００」，「ＷＰ００１」間の制御領域を示す領域データ２１の例を示す図である。これらの例で示されるように、領域データのデータ構造はリンク種別、情報点ＩＤ、および次情報点ＩＤをさらに含んでもよい。リンク種別は二つのウェイポイントに対応する飛行経路の属性または特徴を示すデータ項目である。リンク種別は飛行経路の性質、特徴、場所などの諸要素に応じて任意に設定されてよい。情報点ＩＤは情報点を一意に特定する識別子であり、情報点情報の一例である。次情報点ＩＤは隣接する情報点の識別子である。
【００２６】
図７の例では、ベクトルの方向が、仮想断面内において或る軸方向を基準とする角度で示され、ベクトルの大きさが、情報点からの距離で示されている。しかし、ベクトルを表現する方法は何ら限定されず、ベクトル情報は任意の手法で表されてよい。例えば、ベクトル情報はベクトルの終点の座標で表されてもよい。
【００２７】
図８および図９はいずれも、複数の層で構成される制御領域を示す領域データ２１の例を示す。図８の例では、個々の層は「飛行領域」「直線飛行」などの層属性で区別され、それぞれの層について少なくとも一つのベクトル情報が定義される。飛行領域とは、飛行体３０が障害物に接触せずに飛行できる領域のことをいう。直線飛行とは、飛行体３０が次のウェイポイントまで直進しても障害物に接触しないで飛行できる領域のことをいう。この例でも、個々のベクトル情報は、情報点を基準として設定される方向と、情報点からの距離を示す大きさとを示す。個々のベクトルの終点は層の外縁（境界）に対応し、最外層に対応するベクトルの終点は制御領域の外縁（境界）に対応する。
【００２８】
図９の例では、個々の層がメイン属性「飛行領域」およびサブ属性「直線飛行」で区別されている。「飛行領域」のベクトル情報は方向および大きさを示し、「直線飛行」のベクトル情報は、飛行領域を示すベクトルのスカラー倍αで定義される（ただし、α＜１）。例えば、飛行領域を示すベクトルの大きさが１０ｍであり、サブ属性「直線飛行」の割合が４０％である場合には、直線飛行の層は情報点から４ｍまでの範囲であり、最外層は４ｍ〜１０ｍの範囲である。
【００２９】
図７〜図９の例に示すように領域データは任意の形式で定義されてよい。いずれにしても、個々の情報点の個々のベクトルを柔軟に設定でき、これにより、任意の形状の制御領域を簡単に表現することができる。これは、複雑な制御領域を簡単に表現できることも意味する。
【００３０】
［システムでの処理手順］
図１０および図１１を参照しながら、飛行制御システム１の動作を説明するとともに本実施形態に係る飛行体の制御方法を説明する。図１０は、飛行制御システム１の動作の一例を示すフローチャートである。図１１は飛行体３０の飛行状況の判定の一例を示す図である。
【００３１】
ステップＳ１１では、空間特定部１１が飛行体３０の位置（典型的には、現在位置）を特定する。飛行体３０の位置を特定する手法は限定されない。例えば、空間特定部１１は飛行体３０から受信する位置情報に基づいて位置を特定してもよいし、飛行体３０を監視する任意の監視装置から受信する情報に基づいて飛行体３０の位置を特定してもよい。あるいは、空間特定部１１はユーザにより入力された飛行体３０の位置を受け付けてもよい。あるいは、空間特定部１１は、飛行体３０の位置を示す位置データを記録する任意の記憶装置からその位置データを読み出すことで位置を特定してもよい。
【００３２】
ステップＳ１２では、空間特定部１１がデータベース２０内の領域データを参照して、飛行体３０の位置に対応する制御領域を特定する。より具体的には、空間特定部１１は、飛行体３０を挟むように位置する二つのウェイポイントを定義する領域データを参照することで、飛行体３０の位置に対応する制御領域を特定する。参照すべき領域データの選択方法は限定されない。例えば、空間特定部１１は、飛行体３０から受信するデータに基づいて、参照すべき領域データを選択してもよい。あるいは、空間特定部１１は、ユーザにより入力された指示に基づいて領域データを選択してもよい。
【００３３】
ステップＳ１３では、判定部１２が飛行体３０にいちばん近い情報点を選択する。例えば、判定部１２は、二つのウェイポイントを結ぶ仮想線に飛行体３０の位置から垂線を下ろして双方の線の交点を求める。そして、判定部１２は、空間特定部１１により参照された領域データに含まれる個々の情報点のうち該交点にいちばん近い情報点を選択する。
【００３４】
ステップＳ１４では、判定部１２が飛行体３０にいちばん近いベクトルを選択する。例えば、判定部１２は、選択された情報点を始点とする少なくとも一つのベクトル（すなわち、選択された情報点に対応するベクトル）で定義される仮想断面上に飛行体３０の位置を投影したと仮定した場合の、該仮想断面上における飛行体３０の位置を投影位置として算出する。続いて、判定部１２は情報点から飛行体３０の投影位置に至るベクトルを位置ベクトルとして算出する。続いて、判定部１２は選択された情報点を始点とする少なくとも一つのベクトルのうち該位置ベクトルとの向きの差が最も小さいベクトルを、飛行体３０にいちばん近いベクトルとして選択する。位置ベクトルとの向きの差が最も小さいベクトルとは、位置ベクトルと成す角度が最も小さいベクトルのことをいう。
【００３５】
ステップＳ１５では、判定部１２が、飛行体３０の位置と、選択されたベクトルの大きさとに基づいて、飛行体３０の飛行状況を判定する。飛行状況の判定とは、飛行体３０と制御領域との位置関係を判定することをいう。選択されたベクトルの大きさは、情報点から仮想断面の外縁（すなわち、制御領域の外縁）までの距離を示す。したがって、判定部１２は、仮想断面における情報点から飛行体３０の投影位置までの距離と、選択されたベクトルの大きさとを比較することで、飛行体３０と制御領域との位置関係を判定できる。例えば、情報点から飛行体３０の投影位置までの距離が、選択されたベクトルの大きさよりも大きい場合には、飛行体３０は制御領域の外側に位置するといえる。一方、その距離が、選択されたベクトルの大きさ以下であれば、飛行体３０が制御領域内に位置するといえる。
【００３６】
ステップＳ１６では、指示生成部１３が、飛行体３０を制御するための指示データを用意する。指示生成部１３は、メモリに予め記憶されている指示データを読み出すことで指示データを用意してもよいし、指示データを動的に生成してもよい。指示データの内容およびデータ構造は何ら限定されない。指示生成部１３は飛行体３０の飛行方向または速度を変えるための指示データを用意してもよい。
【００３７】
ステップＳ１７では、通信部１４がその指示データを送信する。指示データの宛先は限定されない。例えば、通信部１４は指示データを、飛行体３０に直接に送信してもよいし、飛行体３０以外の任意のコンピュータを経由して飛行体３０に送信してもよい。指示データは飛行経路を算出するために用いられる。例えば、飛行体３０の制御回路が指示データを受信および処理することで飛行経路を算出し、その経路に沿って飛行するように飛行体３０の動力および舵を制御してもよい。あるいは、飛行体３０以外のコンピュータ（例えばリモートコントローラ）が指示データに基づいて飛行経路を算出して該経路を示す経路データを飛行体３０に送信し、飛行体３０の制御回路がその経路データに基づいて飛行体３０の動力および舵を制御してもよい。いずれにしても、飛行体３０は、サーバ１０から提供される指示データに基づいて飛行することができる。
【００３８】
ステップＳ１６，Ｓ１７の処理は必須ではなく、必要な場合に限って実行されてもよい。例えば、飛行体３０が今後の一定時間内においても制御領域内を飛行し続けることが期待できるのであれば、指示データの生成および送信を省略することができる。
【００３９】
制御領域が複数の層で構成される場合には、飛行制御システム１は飛行体３０が位置する層に応じて該飛行体３０を制御する。具体的には、判定部１２は飛行体３０がどの層に位置するかを判定する（ステップＳ１３〜Ｓ１５）。制御領域が２種類以上の層構造を含む場合には、飛行体３０の位置は２以上の層に対応し得る。指示生成部１３は、判定部１２により判定された少なくとも一つの層に対応する指示データを必要に応じて用意する（ステップＳ１６）。通信部１４は必要に応じてその指示データを送信する（ステップＳ１７）。
【００４０】
図１０に示す一連の処理は、飛行体３０が目的に到着するまで繰り返し実行され得る。例えば、その処理は、飛行体３０が情報点の付近に近づく度に実行されたり、定期的に実行されたりしてもよい。例えば、その繰り返し処理を実行する際に、空間特定部１１が領域データを参照して、ステップＳ１３で選択された情報点に対応する次情報点ＩＤを特定し、その次情報点ＩＤで示される情報点を選択する。そして、その選択された情報点についてステップＳ１４以降の処理が実行されてもよい。このように、飛行制御システム１は、処理した情報点に対応する次情報点ＩＤを特定することで、情報点を次々に辿りながら飛行体３０を制御してもよい。
【００４１】
図１１を参照しながら、ステップＳ１３以降の処理の一例を説明する。この例では、二つのウェイポイント１５１，１５２間の制御領域に対応する領域データが６個の情報点１７１を示し、それぞれの情報点から、大きさが同じ８個のベクトル１８１が４５度間隔で延びているとする。この場合、その８個のベクトルで定義される制御領域１６１の仮想断面は円である。この例では飛行体３０の例として飛行体３０４，３０５を示す。
【００４２】
飛行体３０４について処理する場合には、判定部１２はステップＳ１３において情報点１７１ａを選択し、ステップＳ１４において、情報点１７１ａから延びるベクトル１８１ａを選択する。ステップＳ１５において、判定部１２は、情報点１７１と飛行体３０４の投影位置とを結ぶ位置ベクトル１９１の大きさがベクトル１８１ａの大きさよりも小さいので、飛行体３０４が制御領域１６１の中に位置すると判定する。
【００４３】
飛行体３０５について処理する場合には、判定部１２はステップＳ１３において情報点１７１ｂを選択し、ステップＳ１４において、情報点１７１ｂから延びるベクトル１８１ｂを選択する。ステップＳ１５において、判定部１２は、情報点１７１と飛行体３０５の投影位置とを結ぶ位置ベクトル１９２の大きさがベクトル１８１ｂの大きさよりも大きいので、飛行体３０５が制御領域１６１の外に位置すると判定する。
【００４４】
このように、サーバ１０は、飛行体３０にいちばん近い情報点を選択し、その情報点に対応し且つ該飛行体３０にいちばん近いベクトルを選択し、飛行体３０の位置と選択したベクトルの大きさとに基づいて飛行体３０の飛行状況を判定する。この一連の処理はプロセッサ１０１が領域データを参照することで実現される。一例では、プロセッサ１０１は、飛行体３０の位置に対応する領域データを選択すると、その領域データで示される情報点情報（例えば、各情報点の座標）を参照することで、飛行体３０にいちばん近い情報点を選択する。続いて、プロセッサ１０１は選択された情報点に対応するベクトル情報（例えば、１以上のベクトルのそれぞれの角度）を参照することで、飛行体３０にいちばん近いベクトルを選択する。続いて、プロセッサは、ベクトル情報（例えば、選択されたベクトルの大きさ）を参照し、そのベクトルの大きさと飛行体３０の位置とに基づいて飛行状況を判定する。この結果、プロセッサ１０１は、飛行体３０が制御領域１６１の中に位置するのか外に位置するのかを判定することができる。
【００４５】
［プログラム］
コンピュータをサーバ１０として機能させるためのプログラムは、該コンピュータを空間特定部１１、判定部１２、指示生成部１３、および通信部１４として機能させるためのプログラムコードを含む。このプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリなどの有形の記録媒体に固定的に記録された上で提供されてもよい。あるいは、プログラムは、搬送波に重畳されたデータ信号として通信ネットワークを介して提供されてもよい。提供されたプログラムはストレージ１０３に記憶され、プロセッサ１０１がメモリ１０２と協働してそのプログラムを実行することで上記の各機能モジュールが実現する。
【００４６】
［効果］
以上説明したように、本開示の一側面に係るコンピュータシステムは、少なくとも一つのプロセッサを備え、少なくとも一つのプロセッサが、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いてウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御する。
【００４７】
本開示の一側面に係る飛行体の制御方法は、少なくとも一つのプロセッサを備えるコンピュータシステムにより実行される、飛行体の制御方法であって、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いてウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御するステップを含む。
【００４８】
本開示の一側面に係るプログラムは、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれからのベクトルを用いてウェイポイント間の制御領域を表現する領域データに基づいて飛行体を制御するステップをコンピュータに実行させる。
【００４９】
本開示の一側面に係るデータ構造は、ウェイポイント間に設定された少なくとも一つの情報点のそれぞれを示す情報点情報と、少なくとも一つの情報点のそれぞれについて設定された、該情報点からの少なくとも一つのベクトルを示すベクトル情報であって、該少なくとも一つのベクトルによりウェイポイント間の制御領域が表現される、該ベクトル情報とを含み、プロセッサに、情報点情報を参照させることで、飛行体の位置に応じた情報点を選択させ、選択された情報点に対応して設定されたベクトル情報を参照させることで、飛行体の位置に応じたベクトルを選択させ、選択されたベクトルに基づいて飛行体を制御させる。
【００５０】
このような側面においては、情報点からのベクトルを用いて制御領域が表現されるので、様々な形状の制御領域を簡単に特定することができる。したがって、飛行体の制御を迅速に実行することが可能になる。ポリゴンを用いることなどにより制御領域を外縁（境界）の位置で定義すると、制御領域の形状が複雑である場合に制御領域の計算に時間が掛かり、その結果、飛行体の制御にも時間を要する可能性がある。情報点からのベクトルで制御領域を規定することで、制御領域の形状が複雑な場合であっても飛行体と制御領域との位置関係を簡単に特定できるので、飛行体を迅速に制御することが可能になる。
【００５１】
他の側面に係るコンピュータシステムでは、少なくとも一つのプロセッサが、飛行体の位置とベクトルとに基づいて飛行体を制御してもよい。飛行体の位置とベクトルを用いることで、飛行体を迅速に制御することができる。
【００５２】
他の側面に係るコンピュータシステムでは、前記情報点は複数存在し、少なくとも一つのプロセッサが、複数の情報点から、飛行体の位置に応じた情報点を選択し、選択された情報点のベクトルに基づいて飛行体を制御してもよい。飛行体の位置に応じた情報点のベクトルを用いることで、飛行体を正確に制御することができる。
【００５３】
他の側面に係るコンピュータシステムでは、選択された一つの情報点に複数のベクトルが対応し、少なくとも一つのプロセッサが、選択された一つの情報点に対応する複数のベクトルから、飛行体の位置に応じたベクトルを選択し、選択されたベクトルに基づいて飛行体を制御してもよい。飛行体の位置に応じたベクトルを用いることで、飛行体を正確に制御することができる。
【００５４】
他の側面に係るコンピュータシステムでは、少なくとも一つのプロセッサが、飛行体の位置と選択されたベクトルの大きさとに基づいて飛行体を制御してもよい。この場合には、飛行体と制御領域との位置関係に基づいて飛行体を正確に制御することができる。
【００５５】
他の側面に係るコンピュータシステムでは、制御領域の少なくとも一部が複数の層を含み、選択された一つの情報点に対応する複数のベクトルを用いて複数の層が表現され、少なくとも一つのプロセッサが、複数の層のうち、飛行体の位置に対応する少なくとも一つの層に基づいて飛行体を制御してもよい。この場合には、制御領域内での飛行体の位置に応じて、該飛行体の飛行をより精密に制御することができる。
【００５６】
［変形例］
以上、本開示をその実施形態に基づいて詳細に説明した。しかし、本開示は上記実施形態に限定されるものではない。本開示は、その要旨を逸脱しない範囲で様々な変形が可能である。
【００５７】
制御領域を定義するベクトルは動的に変化してもよい。飛行体の位置は気象の影響（例えば風）を受けて予定の飛行経路から大きくずれる可能性がある。したがって、気象状況に応じて制御領域を設定するためにベクトルが動的に変化してもよい。例えば、飛行制御システムは、飛行経路に対応する地域の気象を示す気象データを、気象情報システムなどの任意のコンピュータシステムから取得し、その気象データに基づいて領域データ中のベクトル情報を動的に更新してもよい。例えば、風が東から西へ吹いている場合には、飛行体が西へ流される可能性があるので、飛行制御システムは、制御領域の西側を大きくしたり、制御領域を全体的に西側にずらしたりするようにベクトル情報を更新する。あるいは、飛行制御システムとは別のコンピュータシステムがベクトル情報を動的に更新してもよい。
【００５８】
飛行体を制御するためのシステム構成は限定されない。例えば、サーバ１０がデータベース２０を備えてもよい。あるいは、飛行体３０がサーバ１０の機能を備えてもよく、この場合には、飛行体３０は通信ネットワークを介してデータベース２０にアクセスすることで領域データを読み出す。あるいは、飛行体３０がサーバ１０およびデータベース２０の双方の機能を備えてもよく、この場合には、飛行体３０はあたかもスタンドアロンマシンのように、他の情報処理装置に頼ることなく飛行することができる。
【００５９】
少なくとも一つのプロセッサにより実行される飛行体の制御の手順は上記実施形態での例に限定されない。例えば、上述したステップ（処理）の一部が省略されてもよいし、別の順序で各ステップが実行されてもよい。また、上述したステップのうちの任意の２以上のステップが組み合わされてもよいし、ステップの一部が修正または削除されてもよい。あるいは、上記の各ステップに加えて他のステップが実行されてもよい。
【００６０】
以上の実施形態の全部または一部に記載された態様は、飛行体の適切な制御、処理速度の向上、処理精度の向上、使い勝手の向上、データを利用した機能の向上または適切な機能の提供その他の機能向上または適切な機能の提供、データおよび／またはプログラムの容量の削減、装置および／またはシステムの小型化等の適切なデータ、プログラム、記録媒体、装置および／またはシステムの提供、並びにデータ、プログラム、装置またはシステムの制作・製造コストの削減、制作・製造の容易化、制作・製造時間の短縮等のデータ、プログラム、記録媒体、装置および／またはシステムの制作・製造の適切化のいずれか一つの課題を解決する。
【符号の説明】
【００６１】
１…飛行制御システム、１０…サーバ、１１…空間特定部、１２…判定部、１３…指示生成部、１４…通信部、２０…データベース、２１…領域データ、３０，３０１〜３０５…飛行体、５１〜５５，５７，５８，１５１，１５２…ウェイポイント、６１〜６５，１６１…制御領域、７１〜７５，１７１，１７１ａ，１７１ｂ…情報点、８１〜８３，８３ａ，８３ｂ，１８１，１８１ａ，１８１ｂ…ベクトル。
【図１】
2020086802.tif 000003
【図２】
2020086802.tif 000004
【図３】
2020086802.tif 000005
【図４】
2020086802.tif 000006
【図５】
2020086802.tif 000007
【図６】
2020086802.tif 000008
【図７】
2020086802.tif 000009
【図８】
2020086802.tif 000010
【図９】
2020086802.tif 000011
【図１０】
2020086802.tif 000012
【図１１】
2020086802.tif 000013