(57)【特許請求の範囲】
【請求項１】
ミッションプランを動的に修正するシステムであって、
任意の数のコンピュータ、
任意の数のコンピュータのうちの第１のコンピュータによって実行されるグラフィカルユーザインターフェース、
第１のコンピュータに格納された第１のプログラムコードであって、ミッション要素データベースからの任意の数のミッション要素を用いてミッションプランを定義するために第１のコンピュータによって実行される第１のプログラムコード、
ミッション要素データベースからの任意の数のミッション要素を記述して図解式に示す、グラフィカルユーザインターフェース上のグラフィカルディスプレイであって、グラフィカルディスプレイは、少なくとも、ミッションプランの実行を開始する、ターゲットを点検する、構造を観察する、進行を監視するミッション要素を少なくとも含み、グラフィカルディスプレイは、ミッションプランを修正する任意の数のミッション要素の一つ以上に対するユーザ入力を受け取りし、
任意の数のコンピュータのうちの少なくとも第２のコンピュータに格納された第２のプログラムコードであって、第１のコンピュータと第２のコンピュータとはネットワークを介して通信し、第２のプログラムコードは、リアルタイムで、任意の数のアセットに対するミッションプランを実行するための命令を生成し、ミッションプラン実行中に任意の数のアセットを監視し、任意の数のアセットの利用可能性、ミッションプランの実行における使用に関する任意の数のアセットの即応性、任意の数のアセットの健全性、任意の数のアセットのリソース使用、任意の数のアセットによるリソースの枯渇、又は任意の数のアセットの現状のうち少なくとも一つについての情報に基づいて、任意の数のアセットに対する命令が、任意の数のアセットに割り当てられる、第２のプログラムコード、
任意の数のアセットから任意の数のコンピュータへメッセージを転送し、任意の数のコンピュータから任意の数のアセットへ命令を転送する通信システム、
を備え、
第１のコンピュータは、第２のコンピュータから遠隔地に物理的に位置し、第１のコンピュータによって実行されるグラフィカルユーザインターフェース上のグラフィカルディスプレイが、ミッションプランを修正するユーザ入力を受け取る場合に、ミッションプランの実行中に、ミッションプランに対する命令が、リアルタイムに、第２のコンピュータ上で生成される、
システム。
【請求項２】
任意の数のアセットが、ビークル、センサ、充電所、及びマシンのうちの少なくとも一つを含み、任意の数のアセットは、第１のコンピュータと通信するよう構成されている、請求項１に記載のシステム。
【請求項３】
任意の数のミッション要素がミッション要素ライブラリに格納されている、請求項１に記載のシステム。
【請求項４】
任意の数のミッション要素が第１のプログラムコードによって生成される、請求項１に記載のシステム。
【請求項５】
第１のプログラムコードがネットワークを介して第２のプログラムコードと通信する、請求項１に記載のシステム。
【請求項６】
第１のプログラムコードが第２のプログラムコードと拡張マークアップ言語−遠隔手続き呼び出しを用いて通信する、請求項１に記載のシステム。
【請求項７】
第２のコンピュータにおいて、ミッションプランの実行の定義、修正、実行、及び監視のうちの少なくとも一つを任意の数のユーザが実行することによって生成される任意の数のミッション要素の選択を更に含み、
任意の数のコンピュータのうちの複数のコンピュータが第１のプログラムコードの複数のインスタンスを実行し、第２のコンピュータは前記複数のコンピュータのうちの一つではなく、且つ第２のコンピュータが前記複数のコンピュータと通信することで、複数のユーザがミッションプランの実行の定義、修正、実行、及び監視を同時に行うことが可能になる、請求項１に記載のシステム。
【請求項８】
各ミッション要素に任意の数のミッションタスクが含まれており、且つシステムが、複数のミッションプランの実行を同時に定義、更新、実行及び監視する、請求項１に記載のシステム。
【請求項９】
ミッションプランニング方法であって、
ミッション要素データベースからのミッションプランに対する任意の数のミッション要素を図解式に示すグラフィカルユーザインターフェース上にグラフィカルディスプレイを記述すること、グラフィカルディスプレイは、ミッションプランの実行を開始する、ターゲットを点検する、構造を観察する、進行を監視するミッション要素を少なくとも含み、
コンピュータにより、グラフィカルディスプレイから、ミッションプランを修正する任意の数のミッション要素の一つ又は複数に対するユーザ入力を受け取ること、
コンピュータがミッションプランを修正するグラフィカルディスプレイからユーザ入力を受け取る場合に、任意の数のミッション要素に基づいてミッションプランに対する命令を生成することであって、
任意の数のアセットの利用可能性、ミッションプランの実行における使用に関する任意の数のアセットの即応性、任意の数のアセットの健全性、任意の数のアセットのリソース使用、任意の数のアセットによるリソースの枯渇、又は任意の数のアセットの現状のうち少なくとも一つについての情報に基づいて、命令が、任意の数のアセットに割り当てられ、
任意の数のミッション要素を任意の数のアセットに割り当てること、
任意の数のアセットにより任意の数のミッション要素の実行を制御すること、
ミッションプランの実行中に、任意の数のアセットからミッションプランナーによってメッセージを受信すること、ミッションプランナーは任意の数のアセットから離れている、
ミッションプランを実行する任意の数のアセットを監視すること、
並びに
ミッションプランの再構成が必要か否か決定すること
を含む方法。
【請求項１０】
ミッションプランの再構成が不要であるとの決定に応じて、ミッションプランの実行が完了しているかどうかを決定すること
をさらに含む、請求項９に記載の方法。
【請求項１１】
任意の数のミッション要素を記述して図解式に示す、グラフィカルユーザインターフェース上のグラフィカルディスプレイが、ミッションプランナークライアントである、請求項９に記載の方法。
【請求項１２】
ミッションスクリプトは、任意の数のミッション要素を用いてミッション管理フレームワークによって生成される、請求項９に記載の方法。
【請求項１３】
任意の数のミッション要素は、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、請求項９に記載の方法。
【請求項１４】
ユーザが、グラフィカルユーザインターフェースと任意の数のアセットとを用いて、任意の数のミッション要素を修正するために、座標パラメータを任意の数のミッション要素に入力する、請求項９に記載の方法。
【請求項１５】
受け取ること、生成すること、割り当てること、制御すること、及び監視することは、リアルタイムで実行される、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概してミッションに関し、具体的にはミッションプランニングのための方法とシステムに関する。さらに詳細には、本発明は、実時間でミッションを定義、実行及び修正するための方法とシステムに関する。
【背景技術】
【０００２】
ミッションプランニングには、様々なリソースとタスクとが含まれ、それらがまとまって一つのミッションを形成する。例えば、ミッションを構成する様々なタスクのために、様々なリソースが利用される。複雑なミッションは、複数のリソースと複数のタスクとを単一のミッションとして運用するために手書きされなければならず、ミッション実行中に変更することはできない。
【０００３】
ミッションは、典型的には手書きされ、オフラインで完成されてからコンピュータシステムにより実行される。このような現行システムの多くは、例えば広域探索ミッションのような単一ミッションの種類に特異的である。既存の解決法は、飛行中にミッションを作成及び修正する必要のある動的な応用分野においては実用的でない。ミッションの実行が開始されたら、実行中にミッションを修正することはできない。
【０００４】
したがって、上述の問題の一又は複数に対処する方法と装置を有することが望ましい。
【発明の概要】
【０００５】
種々の有利な実施形態により、任意の数のコンピュータ、グラフィカルユーザインターフェース、コンピュータに格納される第１のプログラムコード、及びコンピュータに格納される第２のプログラムコードを備えたシステムが提供される。グラフィカルユーザインターフェースは、任意の数のコンピュータのうちの一つによって実行される。コンピュータは、第１のプログラムコードを実行することにより、任意の数のミッション要素を用いてミッションを定義する。コンピュータは、第２のプログラムコードを実行することにより、任意の数のアセットに対するミッションの実行命令を生成し、ミッション実行の間にそれら任意の数のアセットを監視する。
【０００６】
種々の有利な実施形態により、さらに、ミッションプランニングの方法が提供される。コンピュータはミッションのユーザ定義を受け取る。ユーザ定義及び任意の数のミッション要素を用いてミッションのスクリプトが生成される。任意の数のミッション要素は任意の数のアセットに割り当てられる。任意の数のアセットによる任意の数のミッション要素の実行が制御される。ミッションを実行する任意の数のアセットが監視される。
【０００７】
種々の有利な実施形態により、さらに、コンピュータで記録可能な記憶媒体及びコンピュータで記録可能な記憶媒体に格納されたプログラムコードを含むミッションプランニングのためのコンピュータプログラム製品が提供される。プログラムコードは、ミッションのユーザ定義を受け取り、ユーザ定義と任意の数のミッション要素とを用いてミッションスクリプトを生成し、任意の数のミッション要素を任意の数のアセットに割り当て、任意の数のミッション要素を用いて任意の数のアセットに対するミッションの実行命令を生成し、ミッションを実行する任意の数のアセットを監視する。
【０００８】
上記のフィーチャ、機能及び利点は、本発明の様々な実施形態において独立に実現することが可能であるか、他の実施形態において組み合わせることが可能である。これらの実施形態について、後述の説明及び添付図面を参照してさらに詳細に説明する。
【図面の簡単な説明】
【０００９】
新規のフィーチャと考えられる有利な実施形態の特徴は、特許請求の範囲に明記される。しかしながら、有利な実施形態と、好ましい使用モードと、さらにはその目的及び利点とは、添付図面を参照して本発明の有利な一実施形態の以下の詳細な説明を読むことにより最もよく理解されるであろう。
【００１０】
【図１】有利な一実施形態を実施可能なネットワークプランニング環境を示している。
【図２】有利な一実施形態によるデータ処理システムを示している。
【図３】有利な一実施形態によるミッションプランニング環境を示している。
【図４】有利な一実施形態によるミッションプランナークライアントを示している。
【図５】有利な一実施形態によるミッションプランナーサーバを示している。している。
【図６】有利な一実施形態によるグラフィカルユーザインターフェースを示している。している。
【図７】有利な一実施形態によるグラフィカルユーザインターフェースを示している。している。
【図８】有利な一実施形態によるグラフィカルユーザインターフェースを示している。している。
【図９】有利な一実施形態によるグラフィカルユーザインターフェースを示している。している。
【図１０】有利な一実施形態によるミッションプランニングプロセスを示すフロー図である。している。
【図１１】有利な一実施形態によるミッション定義プロセスを示すフロー図である。
【発明を実施するための形態】
【００１１】
添付図面、特に図１及び２は、本発明の有利な実施形態を実施可能なデータ処理環境を例示的に図示している。図１及び２は例示にすぎず、種々の実施形態が実施される環境に関していかなる制限をも主張又は示唆するものではない。図示の環境に対する多くの修正例が作成可能である。
【００１２】
ここで添付図面を参照する。図１は、本発明の有利な実施形態を実施可能なネットワークプランニング環境を図解している。ネットワークプランニング環境１００は、実施形態を実施可能なコンピュータのネットワークである。ネットワークプランニング環境１００はネットワーク１０１を含む。ネットワーク１０１は、ネットワークプランニング環境１００内部で互いに接続する様々なデバイス及びコンピュータ間の通信リンクとなるために使用される媒体である。ネットワーク１０１は、有線、無線通信リンク、又は光ファイバケーブルといった接続部分を含むことができる。
【００１３】
図示の実施例では、ミッションプランニングシステム１０２は、任意の数のアセット１０８と共にネットワーク１０１に接続している。ミッションプランニングシステム１０２は、有利な一実施形態では、任意の数のサーバと任意の数のクライアントとを含むことができる。別の有利な実施形態では、ミッションプランニングシステム１０２のサーバ及びクライアントは、任意の数の場所に位置し、例えばネットワーク１０１に接続することができる。ミッションプランニングシステム１０２には、例えば、データ処理システム、パーソナルコンピュータ、及び／又はネットワークコンピュータが含まれる。
【００１４】
任意の数のユーザ１０４は、ミッションプランニングシステム１０２と対話することにより、ミッション１０６をプランニングし、実時間環境でミッション１０６を監視し、及び／又は実時間環境でミッション１０６を修正する。任意の数のユーザ１０４は、人間のユーザ、ロボット及び／又は機械のユーザ、プログラムコード、並びに／或いはミッションプランニングシステム１０２の他の適切なユーザを含みうる。
【００１５】
任意の数のアセット１０８は、無線通信リンク又はネットワーク１０１を使用する他のいずれかの種類の通信リンクを介してミッションプランニングシステム１０２とデータを交換する。このような実施例では、任意の数のアセット１０８は、コンピュータ及び／又はコンピュータにより制御されるアセットでありうる。コンピュータにより制御されるアセットには、例えば、限定されないが、モバイルアセット、ビークル、センサ、マシン、充電所、及び／又は他のいずれかの適切なアセットが含まれる。ネットワークプランニング環境１００には、追加のサーバプロセス、クライアントプロセス、及び図示しない他のデバイスが含まれてもよい。
【００１６】
任意の数のアセット１０８は、図示の実施例において、ミッション１０６を達成するために任意の数のタスク１１０を実行する。ミッション１０６はタスクの集合でありうる。例えば、任意の数のタスク１１０を組み合わせてミッション１０６が形成される。
【００１７】
図示の実施例では、ネットワークプランニング環境１００は、互いに通信するためにＴＣＰ／ＩＰ（TransmissionControlProtocol/InternetProtocol）式のプロトコルを使用するネットワーク及びゲートウェイの世界的集合を表わすネットワーク１０１を有するインターネットである。言うまでもなく、ネットワークプランニング環境１００は、任意の数の異なる種類のネットワーク（例えば、イントラネット、ローカルエリアネットワーク（ＬＡＮ）、又はワイドエリアネットワーク（ＷＡＮ））として実施することもできる。図１は、実施例として意図されており、異なる実施形態をアーキテクチャ的に制限するものではない。
【００１８】
次に、図２は、有利な一実施形態によるデータ処理システムのブロック図である。データ処理システム２００は、ミッションプランニングシステム１０２及び任意の数のアセット１０８といったサーバ及びクライアントを実施するために使用できるデータ処理システムの一例である。
【００１９】
この実施例では、データ処理システム２００は通信ファブリック２０２を含み、これによりプロセッサユニット２０４、メモリ２０６、固定記憶域２０８、通信ユニット２１０、入出力（Ｉ／Ｏ）ユニット２１２、及びディスプレイ２１４の間の通信を可能にする。
【００２０】
プロセッサユニット２０４は、メモリ２０６にローディングされるソフトウェアに対する命令を実行するように働く。プロセッサユニット２０４は、特定の実装態様に応じて、任意の数のプロセッサ、マルチプロセッサコア、又は他の何らかの種類のプロセッサであってもよい。本明細書でアイテムに言及して「任意の数の」というとき、一又は複数のアイテムを意味する。さらに、プロセッサユニット２０４は、単一チップ上にメインプロセッサと二次プロセッサとが共存する任意の数の異種プロセッサシステムを使用して実施されてもよい。別の実施例では、プロセッサユニット２０４は同種のプロセッサを複数個含む対称型マルチプロセッサシステムであってもよい。
【００２１】
メモリ２０６及び固定記憶域２０８は、記憶装置２１６の例である。記憶装置は、例えば、限定しないが、データ、機能的な形態のプログラムコード、及び／又は他の好適な情報などの情報を、一時的に及び／又は永続的に格納することができる任意のハードウェア部分である。このような実施例では、メモリ２０６は、例えば、ランダムアクセスメモリか、或いは他のいずれかの適切な揮発性又は非揮発性の記憶装置とすることができる。固定記憶域２０８は、特定の実装態様に応じて様々な形態をとることができる。
【００２２】
例えば、固定記憶域２０８は、一又は複数のコンポーネント又はデバイスを含みうる。例えば、固定記憶域２０８は、ハードドライブ、フラッシュメモリ、書換え形光ディスク、書換え可能磁気テープ、又はそれらの何らかの組み合わせである。固定記憶域２０８によって使用される媒体は、取り外し可能なものでもよい。例えば、取り外し可能なハードドライブを固定記憶域２０８に使用することができる。
【００２３】
このような実施例では、通信ユニット２１０は、他のデータ処理システム又はデバイスとの通信を行う。このような実施例では、通信ユニット２１０はネットワークインターフェースカードである。通信ユニット２１０は、物理的通信リンク及び無線の通信リンクのいずれか一方又は両方を使用することによって、通信を行うことができる。
【００２４】
入出力ユニット２１２により、データ処理システム２００に接続可能な他のデバイスによるデータの入力及び出力が可能になる。例えば、入出力ユニット２１２は、キーボード、マウス、及び／又は他の何らかの適切な入力装置を介してユーザ入力のための接続を提供することができる。さらに、入出力ユニット２１２は、プリンタに出力を送ることができる。ディスプレイ２１４は、ユーザに対して情報を表示する機構を提供する。
【００２５】
オペレーティングシステム、アプリケーション、及び／又はプログラムに対する命令は、記憶装置２１６に格納されており、通信ファブリック２０２を介してプロセッサ装置２０４と通信する。このような実施例では、命令は固定記憶域２０８上において機能的な形態になっている。これらの命令は、メモリ２０６にローディングされてプロセッサユニット２０４によって実行される。メモリ２０６のようなメモリに位置させることができるコンピュータで実施可能な命令を使用して、プロセッサユニット２０４により様々な実施形態のプロセスを実行することができる。
【００２６】
これらの命令は、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読込可能なプログラムコードと呼ばれ、プロセッサユニット２０４内の１つのプロセッサによって読込まれて実行されうる。異なる実施形態のプログラムコードは、メモリ２０６又は固定記憶域２０８など、異なる物理的な又は有形の、コンピュータで読込可能な媒体上に具現化することができる。
【００２７】
プログラムコード２１８は、選択的に取り外し可能なコンピュータで読込可能な媒体２２０上に機能的な形態で位置し、データ処理システム２００にローディング又は転送されて、プロセッサユニット２０４によって実行される。プログラムコード２１８及びコンピュータで読込可能な媒体２２０は、このような実施例ではコンピュータプログラム製品２２２を形成する。一実施例では、コンピュータで読込可能な媒体２２０は、コンピュータで読込可能な記憶媒体２２４又はコンピュータで読込可能な信号媒体２２６である。コンピュータで読込可能な記憶媒体２２４は、例えば、固定記憶域２０８の一部であるドライブ又は他のデバイスに挿入又は配置されて、固定記憶域２０８の一部である、ハードドライブなどの記憶装置上に転送される光ディスク又は磁気ディスクなどを含みうる。コンピュータで読込可能な記憶媒体２２４は、データ処理システム２００に接続されているハードドライブ、サムドライブ、又はフラッシュメモリなどの固定記憶域の形態もとりうる。幾つかの例では、コンピュータで読込可能な記憶媒体２２４は、データ処理システム２００から着脱可能でなくともよい。このような実施例では、コンピュータで読込可能な記憶媒体２２４は、固定のコンピュータで読込可能な記憶媒体である。
【００２８】
別の構成では、プログラムコード２１８は、コンピュータで読込可能な信号媒体２２６を用いてデータ処理シスム２００に転送可能である。コンピュータで読込可能な信号媒体２２６は、例えば、プログラムコード２１８を含む伝播されたデータ信号であってもよい。例えば、コンピュータで読込可能な信号媒体２２６は、電磁信号、光信号、及び／又は他のいずれかの適切な種類の信号であってもよい。これらの信号は、無線通信リンク、光ファイバケーブル、同軸ケーブル、有線、及び／又は他のいずれかの適切な種類の通信リンクといった通信リンクによって転送される。換言すると、本発明の実施例では、通信リンク及び／又は接続は物理的なもの又は無線によるものでありうる。
【００２９】
幾つかの有利な実施形態では、プログラムコード２１８は、コンピュータで読込可能な信号媒体２２６により他のデバイス又はデータ処理システムからネットワークを介して固定記憶域２０８にダウンロードされて、データ処理システム２００内で使用される。例えば、サーバーデータ処理システムのコンピュータで読込可能な記憶媒体に格納されたプログラムコードは、ネットワークを介してサーバーからデータ処理システム２００にダウンロードすることができる。プログラムコード２１８を提供するデータ処理システムは、サーバーコンピュータ、クライアントコンピュータ、又はグラムコード２１８を保存及び転送することができる他の何らかのデバイスであってもよい。
【００３０】
データ処理システム２００に例示されている種々のコンポーネントは、種々の実施形態を実施できる方法をアーキテクチャ的に制限するものではない。種々の有利な実施形態を、データ処理システム２００に図解されているコンポーネントに追加の又はその代わりのコンポーネントを含むデータ処理システム内において実施することができる。図２に示す他のコンポーネントは、図示の実施例から変更することができる。種々の実施形態は、プログラムコードを実行できる任意のハードウェアデバイス又はシステムを使用して実施することができる。一実施例として、データ処理システムは、無機コンポーネントと一体化した有機コンポーネントを含むことができる、及び／又は全体を人間を除く有機コンポーネントで構成することができる。例えば、記憶装置は、有機半導体で構成することができる。
【００３１】
別の実施例として、データ処理システム２００に含まれる記憶装置は、データを格納できる任意のハードウェア装置である。メモリ２０６、固定記憶域２０８、及びコンピュータで読み取り可能な媒体２２０は、有形形態の記憶装置の例である。
【００３２】
別の実施例では、バスシステムを使用して通信ファブリック２０２を実施することができ、このバスシステムは、システムバス又は入出力バスといった一又は複数のバスから構成することができる。言うまでもなく、バスシステムは、バスシステムに取り付けられた種々のコンポーネント又はデバイスの間でのデータ伝送を行う任意の適切な種類のアーキテクチャを使用して実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタといったデータの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは、例えば、メモリ２０６、又はインターフェースに見られるようなキャッシュ、及び通信ファブリック２０２中に存在するメモリコントローラハブとすることができる。
【００３３】
本明細書において、列挙されたアイテムと共に使用する「〜のうちの少なくとも１つの」という表現は、列挙されたアイテムのうちの一又は複数からなる様々な組み合わせが使用可能であり、且つ列挙された各アイテムが１つだけあればよいことを意味する。例えば、「アイテムＡ、アイテムＢ、及びアイテムＣのうちの少なくとも１つ」は、例えば、限定しないが、「アイテムＡ」、又は「アイテムＡとアイテムＢ」を含む。この例は、「アイテムＡとアイテムＢとアイテムＣ」、又は「アイテムＢとアイテムＣ」も含む。
【００３４】
本明細書において、第１のコンポーネントが第２のコンポーネントに接続されているとき、他のコンポーネントなしで第１のコンポーネントは第２のコンポーネントに接続していてよい。第１のコンポーネントは、一又は複数の他のコンポーネントによって第２のコンポーネントに接続されてもよい。例えば、一の電子デバイスと別の電子デバイスとは、間に他の電子デバイスを何も介さずに接続されてよい。場合によっては、互いに接続された二つの電子デバイスの間に別の電子デバイスが存在してもよい。
【００３５】
種々の有利な実施形態は、現行のミッションプランニングシステムでは、オフラインでのミッションのスクリプト作成を行なった後、オフラインで完成させてからミッションを実行することを認識し、考慮している。このような現行システムの多くは、例えば広域探索ミッションのような単一ミッションの種類に特異的である。既存の解決法は、飛行中にミッションを作成及び修正する必要のある動的な応用分野においては実用的でない。このような現行システムは、固定的であり、実行開始後にミッションを修正しない。現在利用可能なシステムでは、ユーザがコードを記述するだけでなく、ミッションのスクリプトを手書きで作成できなければならない。ミッションの手書きによるスクリプト作成は、大きな労働力を必要とし、非常にコスト高である。加えて、手書きのミッションは、メモ書きに基づいて構築されているためさらに大量の試験を要し、この試験プロセスはミッションの複雑性を増大させる。
【００３６】
したがって、種々の有利な実施形態により、任意の数のコンピュータ、グラフィカルユーザインターフェース、コンピュータに格納される第１のプログラムコード、及びコンピュータに格納される第２のプログラムコードを備えたシステムが提供される。グラフィカルユーザインターフェースは、任意の数のコンピュータのうちの一つによって実行される。コンピュータは、第１のプログラムコードを実行することにより、任意の数のミッション要素を用いてミッションを定義する。コンピュータは、第２のプログラムコードを実行することにより、任意の数のアセットに対するミッションの実行命令を生成し、ミッション実行の間にそれら任意の数のアセットを監視する。
【００３７】
種々の有利な実施形態により、さらに、ミッションプランニングの方法が提供される。コンピュータはミッションのユーザ定義を受け取る。ユーザ定義及び任意の数のミッション要素を用いてミッションのスクリプトが生成される。任意の数のミッション要素は任意の数のアセットに割り当てられる。任意の数のアセットによる任意の数のミッション要素の実行が制御される。ミッションを実行する任意の数のアセットが監視される。
【００３８】
種々の有利な実施形態により、さらに、コンピュータで記録可能な記憶媒体及びコンピュータで記録可能な記憶媒体に格納されたプログラムコードを含むミッションプランニングのためのコンピュータプログラム製品が提供される。プログラムコードは、ミッションのユーザ定義を受け取り、ユーザ定義と任意の数のミッション要素とを用いてミッションスクリプトを生成し、任意の数のミッション要素を任意の数のアセットに割り当て、任意の数のミッション要素を用いて任意の数のアセットに対するミッションの実行命令を生成し、ミッションを実行する任意の数のアセットを監視する。
【００３９】
次に図３を参照する。図３は、有利な一実施形態によるミッションプランニング環境を示している。ミッションプランニング環境３００は、例えば図１のネットワークプランニング環境１００のようなネットワーク環境において実施される。
【００４０】
ミッションプランニング環境３００は、例えば、ミッションの生成、監視、更新、修正、及び／又は承認に適した任意の種類の環境とすることができる。ミッションプランニング環境３００には、ミッションプランニングシステム３０２が含まれる。ミッションプランニングシステム３０２は、図１のミッションプランニングシステム１０２の一実施例である。ミッションプランニングシステム３０２は、種々の有利な実施形態では、任意の数のアセットを伴う任意の数のミッションの定義、実行、及び監視を行う。
【００４１】
ミッションプランニング環境３０２には、コンピュータシステム３０４が含まれる。コンピュータシステム３０４は、任意の数のコンピュータ、及び／又はデータ処理システム（例えば、図２のデータ処理システム２００）として実施することができる。コンピュータシステム３０４には、任意の数のミッションプランナークライアント３０６及びミッションプランナーサーバ３０８が含まれる。有利な一実施形態では、コンピュータシステム３０４は任意の数のデータ処理システムを用いて実施することができ、この場合各データ処理システムは、任意の数のミッションプランナークライアント３０６のインスタンスを含み、例えば図１のネットワーク１０１のようなネットワークを用いて中央データ処理システムでミッションプランナーサーバ３０８に接続する。別の有利な実施形態では、任意の数のミッションプランナークライアント３０６及びミッションプランナーサーバ３０８は、例えば、同じデータ処理システム上で実施され、任意の数の異なるデータ処理システムを用いてアクセスされる。
【００４２】
任意の数のミッションプランナークライアント３０６は、遠隔でミッションを構築するために使用されるグラフィカルユーザインターフェースである。任意の数のミッションプランナークライアント３０６には、任意の数のデバイス３１０及び任意の数のモジュール３１２が含まれる。任意の数のデバイス３１０には、例えば、限定されないが、ディスプレイ、データグローブ、パーソナル携帯情報機器、ラップトップ、マウス、トラックパッド、キーボード、ジョイスティック、タッチスクリーン、光インターフェース、視覚インターフェース、触覚インターフェース、ビデオコンソール、ワイヤレスコントローラ、ワイヤレス三次元（３Ｄ）コントローラ、及び／又は他のいずれかの適切なデバイスが含まれる。一実施例では、ワイヤレス３Ｄコントローラは、三次元空間において運動を検知するための任意の数の加速度計及び赤外線検出器を含む遠隔制御式ポインティングデバイスである。別の実施例では、ワイヤレス３Ｄコントローラには、ミッションプランナーサーバ３０８により生成されたミッションに含まれるミッション要素により制御される場合、任意の数のモバイルアセットを直接制御するために使用される任意の数の加速度計が含まれる。有利な一実施形態では、例えば、ミッションプランナーサーバ３０８によって生成された特定のミッション要素に、任意の数のデバイス３１０を使用することができる。
【００４３】
任意の数のミッションプランナークライアント３０６は、例えば、限定しないが、拡張マークアップ言語−遠隔手続き呼び出し（ＸＭＬ−ＲＰＣ）といったメッセージングフォーマットにより、ミッションプランナーサーバ３０８と通信する。一実施例では、任意の数のモジュール３１２は、任意の数のミッションプランナークライアント３０６用のグラフィカルコンポーネントのwxPythonのような言語で記述される。任意の数のモジュール３１２には、例えば、限定されないが、ミッション要素の記述及び作成に必要なデータ及び関数と、ミッションの作成中に任意の数のミッションプランナークライアント３０６のグラフィカルユーザインターフェース内でミッション要素を扱うために必要とされるグラフィカルコンポーネントとが含まれる。任意の数のユーザ３１４は、任意の数のモジュール３１２及び任意の数のミッションプランナークライアント３０６の任意の数のデバイス３１０を用いてミッション要素を作成することができる。
【００４４】
ミッションプランナーサーバ３０８は、例えば図２のデータ処理システム２００のようなコンピュータ上で実行されるプロセスである。ミッションプランナーサーバ３０８は、任意の数のミッションプランナークライアント３０６から到来するＸＭＬ−ＲＰＣの通信を聞いて、到来する通信を処理することにより、例えば、現行のミッションの照会及び修正を行う。ミッションプランナーサーバ３０８は、現行のミッションの実行前及び実行中に現行のミッションをメモリ（例えば、図２のメモリ２０６）内に維持するので、任意の数のミッションプランナークライアント３０６は、実時間で新規要素を追加しながら、現行ミッションを作成及び実行することができる。
【００４５】
ミッションプランナーサーバ３０８には、任意の数のモジュール３１６及びミッション管理フレームアーク３１８が含まれる。一実施例では、任意の数のモジュール３１６は、パイソンのような言語で記述される。任意の数のモジュール３１６には、例えば、限定されないが、ミッションの関数及びパラメータを識別、操作、及び記憶するため、並びにミッション実行中の情報についてミッション要素を解析するために必要な、データ及び関数が含まれる。
【００４６】
ミッション管理フレームワーク３１８は、ミッション要素のライブラリ、及びアセットのライブラリ、さらには任意の数のタスク割り当てプロセスを含むシステムである。ミッション要素のライブラリには、現行ミッションで実行されるべき任意の数のミッション要素が含まれる。任意の数のミッション要素は、例えば、ミッション作成中に、ミッション要素データベース３１９から取り出され、ミッションプランナーサーバ３０８によってミッション要素のライブラリに保存される。ミッション要素データベース３１９には、ユーザによって定義される前の、任意の数のミッション要素が含まれる。
【００４７】
アセットのライブラリには、各アセットに関する情報と共に、すべてのアセット（例えば、任意の数のアセット３２４）のリストが含まれる。例えば、アセットのライブラリには、アセットの利用可能性、ミッション及び／又はタスクへの使用に関するアセットの即応性、アセットの健全性、アセットのリソース使用、アセットによるリソースの枯渇、アセットの現状、及び／又はアセットに関する他のいずれかの適切な情報が含まれる。
【００４８】
ミッション管理フレームワーク３１８は、任意の数のミッション要素を実行するために必要とされるタスク及びアセットを識別し、識別された任意の数のアセットに対し、任意の数のタスク及び／又はミッション実行の割り当て及び制御命令を送る。ミッション実行中に問題が生じると、ミッション管理フレームワーク３１８は、例えば、利用可能なアセットを用いて、自律的にミッションを再構成することによりミッションの目的を達成する。換言すれば、アセットはミッションプランニングシステム３０２の延長となり、この場合、例えば、ミッション管理フレームワーク３１８は頭脳であり、アセットは身体の構成要素である。ミッション管理フレームワーク３１８は、アセットへのタスク実行命令を送り出し、アセットから返送されるタスクの状況及び／又はアセットの状況に関する情報を受取る。アセットからのこれらのメッセージを、ミッション管理フレームワーク３１８が使用して、ボトムアップ及びトップダウンプランニング構造においてミッション実行中に動的に命令を再構成する。
【００４９】
通信システム３２０は、コンピュータシステム３０４を任意の数のアセット３２４に接続する。通信システム３２０は、ミッション管理フレームワーク３１８と任意の数のアセット３２４との間での情報３２２の送受信を行う。情報３２２には、例えば、限定されないが、コマンド３２６、プログラム３２８、及びメッセージ３３０が含まれる。通信システム３２０は、種々の有利な実施形態では、無線通信システムでも有線通信システムでもよい。
【００５０】
有利な一実施形態では、任意の数のユーザ３１４は、コンピュータシステム３０４上で任意の数のミッションプランナークライアント３０６を用いて、ミッションプランニングタスクを開始する。例えば、任意の数のユーザ３１４は、ミッションプランニングシステム３０２が実行する特定のタスク又はミッションを識別しうる。任意の数のユーザ３１４は、任意の数のアセット３２４の近くにいる場合も、又は任意の数のアセット３２４から離れている場合もある。例えば、任意の数のアセット３２４は、任意の数のユーザ３１４とは異なる場所、国、又は惑星（例えば、月に展開されて、地球からミッション管理フレームワーク３１８によって制御されている任意の数の自律乗物）に所在しているかもしれない。ミッションプランニングシステム３０２は、任意の数のアセット３２４に任意の数のユーザ３１４がどれだけ近接しているか、又はいないかに関係なく、任意の数のユーザ３１４に対し、任意の数のアセット３２４によるミッションの実行中に実時間で複雑なミッションを構築及び監視する能力を供給する。任意の数のモバイルアセット３３２、任意の数のセンサ３３４、任意の数のマシン３３６、及び任意の数の充電所３３８は、任意の数のアセット３２４に含まれうる任意の数のアセットの例である。
【００５１】
任意の数のモバイルアセット３３２には、例えば、限定されないが、任意の数のビークル３４０が含まれる。任意の数のビークル３４０は、限定しないが、自律乗物、準自律乗物、無人ビークル、有人ビークル、及び／又は他のいずれかの適切なビークルを含むいずれかの種類のビークルとすることができる。ビークルは、例えば、自動車、陸上車両、船舶、航空機、宇宙船、壁面走行ロボット、及び／又は他のいずれかの適切な種類のビークルとすることができる。
【００５２】
一実施例では、任意の数のユーザ３１４は、任意の数のミッションプランナークライアント３０６を使用してミッションを構築することができる。任意の数のミッションプランナークライアント３０６は、任意の数のユーザ３１４によって構築されているときに、ミッションプランナーサーバ３０８にミッションを動的に伝える。ミッションプランナーサーバ３０８は、ミッション管理フレームワーク３１８の高レベルのスクリプトを生成する。例えば、高レベルのミッションスクリプトには、高レベルのコマンドが含まれる。ミッション管理フレームワーク３１８は、これらの高レベルのコマンドを低レベルのコマンドに変換し、任意の数のアセット３２４のうちの特定のアセットのミッションスクリプトを生成する。例えば、ミッション管理フレームワーク３１８により生成されるミッションスクリプトには、ミッション要素に関連付けられた一又は複数の特定のアセットを作動させて展開するためのコマンドが含まれる。ミッションスクリプトは任意の数の命令である。これらの命令には、例えば、任意の数のアセット３２４のコマンド３２６及び／又はプログラム３２８が含まれる。ミッション管理フレームワーク３１８は、通信システム３２０を用いて、コマンド３２６及び／又はプログラム３２８を有するミッション３４２を任意の数のアセット３２４に送る。任意の数のアセット３２４は、コマンド３２６及び／又はプログラム３２８に従ってミッション３４２を実行し、ミッションの実行中にミッション管理フレーム３１８にメッセージ３３０を返す。メッセージ３３０には、例えば、限定されないが、ミッションの状況、任意の数のタスクの状況、及び／又は任意の数のアセット３２４の状況が含まれる。ミッション管理フレームワーク３１８は、受け取ったメッセージ３３０中の情報を使用してミッション３４２を修正し、修正済みミッション３４４を任意の数のアセット３２４に送り返す。
【００５３】
一実施例では、メッセージ３３０は、ミッション３４２に含まれるタスク完了前に現行の燃料リソースを使い切る任意の数のビークル３４０のうちの一又は複数に関する情報を含むことができる。ミッション管理フレームワーク３１８は、この実施例では、ミッション３４２を再構成することにより、燃料補給の済んだ、未完了のタスクを完了させることが可能な別のビークルを識別して、未完了のタスクを完了させる新規ビークルを指定する修正済みミッション３４４を送ることができる。
【００５４】
図３に示すミッションプランニング環境３００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割されてもよい。
【００５５】
例えば、ミッションプランニングシステム３０２は、コンピュータシステム３０４に加えて、他のコンピュータシステムで実施することができる。別の有利な実施形態では、コンピュータシステム３０４は、例えば、同時ミッションプランニング及び／又は複数ミッションのプランニングにおいて、任意の数のユーザ３１４によって使用される追加的データ処理システム上で実施される追加のミッションプランナークライアントを含むことができる。
【００５６】
次に図４を参照する。図４は、有利な一実施形態によるミッションプランナークライアントを示している。ミッションプランナークライアント４００は、図３の任意の数のミッションプランニンナークライアント３０６の一実施例である。
【００５７】
任意の数のミッションプランナークライアント４００には、任意の数のデバイス４０２、ディスプレイ４０４、及び任意の数のモジュール４０６が含まれる。任意の数のデバイス４０２は、図３の任意の数のデバイス３１０の一実装態様の一実施例である。ディスプレイ４０４は、図３の任意の数のユーザ３１４がミッションプランナークライアント４００と対話するために使用する任意の数のデバイス４０２のうちの一種の一例である。
【００５８】
任意の数のモジュール４０６には、ミッション要素設計モジュール４０８、要素ボタンモジュール４１０、ミッション種類選択モジュール４１２、ミッション変数定義モジュール４１４、要素ポップアップモジュール４１６、及び選択ウィンドウモジュール４１８が含まれる。任意の数のモジュール４０６は、所与のソフトウェアモジュールに対応するボタン、タブ、テキストボックス、プルダウンメニューなどのユーザインターフェース上に提示される任意の数のソフトウェアモジュールである。
【００５９】
ミッション要素設計モジュール４０８は、ミッション要素を記述して図解式に示すために必要なデータ及び関数のすべてを含んでいる。一実施例では、ミッション要素は、例えば、ディスプレイ４０４などのデバイスを用いて、直前のミッション要素及び／又は次のミッション要素にミッション要素を接続するためのラインを示す三角形を伴う四角形としてグラフィカルに示される。
【００６０】
要素ボタンモジュール４１０は、グラフィカルユーザインターフェースのスクリーン内部にボタンをグラフィカルに示すために必要なプログラムコード、並びに提示されたボタンが選択されたとき、又は押されたとき、新規ミッション要素を生成するためのプログラムコードを含んでいる。要素ボタンモジュール４１０は、ミッション種類選択モジュール４１２にリンクされた、ミッション要素のスタート及びストップパラメータと、そのラベルとを、ミッション要素作成前に決定するためのmissionTypeSelectウィンドウを生じさせる。
【００６１】
ミッション種類選択モジュール４１２は、要素ボタンモジュール４１０のスタート及びストップパラメータに関連付けられたスタート及びストップの種類と、このミッション要素の値とを、ユーザ（たとえば、図３の任意の数のユーザ３１４）が決定することを可能にするダイアログボックスを提示する。ミッション種類選択モジュール４１２は、ユーザが、要素ボタンモジュール４１０によって生成されたelementButtonを選択した後で、但し要素ボタンモジュール４１０によってmissionElementが作成される前に、呼び出される。一実施例では、ミッション種類選択モジュール４１２によって提示されたダイアログボックス内のオプションは、ユーザに対し、現状何が利用可能であるかを示すためにグレーアウトされてもよい。例えば、要素は、シーケンス変更により開始されたのでないときは、シーケンス変更時に終了することができない。別の実施例では、いずれの要素も未だ定義されていないときには、直前の要素の終了時に要素が開始されることはありえない。現在選択されている種類の値だけが、ミッション種類選択モジュール４１２によって提示されたダイアログボックス内で変更可能である。
【００６２】
ミッション変数定義モジュール４１４は、ユーザがミッション幾つかの変数を変更することを可能にするダイアログボックスを提示する。一実施例では、スクリーンスペースを節約するために、変数は二つの欄に提示される。このダイアログは、missionElementが定義された直後に、missionElementが生成される前に提示される。
【００６３】
要素ポップアップモジュール４１６は、現在の要素にスタティックテキストとしてプログラムコードを提示する。要素ポップアップモジュール４１６は、ミッション要素を構成するコードを見たいと思うユーザによる任意の選択肢とすることができる。ユーザはポップアップモジュール４１６を選択することにより、ミッション要素のコードを表示する。ユーザはコードを見ることはできるが修正することはできないので、このコードはスタティックである。
【００６４】
選択ウィンドウモジュール４１８は、ユーザに対し、任意の数の異なる値を有する任意の数の異なるオプションの選択を提供する。これらの値は各オプションの関数のコードである。幾つかのオプションが複数の選択肢を可能にする一方、他のオプションは単一の選択肢のみを可能にする。これらのオプションはウィンドウ作成時に定義することができる。
【００６５】
一実施例では、ユーザは、図７のグラフィカルユーザインターフェースの左側に位置する要素ボタンの一つを選択するか、又は図６のグラフィカルユーザインターフェースにおいて、中央のウィンドウのいずれかを右クリックし、「ミッション要素の挿入」を選択する。次いで、ユーザは、図８に示されるミッションコンポーネントクリエータ８０４を見る。ユーザは、図８に示されるミッション要素データベース８０６内のミッション要素の一つを選択して「ＯＫ」を選択する。すると、図９に示されるコンポーネントエディタ９０４のビューが開く。ユーザは、ミッション要素パラメータを記入した後で、図９のコンポーネントエディタ９０４に示される「時間」タブを選択し、スタート及びストップ条件を記入してから「OK」を選択する。このプロセスを、ユーザがミッションに加えたいと考えるすべてのミッション要素と関数とについて繰り返す。最後にユーザは、図８及び図９のグラフィカルユーザインターフェースの上部にフロッピーディスクとして示されている「保存」ボタンをクリックする。
【００６６】
図４に示すミッションプランナークライアント４００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割することができる。例えば、任意の数のモジュール４０６に加えて、他のモジュールをミッションプランナークライアント４００に含めることができる。
【００６７】
次に図５を参照する。図５は、有利な一実施形態によるミッションプランナーサーバを示している。ミッションプランナーサーバ５００は、図３のミッションプランナーサーバ３０８の一実施例である。
【００６８】
ミッションプランナーサーバ５００には、任意の数のモジュール５０２及びミッション管理フレームワーク５０４が含まれる。任意の数のモジュール５０２は、図３の任意の数のモジュール３１６の一実装態様の一実施例である。任意の数のモジュール５０２には、ミッション関数モジュール５０６、ミッション要素モジュール５０８、ライブラリ読込みモジュール５１０、ミッション書込みモジュール５１２、及びメインモジュール５１４が含まれる。
【００６９】
ミッション関数モジュール５０６は、固有のミッション関数を識別するために必要なデータを収容している。ミッション関数モジュール５０６には、限定されないが、名称、説明、コード、パラメータ、必要とされるアセットの数、及び各ミッション関数の推定実行時間が含まれる。コードは、例えばパイソンで記述される。パラメータは、例えば、ユーザ（例えば、図３の任意の数のユーザ３１４）による変更が可能な、ミッション中の変数である。一実施例では、パラメータは、面積座標又は反復回数とすることができる。ユーザは、例えば、ミッション関数の面積座標を変更することができる。必要とされるアセットの数及び実行時間は、ミッション要素を実行するために必要とされるアセットの数及び時間を指す。
【００７０】
ミッション要素モジュール５０８は、ミッションに登録されたミッション要素に必要な情報を収容している。ミッション要素モジュール５０８には、限定されないが、オリジナルファイルによって定義された関数名、ユーザによって定義された固有のラベル、コード、ユーザによって定義されなければならない任意のパラメータ、並びに、ミッション要素のためのスタート及びストップの種類と、その値が含まれる。一実施例では、getCode()は、ミッション要素からパイソンコードを返す関数であり、それらに定義された値でパラメータの全インスタンスを置換する。
【００７１】
ライブラリ読込みモジュール５１０は、ファイルシステムからミッション関数を読み込み、情報についてミッション関数を解析する関数を収容している。例えば、vehTypeParamsは、ミッションに必要とされるビークルアセットの種類のパラメータを保持するデータ構造である。このデータ構造は、例えば、種類、数、waitflag及びreleaseflagの値を収容しうる。別の実施例では、readLibrary(dir)は、ディレクトリ（ｄｉｒ）内のすべてのファイルを読み、ディクショナリとしてファイルの内容を返す関数であり、このディクショナリは、拡張子を含まない（例えば、パイソンコードの「.py」を削除した）ファイル名と、その値としてのファイルの内容とをキーセットとして有する。この実施例において、この関数は、その名称中に「〜」を有するファイルはすべて一時的ファイルであり、読むべきでないとみなす。
【００７２】
また別の実施例では、parseFunc(code)は、ミッション要素のコードを取得して、複数のパラメータについてそのコードを解析する関数である。この関数は、三つのクオーテーションマーク(“””)によって囲まれた第１の文字列が要素の説明であるとみなす。この関数は、例えば、ミッション要素に必要とされるアセットに関する情報を集めるRequiresデコレータをチェックする。例えば、関数は、文字列「#Time=」を探し、これに続く、新規の行の前の文字列が、ミッション要素の推定実行時間とみなす。また、例えば、関数は、ユーザにより定義された変数であって、行頭の「#」の後ろに「$」と「$」の間に記載される変数を有するコメント行により示される変数を見つける。空白なしで「=」が変数の直後に続く場合、それがその変数のデフォルト値として保存される。間に空白を挟んで変数又はデフォルト値の後に文字列が続く場合、この実施例では、この文字列がこの変数の説明とみなされる。
【００７３】
ミッション書込みモジュール５１２は、ミッション管理フレームワーク５０４が読込可能なパイソンファイルにミッションを書き込む。ミッション書込みモジュール５１２は、以下の関数の組、すなわち、writeMission(dir,name,startFunc,stopFunc,onIterations,supportFuncs,missionElements)  を使用することができる。このような関数の組は、ミッションファイルに書き込むために、複数のパラメータを取り込む。例えば、ｄｉｒはファイルを配置するためのディレクトリであり、ｎａｍｅはミッションの名称である。ミッションの名称には、この実施例では「.py」が連結される。startFuncは、ミッションマネージャフレームワークに準拠するデコレータOnStartに従う関数である。stopFuncは、デコレータOnStopに従う関数である。onIterationsは、デコレータOnIterationを必要とする関数のリストである。supportFuncsは、後の要素で使用するためにミッション開始時に印刷しなければならない関数のリストである。missionElementsは、ミッション書込みモジュール５１２によって書き込まれるmissionElementsオブジェクトのリストである。missionElementsは、例えば、ミッションに必要なデコレータの加算をすべて取り扱う関数である。
【００７４】
メインモジュール５１４は、拡張マークアップ言語−遠隔手続き呼び出し（ＸＭＬ−ＲＰＣ）サーバ上で動作し、ミッション関数のすべてを格納する。ＸＭＬ−ＲＰＣサーバ上のデータは、可能な関数（possiblefunctions）と動作中の関数（activefunctions）に分類される。可能な関数は、ライブラリ内で利用可能なすべての関数であり、ライブラリ読込みモジュール５１０によって読み込まれる。動作中の関数は、定義済みの関数すべてである。
【００７５】
可能な関数は、キーとして関数の名称を、値としてmissionFunctionオブジェクトをそれぞれ有するディクショナリとして格納される。すべてのコンポーネントは、ミッション開始時に、ミッション書込みモジュール５１２によって記述されたミッションスクリプトの開始時に定義された対応するディレクトリについて読み込まれる。可能なコンポーネントディクショナリの各々は、そのコンポーネント名をキーとして、ディクショナリ自体を値としてそれぞれ使用して、possibleComponentsディクショナリに格納される。これにより、後の関数において取り出しが容易になる。
【００７６】
動作中の関数は、コンポーネントに応じて幾つかの方法で定義される。スタート及びストップ関数は、ユーザにより与えられる関数の名称として定義される。反復及びサポート関数は、複数を定義することができるのでリストとして定義される。いずれにしろ、値は関数の名称である。ミッション要素は、キーとして要素のラベルを、値としてmissionElementオブジェクトを用いたディクショナリとして定義される。
【００７７】
メインモジュール５１４は、ＸＭＬ−ＲＰＣサーバ上に、ミッションが開始されたかどうかを決定するための変数、現在のシーケンス番号、及び現在のミッション時間も格納する。一実施例では、現在のミッション時間は秒単位で格納される。
【００７８】
ミッション管理フレームワーク５０４には、ミッション要素ライブラリ５１６、アセットライブラリ５１８、リソース識別プロセス５２０、タスク識別プロセス５２２、及びミッション割り当てプロセス５２４が含まれる。ミッション要素ライブラリ５１６には、任意の数のミッション要素５２６が含まれる。任意の数のミッション要素５２６は、任意の数のモジュール５０２によって構築されて、現在のミッションで実行される格納済みのミッション要素である。例えば、任意の数のミッション要素５２６は、ミッション作成中に、任意の数のモジュール５０２によってミッション要素データベース５３４から取り出すことができる。ミッション要素データベース５３４は、図３のミッション要素データベース３１９の一実装態様の一実施例である。
【００７９】
アセットライブラリ５１８には任意の数のアセット５２８が含まれる。任意の数のアセット５２８は、すべてのアセット（例えば、図３の任意の数のアセット３２４）のリストであり、各アセットの現状を伴っている。例えば、任意の数のアセット５２８には、アセットの利用可能性、ミッション及び／又はタスクへの使用に関するアセットの即応性、アセットの健全性、アセットのリソース使用、アセットによるリソース枯渇、アセットの現状、及び／又はアセトに関する他のいずれかの適切な情報が含まれる。
【００８０】
タスク識別プロセス５２２は、ミッション書込みモジュール５１２からミッションスクリプトを受け取り、ミッション要素ライブラリ５１６を使用してミッションに必要とされるミッション要素又はタスクを識別する。リソース識別プロセス５２０は、ミッション書込みモジュール５１２からミッションスクリプトを受け取り、ミッション要素ライブラリ５１６を使用して、アセットライブラリ５１８内の任意の数のアセット５２８から、ミッションのために選択されたミッション要素を達成できる任意の数のアセットを識別する。ミッション割り当てプロセス５２４は、リソース識別プロセス５２０及びタスク識別プロセス５２２によって識別されたミッション要素及びアセットを受け取り、識別されたタスクを、識別された特定のアセットに割り当てて、命令５３０を生成する。次いで、命令５３０は、ミッション実行のために、ミッション管理フレームワーク５０４によって任意の数のアセット５３２に送付される。
【００８１】
図５に示すミッションプランナーサーバ５００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は異なるブロックに合成及び／又は分割することができる。
【００８２】
次に図６を参照する。図６は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース６００は、図３の任意の数のデバイス３１２を用いた図３のミッションプランナークライアント３０６の一実装態様の一例である。
【００８３】
グラフィカルユーザインターフェース６００には、実行制御ボタン６０２及びミッション要素６０４が含まれている。実行制御ボタン６０２は、ミッションスタート、ミッションストップ、ミッションシーケンスの進行、及びミッションの、任意の数の他の制御フィーチャの実行のために、ユーザ（例えば、図３の任意の数のユーザ３１４）によって選択される。ミッション要素６０４は、例えば、ミッションに含めるために、図５の任意の数のミッション要素５２６から選択されたミッション要素の一実施例である。一又は複数のスタート関数６０６は、利用可能なスタート関数のライブラリから選択される。スタート関数とは、ミッションのスタート時に、例えば、ミッションの開始関数として動作する関数である。一実施例として、グラフィカルユーザインターフェース６００は、ユーザによってこのミッションに追加された、defaultStartと呼ばれるスタート関数６０６を示している。一又は複数のストップ関数６０８は、利用可能なストップ関数のライブラリから選択される。ストップ関数とは、ミッションの完了時に動作する関数である。ストップ関数は、例えば、限定しないが、すべてのタスクをクリアして任意の数のアセットをリセットするものである。一実施例として、グラフィカルユーザインターフェース６００は、ユーザによってこのミッションに追加された、stopMissionと呼ばれるストップ関数６０８を示している。
【００８４】
一又は複数のストップ条件６１０は、利用可能なストップ条件のライブラリから選択される。ストップ条件とは、ミッションの停止条件を定義する関数である。ストップ条件は、例えば、限定しないが、個々のミッション要素が実行を完了したかどうかに関係なく、ミッションが停止する時間値を定義する。一実施例として、グラフィカルユーザインターフェース６００は、ユーザによってこのミッションに追加された、seqAdvancedと呼ばれるストップ条件６１０を示している。一又は複数の反復関数６１２は、利用可能な反復関数のライブラリから選択される。反復関数とは、ミッション管理フレームワークが反復されるたびに動作する関数である。例えば、反復関数は、ミッション要素と並行に動作して、利用可能なアセット及び展開済みのアセットに関するレポートを表示する。一実施例として、グラフィカルユーザインターフェース６００は、ユーザによってこのミッションに追加された、defaultIterationと呼ばれる反復関数６１２を示している。
【００８５】
一又は複数のサポート関数６１４は、利用可能なサポート関数のライブラリから選択される。サポート関数とは、一又は複数のミッション要素によって呼び出される関数である。例えば、サポート関数は、サーチ関連タスクを実行する種々のミッション要素が使用できるサーチエリアを区分するアルゴリズムとすることができる。一実施例として、グラフィカルユーザインターフェース６００は、ユーザによってこのミッションに追加された、divideSearchArea及びgreedySearchと呼ばれるサポート関数６１４を示している。ミッション要素６０４は、タイムスケール６１６（ガントチャートと同様）によって示されるミッション要素期間に比例する長さのバーによって表されている。
【００８６】
図６に示すグラフィカルユーザインターフェース６００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割することができる。
【００８７】
例えば、様々な関数を、グラフィカルユーザインターフェース６００を用いてユーザが選択するものとして示したが、他の有利な実施形態は、各ミッション要素内において必要とされるサポート関数を特定する自動選択プロセスを含むことができる。
【００８８】
次に図７を参照する。図７は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース７００は、図３の任意の数のデバイス３１２を用いた図３のミッションプランナークライアント３０６の一実装態様の一実施例である。
【００８９】
グラフィカルユーザインターフェース７００には、ミッション要素データベース７０２及びミッション要素のライブラリ７０４が含まれている。ミッション要素データベース７０２は、図３のミッション要素データベース３１９の一実装態様の一実施例である。ミッション要素のライブラリ７０４は、図５のミッション要素ライブラリ５１６の一実装態様の一実施例である。
【００９０】
この実施例では、ミッション要素データベース７０２には、任意の数のミッション要素、すなわち、inspectTarget７０６、observeStructure７０８、mixedCoverage７１０、monitorAdvance７１２、initialSurvey７１４、clearGround７１６、及びjointSearch７１８が含まれている。ミッション要素のライブラリ７０４は、ユーザが、グラフィカルユーザインターフェース７００を用いてミッション要素データベース７０２から選択し、ミッションに追加したミッション要素の一実施例である。この実施例では、ユーザによって、initialSurvey７１４、inspectTarget７０６、jointSearch７１８、monitorAdvance７１２、mixedCoverage７１０という５つのミッション要素が追加された。ミッション要素のライブラリ７０４は、この実施例では、タイムスケール７２０によって示されるミッション要素期間に比例する長さのバー、及び／又はシーケンス番号７２２によって表されている。このような比例的な表示は、例えば、ガントチャートに類似している。ユーザ（例えば、図３の任意の数のユーザ３１４）は、シーケンスタイム推定値７２４に値を入力することにより、例えばタイムスケール上でのシーケンス変更の際に開始又は終了するミッション要素を表わすために、ミッションシーケンスを進行させる推定時間を決定する。次いで、ユーザは更新７２６を選択し、シーケンスタイム推定値７２４に入力した値をミッション要素の表示に適用する。この実施例では、ミッションシーケンスはゼロからスタートし、６０秒で１に変更される。
【００９１】
図７に示すグラフィカルユーザインターフェース７００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割することができる。
【００９２】
次に図８を参照する。図８は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース８００は、図３の任意の数のデバイス３１２を用いた図３のミッションプランナークライアント３０６の一実装態様の一実施例である。
【００９３】
グラフィカルユーザインターフェース８００には、キャンバス８０２及びミッションコンポーネントクリエータ８０４が含まれる。キャンバス８０２は、図４のミッションプランナークライアント４００のディスプレイ４０４の一実装態様の一実施例である。キャンバス８０２は、ミッション要素の座標パラメータを選択するために、マウスなどのデバイスを用いてユーザがカーソルをドラッグできるミッション環境のグラフィカルな状況表示である。
【００９４】
ミッションコンポーネントクリエータ８０４は、ユーザ（例えば、図３の任意の数のユーザ３１４）に対し、ミッション要素データベース８０６と、選択されたミッション要素の関連コード８０８とを提示するダイアログボックスである。一実施例では、ユーザがミッション要素データベース８０６からミッション要素を選択する場合、ミッション要素のリストの右にあるダイアログボックスに、そのミッション要素のコードが表示される。ミッションコンポーネントクリエータ８０４は、選択ウィンドウモジュール４１８の一実施例である。この実施例では、選択ウィンドウモジュール４１８内の様々な選択肢はミッション要素データベース８０６内のミッション要素であり、選択ウィンドウモジュール４１８の様々な値は、各ミッション要素の、選択されたミッション要素のコード８０８である。選択されたミッション要素のコード８０８は、要素ポップアップモジュール４１６により表示される。
【００９５】
図８に示すグラフィカルユーザインターフェース８００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割することができる。
【００９６】
次に図９を参照する。図９は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース９００は、図３の任意の数のデバイス３１２を用いた図３のミッションプランナークライアント３０６の一実装態様の一実施例である。
【００９７】
グラフィカルユーザインターフェース９００には、ミッションプランナー９０２及びコンポーネントエディタ９０４が含まれている。ミッションプランナー９０２は、図３のミッションプランナークライアント３０６の一実装態様の一実施例であり、ユーザにより操作される関数をグラフィカルに示している。コンポーネントエディタ９０４は、図４のミッション変数定義モジュール４１４により提示されるダイアログボックスの一実施例であり、ユーザによるミッション変数の変更を可能にしている。ユーザは、例えば異なる時間又は場所で動作する、同じミッション要素の複数のインスタンスを挿入し、固有の名称を取得することができる。この実施例では、ユーザは、initialSurveyミッション要素のこのインスタンスに固有の名称として、initialSurvey１を入力した。
【００９８】
図９に示すグラフィカルユーザインターフェース９００は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び／又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び／又は分割することができる。
【００９９】
次に図１０を参照する。図１０は、有利な一実施形態によるミッションプランニングプロセスのフロー図である。図１０のプロセスは、例えば、図３のミッションプランニングシステム３０２のようなコンポーネントによって実施される。
【０１００】
プロセスは、ミッションのユーザ定義を受け取ることにより開始される（工程１００２）。ユーザ定義は、例えば、図３のミッションプランナークライアント３０６のようなグラフィカルユーザインターフェースを用いて受け取られる。ユーザ定義は、通常、達成することが必要な一のミッション、又は任意の数のタスクを定義する。
【０１０１】
プロセスは、ユーザ定義及び任意の数のミッション要素を用いてミッションスクリプトを生成する（工程１００４）。プロセスは、例えば、図３のミッション管理フレームワーク３１８のようなミッション管理フレームワークを用いてミッションスクリプトを生成する。任意の数のミッション要素は、例えば、ミッションのアスペクト、又は任意の数のタスクのうちの特定のタスクを定義する。
【０１０２】
プロセスは、任意の数のミッション要素を任意の数のアセットに割り当てる（工程１００６）。アセットは、例えば、図３の任意の数のアセット３２４である。プロセスは、任意の数のアセットにより任意の数のミッション要素の実行を制御する（工程１００８）。プロセスは、任意の数のミッション要素を用いて、任意の数のアセットに対するミッション実行命令を生成する。命令は、例えば、図３の通信システム３２０のような通信システムを用いて任意の数のアセットに送信される。実行制御アクションには、ミッション要素、例えば所与のフィードバック、又は任意の数のアセットから受け取ったメッセージをスキップするプロセスによるミッションシーケンスの随意的進行が含まれる。随意で、ミッションのシーケンス進行は、ユーザ（例えば、図３の任意の数のユーザ３１４）が制御することができ、ユーザはこのコマンドを、任意の数のアセットに直接供給するのではなく、ミッション管理フレームワークに供給する。
【０１０３】
プロセスは、ミッションを実行する任意の数のアセットを監視する（工程１０１０）。プロセスは、ミッション実行中に任意の数のアセットからメッセージを受け取る（工程１０１２）。プロセスは、ミッションの再構成が必要であるかどうかを決定する（工程１０１４）。例えば、アセットがミッション要素を完了できないか、又はミッション要素を完了するために援助を必要とする場合、ミッションの再構成が必要とされる。
【０１０４】
ミッションの再構成が必要であると決定された場合、プロセスは、受け取ったメッセージを用いて修正済みミッションを生成し（工程１０１６）、工程１０１０に戻る。この再構成は、例えば、車両故障又はアセットの状況の他の変化といった受け取ったメッセージに基づき、ミッション管理フレームワークによって自律的に行われる。随意で、ユーザは、ミッションに任意の数のミッション要素を追加すること、未だ開始されていない任意の数のミッション要素をミッションから除去すること、未だ開始されていない任意の数のミッション要素のパラメータを修正すること、及び／又はミッションの他の適切な修正により、ミッションを修正することもできる。
【０１０５】
ミッションの再構成が不要であると決定された場合、プロセスは、次いで、ミッションが完了しているかどうかを決定する（工程１０１８）。ミッションが完了していないと決定された場合、プロセスは工程１０１０に戻る。ミッションが完了していると決定された場合、プロセスはその後終了する。
【０１０６】
次に図１１を参照する。図１１は、有利な一実施形態によるミッション定義プロセスのフロー図である。図１１のプロセスは、例えば、図３のミッションプランニングシステム３０２のようなコンポーネントによって実施される。
【０１０７】
プロセスは、ミッション要素のライブラリに任意の数のミッション要素を追加することにより開始される（工程１１０２）。任意の数のミッション要素は、例えば、図３のミッション要素データベース３１９のようなミッション要素データベースから、ミッションプランナーサーバによって選択されて、図５のミッション要素ライブラリ５１６のようなミッション要素ライブラリに保存される。
【０１０８】
プロセスは、任意の数のスタート関数をミッションに追加する（工程１１０４）。スタート関数は、図６のスタート関数６０６のようなスタート関数のライブラリから追加される。プロセスは、次いで、任意の数のストップ関数をミッションに追加する（工程１１０６）。ストップ関数は、図６のストップ関数６０８のようなストップ関数のライブラリから追加される。プロセスは、随意で、任意の数のストップ条件をミッションに追加する（工程１１０８）。ストップ条件は、図６のストップ条件６１０のようなストップ条件のライブラリから追加される。プロセスは、任意の数の反復関数をミッションに追加する（工程１１１０）。反復関数は、図６の反復関数６１２のような反復関数のライブラリから追加される。プロセスは、随意で、任意の数のサポート関数をミッションに追加する（工程１１１２）。サポート関数は、図６のサポート関数６１４のようなサポート関数のライブラリから追加される。プロセスは、随意でミッションを記憶装置に保存し（工程１１１４）、その後終了する。プロセスは、例えば、保存せずにコンピュータメモリからミッションを実行してもよい。
【０１０９】
添付図面に示した種々の実施形態におけるフロー図及びブロック図は、幾つかの実装可能な装置、方法及びコンピュータプログラム製品のアーキテクチャ、機能性、及び工程を示している。これに関して、フロー図及びブロック図の各ブロックは、コンピュータで使用可能又は読込可能なプログラムコードのモジュール、セグメント、又は部分を表わしており、一又は複数の特定の機能を実施するための一又は複数の実行可能な命令を含んでいる。幾つかの代替的な実装態様では、ブロックに記載された一又は複数の機能は、図中の順序で行われなくともよい。例えば、場合によっては、連続して示されている２つのブロックは、含まれる機能によっては、ほぼ同時に実行ても、又は時には逆の順序で実行されてもよい。
【０１１０】
種々の有利な実施形態は、全体がハードウェアからなる実施形態、全体がソフトウェアからなる実施形態、又はハードウェア要素とソフトウェア要素とを含む実施形態の形態をとることができる。幾つかの実施形態は、限定しないが、例えばファームウェア、常駐ソフトウェア、及びマイクロコードといった形態を含むソフトウェアにおいて実施される。
【０１１１】
さらに、種々の実施形態は、コンピュータ、或いは命令を実行する何らかのデバイス又はシステムにより使用される、或いはそれに接続されて使用されるプログラムコードを提供するコンピュータで使用可能又は読み取り可能な媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。本明細書の目的のために、コンピュータで使用可能又は読み取り可能な媒体は、一般に、命令実行システム、装置、又はデバイスによって使用される、或いはそれに接続されて使用されるプログラムの収容、格納、通信、伝播、又は運搬を行うことができる任意の有形装置とすることができる。
【０１１２】
コンピュータで使用可能又はコンピュータで読み取り可能な媒体は、例えば、限定しないが、電子システム、磁気システム、光学システム、電磁システム、赤外システム、又は半導体システム、或いは伝播媒体とすることができる。コンピュータで読み取り可能な媒体の非限定的な実施例には、半導体又は固体状態のメモリ、磁気テープ、取り出し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＭＡ）、リードオンリーメモリ（ＲＯＭ）、剛性磁気ディスク、及び光ディスクが含まれる。光ディスクには、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）、及びＤＶＤが含まれる。
【０１１３】
さらに、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、コンピュータで読み取り可能又は使用可能なプログラムコードを収容又は格納しており、コンピュータで読み取り可能又は使用可能なこのプログラムコードがコンピュータ上で実行されるとき、コンピュータで読み取り可能又は使用可能なこのプログラムコードの実行によって、コンピュータは、コンピュータで読み取り可能又は使用可能な別のプログラムコードを通信リンクを介して伝送する。このような通信リンクは、例えば、限定しないが、物理的な又は無線の媒体を使用することができる。
【０１１４】
コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを格納及び／又は実行するデータ処理システムは、システムバスのような通信ファブリックによりメモリ要素に直接的に又は間接的に連結された一又は複数のプロセッサを含む。メモリ要素には、プログラムコード、大容量記憶装置、及び少なくとも何らかのコンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを一時的に格納することにより、コード実行中に大容量記憶装置からコードを取り出す回数を低減できるキャッシュメモリが含まれる。
【０１１５】
入出力又はＩ／Ｏ装置は、直接的に、又はＩ／Ｏコントローラを介して、システムに連結することができる。このような装置には、例えば、限定されないが、キーボード、タッチスクリーンディスプレイ、及びポインティングデバイスが含まれる。種々の通信アダプタをシステムに連結することにより、データ処理システムを、構内ネットワーク又は公衆ネットワークを介在させて他のデータ処理システム、遠隔プリンタ、又は記憶装置に連結させることもできる。非限定的な実施例はモデムであり、ネットワークアダプタは、現在利用可能な種類の通信アダプタのうちのごく一部に過ぎない。
【０１１６】
種々の有利な実施形態は、現行のミッションプランニングシステムでは、オフラインでのミッションのスクリプト作成を行なった後、オフラインで完成させてからミッションを実行することを認識し、考慮している。このような現行システムの多くは、例えば広域探索ミッションのような単一ミッションの種類に特異的である。既存の解決法は、飛行中にミッションを作成及び修正する必要のある動的な応用分野においては実用的でない。このような現行システムは、固定的であり、実行開始後にミッションを修正しない。現在利用可能なシステムでは、ユーザがコードを記述するだけでなく、ミッションのスクリプトを手書きで作成できなければならない。
【０１１７】
したがって、種々の有利な実施形態により、複数のアセットを伴う複雑なミッションの実時間での定義、実行、及び監視を行うシステムが提供される。このシステムにより、自律的ビークルのオペレータは、数及び種類が変動するアセットによりグラフィカルユーザインターフェースを用いて実行することが必要な複数のタスクを伴う複雑なミッションの生成、更新、及び実行を容易に行うことができる。クライアントとサーバとをネットワークを介して通信させることにより、ユーザは、遠隔地からミッションを定義、更新、及び実行することができる。また、複数のクライアントを使用することにより、複数のユーザは、ミッションを同時に監視及び更新することができる。ミッションの定義は「ミッション要素」の概念を用いたモジュール方式であるので、ユーザは、ミッション要素間の依存、それらの完了状況、及び各ミッション要素に割り当てられた、又は必要とされるリソースを示す実時間ガントチャート形式でミッション要素をグラフィカルに実時間表示することにより、ミッションの進行を監視することができる。これは、ミッションプランナーサーバを介したミッション管理フレームワークからのフィードバックを使用して達成される。加えて、ミッション要素のサーバライブラリへの照会を含むクライアントとサーバとの間のリッチメッセージングにＸＭＬ−ＲＰＣを使用することができるので、クライアントのソフトウェアをまったく変更することなく、ライブラリを容易に更新することができる。
【０１１８】
上述した種々の有利な実施形態の説明は、例示及び説明を目的とするものであり、完全な説明であること、又はこれらの実施形態を開示された形態に限定することを意図していない。当業者には、多数の修正例及び変形例が明らかであろう。さらに、種々の有利な実施形態は、他の有利な実施形態とは異なる利点を提供することができる。選択された一又は複数の実施形態は、実施形態の原理、実際の用途を最もよく説明するため、及び他の当業者に対し、様々な実施形態の開示内容と、考慮される特定の用途に適した様々な修正との理解を促すために選択及び記述されている。
また、本願は以下に記載する態様を含む。
（態様１）
任意の数のコンピュータ、
任意の数のコンピュータのうちの一つによって実行されるグラフィカルユーザインターフェース、
コンピュータに格納された第１のプログラムコードであって、任意の数のミッション要素を用いてミッションを定義するためにコンピュータによって実行される第１のプログラムコード、及び
コンピュータに格納された第２のプログラムコードであって、任意の数のアセットに対するミッション実行命令を生成し、ミッション実行中に任意の数のアセットを監視するためにコンピュータによって実行される第２のプログラムコード
を備えるシステム。
（態様２）
任意の数のアセットが、ビークル、センサ、充電所、及びマシンのうちの少なくとも一つを含んでいる、態様１に記載のシステム。
（態様３）
任意の数のミッション要素がミッション要素ライブラリに格納されている、態様１に記載のシステム。
（態様４）
任意の数のミッション要素が第１のプログラムコードによって生成される、態様１に記載のシステム。
（態様５）
第１のプログラムコードが第２のプログラムコードとネットワークを介して通信する、態様１に記載のシステム。
（態様６）
任意の数のコンピュータのうちの第１のコンピュータが第２のプログラムコードを実行し、任意の数のコンピュータのうちの複数のコンピュータが第１のプログラムコードの複数のインスタンスを実行し、第１のコンピュータは前記複数のコンピュータのうちの一つではなく、且つ第１のコンピュータが前記複数のコンピュータと通信することで、複数のユーザがミッションの定義、修正、実行、及び監視の少なくとも一つを同時に行うことが可能になる、態様１に記載のシステム。
（態様７）
各ミッション要素に任意の数のミッションタスクが含まれており、且つシステムが、複数のミッションを同時に定義、更新、実行及び監視する、態様１に記載のシステム。
（態様８）
ミッションプランニング方法であって、
コンピュータにより、ミッションのユーザ定義を受け取ること、
ユーザ定義及び任意の数のミッション要素を用いてミッションのプログラムを生成すること、
任意の数のミッション要素を任意の数のアセットに割り当てること、
任意の数のアセットにより任意の数のミッション要素の実行を制御すること、並びに
ミッションを実行する任意の数のアセットを監視すること
を含む方法。
（態様９）
ミッション実行中に任意の数のアセットからメッセージを受け取ること、
ミッションの再構成が必要であるかどうかを決定すること、並びに
ミッションの再構成が必要であるとの決定に応じて、受け取ったメッセージを用いて修正済みミッションを生成すること
をさらに含む、態様８に記載の方法。
（態様１０）
ミッションの再構成が不要であるとの決定に応じて、ミッションが完了しているかどうかを決定すること
をさらに含む、態様９に記載の方法。
（態様１１）
ユーザ定義は、ミッションプランナークライアントを用いるコンピュータによって受け取られる、態様８に記載の方法。
（態様１２）
ミッションスクリプトはミッション管理フレームワークによって生成される、態様８に記載の方法。
（態様１３）
任意の数のミッション要素は、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、態様８に記載の方法。
（態様１４）
ユーザが、グラフィカルユーザインターフェースと任意の数のデバイスとを用いて座標パラメータを任意の数のミッション要素に入力する、態様８に記載の方法。
（態様１５）
受け取るステップ、生成するステップ、割り当てるステップ、制御するステップ、及び監視するステップは実時間で実行される、態様８に記載の方法。
（態様１６）
フライトの情報を管理するためのコンピュータプログラム製品であって、
コンピュータで記録可能な記憶媒体、
コンピュータで記録可能な記憶媒体に格納されて、ミッションのユーザ定義を受け取るプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、ユーザ定義及び任意の数のミッション要素を用いてミッションスクリプトを生成するプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、任意の数のミッション要素を任意の数のアセットに割り当てるプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、任意の数のミッション要素を用いて任意の数のアセットに対するミッション実行命令を生成するプログラムコード、並びに
コンピュータで記録可能な記憶媒体に格納されて、ミッションを実行する任意の数のアセットを監視するプログラムコード
を備えたコンピュータプログラム製品。
（態様１７）
コンピュータで記録可能な記憶媒体に格納されて、ミッション実行中に任意の数のアセットからメッセージを受け取るプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が必要であるかどうかを決定するプログラムコード、並びに
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が必要であるとの決定に応じて、受け取ったメッセージを用いて修正済みミッションを生成するプログラムコード
をさらに備えた態様１６に記載のコンピュータプログラム製品。
（態様１８）
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が不要であるとの決定に応じて、ミッションが完了しているかどうかを決定するプログラムコード
をさらに備えた態様１７に記載のコンピュータプログラム製品。
（態様１９）
ユーザ定義が、ミッションプランナークライアントを用いるコンピュータによって受け取られる、態様１６に記載のコンピュータプログラム製品。
（態様２０）
任意の数のミッション要素が、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、態様１６に記載のコンピュータプログラム製品。
【図１】
0005924740.tif 000002
【図２】
0005924740.tif 000003
【図３】
0005924740.tif 000004
【図４】
0005924740.tif 000005
【図５】
0005924740.tif 000006
【図６】
0005924740.tif 000007
【図７】
0005924740.tif 000008
【図８】
0005924740.tif 000009
【図９】
0005924740.tif 000010
【図１０】
0005924740.tif 000011
【図１１】
0005924740.tif 000012