以下、発明の実施形態を通じて本開示を説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須とは限らない。
特許請求の範囲、明細書、図面、及び要約書には、著作権による保護の対象となる事項が含まれる。著作権者は、これらの書類の何人による複製に対しても、特許庁のファイル又はレコードに表示される通りであれば異議を唱えない。ただし、それ以外の場合、一切の著作権を留保する。
以下の実施形態では、飛行体として、無人航空機(UAV:Unmanned Aerial Vehicle)を例示する。無人航空機は、空中を移動する航空機を含む。本明細書に添付する図面では、無人航空機を「UAV」と表記する。また、情報処理装置として、無人航空機、端末及びPC(Personal Computer)を例示する。なお、情報処理装置は、無人航空機、端末やPC以外の装置、例えば送信機(プロポ(Propotional Controller))、その他の装置でもよい。飛行制御指示方法は、情報処理装置の動作が規定されたものである。また、記録媒体は、プログラム(例えば情報処理装置に各種の処理を実行させるプログラム)が記録されたものである。
(第1の実施形態)
図1は、第1の実施形態における飛行体群制御システム10の第1構成例を示す模式図である。飛行体群制御システム10は、無人航空機100及び端末80を備える。無人航空機100及び端末80は、相互に有線通信又は無線通信(例えば無線LAN(Local Area Network))により通信可能である。図1では、端末80が端末(例えばスマートフォン、タブレット端末)であることを例示している。端末80は情報処理装置の一例である。
なお、飛行体群制御システム10は、無人航空機100、送信機、及び端末80を備えた構成であってよい。送信機を備える場合、送信機の前面に配置された左右の制御棒を使って、ユーザは、無人航空機の飛行の制御を指示可能である。また、この場合、無人航空機100、送信機、及び端末80は、相互に有線通信又は無線通信により通信可能である。
図2は、第1の実施形態における飛行体群制御システム10の第2構成例を示す模式図である。図2では、端末80がPCであることを例示している。図1及び図2のいずれであっても、端末80が有する機能は同じでよい。
図3は、無人航空機100の具体的な外観の一例を示す図である。図3には、無人航空機100が移動方向STV0に飛行する場合の斜視図が示される。無人航空機100は飛行体の一例である。
図3に示すように、地面と平行であって移動方向STV0に沿う方向にロール軸(x軸参照)が定義されたとする。この場合、地面と平行であってロール軸に垂直な方向にピッチ軸(y軸参照)が定められ、更に、地面に垂直であってロール軸及びピッチ軸に垂直な方向にヨー軸(z軸参照)が定められる。
無人航空機100は、UAV本体102と、ジンバル200と、撮像部220と、複数の撮像部230とを含む構成である。
UAV本体102は、複数の回転翼(プロペラ)を備える。UAV本体102は、複数の回転翼の回転を制御することにより無人航空機100を飛行させる。UAV本体102は、例えば4つの回転翼を用いて無人航空機100を飛行させる。回転翼の数は、4つに限定されない。また、無人航空機100は、回転翼を有さない固定翼機でもよい。
撮像部220は、所望の撮像範囲に含まれる被写体(例えば、空撮対象となる上空の様子、山や川等の景色、地上の建物)を撮像する撮像用のカメラである。
複数の撮像部230は、無人航空機100の飛行を制御するために無人航空機100の周囲を撮像するセンシング用のカメラである。2つの撮像部230が、無人航空機100の機首である正面に設けられてよい。さらに、他の2つの撮像部230が、無人航空機100の底面に設けられてよい。正面側の2つの撮像部230はペアとなり、いわゆるステレオカメラとして機能してよい。底面側の2つの撮像部230もペアとなり、ステレオカメラとして機能してよい。複数の撮像部230により撮像された画像に基づいて、無人航空機100の周囲の3次元空間データが生成されてよい。なお、無人航空機100が備える撮像部230の数は4つに限定されない。無人航空機100は、少なくとも1つの撮像部230を備えていればよい。無人航空機100は、無人航空機100の機首、機尾、側面、底面、及び天井面のそれぞれに少なくとも1つの撮像部230を備えてよい。撮像部230で設定できる画角は、撮像部220で設定できる画角より広くてよい。撮像部230は、単焦点レンズ又は魚眼レンズを有してよい。
図4は、無人航空機100のハードウェア構成の一例を示すブロック図である。無人航空機100は、UAV制御部110と、通信インタフェース150と、メモリ160と、ストレージ170と、ジンバル200と、回転翼機構210と、撮像部220と、撮像部230と、GPS受信機240と、慣性計測装置(IMU:Inertial Measurement Unit)250と、磁気コンパス260と、気圧高度計270と、超音波センサ280と、レーザー測定器290と、を含む構成である。
UAV制御部110は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)又はDSP(Digital Signal Processor)を用いて構成される。UAV制御部110は、無人航空機100の各部の動作を統括して制御するための信号処理、他の各部との間のデータの入出力処理、データの演算処理及びデータの記憶処理を行う。
UAV制御部110は、メモリ160に格納されたプログラムに従って無人航空機100の飛行を制御する。UAV制御部110は、送信機や端末80による飛行の制御の指示に従って、飛行を制御してよい。UAV制御部110は、撮像部220又は撮像部230に画像を空撮させてよい。
UAV制御部110は、無人航空機100の位置を示す位置情報を取得する。UAV制御部110は、GPS受信機240から、無人航空機100が存在する緯度、経度及び高度を示す位置情報を取得してよい。UAV制御部110は、GPS受信機240から無人航空機100が存在する緯度及び経度を示す緯度経度情報、並びに気圧高度計270から無人航空機100が存在する高度を示す高度情報をそれぞれ位置情報として取得してよい。UAV制御部110は、超音波センサ280による超音波の放射点と超音波の反射点との距離を高度情報として取得してよい。
UAV制御部110は、磁気コンパス260から無人航空機100の向きを示す向き情報を取得してよい。向き情報は、例えば無人航空機100の機首の向きに対応する方位で示されてよい。
UAV制御部110は、撮像部220が撮像すべき撮像範囲を撮像する時に無人航空機100が存在すべき位置を示す位置情報を取得してよい。UAV制御部110は、無人航空機100が存在すべき位置を示す位置情報をメモリ160から取得してよい。UAV制御部110は、無人航空機100が存在すべき位置を示す位置情報を、通信インタフェース150を介して他の装置から取得してよい。UAV制御部110は、3次元地図データベースを参照して、無人航空機100が存在可能な位置を特定して、その位置を無人航空機100が存在すべき位置を示す位置情報として取得してよい。
UAV制御部110は、撮像部220及び撮像部230のそれぞれの撮像範囲を示す撮像範囲情報を取得してよい。UAV制御部110は、撮像範囲を特定するためのパラメータとして、撮像部220及び撮像部230の画角を示す画角情報を撮像部220及び撮像部230から取得してよい。UAV制御部110は、撮像範囲を特定するためのパラメータとして、撮像部220及び撮像部230の撮像方向を示す情報を取得してよい。UAV制御部110は、例えば撮像部220の撮像方向を示す情報として、ジンバル200から撮像部220の姿勢の状態を示す姿勢情報を取得してよい。撮像部220の姿勢情報は、ジンバル200のピッチ軸及びヨー軸の基準回転角度からの回転角度を示してよい。
UAV制御部110は、撮像範囲を特定するためのパラメータとして、無人航空機100が存在する位置を示す位置情報を取得してよい。UAV制御部110は、撮像部220及び撮像部230の画角及び撮像方向、並びに無人航空機100が存在する位置に基づいて、撮像部220が撮像する地理的な範囲を示す撮像範囲を画定し、撮像範囲情報を生成することで、撮像範囲情報を取得してよい。
UAV制御部110は、メモリ160から撮像範囲情報を取得してよい。UAV制御部110は、通信インタフェース150を介して撮像範囲情報を取得してよい。
UAV制御部110は、ジンバル200、回転翼機構210、撮像部220及び撮像部230を制御する。UAV制御部110は、撮像部220の撮像方向又は画角を変更することによって、撮像部220の撮像範囲を制御してよい。UAV制御部110は、ジンバル200の回転機構を制御することで、ジンバル200に支持されている撮像部220の撮像範囲を制御してよい。
撮像範囲とは、撮像部220又は撮像部230により撮像される地理的な範囲をいう。撮像範囲は、緯度、経度、及び高度で定義される。撮像範囲は、緯度、経度、及び高度で定義される3次元空間データにおける範囲でよい。撮像範囲は、緯度及び経度で定義される2次元空間データにおける範囲でもよい。撮像範囲は、撮像部220又は撮像部230の画角及び撮像方向、並びに無人航空機100が存在する位置に基づいて特定されてよい。撮像部220及び撮像部230の撮像方向は、撮像部220及び撮像部230の撮像レンズが設けられた正面が向く方位と俯角とから定義されてよい。撮像部220の撮像方向は、無人航空機100の機首の方位と、ジンバル200に対する撮像部220の姿勢の状態とから特定される方向でよい。撮像部230の撮像方向は、無人航空機100の機首の方位と、撮像部230が設けられた位置とから特定される方向でよい。
UAV制御部110は、複数の撮像部230により撮像された複数の画像を解析することで、無人航空機100の周囲の環境を特定してよい。UAV制御部110は、無人航空機100の周囲の環境に基づいて、例えば障害物を回避して飛行を制御してよい。
UAV制御部110は、無人航空機100の周囲に存在するオブジェクトの立体形状(3次元形状)を示す立体情報(3次元情報)を取得してよい。オブジェクトは、例えば、建物、道路、車、木等の風景の一部でよい。立体情報は、例えば、3次元空間データである。UAV制御部110は、複数の撮像部230から得られたそれぞれの画像から、無人航空機100の周囲に存在するオブジェクトの立体形状を示す立体情報を生成することで、立体情報を取得してよい。UAV制御部110は、メモリ160又はストレージ170に格納された3次元地図データベースを参照することにより、無人航空機100の周囲に存在するオブジェクトの立体形状を示す立体情報を取得してよい。UAV制御部110は、ネットワーク上に存在するサーバが管理する3次元地図データベースを参照することで、無人航空機100の周囲に存在するオブジェクトの立体形状に関する立体情報を取得してよい。
UAV制御部110は、回転翼機構210を制御することで、無人航空機100の飛行を制御する。つまり、UAV制御部110は、回転翼機構210を制御することにより、無人航空機100の緯度、経度、及び高度を含む位置を制御する。UAV制御部110は、無人航空機100の飛行を制御することにより、撮像部220の撮像範囲を制御してよい。UAV制御部110は、撮像部220が備えるズームレンズを制御することで、撮像部220の画角を制御してよい。UAV制御部110は、撮像部220のデジタルズーム機能を利用して、デジタルズームにより、撮像部220の画角を制御してよい。
撮像部220が無人航空機100に固定され、撮像部220を動かせない場合、UAV制御部110は、特定の日時に特定の位置に無人航空機100を移動させることにより、所望の環境下で所望の撮像範囲を撮像部220に撮像させてよい。あるいは撮像部220がズーム機能を有さず、撮像部220の画角を変更できない場合でも、UAV制御部110は、特定された日時に、特定の位置に無人航空機100を移動させることで、所望の環境下で所望の撮像範囲を撮像部220に撮像させてよい。
通信インタフェース150は、端末80と通信する。通信インタフェース150は、任意の無線通信方式により無線通信してよい。通信インタフェース150は、任意の有線通信方式により有線通信してよい。通信インタフェース150は、空撮画像や空撮画像に関する付加情報(メタデータ)を、端末80に送信してよい。
メモリ160は、UAV制御部110がジンバル200、回転翼機構210、撮像部220、撮像部230、GPS受信機240、慣性計測装置250、磁気コンパス260、気圧高度計270、超音波センサ280、及びレーザー測定器290を制御するのに必要なプログラム等を格納する。メモリ160は、コンピュータ読み取り可能な記録媒体でよく、SRAM(Static Random Access Memory)、DRAM(Dynamic Random Access Memory)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)、及びUSB(Universal Serial Bus)メモリ等のフラッシュメモリの少なくとも1つを含んでよい。メモリ160は、無人航空機100から取り外し可能であってよい。メモリ160は、作業用メモリとして動作してよい。
ストレージ170は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、SDカード、USBメモリ、その他のストレージの少なくとも1つを含んでよい。ストレージ170は、各種情報、各種データを保持してよい。ストレージ170は、無人航空機100から取り外し可能であってよい。ストレージ170は、空撮画像を記録してよい。
ジンバル200は、ヨー軸、ピッチ軸、及びロール軸を中心に撮像部220を回転可能に支持してよい。ジンバル200は、ヨー軸、ピッチ軸、及びロール軸の少なくとも1つを中心に撮像部220を回転させることで、撮像部220の撮像方向を変更してよい。
回転翼機構210は、複数の回転翼と、複数の回転翼を回転させる複数の駆動モータと、を有する。回転翼機構210は、UAV制御部110により回転を制御されることにより、無人航空機100を飛行させる。回転翼211の数は、例えば4つでもよいし、その他の数でもよい。また、無人航空機100は、回転翼を有さない固定翼機でもよい。
撮像部220は、所望の撮像範囲の被写体を撮像して撮像画像のデータを生成する。撮像部220の撮像により得られた画像データ(例えば空撮画像)は、撮像部220が有するメモリ、又はストレージ170に格納されてよい。
撮像部230は、無人航空機100の周囲を撮像して撮像画像のデータを生成する。撮像部230の画像データは、ストレージ170に格納されてよい。
GPS受信機240は、複数の航法衛星(つまり、GPS衛星)から発信された時刻及び各GPS衛星の位置(座標)を示す複数の信号を受信する。GPS受信機240は、受信された複数の信号に基づいて、GPS受信機240の位置(つまり、無人航空機100の位置)を算出する。GPS受信機240は、無人航空機100の位置情報をUAV制御部110に出力する。なお、GPS受信機240の位置情報の算出は、GPS受信機240の代わりにUAV制御部110により行われてよい。この場合、UAV制御部110には、GPS受信機240が受信した複数の信号に含まれる時刻及び各GPS衛星の位置を示す情報が入力される。
慣性計測装置250は、無人航空機100の姿勢を検出し、検出結果をUAV制御部110に出力する。慣性計測装置250は、無人航空機100の姿勢として、無人航空機100の前後、左右、及び上下の3軸方向の加速度と、ピッチ軸、ロール軸、及びヨー軸の3軸方向の角速度とを検出してよい。
磁気コンパス260は、無人航空機100の機首の方位を検出し、検出結果をUAV制御部110に出力する。
気圧高度計270は、無人航空機100が飛行する高度を検出し、検出結果をUAV制御部110に出力する。
超音波センサ280は、超音波を放射し、地面や物体により反射された超音波を検出し、検出結果をUAV制御部110に出力する。検出結果は、無人航空機100から地面までの距離つまり高度を示してよい。検出結果は、無人航空機100から物体(被写体)までの距離を示してよい。
レーザー測定器290は、物体にレーザー光を照射し、物体で反射された反射光を受光し、反射光により無人航空機100と物体(被写体)との間の距離を測定する。レーザー光による距離の測定方式は、一例として、タイムオブフライト方式でよい。
図5は、端末80のハードウェア構成の一例を示すブロック図である。端末80は、端末制御部81、操作部83、通信部85、メモリ87、表示部88、及びストレージ89を備える。端末80は、複数の無人航空機100の飛行制御の指示を希望するユーザに所持され得る。
端末制御部81は、例えばCPU、MPU又はDSPを用いて構成される。端末制御部81は、端末80の各部の動作を統括して制御するための信号処理、他の各部との間のデータの入出力処理、データの演算処理及びデータの記憶処理を行う。
端末制御部81は、通信部85を介して、無人航空機100からのデータ(例えば、各種計測データ、空撮画像データ)や情報(例えば、無人航空機100の位置情報、無人航空機同士が衝突する旨の情報)を取得してもよい。端末制御部81は、操作部83を介して入力されたデータや情報(例えば各種パラメータ)を取得してもよい。端末制御部81は、メモリ87に保持されたデータや情報を取得してもよい。端末制御部81は、通信部85を介して、無人航空機100へ、データや情報(例えば無人航空機の移動後の位置、移動量の情報、移動するための飛行経路の情報)を送信させてもよい。端末制御部81は、データや情報を表示部88に送り、このデータや情報に基づく表示情報を表示部88に表示させてもよい。
端末制御部81は、複数の無人航空機100(無人航空機群100Gとも称する)の飛行制御を指示するためのアプリケーションを実行してもよい。端末制御部81は、アプリケーションで用いられる各種のデータを生成してもよい。
操作部83は、端末80のユーザにより入力されるデータや情報を受け付けて取得する。操作部83は、ボタン、キー、タッチスクリーン、マイクロホン、等の入力装置を含んでもよい。ここでは、主に、操作部83と表示部88とがタッチパネルにより構成されることを例示する。この場合、操作部83は、タッチ操作、タップ操作、ドラック操作等を受付可能である。操作部83は、各種パラメータの情報を受け付けてもよい。操作部83により入力された情報は、無人航空機100へ送信されてもよい。各種パラメータは、飛行制御に関するパラメータ(例えば、後述する制御ノードの位置、制御ノードの移動、制御ノードの重み付け等に関する情報)を含んでもよい。
通信部85は、各種の無線通信方式により、無人航空機100との間で無線通信する。この無線通信の無線通信方式は、例えば、無線LAN、Bluetooth(登録商標)、又は公衆無線回線を介した通信を含んでよい。通信部85は、任意の有線通信方式により有線通信してよい。
メモリ87は、例えば端末80の動作を規定するプログラムや設定値のデータが格納されたROMと、端末制御部81の処理時に使用される各種の情報やデータを一時的に保存するRAMを有してもよい。メモリ87は、ROM及びRAM以外のメモリが含まれてよい。メモリ87は、端末80の内部に設けられてよい。メモリ87は、端末80から取り外し可能に設けられてよい。プログラムは、アプリケーションプログラムを含んでよい。
表示部88は、例えばLCD(Liquid Crystal Display)を用いて構成され、端末制御部81から出力された各種の情報やデータを表示する。表示部88は、アプリケーションの実行に係る各種データや情報を表示してもよい。
ストレージ89は、各種データ、情報を蓄積し、保持する。ストレージ89は、HDD、SSD、SDカード、USBメモリ、等でよい。ストレージ89は、端末80の内部に設けられてもよい。ストレージ89は、端末80から取り外し可能に設けられてもよい。ストレージ89は、無人航空機100から取得された空撮画像や付加情報を保持してよい。付加情報は、メモリ87に保持されてよい。
次に、複数の無人航空機100を含む無人航空機群100Gの飛行制御の指示に関する機能について説明する。ここでは、端末80の端末制御部81が無人航空機群100Gの飛行制御の指示に関する機能を有することを主に説明するが、無人航空機100が無人航空機群100Gの飛行制御の指示に関する機能を有してよい。端末制御部81は、処理部の一例である。端末制御部81は、無人航空機群100Gの飛行制御の指示に関する処理を行う。
飛行制御の対象となる無人航空機群100Gは、互いに連携して飛行する複数の無人航空機100であってもよいし、連携することなくある空間に群がって飛行する複数の無人航空機100であってもよく、特に限定されない。
端末制御部81は、無人航空機群100Gの飛行を制御するための1つ以上の制御ノードCの情報を取得する。制御ノードCは、無人航空機群100Gの飛行を制御するための仮想ノードである。制御ノードCの情報は、制御ノードCを識別するための識別情報、制御ノードCの位置情報、複数の制御ノードCの位置関係の情報、等を含んでよい。制御ノードCの情報は、メモリ160やストレージ170に保持されてよいし、通信インタフェース150を介して外部装置から取得してよい。また、端末制御部81は、操作部83を介してユーザ操作を受けることで、制御ノードCの情報を生成してよい。例えば、端末制御部81は、操作部83を介して、制御ノードCの位置や制御ノードCの数を入力してよい。
制御ノードCの位置情報は、3次元空間上の位置の情報でよい。複数の制御ノードCの位置関係の情報は、無人航空機群100Gにおける複数の無人航空機100が飛行時に形成する形状(飛行形状)でよい。飛行形状は、予め定められた形状パターン(例えば多角柱形状、多角錐形状、球形状、等)でもよいし、操作部83を介したユーザ操作により生成された形状パターンでもよい。
端末制御部81は、例えば通信部85を介して、無人航空機群100Gに含まれる複数の無人航空機100の位置情報を取得する。無人航空機100の位置情報は、例えば、無人航空機100のGPS受信機240により取得された情報でもよいし、超音波センサ280により取得された情報でもよい。
図6は、制御ノードCと無人航空機群100Gとの位置関係を説明する図である。端末80では、端末制御部81は、通信部85を介して各無人航空機100から無人航空機100の位置情報(例えばGPS位置情報)を受信し、無人航空機100の位置情報を基に、表示部88に無人航空機群100Gを表示させる。端末制御部81は、表示部88に表示された無人航空機群100Gに対し、操作部83を介して、ユーザによって指示された位置に制御ノードCを配置してよい。端末制御部81は、制御ノードCの配置決定時の無人航空機100の位置に依存せずに、制御ノードCを任意の位置に配置してよい。端末制御部81は、制御ノードCの配置を決定する際、無人航空機群100Gの位置を基に、制御ノードCを配置してもよい。端末制御部81は、例えば、操作部83を介して1つ以上の制御ノードを所望の位置に配置することで、複数の制御ノードCの位置関係を設定してよい。
図6では、4つの制御ノードC1,C2,C3,C4は、放射状の形状パターンに則って、それぞれ位置p1,p2,p3,p4に配置される。言い換えると、制御ノードC1を中心や重心として、制御ノードC1の周囲に制御ノードC2,C3,C4が配置される。この形状パターンの形状に近似して、無人航空機群100Gの飛行形態が形成されることになる。操作部83を介して指示された位置に4つの制御ノードC1,C2,C3,C4が配置されると、端末制御部81は、これらを結ぶ3つのボーン(骨格)b12,b13,b14を生成する。端末制御部81は、操作部83へのユーザ操作を介して、制御ノードC1,C2,C3,C4の位置の変更を受けることにより、無人航空機群100Gの飛行形態を変化させてよい。端末制御部81は、操作部83を介して、制御ノードCを直接移動させてもよいし、ボーンb12,b13,b14を移動させることで、制御ノードCを移動させてもよい。
制御ノードC1,C2,C3,C4の各位置p1,p2,p3,p4は、同一の面(2次元平面)に配置されてもよいし、異なる平面(3次元空間)に配置されてもよい。制御ノードCの形状パターンは、事前に定められてもよい。この場合、メモリ87又はストレージ89に形状パターンの情報が保持され、端末制御部81が形状パターンの情報を取得してよい。制御ノードCの形状パターンは、新たに独自に生成されてもよい。この場合、端末制御部81は、操作部83を介して各制御ノードC1〜C4の配置の指示を受け、各制御ノードC1〜C4により形成される形状パターンを生成してよい。生成された形状パターンは、メモリ87又はストレージ89に保持されてよい。
このように、端末80は、複数の制御ノードCの形状パターンをユーザ所望の形状に決定できる。したがって、端末80は、制御ノードCの位置関係によって定まる無人航空機群100Gの飛行形態を、ユーザ所望の形態に調整できる。
端末制御部81は、1つ以上の制御ノードCと複数の無人航空機100とを関連付けてよい。端末制御部81は、操作部83を介してユーザ操作を受け、関連付けの対象となる無人航空機100と1つ以上の制御ノードCとの少なくとも1つを選択してよい。端末制御部81は、操作部83を介さずに、例えば所定の無人航空機100と所定の制御ノードCとの間の関連付けを行ってもよい。関連付けでは、無人航空機100と制御ノードCとの関連付けの強さを示す重み付けが行われる。関連付けの程度は、重みwの大きさにより示されてよい。重みwが大きい程、無人航空機100と制御ノードCとの関連性が高く、例えば制御ノードCが移動した際に大きく影響を受け、制御ノードCの移動に従って無人航空機100が大きく移動する。重みwが小さい程、無人航空機100と制御ノードCとの関連性が低く、例えば制御ノードCが移動した際にあまり影響を受けず、制御ノードCの移動に従って無人航空機100が小さく移動する、又は移動しない。
端末制御部81は、各無人航空機100に対し、複数(例えば無人航空機100からの距離が短い順に2つ(近傍の2つとも称する))の制御ノードCの重みwを設定する。重みwは、制御ノードCと無人航空機100とを関連付ける値の一例であり、値0から値1の範囲に設定される係数でよい。重みwが値1に近い程、対応する制御ノードCとの関連付けが強くなる。重みwが値0に近い程、対応する制御ノードCとの関連付けが弱くなる。つまり、重みwが値1に近い程、制御ノードCの影響を強く受け、重みwが値1に近い程、制御ノードCの影響をあまり受けない。また、無人航空機100の近傍に位置する2つの制御ノードCは、無人航空機100との間の距離が最も短い制御ノードCと、2番目に短い制御ノードCと、でよい。なお、重み付けの対象となる制御ノードCの数は、2つ以外でもよく、少なくとも1つであり、3つ以上であってよい。
重み付けの方法について、以下に第1例〜第3例を示す。
第1例では、端末制御部81は、操作部83を介して、ユーザが任意の重みwの値を入力する。例えば、端末制御部81は、操作部83を介して、無人航空機100の近傍にある2つの制御ノードC1,C2(図6参照)を選択する。端末制御部81は、操作部83を介して、選択された2つの制御ノードC1,C2のうち、無人航空機100に近い方の制御ノードCの重みwが大きくなるように設定する。図6では、位置pに位置する無人航空機100に対し、制御ノードC2が最も近いので、制御ノードC2の重みw2が大きな値となるように設定される。制御ノードC2は、任意の無人航空機100との距離が最も短い制御ノードの一例である。制御ノードC1は、任意の無人航空機100との距離が2番目に短い制御ノードの一例である。
このように、ユーザは、操作部83を介して端末80に対して直接に重みwを設定することで、ユーザ所望の制御ノードCと無人航空機100とを、無人航空機100の移動に関して直感的に関連付けることができる。また、ユーザ操作により容易に関連付けできるため、端末80は、関連付けを行う際の端末80の処理負荷を低減できる。
第2例では、端末制御部81は、無人航空機100と制御ノードCの距離に基づき、重みwを算出する。例えば、無人航空機100の近傍にある2つの制御ノードC1,C2の重みwを決定する場合、端末制御部81は、式(1)に従って、無人航空機100に対する制御ノードC1の重みw1及び制御ノードC2の重みw2を算出してよい。なお、d1は、無人航空機100と制御ノードC1との距離である。d2は、無人航空機100と制御ノードC2との距離である。
w1 = d2/(d1+d2)
w2 = d1/(d1+d2) …… (1)
なお、第2例において、重みwに対する閾値が設けられてよい。この場合、端末制御部81は、例えば、重みwが閾値th1以上である場合、重みwを値1に設定し、重みwが閾値th2未満である場合、重みwを値0に設定してもよい。閾値th1,th2は、同じ値でも異なる値でもよい。
第3例では、端末制御部81は、無人航空機100と制御ノードCの位置関係を基に、無人航空機100に対する2つの制御ノードCの重みwを算出する。無人航空機100と2つのうちいずれか1つの制御ノードCとの間の距離における2つの制御ノードCを結ぶ方向に沿う成分dliは、式(2)によって決定される。
ここで、piは、制御ノードCiの位置を示す。pjは、制御ノードCjの位置を示す。pは、無人航空機100の位置を示す。式(2)における上部に付された矢印は、ベクトルを表す。ベクトルpipは、piからpまでのベクトルを表す。ベクトルpipjは、piからpjまでのベクトルを表す。ベクトルip * ベクトルpipjは、ベクトルpipjの方向における、ベクトルpipの余弦、つまりベクトルpipとベクトルpipjの内積を表す。
図6では、式(2)を参照すると、無人航空機100と制御ノードC1との間の距離における制御ノードC1,C2を結ぶ方向に沿う成分dl1は、ベクトルp1pとベクトルp1p2の内積が値0以上であるので、この内積の値となる。また、無人航空機100と制御ノードC2との間の距離における制御ノードC1,C2を結ぶ方向に沿う成分dl2は、ベクトルp2pとベクトルp2p1の内積が負であるので、値0となる。
そして、端末制御部81は、dl1を式(1)のd1とし、dl1を式(1)のd2として、式(1)に従って、無人航空機100に対する2つの制御ノードC1,C2の重みw1,w2を算出する。
つまり、第3例では、図6の位置pに位置する無人航空機100が2つの制御ノードC1,C2の間に位置する場合、2つの制御ノードC1,C2から無人航空機100までの各距離の制御ノードC1,C2を結ぶ方向の成分dl1,dl2は、それぞれ式(2)に従った内積の値となる。一方、無人航空機100が2つの制御ノードC1,C2の間から位置しない場合、2つの制御ノードC1,C2のうち、最も近い制御ノードC2から無人航空機100までの距離に係る成分d2は値0となり、2番目に近い制御ノードC1から無人航空機100までの距離に係る成分d1は、上記の内積の値となる。この場合、重みw1は値0となり、重みw2は値1となるので、位置pに位置する無人航空機100の移動は、最も近い制御ノードC2の移動に支配される。
なお、ここでは、無人航空機100の近傍に位置する2つの制御ノードC1,C2に対し、重みw1,w2を算出しているが、無人航空機100が3つ以上の制御ノードCと関連付けられる場合、3つ以上の重みw(w1,w2,w3,…)が算出される。
なお、式(2)では、ベクトルip * ベクトルpipj の内積の値が負の値である場合、値0として算出されたが、負の値のままとしてもよい。この場合、2つの制御ノードCのうちの遠い方の制御ノードC(図6では制御ノードC1)の影響も含めて加味して、無人航空機100が移動し得る。
このように、第2例、第3例では、端末制御部81は、複数の制御ノードCの位置情報を取得し、制御ノードCの位置情報と複数の無人航空機100の位置情報(例えばGPS位置情報)とに基づいて、制御ノードCと複数の無人航空機100との関連付けの値(例えば重みw)を算出してよい。これにより、端末80は、制御ノードCと無人航空機100の位置関係を基に、自動的に関連付けできる。また、端末80は、関連付けを行う際のユーザ操作を不要にでき、煩雑性を低くできる。
また、端末80は、無人航空機100に近い制御ノードCとの間(例えば近傍の2つの制御ノードC1,C2)に限って関連付けできる。そのため、無人航空機100は、自機に近い制御ノードCが移動した場合には制御ノードCの移動の影響を受けるが、無人航空機100から遠い制御ノードCが移動した場合には制御ノードCの移動の影響を受けない。よって、端末80は、制御ノードCの移動による無人航空機100の移動を少なくでき、多くの無人航空機100が移動することを抑制できる。また、移動した制御ノードC周辺の無人航空機100が主に移動することとなり、制御ノードCの移動と無人航空機100の移動との連動が、ユーザにとって直感的に分かり易くなる。なお、端末80は、1つの無人航空機100と関連付けする制御ノードCの数を可変とすることで、制御ノードCの移動に合わせた無人航空機100の移動の仕方を調整でき、無人航空機100の移動のバリエーションを増やすことができる。
また、端末80は、多くの制御ノードCとの間で関連付けすると、多くの制御ノードCの移動が無人航空機100の移動に影響する。したがって、端末80は、多くの制御ノードCとの間で関連付けすることで、無人航空機100の動きを複雑化でき、無人航空機100に細かな飛行制御をさせることができる。
端末制御部81は、1つ以上の制御ノードCの移動に基づいて、移動した制御ノードCに関連付けられた1つ以上の無人航空機100を移動させる。端末制御部81は、操作部83を介してユーザ操作を受け、ユーザ操作に基づき制御ノードCを移動させてよい。端末制御部81は、制御ノードCの移動に基づいて、移動した制御ノードCに関連付けられた1つ以上の無人航空機100を移動させるための移動制御情報を生成してよい。端末制御部81は、通信部85を介して、移動制御情報を各無人航空機100へ送信してよい。
例えば、端末制御部81は、各無人航空機100の近傍に位置する2つの制御ノードCの移動量を基に、各無人航空機100の移動量を算出する。制御ノードCの移動量は、制御ノードCの移動方向及び移動距離が加味されたベクトル値として表現されてよい。無人航空機100の移動量は、無人航空機100の移動方向及び移動距離が加味されたベクトル値として表現されてよい。
図7は、無人航空機群100Gの移動操作を説明する図である。端末制御部81は、操作部83を介してユーザ操作を受け、制御ノードCを移動させた場合、無人航空機群100Gのうち、移動させた制御ノードCに関連付けられた無人航空機100が移動する。
制御ノードCiの移動量をベクトルmiとし、無人航空機100の移動量をベクトルdnjとし、無人航空機100の制御ノードCiに対する重みを重みwiとする。制御ノードCiの移動に伴う、無人航空機100の移動量dnjは、式(3)で表される。
つまり、端末制御部81は、式(3)に従って、無人航空機100の制御ノードCiに対する重みを重みwi及び制御ノードCiの移動量miを基に、無人航空機100の移動量dnjを算出してよい。端末制御部81は、無人航空機100の移動量dnjを基に、無人航空機100を移動させてよい。この場合、端末制御部81は、通信部85を介して、無人航空機100の移動量dnjを含む移動制御情報を端末80へ送信してよい。
図7では、ユーザが指fgを用いて、タッチパネルとしての表示部88に表示された4つの制御ノードC1〜C4に対し、制御ノードC1と制御ノードC4を移動させる操作を行った場合が示されている。制御ノードC1,C4の移動に伴って移動する複数の無人航空機100について、移動前の無人航空機100の位置がそれぞれu1〜u7で表され、移動後の位置がそれぞれu11〜u17で表されている。
図7では、端末制御部81は、タッチパネルとしての操作部83を介してユーザ操作を受け、制御ノードC1をベクトルm1で示すように僅かに左下方に移動させ、制御ノードC4をベクトルm4で示すように大きく下方に移動させている。これに伴い、ボーンb12,b14が伸縮かつ移動する。端末制御部81は、操作部83を介して、制御ノードC1,C4を移動させる代わりに、ボーンb14,b12を移動させることで、制御ノードC1,C4を移動させてもよい。
制御ノードC1,C4の移動によって、移動前の位置u1〜u7に位置した無人航空機100は、移動後の位置u11〜u17に移動する。例えば、制御ノードC1の移動によって、移動前の位置u1にいた無人航空機100は、式(3)に従って、移動後の位置u11に移動する。制御ノードC4の移動によって、移動前の位置u3に位置した無人航空機100は、式(3)によって導出された移動量dn3に従い、移動後の位置u13に大きく移動する。
このように、ユーザは、操作部83を介して制御ノードCの移動操作を行うことで、所望に且つ直感的に制御ノードCを移動させることができる。したがって、ユーザは、制御ノードCの移動操作により、制御ノードCに関連付けられた無人航空機100を間接的に移動させることができる。
端末制御部81は、操作部83を介した制御ノードCの移動操作を受けずに、制御ノードCを移動させてもよい。例えば、端末制御部81は、予め定められた1つ以上の制御ノードCが移動するための移動情報(所定の移動情報)を、メモリ160等から取得し、この移動情報に基づいて、該当する制御ノードCを移動させてよい。端末制御部81は、時間情報に基づいて、例えば所定時刻となった場合に、所定の移動情報に基づいて、該当する制御ノードCを移動させてよい。端末制御部81は、位置情報に基づいて、例えば無人航空機100が所定の場所に到達した場合に、所定の移動情報に基づいて、該当する制御ノードCを移動させてよい。
端末制御部81は、算出された各無人航空機100の移動量dnjに従って、各無人航空機100を移動させた場合、無人航空機100同士が衝突する場合、無人航空機100の移動を制限してよい。無人航空機100同士が衝突するか否かの判断は、例えば、移動後における各無人航空機100の位置を算出し、無人航空機100同士の距離が閾値th3以上であるか否かによって行われてよい。閾値th3未満である場合、端末制御部81は、無人航空機100同士の衝突が起こると判断してよい。一方、閾値以上である場合、端末制御部81は、無人航空機100同士が衝突しないと判断してよい。閾値th3は、例えば無人航空機100間の安全距離(安全を確保するための距離)でよい。
なお、制御ノードCの移動と無人航空機100の移動とが衝突を避けるために連動しない期間があっても、制御ノードCの更なる移動により、計算上、複数の無人航空機100の衝突の可能性が低くなった場合に、制御ノードCの移動に伴って無人航空機100が移動することで、再び制御ノードCの移動と無人航空機100の飛行とが連動した状態に復活できる。
端末制御部81は、無人航空機100同士が衝突する場合、衝突すると判断された且つ移動した制御ノードCに関連付けられた無人航空機100に限って、無人航空機100の移動を制限してよい。端末制御部81は、無人航空機100同士が衝突する場合、衝突すると判断されたか否かに関わらず、移動した制御ノードCに関連付けられた全ての無人航空機100の移動を制限してよい。
端末制御部81は、制御ノードC1が移動した場合、無人航空機100を移動させないことによって、無人航空機100の移動を制限してよい。端末制御部81は、制御ノードC1が移動した場合、無人航空機100同士が衝突しない範囲で無人航空機100を移動可能とすることで、無人航空機100の移動を制限してよい。
端末制御部81は、移動後における各無人航空機100の位置を基に、衝突するか否かを判断するのではなく、移動前後において無人航空機100が移動するための飛行経路を基に、衝突するか否かを判断してよい。例えば、端末制御部81は、移動前後において複数の無人航空機100が移動するための複数の飛行経路が衝突する場合、無人航空機100同士が衝突すると判断してよい。複数の飛行経路が衝突するとは、複数の飛行経路が二次元平面(緯度・経度)又は3次元空間(緯度・経度・高度)において交わることを含んでよい。
このように、端末80は、制御ノードCの移動に伴い無人航空機100が移動する場合に、計算上、移動後に複数の無人航空機100が同位置又は接触の可能性が低い場合に、無人航空機100を移動させるように指示できる。言い換えると、計算上、移動後に複数の無人航空機100が同位置又は接触の可能性がある位置に存在する場合、端末80は、実空間上での無人航空機100の移動を制限できる。この場合、端末80は、実空間において複数の無人航空機100が衝突することを抑制できる。
端末制御部81は、制御ノードCの移動を制限するための移動制限情報に基づいて、制御ノードCの移動を制限してよい。移動制限情報は、メモリ160やストレージ170に保持されていてよい。移動制限情報は、事前設定された情報でもよいし、操作部83を介してユーザ操作を基に決定される情報でもよい。移動制限情報は、固定の情報でも可変の情報でもよい。
移動制限情報は、制御ノードC毎に定められてよいし、複数の制御ノードC共通で定められてもよい。移動制限情報は、例えば、制御ノードCの特定方向における移動を制限するための情報でよい。この特定方向は、例えば、Z軸方向(実空間における重力方向)であってよい。制御制限情報は、例えば、制御ノードCの閾値th4以上の距離の移動を制限するための情報であってよい。
このように、端末80は、制御ノードCの移動の自由度を制限することで、制御ノードCの移動が少なくなるので、無人航空機100の移動も間接的に制限できる。したがって、複数の無人航空機100が移動することにより複数の無人航空機100の位置が同一又は接触の可能性のある位置に移動する可能性を抑制できる。つまり、端末80は、制御ノードの移動の自由度を制限することで、複数の無人航空機100の衝突を抑制できる。
なお、端末制御部81は、上述の無人航空機100の移動の制限と制御ノードCの移動の制限とのいずれか一方のみを行ってもよいし、双方を行ってもよい。
次に、飛行体群制御システム10の動作例について説明する。
図8は、端末80及び各無人航空機100の動作手順の第1例を示すフローチャートである。例えば無人航空機100の飛行中、UAV制御部110は、通信インタフェース150を介して、GPS受信機240で得られるGPS位置情報(緯度、経度、高度)を一定のタイミングで端末80に繰り返し送信してよい。
端末80では、端末制御部81は、通信部85を介して、各無人航空機100の位置情報を受信する(S1)。端末制御部81は、各無人航空機100の位置情報を基に、表示部88に各無人航空機100の位置を表示する。
端末制御部81は、操作部83を介したユーザの操作に従って、1つ以上の制御ノードCの情報を取得する(S2)。端末制御部81は、操作部83を介してユーザ操作を受け、予め用意された複数の制御ノードCの形状パターンの情報を、メモリ87等から取得してよい。端末制御部81は、操作部83を介してユーザ操作を受け、複数の制御ノードCの位置や位置関係を指定して複数の制御ノードCを生成することで、制御ノードCの情報を取得してよい。端末制御部81は、1つ以上の制御ノードCを、表示部88に表示させる。
端末制御部81は、各無人航空機100と制御ノードCとの関連付けを行う(S3)。端末制御部81は、複数の無人航空機100のうちのどの無人航空機100と、1つ以上の制御ノードCのうちのどの制御ノードCと、を関連付けるかを、操作部83を介して指定してよい。制御ノードCと無人航空機100とを関連付けるためのユーザ操作は、第1の操作情報の一例である。端末制御部81は、無人航空機100と制御ノードCとの関連付けにおいて、重みwを算出する。
S1〜S3の処理は、無人航空機100の飛行中に行われてもよいし、無人航空機100の飛行前に行われてもよい。
端末制御部81は、操作部83を介してドラッグ操作を受け、制御ノードCの位置を移動させてよい。制御ノードCの位置を移動させるためのユーザ操作(例えばドラッグ操作)は、第2の操作情報の一例である。端末制御部81は、制御ノードCの移動操作が行われたか否かを判別する(S4)。移動操作が行われていない場合、端末制御部81は、S4の処理を繰り返す。一方、移動操作が行われた場合、端末制御部81は、無人航空機100の移動量dnjを算出する(S5)。無人航空機100の移動量dnjの算出は、無人航空機群100Gに含まれるそれぞれの無人航空機100について行われる。
端末制御部81は、算出された無人航空機100の移動量dnjに従って、無人航空機群100Gを移動させた場合、無人航空機100同士が衝突するか否かを判別する(S6)。
無人航空機100同士の衝突が起こると判断された場合、端末制御部81は、表示部88に、無人航空機100同士が衝突する可能性がある旨の警告情報を表示させ(S7)、S4の処理に戻る。この場合、衝突を回避するために、端末制御部81は、無人航空機100の移動を制限する。なお、警告情報の表示とともに、又は警告情報の表示の代わりに、端末制御部81は、音声や振動等により無人航空機100同士の衝突の可能性がある旨を提示してよい。
一方、S6で無人航空機100同士が衝突しない場合、端末制御部81は、通信部85を介して、各無人航空機100に移動量を含む移動制御情報を送信する(S8)。
端末制御部81は、移動後の各無人航空機100の位置情報を基に、表示部88に表示される各無人航空機100の表示位置を更新する(S9)。この場合、端末制御部81は、S5において算出された各無人航空機100の移動量を基に、移動後の無人航空機100の表示位置を更新してよい。この後、端末制御部81は、S4の処理に戻る。
無人航空機100では、UAV制御部110は、端末80からの自機の移動制御情報を受信する(S11)。移動制御情報に含まれる移動量に対応する位置に移動するように、飛行を制御する(S12)。この後、UAV制御部110は、S11の処理に戻る。
このように、飛行体群制御システム10では、端末80は、各無人航空機100の飛行ルートや飛行位置が事前に設定されていない場合でも、制御ノードCを設け、制御ノードCと各無人航空機100とを関連付けておくことで、制御ノードCの移動に応じて各無人航空機100を移動させることができる。よって、端末80は、無人航空機100の飛行中であってもリアルタイムに複数の無人航空機100に対して飛行制御を指示でき、無人航空機100の飛行時の自由度を高くできる。また、ユーザは、無人航空機100に対して個別に飛行ルートや飛行位置の設定のための作業を行う必要がなく、容易に飛行制御を指示できる。端末80は、制御ノードCに対する移動により複数の無人航空機100を移動させることが可能であるので、複数の無人航空機100を操縦するために複数の操作装置を用意する必要がなく、複数の飛行体を連携させることを容易化できる。
また、端末80は、複数の無人航空機100を移動させるための移動制御情報を一括して生成し、制御ノードCの移動に伴う複数の無人航空機100の移動を複数の無人航空機100に指示できる。そのため、無人航空機100は、自機により制御ノードCの移動に対応する移動制御情報を生成しなくても、移動制御情報を取得できる。よって、端末80は、制御ノードCの移動に伴う複数の無人航空機100の移動の制御に係る各無人航空機100の処理負荷を低減できる。
本実施形態の飛行制御指示は、無人航空機100により実施されてもよい。この場合、無人航空機100のUAV制御部110が、端末80の端末制御部81が有する飛行制御指示に関する機能と同様の機能を有する。UAV制御部110は、処理部の一例である。UAV制御部110は、飛行制御指示に関する処理を行う。なお、UAV制御部110による飛行制御指示に関する処理において、端末制御部81が行う飛行制御指示に関する処理と同様の処理については、その説明を省略又は簡略化する。
飛行制御指示は、1つの無人航空機100が全無人航空機の飛行制御を指示してもよいし、各無人航空機100がそれぞれ自機の飛行制御を指示してもよい。飛行制御を指示する無人航空機100を、特定の無人航空機100とも称する。特定の無人航空機100は情報処理装置の一例である。
図9は、端末80及び無人航空機100の動作手順の第2例を示すフローチャートである。動作手順の第1例と同様、例えば無人航空機100の飛行中、UAV制御部110は、通信インタフェース150を介して、GPS受信機240で得られるGPS位置情報(緯度、経度、高度)を一定のタイミングで特定の無人航空機100に繰り返し送信する。
特定の無人航空機100では、UAV制御部101は、通信インタフェース150を介して、各無人航空機100の位置情報を受信する(S31)。UAV制御部101は、GPS受信機240等を介して自機の位置情報も取得する(S31)。
UAV制御部101は、操作部83を介したユーザの操作に従って、1つ以上の制御ノードCの情報を取得する(S32)。この場合、UAV制御部101は、通信インタフェース150を介して、予め用意された複数の制御ノードCの形状パターンの情報を、メモリ160等から取得してよい。UAV制御部101は、通信インタフェース150を介して、端末80により生成された複数の制御ノードCの位置関係に基づく制御ノードCの位置情報を取得してよい。
同様に、端末80においても、端末制御部81は、各無人航空機100の位置情報を取得し、1つ以上の制御ノードC1の情報を取得する。端末制御部81は、制御ノードC1及び無人航空機100の位置を表示部88に表示させる(S21)。
UAV制御部101は、各無人航空機100と制御ノードCとの関連付けを行う(S33)。この場合、端末80では、端末制御部81は、通信インタフェース150を介して、複数の無人航空機100のうちのどの無人航空機100と、1つ以上の制御ノードCのうちのどの制御ノードCと、を関連付けるかを、操作部83を介して指定してよい。端末制御部81は、通信部85を介して、この関連付けに係る操作情報を特定の無人航空機100へ送信する(S22)。UAV制御部101は、通信インタフェース150を介して、関連付けに係る操作情報を取得してよい。関連付けに係る操作情報は、第1の操作情報の一例である。UAV制御部101は、無人航空機100と制御ノードCとの関連付けにおいて、重みwを算出する。
S31〜S33の処理は、無人航空機100の飛行中に行われてもよいし、無人航空機100の飛行前に行われてもよい。
UAV制御部101は、制御ノードCの移動情報を取得する(S34)。この場合、端末80では、端末制御部81は、操作部83を介してドラッグ操作を受け、制御ノードCの位置を移動させてよい。端末制御部81は、通信部85を介して、この制御ノードCの移動情報を特定の無人航空機100へ送信する(S23)。UAV制御部101は、通信インタフェース150を介して、制御ノードCの移動に係る操作情報を、制御ノードCの移動情報として取得してよい。制御ノードCの移動に係る操作情報は、第2の操作情報の一例である。
UAV制御部101は、制御ノードCの移動に係る操作情報に基づいて、無人航空機100の移動量dnjを算出する(S35)。この場合、UAV制御部101は、例えば、制御ノードCの移動に係る操作量と無人航空機100の移動量dnjとの1対1に対応する対応情報(例えば式(3)の情報)を、メモリ160等に保持しておき、参照してよい。無人航空機100の移動量dnjの算出は、無人航空機群100Gに含まれるそれぞれの無人航空機100について行われる。
UAV制御部101は、算出された無人航空機100の移動量dnjに従って、無人航空機群100Gを移動させた場合、無人航空機100同士が衝突するか否かを判別する(S36)。
無人航空機100同士の衝突が起こると判断された場合、UAV制御部101は、通信インタフェース150を介して、無人航空機100同士が衝突する可能性がある旨の警告情報を送信してよい(S37)。S37の後、UAV制御部110は、S31の処理に戻る。端末80では、端末制御部81が、通信部85を介して警告情報を取得し、表示部88に警告情報を表示させてよい(S24)。なお、警告情報の表示とともに、又は警告情報の表示の代わりに、端末制御部81は、音声や振動等により無人航空機100同士の衝突の可能性がある旨を提示してよい。
一方、S36で無人航空機100同士が衝突しない場合、UAV制御部101は、通信インタフェース150を介して、他の無人航空機100(特定の無人航空機100以外の無人航空機100)に、その無人航空機100の移動量を含む移動制御情報を送信する(S38)。
UAV制御部101は、通信インタフェース150を介して、移動後の各無人航空機100の位置情報を端末80へ送信してよい。端末80では、端末制御部81は、移動後の各無人航空機100の位置情報を基に、表示部88に表示される各無人航空機100の表示位置を更新する(S25)。この後、端末制御部81は、S23の処理に戻る。
UAV制御部110は、自機(特定の無人航空機100)の移動量に対応する位置に自機が移動するように、自機の飛行を制御する(S39)。この後、UAV制御部110は、S31の処理に戻る。
このように、飛行体群制御システム10では、無人航空機100は、各無人航空機100の飛行ルートや飛行位置が事前に設定されていない場合でも、制御ノードCを設け、制御ノードCと各無人航空機100とを関連付けておくことで、制御ノードCの移動に応じて各無人航空機100を移動させることができる。よって、無人航空機100は、リアルタイムに複数の無人航空機100に対して飛行制御を指示でき、無人航空機100の飛行時の自由度を高くできる。また、ユーザは、無人航空機100に対して個別に飛行ルートや飛行位置の設定のための作業を行う必要がなく、容易に飛行制御を指示できる。無人航空機100は、制御ノードCに対する移動により複数の無人航空機100を移動させることが可能であるので、複数の無人航空機100を操縦するために複数の操作装置を用意する必要がなく、複数の飛行体を連携させることを容易化できる。
また、無人航空機100が、自機の移動制御情報の生成から移動制御情報に基づく飛行の制御までを、一括して行うことができる。よって、無人航空機100は、制御ノードCの移動に伴う複数の無人航空機100の移動の制御に係る端末80の処理負荷を低減できる。
なお、飛行体群制御システム10が送信機(プロポ)を備える場合、端末80が実行する処理は、送信機が実行してもよい。送信機は、端末80と同様の構成部を有するので、詳細な説明については省略する。送信機は、制御部、操作部、通信部、メモリ、等を有する。操作部は、例えば、無人航空機100の飛行の制御を指示するためのコントロールスティックでよい。例えば、コントロールスティックは、ユーザによる制御ノードCの移動操作を受け付けてよい。送信機は、表示部を有してもよい。
以上、本開示を実施形態を用いて説明したが、本開示の技術的範囲は上述した実施形態に記載の範囲には限定されない。上述した実施形態に、多様な変更又は改良を加えることが当業者に明らかである。その様な変更又は改良を加えた形態も本開示の技術的範囲に含まれ得ることが、特許請求の範囲の記載からも明らかである。
特許請求の範囲、明細書、及び図面中において示した装置、システム、プログラム、及び方法における動作、手順、ステップ、及び段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現可能である。特許請求の範囲、明細書、及び図面中の動作フローに関して、便宜上「先ず、」、「次に」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。