(58)【調査した分野】(Int.Cl.,DB名)
任意の数のミッション要素は、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、請求項9に記載の方法。
【発明を実施するための形態】
【0011】
添付図面、特に
図1及び2は、本発明の有利な実施形態を実施可能なデータ処理環境を例示的に図示している。
図1及び2は例示にすぎず、種々の実施形態が実施される環境に関していかなる制限をも主張又は示唆するものではない。図示の環境に対する多くの修正例が作成可能である。
【0012】
ここで添付図面を参照する。
図1は、本発明の有利な実施形態を実施可能なネットワークプランニング環境を図解している。ネットワークプランニング環境100は、実施形態を実施可能なコンピュータのネットワークである。ネットワークプランニング環境100はネットワーク101を含む。ネットワーク101は、ネットワークプランニング環境100内部で互いに接続する様々なデバイス及びコンピュータ間の通信リンクとなるために使用される媒体である。ネットワーク101は、有線、無線通信リンク、又は光ファイバケーブルといった接続部分を含むことができる。
【0013】
図示の実施例では、ミッションプランニングシステム102は、任意の数のアセット108と共にネットワーク101に接続している。ミッションプランニングシステム102は、有利な一実施形態では、任意の数のサーバと任意の数のクライアントとを含むことができる。別の有利な実施形態では、ミッションプランニングシステム102のサーバ及びクライアントは、任意の数の場所に位置し、例えばネットワーク101に接続することができる。ミッションプランニングシステム102には、例えば、データ処理システム、パーソナルコンピュータ、及び/又はネットワークコンピュータが含まれる。
【0014】
任意の数のユーザ104は、ミッションプランニングシステム102と対話することにより、ミッション106をプランニングし、実時間環境でミッション106を監視し、及び/又は実時間環境でミッション106を修正する。任意の数のユーザ104は、人間のユーザ、ロボット及び/又は機械のユーザ、プログラムコード、並びに/或いはミッションプランニングシステム102の他の適切なユーザを含みうる。
【0015】
任意の数のアセット108は、無線通信リンク又はネットワーク101を使用する他のいずれかの種類の通信リンクを介してミッションプランニングシステム102とデータを交換する。このような実施例では、任意の数のアセット108は、コンピュータ及び/又はコンピュータにより制御されるアセットでありうる。コンピュータにより制御されるアセットには、例えば、限定されないが、モバイルアセット、ビークル、センサ、マシン、充電所、及び/又は他のいずれかの適切なアセットが含まれる。ネットワークプランニング環境100には、追加のサーバプロセス、クライアントプロセス、及び図示しない他のデバイスが含まれてもよい。
【0016】
任意の数のアセット108は、図示の実施例において、ミッション106を達成するために任意の数のタスク110を実行する。ミッション106はタスクの集合でありうる。例えば、任意の数のタスク110を組み合わせてミッション106が形成される。
【0017】
図示の実施例では、ネットワークプランニング環境100は、互いに通信するためにTCP/IP(TransmissionControlProtocol/InternetProtocol)式のプロトコルを使用するネットワーク及びゲートウェイの世界的集合を表わすネットワーク101を有するインターネットである。言うまでもなく、ネットワークプランニング環境100は、任意の数の異なる種類のネットワーク(例えば、イントラネット、ローカルエリアネットワーク(LAN)、又はワイドエリアネットワーク(WAN))として実施することもできる。
図1は、実施例として意図されており、異なる実施形態をアーキテクチャ的に制限するものではない。
【0018】
次に、
図2は、有利な一実施形態によるデータ処理システムのブロック図である。データ処理システム200は、ミッションプランニングシステム102及び任意の数のアセット108といったサーバ及びクライアントを実施するために使用できるデータ処理システムの一例である。
【0019】
この実施例では、データ処理システム200は通信ファブリック202を含み、これによりプロセッサユニット204、メモリ206、固定記憶域208、通信ユニット210、入出力(I/O)ユニット212、及びディスプレイ214の間の通信を可能にする。
【0020】
プロセッサユニット204は、メモリ206にローディングされるソフトウェアに対する命令を実行するように働く。プロセッサユニット204は、特定の実装態様に応じて、任意の数のプロセッサ、マルチプロセッサコア、又は他の何らかの種類のプロセッサであってもよい。本明細書でアイテムに言及して「任意の数の」というとき、一又は複数のアイテムを意味する。さらに、プロセッサユニット204は、単一チップ上にメインプロセッサと二次プロセッサとが共存する任意の数の異種プロセッサシステムを使用して実施されてもよい。別の実施例では、プロセッサユニット204は同種のプロセッサを複数個含む対称型マルチプロセッサシステムであってもよい。
【0021】
メモリ206及び固定記憶域208は、記憶装置216の例である。記憶装置は、例えば、限定しないが、データ、機能的な形態のプログラムコード、及び/又は他の好適な情報などの情報を、一時的に及び/又は永続的に格納することができる任意のハードウェア部分である。このような実施例では、メモリ206は、例えば、ランダムアクセスメモリか、或いは他のいずれかの適切な揮発性又は非揮発性の記憶装置とすることができる。固定記憶域208は、特定の実装態様に応じて様々な形態をとることができる。
【0022】
例えば、固定記憶域208は、一又は複数のコンポーネント又はデバイスを含みうる。例えば、固定記憶域208は、ハードドライブ、フラッシュメモリ、書換え形光ディスク、書換え可能磁気テープ、又はそれらの何らかの組み合わせである。固定記憶域208によって使用される媒体は、取り外し可能なものでもよい。例えば、取り外し可能なハードドライブを固定記憶域208に使用することができる。
【0023】
このような実施例では、通信ユニット210は、他のデータ処理システム又はデバイスとの通信を行う。このような実施例では、通信ユニット210はネットワークインターフェースカードである。通信ユニット210は、物理的通信リンク及び無線の通信リンクのいずれか一方又は両方を使用することによって、通信を行うことができる。
【0024】
入出力ユニット212により、データ処理システム200に接続可能な他のデバイスによるデータの入力及び出力が可能になる。例えば、入出力ユニット212は、キーボード、マウス、及び/又は他の何らかの適切な入力装置を介してユーザ入力のための接続を提供することができる。さらに、入出力ユニット212は、プリンタに出力を送ることができる。ディスプレイ214は、ユーザに対して情報を表示する機構を提供する。
【0025】
オペレーティングシステム、アプリケーション、及び/又はプログラムに対する命令は、記憶装置216に格納されており、通信ファブリック202を介してプロセッサ装置204と通信する。このような実施例では、命令は固定記憶域208上において機能的な形態になっている。これらの命令は、メモリ206にローディングされてプロセッサユニット204によって実行される。メモリ206のようなメモリに位置させることができるコンピュータで実施可能な命令を使用して、プロセッサユニット204により様々な実施形態のプロセスを実行することができる。
【0026】
これらの命令は、プログラムコード、コンピュータで使用可能なプログラムコード、又はコンピュータで読込可能なプログラムコードと呼ばれ、プロセッサユニット204内の1つのプロセッサによって読込まれて実行されうる。異なる実施形態のプログラムコードは、メモリ206又は固定記憶域208など、異なる物理的な又は有形の、コンピュータで読込可能な媒体上に具現化することができる。
【0027】
プログラムコード218は、選択的に取り外し可能なコンピュータで読込可能な媒体220上に機能的な形態で位置し、データ処理システム200にローディング又は転送されて、プロセッサユニット204によって実行される。プログラムコード218及びコンピュータで読込可能な媒体220は、このような実施例ではコンピュータプログラム製品222を形成する。一実施例では、コンピュータで読込可能な媒体220は、コンピュータで読込可能な記憶媒体224又はコンピュータで読込可能な信号媒体226である。コンピュータで読込可能な記憶媒体224は、例えば、固定記憶域208の一部であるドライブ又は他のデバイスに挿入又は配置されて、固定記憶域208の一部である、ハードドライブなどの記憶装置上に転送される光ディスク又は磁気ディスクなどを含みうる。コンピュータで読込可能な記憶媒体224は、データ処理システム200に接続されているハードドライブ、サムドライブ、又はフラッシュメモリなどの固定記憶域の形態もとりうる。幾つかの例では、コンピュータで読込可能な記憶媒体224は、データ処理システム200から着脱可能でなくともよい。このような実施例では、コンピュータで読込可能な記憶媒体224は、固定のコンピュータで読込可能な記憶媒体である。
【0028】
別の構成では、プログラムコード218は、コンピュータで読込可能な信号媒体226を用いてデータ処理シスム200に転送可能である。コンピュータで読込可能な信号媒体226は、例えば、プログラムコード218を含む伝播されたデータ信号であってもよい。例えば、コンピュータで読込可能な信号媒体226は、電磁信号、光信号、及び/又は他のいずれかの適切な種類の信号であってもよい。これらの信号は、無線通信リンク、光ファイバケーブル、同軸ケーブル、有線、及び/又は他のいずれかの適切な種類の通信リンクといった通信リンクによって転送される。換言すると、本発明の実施例では、通信リンク及び/又は接続は物理的なもの又は無線によるものでありうる。
【0029】
幾つかの有利な実施形態では、プログラムコード218は、コンピュータで読込可能な信号媒体226により他のデバイス又はデータ処理システムからネットワークを介して固定記憶域208にダウンロードされて、データ処理システム200内で使用される。例えば、サーバーデータ処理システムのコンピュータで読込可能な記憶媒体に格納されたプログラムコードは、ネットワークを介してサーバーからデータ処理システム200にダウンロードすることができる。プログラムコード218を提供するデータ処理システムは、サーバーコンピュータ、クライアントコンピュータ、又はグラムコード218を保存及び転送することができる他の何らかのデバイスであってもよい。
【0030】
データ処理システム200に例示されている種々のコンポーネントは、種々の実施形態を実施できる方法をアーキテクチャ的に制限するものではない。種々の有利な実施形態を、データ処理システム200に図解されているコンポーネントに追加の又はその代わりのコンポーネントを含むデータ処理システム内において実施することができる。
図2に示す他のコンポーネントは、図示の実施例から変更することができる。種々の実施形態は、プログラムコードを実行できる任意のハードウェアデバイス又はシステムを使用して実施することができる。一実施例として、データ処理システムは、無機コンポーネントと一体化した有機コンポーネントを含むことができる、及び/又は全体を人間を除く有機コンポーネントで構成することができる。例えば、記憶装置は、有機半導体で構成することができる。
【0031】
別の実施例として、データ処理システム200に含まれる記憶装置は、データを格納できる任意のハードウェア装置である。メモリ206、固定記憶域208、及びコンピュータで読み取り可能な媒体220は、有形形態の記憶装置の例である。
【0032】
別の実施例では、バスシステムを使用して通信ファブリック202を実施することができ、このバスシステムは、システムバス又は入出力バスといった一又は複数のバスから構成することができる。言うまでもなく、バスシステムは、バスシステムに取り付けられた種々のコンポーネント又はデバイスの間でのデータ伝送を行う任意の適切な種類のアーキテクチャを使用して実施することができる。加えて、通信ユニットは、モデム又はネットワークアダプタといったデータの送受信に使用される一又は複数のデバイスを含むことができる。さらに、メモリは、例えば、メモリ206、又はインターフェースに見られるようなキャッシュ、及び通信ファブリック202中に存在するメモリコントローラハブとすることができる。
【0033】
本明細書において、列挙されたアイテムと共に使用する「〜のうちの少なくとも1つの」という表現は、列挙されたアイテムのうちの一又は複数からなる様々な組み合わせが使用可能であり、且つ列挙された各アイテムが1つだけあればよいことを意味する。例えば、「アイテムA、アイテムB、及びアイテムCのうちの少なくとも1つ」は、例えば、限定しないが、「アイテムA」、又は「アイテムAとアイテムB」を含む。この例は、「アイテムAとアイテムBとアイテムC」、又は「アイテムBとアイテムC」も含む。
【0034】
本明細書において、第1のコンポーネントが第2のコンポーネントに接続されているとき、他のコンポーネントなしで第1のコンポーネントは第2のコンポーネントに接続していてよい。第1のコンポーネントは、一又は複数の他のコンポーネントによって第2のコンポーネントに接続されてもよい。例えば、一の電子デバイスと別の電子デバイスとは、間に他の電子デバイスを何も介さずに接続されてよい。場合によっては、互いに接続された二つの電子デバイスの間に別の電子デバイスが存在してもよい。
【0035】
種々の有利な実施形態は、現行のミッションプランニングシステムでは、オフラインでのミッションのスクリプト作成を行なった後、オフラインで完成させてからミッションを実行することを認識し、考慮している。このような現行システムの多くは、例えば広域探索ミッションのような単一ミッションの種類に特異的である。既存の解決法は、飛行中にミッションを作成及び修正する必要のある動的な応用分野においては実用的でない。このような現行システムは、固定的であり、実行開始後にミッションを修正しない。現在利用可能なシステムでは、ユーザがコードを記述するだけでなく、ミッションのスクリプトを手書きで作成できなければならない。ミッションの手書きによるスクリプト作成は、大きな労働力を必要とし、非常にコスト高である。加えて、手書きのミッションは、メモ書きに基づいて構築されているためさらに大量の試験を要し、この試験プロセスはミッションの複雑性を増大させる。
【0036】
したがって、種々の有利な実施形態により、任意の数のコンピュータ、グラフィカルユーザインターフェース、コンピュータに格納される第1のプログラムコード、及びコンピュータに格納される第2のプログラムコードを備えたシステムが提供される。グラフィカルユーザインターフェースは、任意の数のコンピュータのうちの一つによって実行される。コンピュータは、第1のプログラムコードを実行することにより、任意の数のミッション要素を用いてミッションを定義する。コンピュータは、第2のプログラムコードを実行することにより、任意の数のアセットに対するミッションの実行命令を生成し、ミッション実行の間にそれら任意の数のアセットを監視する。
【0037】
種々の有利な実施形態により、さらに、ミッションプランニングの方法が提供される。コンピュータはミッションのユーザ定義を受け取る。ユーザ定義及び任意の数のミッション要素を用いてミッションのスクリプトが生成される。任意の数のミッション要素は任意の数のアセットに割り当てられる。任意の数のアセットによる任意の数のミッション要素の実行が制御される。ミッションを実行する任意の数のアセットが監視される。
【0038】
種々の有利な実施形態により、さらに、コンピュータで記録可能な記憶媒体及びコンピュータで記録可能な記憶媒体に格納されたプログラムコードを含むミッションプランニングのためのコンピュータプログラム製品が提供される。プログラムコードは、ミッションのユーザ定義を受け取り、ユーザ定義と任意の数のミッション要素とを用いてミッションスクリプトを生成し、任意の数のミッション要素を任意の数のアセットに割り当て、任意の数のミッション要素を用いて任意の数のアセットに対するミッションの実行命令を生成し、ミッションを実行する任意の数のアセットを監視する。
【0039】
次に
図3を参照する。
図3は、有利な一実施形態によるミッションプランニング環境を示している。ミッションプランニング環境300は、例えば
図1のネットワークプランニング環境100のようなネットワーク環境において実施される。
【0040】
ミッションプランニング環境300は、例えば、ミッションの生成、監視、更新、修正、及び/又は承認に適した任意の種類の環境とすることができる。ミッションプランニング環境300には、ミッションプランニングシステム302が含まれる。ミッションプランニングシステム302は、
図1のミッションプランニングシステム102の一実施例である。ミッションプランニングシステム302は、種々の有利な実施形態では、任意の数のアセットを伴う任意の数のミッションの定義、実行、及び監視を行う。
【0041】
ミッションプランニング環境302には、コンピュータシステム304が含まれる。コンピュータシステム304は、任意の数のコンピュータ、及び/又はデータ処理システム(例えば、
図2のデータ処理システム200)として実施することができる。コンピュータシステム304には、任意の数のミッションプランナークライアント306及びミッションプランナーサーバ308が含まれる。有利な一実施形態では、コンピュータシステム304は任意の数のデータ処理システムを用いて実施することができ、この場合各データ処理システムは、任意の数のミッションプランナークライアント306のインスタンスを含み、例えば
図1のネットワーク101のようなネットワークを用いて中央データ処理システムでミッションプランナーサーバ308に接続する。別の有利な実施形態では、任意の数のミッションプランナークライアント306及びミッションプランナーサーバ308は、例えば、同じデータ処理システム上で実施され、任意の数の異なるデータ処理システムを用いてアクセスされる。
【0042】
任意の数のミッションプランナークライアント306は、遠隔でミッションを構築するために使用されるグラフィカルユーザインターフェースである。任意の数のミッションプランナークライアント306には、任意の数のデバイス310及び任意の数のモジュール312が含まれる。任意の数のデバイス310には、例えば、限定されないが、ディスプレイ、データグローブ、パーソナル携帯情報機器、ラップトップ、マウス、トラックパッド、キーボード、ジョイスティック、タッチスクリーン、光インターフェース、視覚インターフェース、触覚インターフェース、ビデオコンソール、ワイヤレスコントローラ、ワイヤレス三次元(3D)コントローラ、及び/又は他のいずれかの適切なデバイスが含まれる。一実施例では、ワイヤレス3Dコントローラは、三次元空間において運動を検知するための任意の数の加速度計及び赤外線検出器を含む遠隔制御式ポインティングデバイスである。別の実施例では、ワイヤレス3Dコントローラには、ミッションプランナーサーバ308により生成されたミッションに含まれるミッション要素により制御される場合、任意の数のモバイルアセットを直接制御するために使用される任意の数の加速度計が含まれる。有利な一実施形態では、例えば、ミッションプランナーサーバ308によって生成された特定のミッション要素に、任意の数のデバイス310を使用することができる。
【0043】
任意の数のミッションプランナークライアント306は、例えば、限定しないが、拡張マークアップ言語−遠隔手続き呼び出し(XML−RPC)といったメッセージングフォーマットにより、ミッションプランナーサーバ308と通信する。一実施例では、任意の数のモジュール312は、任意の数のミッションプランナークライアント306用のグラフィカルコンポーネントのwxPythonのような言語で記述される。任意の数のモジュール312には、例えば、限定されないが、ミッション要素の記述及び作成に必要なデータ及び関数と、ミッションの作成中に任意の数のミッションプランナークライアント306のグラフィカルユーザインターフェース内でミッション要素を扱うために必要とされるグラフィカルコンポーネントとが含まれる。任意の数のユーザ314は、任意の数のモジュール312及び任意の数のミッションプランナークライアント306の任意の数のデバイス310を用いてミッション要素を作成することができる。
【0044】
ミッションプランナーサーバ308は、例えば
図2のデータ処理システム200のようなコンピュータ上で実行されるプロセスである。ミッションプランナーサーバ308は、任意の数のミッションプランナークライアント306から到来するXML−RPCの通信を聞いて、到来する通信を処理することにより、例えば、現行のミッションの照会及び修正を行う。ミッションプランナーサーバ308は、現行のミッションの実行前及び実行中に現行のミッションをメモリ(例えば、
図2のメモリ206)内に維持するので、任意の数のミッションプランナークライアント306は、実時間で新規要素を追加しながら、現行ミッションを作成及び実行することができる。
【0045】
ミッションプランナーサーバ308には、任意の数のモジュール316及びミッション管理フレームアーク318が含まれる。一実施例では、任意の数のモジュール316は、パイソンのような言語で記述される。任意の数のモジュール316には、例えば、限定されないが、ミッションの関数及びパラメータを識別、操作、及び記憶するため、並びにミッション実行中の情報についてミッション要素を解析するために必要な、データ及び関数が含まれる。
【0046】
ミッション管理フレームワーク318は、ミッション要素のライブラリ、及びアセットのライブラリ、さらには任意の数のタスク割り当てプロセスを含むシステムである。ミッション要素のライブラリには、現行ミッションで実行されるべき任意の数のミッション要素が含まれる。任意の数のミッション要素は、例えば、ミッション作成中に、ミッション要素データベース319から取り出され、ミッションプランナーサーバ308によってミッション要素のライブラリに保存される。ミッション要素データベース319には、ユーザによって定義される前の、任意の数のミッション要素が含まれる。
【0047】
アセットのライブラリには、各アセットに関する情報と共に、すべてのアセット(例えば、任意の数のアセット324)のリストが含まれる。例えば、アセットのライブラリには、アセットの利用可能性、ミッション及び/又はタスクへの使用に関するアセットの即応性、アセットの健全性、アセットのリソース使用、アセットによるリソースの枯渇、アセットの現状、及び/又はアセットに関する他のいずれかの適切な情報が含まれる。
【0048】
ミッション管理フレームワーク318は、任意の数のミッション要素を実行するために必要とされるタスク及びアセットを識別し、識別された任意の数のアセットに対し、任意の数のタスク及び/又はミッション実行の割り当て及び制御命令を送る。ミッション実行中に問題が生じると、ミッション管理フレームワーク318は、例えば、利用可能なアセットを用いて、自律的にミッションを再構成することによりミッションの目的を達成する。換言すれば、アセットはミッションプランニングシステム302の延長となり、この場合、例えば、ミッション管理フレームワーク318は頭脳であり、アセットは身体の構成要素である。ミッション管理フレームワーク318は、アセットへのタスク実行命令を送り出し、アセットから返送されるタスクの状況及び/又はアセットの状況に関する情報を受取る。アセットからのこれらのメッセージを、ミッション管理フレームワーク318が使用して、ボトムアップ及びトップダウンプランニング構造においてミッション実行中に動的に命令を再構成する。
【0049】
通信システム320は、コンピュータシステム304を任意の数のアセット324に接続する。通信システム320は、ミッション管理フレームワーク318と任意の数のアセット324との間での情報322の送受信を行う。情報322には、例えば、限定されないが、コマンド326、プログラム328、及びメッセージ330が含まれる。通信システム320は、種々の有利な実施形態では、無線通信システムでも有線通信システムでもよい。
【0050】
有利な一実施形態では、任意の数のユーザ314は、コンピュータシステム304上で任意の数のミッションプランナークライアント306を用いて、ミッションプランニングタスクを開始する。例えば、任意の数のユーザ314は、ミッションプランニングシステム302が実行する特定のタスク又はミッションを識別しうる。任意の数のユーザ314は、任意の数のアセット324の近くにいる場合も、又は任意の数のアセット324から離れている場合もある。例えば、任意の数のアセット324は、任意の数のユーザ314とは異なる場所、国、又は惑星(例えば、月に展開されて、地球からミッション管理フレームワーク318によって制御されている任意の数の自律乗物)に所在しているかもしれない。ミッションプランニングシステム302は、任意の数のアセット324に任意の数のユーザ314がどれだけ近接しているか、又はいないかに関係なく、任意の数のユーザ314に対し、任意の数のアセット324によるミッションの実行中に実時間で複雑なミッションを構築及び監視する能力を供給する。任意の数のモバイルアセット332、任意の数のセンサ334、任意の数のマシン336、及び任意の数の充電所338は、任意の数のアセット324に含まれうる任意の数のアセットの例である。
【0051】
任意の数のモバイルアセット332には、例えば、限定されないが、任意の数のビークル340が含まれる。任意の数のビークル340は、限定しないが、自律乗物、準自律乗物、無人ビークル、有人ビークル、及び/又は他のいずれかの適切なビークルを含むいずれかの種類のビークルとすることができる。ビークルは、例えば、自動車、陸上車両、船舶、航空機、宇宙船、壁面走行ロボット、及び/又は他のいずれかの適切な種類のビークルとすることができる。
【0052】
一実施例では、任意の数のユーザ314は、任意の数のミッションプランナークライアント306を使用してミッションを構築することができる。任意の数のミッションプランナークライアント306は、任意の数のユーザ314によって構築されているときに、ミッションプランナーサーバ308にミッションを動的に伝える。ミッションプランナーサーバ308は、ミッション管理フレームワーク318の高レベルのスクリプトを生成する。例えば、高レベルのミッションスクリプトには、高レベルのコマンドが含まれる。ミッション管理フレームワーク318は、これらの高レベルのコマンドを低レベルのコマンドに変換し、任意の数のアセット324のうちの特定のアセットのミッションスクリプトを生成する。例えば、ミッション管理フレームワーク318により生成されるミッションスクリプトには、ミッション要素に関連付けられた一又は複数の特定のアセットを作動させて展開するためのコマンドが含まれる。ミッションスクリプトは任意の数の命令である。これらの命令には、例えば、任意の数のアセット324のコマンド326及び/又はプログラム328が含まれる。ミッション管理フレームワーク318は、通信システム320を用いて、コマンド326及び/又はプログラム328を有するミッション342を任意の数のアセット324に送る。任意の数のアセット324は、コマンド326及び/又はプログラム328に従ってミッション342を実行し、ミッションの実行中にミッション管理フレーム318にメッセージ330を返す。メッセージ330には、例えば、限定されないが、ミッションの状況、任意の数のタスクの状況、及び/又は任意の数のアセット324の状況が含まれる。ミッション管理フレームワーク318は、受け取ったメッセージ330中の情報を使用してミッション342を修正し、修正済みミッション344を任意の数のアセット324に送り返す。
【0053】
一実施例では、メッセージ330は、ミッション342に含まれるタスク完了前に現行の燃料リソースを使い切る任意の数のビークル340のうちの一又は複数に関する情報を含むことができる。ミッション管理フレームワーク318は、この実施例では、ミッション342を再構成することにより、燃料補給の済んだ、未完了のタスクを完了させることが可能な別のビークルを識別して、未完了のタスクを完了させる新規ビークルを指定する修正済みミッション344を送ることができる。
【0054】
図3に示すミッションプランニング環境300は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割されてもよい。
【0055】
例えば、ミッションプランニングシステム302は、コンピュータシステム304に加えて、他のコンピュータシステムで実施することができる。別の有利な実施形態では、コンピュータシステム304は、例えば、同時ミッションプランニング及び/又は複数ミッションのプランニングにおいて、任意の数のユーザ314によって使用される追加的データ処理システム上で実施される追加のミッションプランナークライアントを含むことができる。
【0056】
次に
図4を参照する。
図4は、有利な一実施形態によるミッションプランナークライアントを示している。ミッションプランナークライアント400は、
図3の任意の数のミッションプランニンナークライアント306の一実施例である。
【0057】
任意の数のミッションプランナークライアント400には、任意の数のデバイス402、ディスプレイ404、及び任意の数のモジュール406が含まれる。任意の数のデバイス402は、
図3の任意の数のデバイス310の一実装態様の一実施例である。ディスプレイ404は、
図3の任意の数のユーザ314がミッションプランナークライアント400と対話するために使用する任意の数のデバイス402のうちの一種の一例である。
【0058】
任意の数のモジュール406には、ミッション要素設計モジュール408、要素ボタンモジュール410、ミッション種類選択モジュール412、ミッション変数定義モジュール414、要素ポップアップモジュール416、及び選択ウィンドウモジュール418が含まれる。任意の数のモジュール406は、所与のソフトウェアモジュールに対応するボタン、タブ、テキストボックス、プルダウンメニューなどのユーザインターフェース上に提示される任意の数のソフトウェアモジュールである。
【0059】
ミッション要素設計モジュール408は、ミッション要素を記述して図解式に示すために必要なデータ及び関数のすべてを含んでいる。一実施例では、ミッション要素は、例えば、ディスプレイ404などのデバイスを用いて、直前のミッション要素及び/又は次のミッション要素にミッション要素を接続するためのラインを示す三角形を伴う四角形としてグラフィカルに示される。
【0060】
要素ボタンモジュール410は、グラフィカルユーザインターフェースのスクリーン内部にボタンをグラフィカルに示すために必要なプログラムコード、並びに提示されたボタンが選択されたとき、又は押されたとき、新規ミッション要素を生成するためのプログラムコードを含んでいる。要素ボタンモジュール410は、ミッション種類選択モジュール412にリンクされた、ミッション要素のスタート及びストップパラメータと、そのラベルとを、ミッション要素作成前に決定するためのmissionTypeSelectウィンドウを生じさせる。
【0061】
ミッション種類選択モジュール412は、要素ボタンモジュール410のスタート及びストップパラメータに関連付けられたスタート及びストップの種類と、このミッション要素の値とを、ユーザ(たとえば、
図3の任意の数のユーザ314)が決定することを可能にするダイアログボックスを提示する。ミッション種類選択モジュール412は、ユーザが、要素ボタンモジュール410によって生成されたelementButtonを選択した後で、但し要素ボタンモジュール410によってmissionElementが作成される前に、呼び出される。一実施例では、ミッション種類選択モジュール412によって提示されたダイアログボックス内のオプションは、ユーザに対し、現状何が利用可能であるかを示すためにグレーアウトされてもよい。例えば、要素は、シーケンス変更により開始されたのでないときは、シーケンス変更時に終了することができない。別の実施例では、いずれの要素も未だ定義されていないときには、直前の要素の終了時に要素が開始されることはありえない。現在選択されている種類の値だけが、ミッション種類選択モジュール412によって提示されたダイアログボックス内で変更可能である。
【0062】
ミッション変数定義モジュール414は、ユーザがミッション幾つかの変数を変更することを可能にするダイアログボックスを提示する。一実施例では、スクリーンスペースを節約するために、変数は二つの欄に提示される。このダイアログは、missionElementが定義された直後に、missionElementが生成される前に提示される。
【0063】
要素ポップアップモジュール416は、現在の要素にスタティックテキストとしてプログラムコードを提示する。要素ポップアップモジュール416は、ミッション要素を構成するコードを見たいと思うユーザによる任意の選択肢とすることができる。ユーザはポップアップモジュール416を選択することにより、ミッション要素のコードを表示する。ユーザはコードを見ることはできるが修正することはできないので、このコードはスタティックである。
【0064】
選択ウィンドウモジュール418は、ユーザに対し、任意の数の異なる値を有する任意の数の異なるオプションの選択を提供する。これらの値は各オプションの関数のコードである。幾つかのオプションが複数の選択肢を可能にする一方、他のオプションは単一の選択肢のみを可能にする。これらのオプションはウィンドウ作成時に定義することができる。
【0065】
一実施例では、ユーザは、
図7のグラフィカルユーザインターフェースの左側に位置する要素ボタンの一つを選択するか、又は
図6のグラフィカルユーザインターフェースにおいて、中央のウィンドウのいずれかを右クリックし、「ミッション要素の挿入」を選択する。次いで、ユーザは、
図8に示されるミッションコンポーネントクリエータ804を見る。ユーザは、
図8に示されるミッション要素データベース806内のミッション要素の一つを選択して「OK」を選択する。すると、
図9に示されるコンポーネントエディタ904のビューが開く。ユーザは、ミッション要素パラメータを記入した後で、
図9のコンポーネントエディタ904に示される「時間」タブを選択し、スタート及びストップ条件を記入してから「OK」を選択する。このプロセスを、ユーザがミッションに加えたいと考えるすべてのミッション要素と関数とについて繰り返す。最後にユーザは、
図8及び
図9のグラフィカルユーザインターフェースの上部にフロッピーディスクとして示されている「保存」ボタンをクリックする。
【0066】
図4に示すミッションプランナークライアント400は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割することができる。例えば、任意の数のモジュール406に加えて、他のモジュールをミッションプランナークライアント400に含めることができる。
【0067】
次に
図5を参照する。
図5は、有利な一実施形態によるミッションプランナーサーバを示している。ミッションプランナーサーバ500は、
図3のミッションプランナーサーバ308の一実施例である。
【0068】
ミッションプランナーサーバ500には、任意の数のモジュール502及びミッション管理フレームワーク504が含まれる。任意の数のモジュール502は、
図3の任意の数のモジュール316の一実装態様の一実施例である。任意の数のモジュール502には、ミッション関数モジュール506、ミッション要素モジュール508、ライブラリ読込みモジュール510、ミッション書込みモジュール512、及びメインモジュール514が含まれる。
【0069】
ミッション関数モジュール506は、固有のミッション関数を識別するために必要なデータを収容している。ミッション関数モジュール506には、限定されないが、名称、説明、コード、パラメータ、必要とされるアセットの数、及び各ミッション関数の推定実行時間が含まれる。コードは、例えばパイソンで記述される。パラメータは、例えば、ユーザ(例えば、
図3の任意の数のユーザ314)による変更が可能な、ミッション中の変数である。一実施例では、パラメータは、面積座標又は反復回数とすることができる。ユーザは、例えば、ミッション関数の面積座標を変更することができる。必要とされるアセットの数及び実行時間は、ミッション要素を実行するために必要とされるアセットの数及び時間を指す。
【0070】
ミッション要素モジュール508は、ミッションに登録されたミッション要素に必要な情報を収容している。ミッション要素モジュール508には、限定されないが、オリジナルファイルによって定義された関数名、ユーザによって定義された固有のラベル、コード、ユーザによって定義されなければならない任意のパラメータ、並びに、ミッション要素のためのスタート及びストップの種類と、その値が含まれる。一実施例では、getCode()は、ミッション要素からパイソンコードを返す関数であり、それらに定義された値でパラメータの全インスタンスを置換する。
【0071】
ライブラリ読込みモジュール510は、ファイルシステムからミッション関数を読み込み、情報についてミッション関数を解析する関数を収容している。例えば、vehTypeParamsは、ミッションに必要とされるビークルアセットの種類のパラメータを保持するデータ構造である。このデータ構造は、例えば、種類、数、waitflag及びreleaseflagの値を収容しうる。別の実施例では、readLibrary(dir)は、ディレクトリ(dir)内のすべてのファイルを読み、ディクショナリとしてファイルの内容を返す関数であり、このディクショナリは、拡張子を含まない(例えば、パイソンコードの「.py」を削除した)ファイル名と、その値としてのファイルの内容とをキーセットとして有する。この実施例において、この関数は、その名称中に「〜」を有するファイルはすべて一時的ファイルであり、読むべきでないとみなす。
【0072】
また別の実施例では、parseFunc(code)は、ミッション要素のコードを取得して、複数のパラメータについてそのコードを解析する関数である。この関数は、三つのクオーテーションマーク(“””)によって囲まれた第1の文字列が要素の説明であるとみなす。この関数は、例えば、ミッション要素に必要とされるアセットに関する情報を集めるRequiresデコレータをチェックする。例えば、関数は、文字列「#Time=」を探し、これに続く、新規の行の前の文字列が、ミッション要素の推定実行時間とみなす。また、例えば、関数は、ユーザにより定義された変数であって、行頭の「#」の後ろに「$」と「$」の間に記載される変数を有するコメント行により示される変数を見つける。空白なしで「=」が変数の直後に続く場合、それがその変数のデフォルト値として保存される。間に空白を挟んで変数又はデフォルト値の後に文字列が続く場合、この実施例では、この文字列がこの変数の説明とみなされる。
【0073】
ミッション書込みモジュール512は、ミッション管理フレームワーク504が読込可能なパイソンファイルにミッションを書き込む。ミッション書込みモジュール512は、以下の関数の組、すなわち、writeMission(dir,name,startFunc,stopFunc,onIterations,supportFuncs,missionElements) を使用することができる。このような関数の組は、ミッションファイルに書き込むために、複数のパラメータを取り込む。例えば、dirはファイルを配置するためのディレクトリであり、nameはミッションの名称である。ミッションの名称には、この実施例では「.py」が連結される。startFuncは、ミッションマネージャフレームワークに準拠するデコレータOnStartに従う関数である。stopFuncは、デコレータOnStopに従う関数である。onIterationsは、デコレータOnIterationを必要とする関数のリストである。supportFuncsは、後の要素で使用するためにミッション開始時に印刷しなければならない関数のリストである。missionElementsは、ミッション書込みモジュール512によって書き込まれるmissionElementsオブジェクトのリストである。missionElementsは、例えば、ミッションに必要なデコレータの加算をすべて取り扱う関数である。
【0074】
メインモジュール514は、拡張マークアップ言語−遠隔手続き呼び出し(XML−RPC)サーバ上で動作し、ミッション関数のすべてを格納する。XML−RPCサーバ上のデータは、可能な関数(possiblefunctions)と動作中の関数(activefunctions)に分類される。可能な関数は、ライブラリ内で利用可能なすべての関数であり、ライブラリ読込みモジュール510によって読み込まれる。動作中の関数は、定義済みの関数すべてである。
【0075】
可能な関数は、キーとして関数の名称を、値としてmissionFunctionオブジェクトをそれぞれ有するディクショナリとして格納される。すべてのコンポーネントは、ミッション開始時に、ミッション書込みモジュール512によって記述されたミッションスクリプトの開始時に定義された対応するディレクトリについて読み込まれる。可能なコンポーネントディクショナリの各々は、そのコンポーネント名をキーとして、ディクショナリ自体を値としてそれぞれ使用して、possibleComponentsディクショナリに格納される。これにより、後の関数において取り出しが容易になる。
【0076】
動作中の関数は、コンポーネントに応じて幾つかの方法で定義される。スタート及びストップ関数は、ユーザにより与えられる関数の名称として定義される。反復及びサポート関数は、複数を定義することができるのでリストとして定義される。いずれにしろ、値は関数の名称である。ミッション要素は、キーとして要素のラベルを、値としてmissionElementオブジェクトを用いたディクショナリとして定義される。
【0077】
メインモジュール514は、XML−RPCサーバ上に、ミッションが開始されたかどうかを決定するための変数、現在のシーケンス番号、及び現在のミッション時間も格納する。一実施例では、現在のミッション時間は秒単位で格納される。
【0078】
ミッション管理フレームワーク504には、ミッション要素ライブラリ516、アセットライブラリ518、リソース識別プロセス520、タスク識別プロセス522、及びミッション割り当てプロセス524が含まれる。ミッション要素ライブラリ516には、任意の数のミッション要素526が含まれる。任意の数のミッション要素526は、任意の数のモジュール502によって構築されて、現在のミッションで実行される格納済みのミッション要素である。例えば、任意の数のミッション要素526は、ミッション作成中に、任意の数のモジュール502によってミッション要素データベース534から取り出すことができる。ミッション要素データベース534は、
図3のミッション要素データベース319の一実装態様の一実施例である。
【0079】
アセットライブラリ518には任意の数のアセット528が含まれる。任意の数のアセット528は、すべてのアセット(例えば、
図3の任意の数のアセット324)のリストであり、各アセットの現状を伴っている。例えば、任意の数のアセット528には、アセットの利用可能性、ミッション及び/又はタスクへの使用に関するアセットの即応性、アセットの健全性、アセットのリソース使用、アセットによるリソース枯渇、アセットの現状、及び/又はアセトに関する他のいずれかの適切な情報が含まれる。
【0080】
タスク識別プロセス522は、ミッション書込みモジュール512からミッションスクリプトを受け取り、ミッション要素ライブラリ516を使用してミッションに必要とされるミッション要素又はタスクを識別する。リソース識別プロセス520は、ミッション書込みモジュール512からミッションスクリプトを受け取り、ミッション要素ライブラリ516を使用して、アセットライブラリ518内の任意の数のアセット528から、ミッションのために選択されたミッション要素を達成できる任意の数のアセットを識別する。ミッション割り当てプロセス524は、リソース識別プロセス520及びタスク識別プロセス522によって識別されたミッション要素及びアセットを受け取り、識別されたタスクを、識別された特定のアセットに割り当てて、命令530を生成する。次いで、命令530は、ミッション実行のために、ミッション管理フレームワーク504によって任意の数のアセット532に送付される。
【0081】
図5に示すミッションプランナーサーバ500は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は異なるブロックに合成及び/又は分割することができる。
【0082】
次に
図6を参照する。
図6は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース600は、
図3の任意の数のデバイス312を用いた
図3のミッションプランナークライアント306の一実装態様の一例である。
【0083】
グラフィカルユーザインターフェース600には、実行制御ボタン602及びミッション要素604が含まれている。実行制御ボタン602は、ミッションスタート、ミッションストップ、ミッションシーケンスの進行、及びミッションの、任意の数の他の制御フィーチャの実行のために、ユーザ(例えば、
図3の任意の数のユーザ314)によって選択される。ミッション要素604は、例えば、ミッションに含めるために、
図5の任意の数のミッション要素526から選択されたミッション要素の一実施例である。一又は複数のスタート関数606は、利用可能なスタート関数のライブラリから選択される。スタート関数とは、ミッションのスタート時に、例えば、ミッションの開始関数として動作する関数である。一実施例として、グラフィカルユーザインターフェース600は、ユーザによってこのミッションに追加された、defaultStartと呼ばれるスタート関数606を示している。一又は複数のストップ関数608は、利用可能なストップ関数のライブラリから選択される。ストップ関数とは、ミッションの完了時に動作する関数である。ストップ関数は、例えば、限定しないが、すべてのタスクをクリアして任意の数のアセットをリセットするものである。一実施例として、グラフィカルユーザインターフェース600は、ユーザによってこのミッションに追加された、stopMissionと呼ばれるストップ関数608を示している。
【0084】
一又は複数のストップ条件610は、利用可能なストップ条件のライブラリから選択される。ストップ条件とは、ミッションの停止条件を定義する関数である。ストップ条件は、例えば、限定しないが、個々のミッション要素が実行を完了したかどうかに関係なく、ミッションが停止する時間値を定義する。一実施例として、グラフィカルユーザインターフェース600は、ユーザによってこのミッションに追加された、seqAdvancedと呼ばれるストップ条件610を示している。一又は複数の反復関数612は、利用可能な反復関数のライブラリから選択される。反復関数とは、ミッション管理フレームワークが反復されるたびに動作する関数である。例えば、反復関数は、ミッション要素と並行に動作して、利用可能なアセット及び展開済みのアセットに関するレポートを表示する。一実施例として、グラフィカルユーザインターフェース600は、ユーザによってこのミッションに追加された、defaultIterationと呼ばれる反復関数612を示している。
【0085】
一又は複数のサポート関数614は、利用可能なサポート関数のライブラリから選択される。サポート関数とは、一又は複数のミッション要素によって呼び出される関数である。例えば、サポート関数は、サーチ関連タスクを実行する種々のミッション要素が使用できるサーチエリアを区分するアルゴリズムとすることができる。一実施例として、グラフィカルユーザインターフェース600は、ユーザによってこのミッションに追加された、divideSearchArea及びgreedySearchと呼ばれるサポート関数614を示している。ミッション要素604は、タイムスケール616(ガントチャートと同様)によって示されるミッション要素期間に比例する長さのバーによって表されている。
【0086】
図6に示すグラフィカルユーザインターフェース600は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割することができる。
【0087】
例えば、様々な関数を、グラフィカルユーザインターフェース600を用いてユーザが選択するものとして示したが、他の有利な実施形態は、各ミッション要素内において必要とされるサポート関数を特定する自動選択プロセスを含むことができる。
【0088】
次に
図7を参照する。
図7は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース700は、
図3の任意の数のデバイス312を用いた
図3のミッションプランナークライアント306の一実装態様の一実施例である。
【0089】
グラフィカルユーザインターフェース700には、ミッション要素データベース702及びミッション要素のライブラリ704が含まれている。ミッション要素データベース702は、
図3のミッション要素データベース319の一実装態様の一実施例である。ミッション要素のライブラリ704は、
図5のミッション要素ライブラリ516の一実装態様の一実施例である。
【0090】
この実施例では、ミッション要素データベース702には、任意の数のミッション要素、すなわち、inspectTarget706、observeStructure708、mixedCoverage710、monitorAdvance712、initialSurvey714、clearGround716、及びjointSearch718が含まれている。ミッション要素のライブラリ704は、ユーザが、グラフィカルユーザインターフェース700を用いてミッション要素データベース702から選択し、ミッションに追加したミッション要素の一実施例である。この実施例では、ユーザによって、initialSurvey714、inspectTarget706、jointSearch718、monitorAdvance712、mixedCoverage710という5つのミッション要素が追加された。ミッション要素のライブラリ704は、この実施例では、タイムスケール720によって示されるミッション要素期間に比例する長さのバー、及び/又はシーケンス番号722によって表されている。このような比例的な表示は、例えば、ガントチャートに類似している。ユーザ(例えば、
図3の任意の数のユーザ314)は、シーケンスタイム推定値724に値を入力することにより、例えばタイムスケール上でのシーケンス変更の際に開始又は終了するミッション要素を表わすために、ミッションシーケンスを進行させる推定時間を決定する。次いで、ユーザは更新726を選択し、シーケンスタイム推定値724に入力した値をミッション要素の表示に適用する。この実施例では、ミッションシーケンスはゼロからスタートし、60秒で1に変更される。
【0091】
図7に示すグラフィカルユーザインターフェース700は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割することができる。
【0092】
次に
図8を参照する。
図8は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース800は、
図3の任意の数のデバイス312を用いた
図3のミッションプランナークライアント306の一実装態様の一実施例である。
【0093】
グラフィカルユーザインターフェース800には、キャンバス802及びミッションコンポーネントクリエータ804が含まれる。キャンバス802は、
図4のミッションプランナークライアント400のディスプレイ404の一実装態様の一実施例である。キャンバス802は、ミッション要素の座標パラメータを選択するために、マウスなどのデバイスを用いてユーザがカーソルをドラッグできるミッション環境のグラフィカルな状況表示である。
【0094】
ミッションコンポーネントクリエータ804は、ユーザ(例えば、
図3の任意の数のユーザ314)に対し、ミッション要素データベース806と、選択されたミッション要素の関連コード808とを提示するダイアログボックスである。一実施例では、ユーザがミッション要素データベース806からミッション要素を選択する場合、ミッション要素のリストの右にあるダイアログボックスに、そのミッション要素のコードが表示される。ミッションコンポーネントクリエータ804は、選択ウィンドウモジュール418の一実施例である。この実施例では、選択ウィンドウモジュール418内の様々な選択肢はミッション要素データベース806内のミッション要素であり、選択ウィンドウモジュール418の様々な値は、各ミッション要素の、選択されたミッション要素のコード808である。選択されたミッション要素のコード808は、要素ポップアップモジュール416により表示される。
【0095】
図8に示すグラフィカルユーザインターフェース800は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割することができる。
【0096】
次に
図9を参照する。
図9は、有利な一実施形態によるグラフィカルユーザインターフェースを示している。グラフィカルユーザインターフェース900は、
図3の任意の数のデバイス312を用いた
図3のミッションプランナークライアント306の一実装態様の一実施例である。
【0097】
グラフィカルユーザインターフェース900には、ミッションプランナー902及びコンポーネントエディタ904が含まれている。ミッションプランナー902は、
図3のミッションプランナークライアント306の一実装態様の一実施例であり、ユーザにより操作される関数をグラフィカルに示している。コンポーネントエディタ904は、
図4のミッション変数定義モジュール414により提示されるダイアログボックスの一実施例であり、ユーザによるミッション変数の変更を可能にしている。ユーザは、例えば異なる時間又は場所で動作する、同じミッション要素の複数のインスタンスを挿入し、固有の名称を取得することができる。この実施例では、ユーザは、initialSurveyミッション要素のこのインスタンスに固有の名称として、initialSurvey1を入力した。
【0098】
図9に示すグラフィカルユーザインターフェース900は、種々の有利な実施形態を実施可能な方式を物理的又はアーキテクチャ的に限定するものではない。図示されたコンポーネントに加えて及び/又は代えて、他のコンポーネントを使用することができる。一部の有利な実施形態では、幾つかのコンポーネントは不要である。また、ブロックは、幾つかの機能的なコンポーネントを示すために提示されている。種々の有利な実施形態において実施されるとき、これらのブロックの一又は複数は、異なるブロックに合成及び/又は分割することができる。
【0099】
次に
図10を参照する。
図10は、有利な一実施形態によるミッションプランニングプロセスのフロー図である。
図10のプロセスは、例えば、
図3のミッションプランニングシステム302のようなコンポーネントによって実施される。
【0100】
プロセスは、ミッションのユーザ定義を受け取ることにより開始される(工程1002)。ユーザ定義は、例えば、
図3のミッションプランナークライアント306のようなグラフィカルユーザインターフェースを用いて受け取られる。ユーザ定義は、通常、達成することが必要な一のミッション、又は任意の数のタスクを定義する。
【0101】
プロセスは、ユーザ定義及び任意の数のミッション要素を用いてミッションスクリプトを生成する(工程1004)。プロセスは、例えば、
図3のミッション管理フレームワーク318のようなミッション管理フレームワークを用いてミッションスクリプトを生成する。任意の数のミッション要素は、例えば、ミッションのアスペクト、又は任意の数のタスクのうちの特定のタスクを定義する。
【0102】
プロセスは、任意の数のミッション要素を任意の数のアセットに割り当てる(工程1006)。アセットは、例えば、
図3の任意の数のアセット324である。プロセスは、任意の数のアセットにより任意の数のミッション要素の実行を制御する(工程1008)。プロセスは、任意の数のミッション要素を用いて、任意の数のアセットに対するミッション実行命令を生成する。命令は、例えば、
図3の通信システム320のような通信システムを用いて任意の数のアセットに送信される。実行制御アクションには、ミッション要素、例えば所与のフィードバック、又は任意の数のアセットから受け取ったメッセージをスキップするプロセスによるミッションシーケンスの随意的進行が含まれる。随意で、ミッションのシーケンス進行は、ユーザ(例えば、
図3の任意の数のユーザ314)が制御することができ、ユーザはこのコマンドを、任意の数のアセットに直接供給するのではなく、ミッション管理フレームワークに供給する。
【0103】
プロセスは、ミッションを実行する任意の数のアセットを監視する(工程1010)。プロセスは、ミッション実行中に任意の数のアセットからメッセージを受け取る(工程1012)。プロセスは、ミッションの再構成が必要であるかどうかを決定する(工程1014)。例えば、アセットがミッション要素を完了できないか、又はミッション要素を完了するために援助を必要とする場合、ミッションの再構成が必要とされる。
【0104】
ミッションの再構成が必要であると決定された場合、プロセスは、受け取ったメッセージを用いて修正済みミッションを生成し(工程1016)、工程1010に戻る。この再構成は、例えば、車両故障又はアセットの状況の他の変化といった受け取ったメッセージに基づき、ミッション管理フレームワークによって自律的に行われる。随意で、ユーザは、ミッションに任意の数のミッション要素を追加すること、未だ開始されていない任意の数のミッション要素をミッションから除去すること、未だ開始されていない任意の数のミッション要素のパラメータを修正すること、及び/又はミッションの他の適切な修正により、ミッションを修正することもできる。
【0105】
ミッションの再構成が不要であると決定された場合、プロセスは、次いで、ミッションが完了しているかどうかを決定する(工程1018)。ミッションが完了していないと決定された場合、プロセスは工程1010に戻る。ミッションが完了していると決定された場合、プロセスはその後終了する。
【0106】
次に
図11を参照する。
図11は、有利な一実施形態によるミッション定義プロセスのフロー図である。
図11のプロセスは、例えば、
図3のミッションプランニングシステム302のようなコンポーネントによって実施される。
【0107】
プロセスは、ミッション要素のライブラリに任意の数のミッション要素を追加することにより開始される(工程1102)。任意の数のミッション要素は、例えば、
図3のミッション要素データベース319のようなミッション要素データベースから、ミッションプランナーサーバによって選択されて、
図5のミッション要素ライブラリ516のようなミッション要素ライブラリに保存される。
【0108】
プロセスは、任意の数のスタート関数をミッションに追加する(工程1104)。スタート関数は、
図6のスタート関数606のようなスタート関数のライブラリから追加される。プロセスは、次いで、任意の数のストップ関数をミッションに追加する(工程1106)。ストップ関数は、
図6のストップ関数608のようなストップ関数のライブラリから追加される。プロセスは、随意で、任意の数のストップ条件をミッションに追加する(工程1108)。ストップ条件は、
図6のストップ条件610のようなストップ条件のライブラリから追加される。プロセスは、任意の数の反復関数をミッションに追加する(工程1110)。反復関数は、
図6の反復関数612のような反復関数のライブラリから追加される。プロセスは、随意で、任意の数のサポート関数をミッションに追加する(工程1112)。サポート関数は、
図6のサポート関数614のようなサポート関数のライブラリから追加される。プロセスは、随意でミッションを記憶装置に保存し(工程1114)、その後終了する。プロセスは、例えば、保存せずにコンピュータメモリからミッションを実行してもよい。
【0109】
添付図面に示した種々の実施形態におけるフロー図及びブロック図は、幾つかの実装可能な装置、方法及びコンピュータプログラム製品のアーキテクチャ、機能性、及び工程を示している。これに関して、フロー図及びブロック図の各ブロックは、コンピュータで使用可能又は読込可能なプログラムコードのモジュール、セグメント、又は部分を表わしており、一又は複数の特定の機能を実施するための一又は複数の実行可能な命令を含んでいる。幾つかの代替的な実装態様では、ブロックに記載された一又は複数の機能は、図中の順序で行われなくともよい。例えば、場合によっては、連続して示されている2つのブロックは、含まれる機能によっては、ほぼ同時に実行ても、又は時には逆の順序で実行されてもよい。
【0110】
種々の有利な実施形態は、全体がハードウェアからなる実施形態、全体がソフトウェアからなる実施形態、又はハードウェア要素とソフトウェア要素とを含む実施形態の形態をとることができる。幾つかの実施形態は、限定しないが、例えばファームウェア、常駐ソフトウェア、及びマイクロコードといった形態を含むソフトウェアにおいて実施される。
【0111】
さらに、種々の実施形態は、コンピュータ、或いは命令を実行する何らかのデバイス又はシステムにより使用される、或いはそれに接続されて使用されるプログラムコードを提供するコンピュータで使用可能又は読み取り可能な媒体からアクセス可能なコンピュータプログラム製品の形態をとることができる。本明細書の目的のために、コンピュータで使用可能又は読み取り可能な媒体は、一般に、命令実行システム、装置、又はデバイスによって使用される、或いはそれに接続されて使用されるプログラムの収容、格納、通信、伝播、又は運搬を行うことができる任意の有形装置とすることができる。
【0112】
コンピュータで使用可能又はコンピュータで読み取り可能な媒体は、例えば、限定しないが、電子システム、磁気システム、光学システム、電磁システム、赤外システム、又は半導体システム、或いは伝播媒体とすることができる。コンピュータで読み取り可能な媒体の非限定的な実施例には、半導体又は固体状態のメモリ、磁気テープ、取り出し可能なコンピュータディスケット、ランダムアクセスメモリ(RMA)、リードオンリーメモリ(ROM)、剛性磁気ディスク、及び光ディスクが含まれる。光ディスクには、コンパクトディスク−リードオンリーメモリ(CD−ROM)、コンパクトディスク−リード/ライト(CD−R/W)、及びDVDが含まれる。
【0113】
さらに、コンピュータで使用可能な又はコンピュータで読み取り可能な媒体は、コンピュータで読み取り可能又は使用可能なプログラムコードを収容又は格納しており、コンピュータで読み取り可能又は使用可能なこのプログラムコードがコンピュータ上で実行されるとき、コンピュータで読み取り可能又は使用可能なこのプログラムコードの実行によって、コンピュータは、コンピュータで読み取り可能又は使用可能な別のプログラムコードを通信リンクを介して伝送する。このような通信リンクは、例えば、限定しないが、物理的な又は無線の媒体を使用することができる。
【0114】
コンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを格納及び/又は実行するデータ処理システムは、システムバスのような通信ファブリックによりメモリ要素に直接的に又は間接的に連結された一又は複数のプロセッサを含む。メモリ要素には、プログラムコード、大容量記憶装置、及び少なくとも何らかのコンピュータで読み取り可能な又はコンピュータで使用可能なプログラムコードを一時的に格納することにより、コード実行中に大容量記憶装置からコードを取り出す回数を低減できるキャッシュメモリが含まれる。
【0115】
入出力又はI/O装置は、直接的に、又はI/Oコントローラを介して、システムに連結することができる。このような装置には、例えば、限定されないが、キーボード、タッチスクリーンディスプレイ、及びポインティングデバイスが含まれる。種々の通信アダプタをシステムに連結することにより、データ処理システムを、構内ネットワーク又は公衆ネットワークを介在させて他のデータ処理システム、遠隔プリンタ、又は記憶装置に連結させることもできる。非限定的な実施例はモデムであり、ネットワークアダプタは、現在利用可能な種類の通信アダプタのうちのごく一部に過ぎない。
【0116】
種々の有利な実施形態は、現行のミッションプランニングシステムでは、オフラインでのミッションのスクリプト作成を行なった後、オフラインで完成させてからミッションを実行することを認識し、考慮している。このような現行システムの多くは、例えば広域探索ミッションのような単一ミッションの種類に特異的である。既存の解決法は、飛行中にミッションを作成及び修正する必要のある動的な応用分野においては実用的でない。このような現行システムは、固定的であり、実行開始後にミッションを修正しない。現在利用可能なシステムでは、ユーザがコードを記述するだけでなく、ミッションのスクリプトを手書きで作成できなければならない。
【0117】
したがって、種々の有利な実施形態により、複数のアセットを伴う複雑なミッションの実時間での定義、実行、及び監視を行うシステムが提供される。このシステムにより、自律的ビークルのオペレータは、数及び種類が変動するアセットによりグラフィカルユーザインターフェースを用いて実行することが必要な複数のタスクを伴う複雑なミッションの生成、更新、及び実行を容易に行うことができる。クライアントとサーバとをネットワークを介して通信させることにより、ユーザは、遠隔地からミッションを定義、更新、及び実行することができる。また、複数のクライアントを使用することにより、複数のユーザは、ミッションを同時に監視及び更新することができる。ミッションの定義は「ミッション要素」の概念を用いたモジュール方式であるので、ユーザは、ミッション要素間の依存、それらの完了状況、及び各ミッション要素に割り当てられた、又は必要とされるリソースを示す実時間ガントチャート形式でミッション要素をグラフィカルに実時間表示することにより、ミッションの進行を監視することができる。これは、ミッションプランナーサーバを介したミッション管理フレームワークからのフィードバックを使用して達成される。加えて、ミッション要素のサーバライブラリへの照会を含むクライアントとサーバとの間のリッチメッセージングにXML−RPCを使用することができるので、クライアントのソフトウェアをまったく変更することなく、ライブラリを容易に更新することができる。
【0118】
上述した種々の有利な実施形態の説明は、例示及び説明を目的とするものであり、完全な説明であること、又はこれらの実施形態を開示された形態に限定することを意図していない。当業者には、多数の修正例及び変形例が明らかであろう。さらに、種々の有利な実施形態は、他の有利な実施形態とは異なる利点を提供することができる。選択された一又は複数の実施形態は、実施形態の原理、実際の用途を最もよく説明するため、及び他の当業者に対し、様々な実施形態の開示内容と、考慮される特定の用途に適した様々な修正との理解を促すために選択及び記述されている。
また、本願は以下に記載する態様を含む。
(
態様1)
任意の数のコンピュータ、
任意の数のコンピュータのうちの一つによって実行されるグラフィカルユーザインターフェース、
コンピュータに格納された第1のプログラムコードであって、任意の数のミッション要素を用いてミッションを定義するためにコンピュータによって実行される第1のプログラムコード、及び
コンピュータに格納された第2のプログラムコードであって、任意の数のアセットに対するミッション実行命令を生成し、ミッション実行中に任意の数のアセットを監視するためにコンピュータによって実行される第2のプログラムコード
を備えるシステム。
(態様2)
任意の数のアセットが、ビークル、センサ、充電所、及びマシンのうちの少なくとも一つを含んでいる、態様1に記載のシステム。
(態様3)
任意の数のミッション要素がミッション要素ライブラリに格納されている、態様1に記載のシステム。
(態様4)
任意の数のミッション要素が第1のプログラムコードによって生成される、態様1に記載のシステム。
(態様5)
第1のプログラムコードが第2のプログラムコードとネットワークを介して通信する、態様1に記載のシステム。
(態様6)
任意の数のコンピュータのうちの第1のコンピュータが第2のプログラムコードを実行し、任意の数のコンピュータのうちの複数のコンピュータが第1のプログラムコードの複数のインスタンスを実行し、第1のコンピュータは前記複数のコンピュータのうちの一つではなく、且つ第1のコンピュータが前記複数のコンピュータと通信することで、複数のユーザがミッションの定義、修正、実行、及び監視の少なくとも一つを同時に行うことが可能になる、態様1に記載のシステム。
(態様7)
各ミッション要素に任意の数のミッションタスクが含まれており、且つシステムが、複数のミッションを同時に定義、更新、実行及び監視する、態様1に記載のシステム。
(態様8)
ミッションプランニング方法であって、
コンピュータにより、ミッションのユーザ定義を受け取ること、
ユーザ定義及び任意の数のミッション要素を用いてミッションのプログラムを生成すること、
任意の数のミッション要素を任意の数のアセットに割り当てること、
任意の数のアセットにより任意の数のミッション要素の実行を制御すること、並びに
ミッションを実行する任意の数のアセットを監視すること
を含む方法。
(態様9)
ミッション実行中に任意の数のアセットからメッセージを受け取ること、
ミッションの再構成が必要であるかどうかを決定すること、並びに
ミッションの再構成が必要であるとの決定に応じて、受け取ったメッセージを用いて修正済みミッションを生成すること
をさらに含む、態様8に記載の方法。
(態様10)
ミッションの再構成が不要であるとの決定に応じて、ミッションが完了しているかどうかを決定すること
をさらに含む、態様9に記載の方法。
(態様11)
ユーザ定義は、ミッションプランナークライアントを用いるコンピュータによって受け取られる、態様8に記載の方法。
(態様12)
ミッションスクリプトはミッション管理フレームワークによって生成される、態様8に記載の方法。
(態様13)
任意の数のミッション要素は、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、態様8に記載の方法。
(態様14)
ユーザが、グラフィカルユーザインターフェースと任意の数のデバイスとを用いて座標パラメータを任意の数のミッション要素に入力する、態様8に記載の方法。
(態様15)
受け取るステップ、生成するステップ、割り当てるステップ、制御するステップ、及び監視するステップは実時間で実行される、態様8に記載の方法。
(態様16)
フライトの情報を管理するためのコンピュータプログラム製品であって、
コンピュータで記録可能な記憶媒体、
コンピュータで記録可能な記憶媒体に格納されて、ミッションのユーザ定義を受け取るプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、ユーザ定義及び任意の数のミッション要素を用いてミッションスクリプトを生成するプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、任意の数のミッション要素を任意の数のアセットに割り当てるプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、任意の数のミッション要素を用いて任意の数のアセットに対するミッション実行命令を生成するプログラムコード、並びに
コンピュータで記録可能な記憶媒体に格納されて、ミッションを実行する任意の数のアセットを監視するプログラムコード
を備えたコンピュータプログラム製品。
(態様17)
コンピュータで記録可能な記憶媒体に格納されて、ミッション実行中に任意の数のアセットからメッセージを受け取るプログラムコード、
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が必要であるかどうかを決定するプログラムコード、並びに
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が必要であるとの決定に応じて、受け取ったメッセージを用いて修正済みミッションを生成するプログラムコード
をさらに備えた態様16に記載のコンピュータプログラム製品。
(態様18)
コンピュータで記録可能な記憶媒体に格納されて、ミッションの再構成が不要であるとの決定に応じて、ミッションが完了しているかどうかを決定するプログラムコード
をさらに備えた態様17に記載のコンピュータプログラム製品。
(態様19)
ユーザ定義が、ミッションプランナークライアントを用いるコンピュータによって受け取られる、態様16に記載のコンピュータプログラム製品。
(態様20)
任意の数のミッション要素が、ミッションプランナーサーバによって生成され、ミッション管理フレームワークによって選択されて、任意の数のアセットに割り当てられる、態様16に記載のコンピュータプログラム製品。