(58)【調査した分野】(Int.Cl.,DB名)
前記通信インターフェースが、前記地上通信部および前記衛星間通信部のうちの少なくとも1つを介して前記リソーススケジュールおよび前記ユーザソフトウェアペイロードを受信するように構成され、
前記地上通信部が、地上ベースの基地と通信して第1のユーザソフトウェアペイロードを受信し、前記衛星間通信部が、少なくとも1つの他の衛星と通信して第2のユーザソフトウェアペイロードを受信する、請求項2に記載の衛星。
前記仮想化実行システムが、前記関連する仮想ノードを実行するときに前記ユーザソフトウェアペイロードのうち前記仮想化実行システムの実行リソースおよびメモリリソースを分離するように構成されたハイパーバイザシステムを備え、
前記仮想化実行システムが、前記仮想化実行システムによって実行されていないときに前記ユーザソフトウェアペイロードを非アクティブ状態に記憶するように構成された記憶システムを備える、請求項1に記載の衛星。
前記仮想化実行システムが、前記仮想ノードのうちの1つの実行に関する状態情報を維持し、前記通信インターフェースを介して前記状態情報を転送するように構成される、請求項1に記載の衛星。
【発明を実施するための形態】
【0007】
本明細書に開示される様々な例は、衛星ハードウェアおよびソフトウェア技術に対する機能拡張を提供する。特に、本明細書に開示される例は、周回軌道衛星プラットフォームにソフトウェアアプリケーションを展開するためのシステムおよび方法を提供し、各ソフトウェアアプリケーションは、同じ衛星に展開される1つ以上の他のアプリケーションとリソースを共有することができる仮想ノードとして実行する。これらの仮想ノードは、いくつかの例ではフルオペレーティングシステム仮想マシンを含むことができ、さらに仮想コンテナを含むことができる。これらのコンテナは、Dockerコンテナ、Linux(登録商標)コンテナ、jail、またはホストシステムからのリソースの効率的な管理を提供することができる他の同様のタイプの仮想コンテインメントノードを含むことができる。コンテナによって使用されるリソースは、ホストコンピューティングシステムからのカーネルリソースを含むことができ、ホスト上で実行される他のコンテナまたはプロセスと共有されることができるリポジトリおよび他の承認されたリソースをさらに含むことができる。しかしながら、リソースは、ホスト衛星上のコンテナ間で共有されることができるものの、コンテナは、独自の識別子空間、ファイルシステム構造、およびネットワークインターフェースを使用してオペレーティングシステムに対するプライベートアクセスを有するようにプロビジョニングされる。
【0008】
この例では、衛星プラットフォームを提供するために、複数の衛星が展開されることができ、組織は、アプリケーションを生成し、そのアプリケーションを衛星に展開して所望の動作を実行することができる。これらの動作は、軍事および民間の観測業務、通信業務、ナビゲーション業務、気象業務、および研究業務を含むことができる。アプリケーションを開発するために、組織が開発ツールを使用してソフトウェアアプリケーションを開発することを可能にする開発プラットフォームが提供されることができる。ツールを使用して開発されると、アプリケーションは、物理衛星プラットフォームを複製した仮想または物理試験環境で実行されることができる。この試験環境は、ユーザがソフトウェアアプリケーションを1つ以上の試験衛星にアップロードし、アプリケーションを物理衛星クラスタに展開する前にアプリケーションの動作を監視することを可能にすることができる。いくつかの実施例では、アプリケーションを開発する際に、提供される開発ツールは、アプリケーションが物理衛星によって提供される様々なセンサおよびインターフェースを要求およびアクセスすることを可能にするアプリケーションプログラミングインターフェース(API)またはいくつかの他のコマンド構造を含むことができる。したがって、各ソフトウェアアプリケーションは、異なる動作を実行することができるが、それらは、同様のコマンドを使用して、カメラ、アンテナなどのセンサと対話することができる。
【0009】
開発ツールおよび試験環境を使用してアプリケーションが開発されると、そのアプリケーションは、周回軌道衛星プラットフォームの1つ以上の衛星に展開されることができる。いくつかの実施例では、1つ以上の衛星へのアップリンクとして地上制御システムを使用して、1つ以上の衛星のそれぞれにアプリケーションが提供されることができる。他の実施例では、プラットフォーム内の衛星に対して単一のアップリンクが作成されることができ、衛星は、アプリケーションをプラットフォーム内の他の所望の衛星に配信するように構成される。環境に展開されると、アプリケーションは、割り当てられた衛星上で実行されることができる。
【0010】
いくつかの実施例では、各衛星上でのアプリケーションの実行を管理するために、スケジュールが生成されてもよく、スケジュールは、各アプリケーションの処理のスケジューリング、ならびにユーザセンサへの各アプリケーションについてのアクセスを担うことができる。例えば、衛星上の第1のアプリケーションは、第1の期間中に撮像センサへのアクセスを必要としてもよいが、第2のアプリケーションは、第2の期間中に同じセンサへのアクセスを必要としてもよい。衛星に提供されたスケジュールは、定義された期間に基づいて各アプリケーション間のアドレス指定リンクを判定してセンサに割り当てるために使用されてもよい。少なくとも一実施例では、一度に複数のアプリケーションが同じセンサに割り当てられてもよい。これは、異なる動作を提供するアプリケーションが同じデータを受信するがデータに関して異なる機能を提供することを可能にすることができる。他の実施例では、単一のアプリケーションは、受信する他のアプリケーションが同時にセンサにアクセスしないことを好むことがある。したがって、スケジュールは、定義された期間中に単一のアプリケーションのみが割り当てられ、またはセンサと通信することができることを保証することができる。
【0011】
いくつかの実施例では、衛星プラットフォームの衛星は、それぞれ、プラットフォームについての1つ以上の他の衛星および地上制御システムと状態情報を交換することができる。この状態情報は、動作しているタスクまたはプロセスなど、各アプリケーションの現在の動作状態情報を含むことができ、さらに衛星のセンサから少なくとも部分的に生成されたデータを交換することができる。このデータは、ピアグループ(Peer group)で使用されることができ、第1の衛星は、第1のデータセットを識別し、そのデータを第2の衛星に提供することができる。そして、第2の衛星は、第2のデータを識別し、アプリケーションによって定義されるような第1および第2のデータを処理することができる。一例として、この動作は、撮像動作において使用されることができ、第1の衛星は、第1の期間にわたってオブジェクトの画像を撮像し、その画像についてのデータを第2の衛星に提供することができる。第2の衛星は、後続の画像を撮像し、第1の画像および後続の画像についてのデータを使用して、オブジェクトに関する判定を下すことができる。これは一例であるが、他の動作は、状態データのピア共有を使用して衛星センサからの測定データに関する特性を識別することができることが理解されるべきである。
【0012】
図1は、実施例にかかる衛星環境100を示している。衛星環境100は、衛星110〜113と、衛星120〜123と、地球190と、地上制御システム170と、打ち上げシステム180とを含む。衛星110および120は、第1のピアグループ140に属し、衛星111、112および122は、第2のピアグループ141に属し、ピアグループは、アプリケーション状態およびその上で実行されるアプリケーションについてのデータなどの状態情報を共有するために使用されることができる。衛星110〜113および衛星120〜123は、無線通信リンク130〜132を介して通信する。地上制御システム170は、無線通信リンク135を使用して衛星110〜113および衛星120〜123と通信する。
【0013】
本明細書に記載されるように、複数の衛星110〜113および120〜123は、複数の異なるソフトウェアアプリケーションについての周回軌道プラットフォームとして打ち上げられて展開されることができる。アプリケーションを生成するために、組織がソフトウェアアプリケーションを生成することを可能にする様々なツールおよびAPIを含むことができる設計プラットフォーム175が提供される。いくつかの実施例では、設計プラットフォーム175は、衛星のそれぞれで利用可能な選択可能な機能およびインターフェース要素をユーザに提供することができる。機能および利用可能なインターフェース要素を使用して、特定の組織についての開発者または複数の開発者は、所望の動作を実行するソフトウェアアプリケーションを生成することができる。例えば、開発者は、衛星上のカメラを使用して関連オブジェクトの動きを追跡するアプリケーションを生成することができる。
【0014】
アプリケーションが開発されると、そのアプリケーションは、アプリケーションを衛星プラットフォームに展開する前にアプリケーションを検証および試験するために使用されることができる検証プラットフォーム176に提供されることができる。検証プラットフォーム176は、物理または仮想テストベッドを含むことができ、アプリケーションは、アプリケーションの機能を判定するために1つ以上の試験衛星に展開されることができる。いくつかの実施例では、機能性を試験することに加えて、検証プラットフォームは、アプリケーションが物理プラットフォーム上で動作することを承認されていることを保証するために、アプリケーションに試験をさらに適用することができる。これらの試験は、限定されるものではないが、アプリケーションが同じ衛星上で実行されることができる他のアプリケーションに対して悪意がないことを確認すること、アプリケーションが衛星の飛行構造または動作を変更しないことを確認すること、データが他の衛星と地上制御システムとの間で適切に通信されることを確認すること、またはアプリケーションの動作を検証するための任意の他の同様の試験を含むことができる。
【0015】
アプリケーションが検証された後、周回軌道クラスタ内でアプリケーションをスケジューリングするために編成プラットフォーム177が地上制御システム170の一部として使用されることができる。このスケジューリングは、どの衛星が生成されたアプリケーションに適用されるか、アプリケーションに割り当てられることができる処理リソース、他のアプリケーションとともに展開されるときのアプリケーションのセキュリティ要件、またはいくつかの他の同様のスケジューリング要件を識別するために使用されることができる。要件が定義されると、その要件に基づいてスケジュールが決定されることができ、スケジュールは、アプリケーションの動作のために1つ以上の衛星、ならびに衛星上の処理スケジュールを割り当てることができる。例えば、アプリケーションは、地球190の片側での動作のみを必要とすることができる。その結果、編成プラットフォーム177は、衛星が地球190の特定の側に地理的に位置しているときにアプリケーションの処理を可能にするスケジュールを生成することができる。
【0016】
上記提供された例は、スケジュールを生成する1つのバージョンを含むが、アプリケーションについての動作のスケジュールを決定する際に他の情報が使用されてもよいことが理解されるべきである。例えば、アプリケーションの開発者は、衛星上の処理リソースおよびユーザセンサを割り当てる際に使用可能なコスト制約を供給することができる。他の実施例では、開発者は、センサセキュリティなどの要件、および処理要件を提供してもよく、必要な基準を提供する利用可能な衛星のリストが提供されてもよい。リストから、開発者は、その後に所望される時間および衛星を選択し、衛星プラットフォームへの展開のためにアプリケーションを承認することができる。
【0017】
アプリケーションが衛星プラットフォームの衛星に展開されることが承認されると、地上制御システム170は、衛星のうちの1つ以上とのアップリンクを開始してアプリケーションを衛星に提供するとともに、衛星に関する任意のスケジューリング情報を更新することができる。所望の衛星にアップロードされると、アプリケーションは、編成プラットフォーム177において決定されたスケジューリングに基づいて実行を開始することができる。いくつかの実施例では、地上制御システム170からのアップリンクは、必要とされる衛星にアプリケーションを提供する責を単独で担うことができる。他の実施例では、地上制御システム170は、その後にそのアプリケーションを衛星プラットフォームの1つ以上の他の衛星に配信することができる第1のセットの衛星にアプリケーションを供給してもよい。例えば、地上制御システム170は、第1のアプリケーションを衛星120に提供してもよく、衛星120は、次にそのアプリケーションをピアグループ内の他の衛星に供給してもよい。特に、衛星120は、同じピアグループ内にある衛星110にアプリケーションを提供することができ、衛星110が地上制御システム170から通信を直接受信することなくアプリケーションの動作を提供することを可能にする。さらに、衛星に初期設定を提供するのと同様に、地上制御システム170は、衛星プラットフォームにおいて動作する各アプリケーションに更新を供給するためにさらに使用されてもよく、各衛星上の任意のスケジューリング情報をさらに更新してもよい。
【0018】
衛星環境100に示されているものはまた、衛星(SATS)181を周回軌道衛星110〜113および120〜123とともに周回するように輸送するために使用されることができる打ち上げシステム180である。衛星181は、アプリケーションが衛星上で仮想ノードとして実行することを可能にするハードウェアおよびソフトウェア構成を含む。いくつかの実施例では、衛星181は、アプリケーションなしで打ち上げシステム180を使用して打ち上げられることができ、代わりに、地上制御システム170からアップリンクで提供されるときにアプリケーションをロードおよび実行するために使用されることができる基本オペレーティングシステムまたはハイパーバイザが提供されることができる。他の実施例では、衛星181は、衛星上のオペレーティングシステムまたはハイパーバイザを介して実行されることができる第1のアプリケーションのセットを用いて構成されることができる。したがって、軌道に入ると、アプリケーションは、実行を開始してアプリケーションの動作を提供することができる。これらのアプリケーションは、さらに、地上制御システム170からアップリンクで提供される情報に基づいて追加され、除去され、変更されることができる。
【0019】
図2は、実施例にかかる仮想ノード用のプラットフォームを提供することができる衛星110の拡大
図200を示している。衛星110は、仮想化実行セグメント201、制御セグメント202、およびインターフェースセグメント203を含み、これらは様々な通信リンクを使用して結合されることができる。仮想化実行セグメント201は、仮想ノード241〜244用の仮想化ユーザ空間240、オペレーティングシステムまたはハイパーバイザ235、オペレーティングシステムおよび仮想ユーザ空間を記憶するための記憶システム232、ならびに処理システム230を含む仮想化実行システムを表す。制御セグメント202は、さらに、飛行制御システム211と推進ナビゲーション210とを含む。インターフェースセグメント203は、さらに、ユーザセンサ220および通信インターフェース221を含み、通信インターフェース221は、地上通信および衛星間通信に使用されることができる。ユーザセンサ220は、撮像センサ、温度センサ、光センサ、または仮想ノード241〜244と相互作用することができるいくつかの他の同様のセンサを含むことができる。
【0020】
本明細書で説明されるように、組織は、衛星プラットフォームのうちの1つ以上の衛星上の仮想ノードとして展開されることができるアプリケーションを生成することができる。これらのアプリケーションは、地上制御システムから提供されてもよく、または衛星110上の通信インターフェース221を介して他の衛星から提供されてもよい。アプリケーションが提供されると、記憶システム232に記憶され且つ処理システム230によって実行されるオペレーティングシステム/ハイパーバイザ235は、アプリケーションを実行するためのプラットフォームを提供することができる。ここで、衛星110に提供される各アプリケーションは、仮想ノード241〜244における別個の仮想ノードとして実行され、仮想ノードは、記憶システム232における基本オペレーティングシステムからリソースを共有することができるフルオペレーティングシステム仮想マシンまたはコンテナを含むことができる。
【0021】
仮想ノードの実行を管理するために、オペレーティングシステム/ハイパーバイザ235は、処理システム230の処理リソースを各ノードに、ユーザセンサ220を各ノードに、および衛星110上の他の同様のリソースを割り当てるために使用されるスケジュールを管理することができる。特に、スケジュールは、各アプリケーションが、定義された期間中に処理システム230から処理リソースを受け取るようにスケジューリングされ、定義された期間中にユーザセンサ220へのアクセスを受け取るようにスケジュールされることを保証するために使用されることができる。いくつかの実施例では、アプリケーションのうちの1つ以上は、衛星110上で同じ期間中に実行されることができる。これらのアプリケーションは、ユーザセンサ220における異なるセンサを使用してもよく、ユーザセンサ220におけるセンサの使用を時分割してもよく、またはそれらの動作においてユーザセンサ220からの同じデータを使用してもよい。センサを割り当てるために、オペレーティングシステム235は、各動作仮想ノードに必要なユーザセンサへの通信リンクを提供し、スケジューリングに基づいて必要なセンサへの通信リンクを割り当て解除または削除することを担うことができる。例えば、撮像装置は、第1の期間中に仮想ノード241によってアクセスされてもよく、仮想ノード241は、オペレーティングシステム235によって提供されたアドレス指定情報に基づいてセンサにアクセスしてもよい。期間が満了すると、オペレーティングシステム235は、いくつかの例では、仮想ノードのアドレス指定アクセスを削除し、センサのアクセスを第2の仮想ノードに割り当てることによって、仮想ノード241がセンサにアクセスするのを防ぐことができる。
【0022】
仮想化実行セグメント201で提供される仮想ノード動作に加えて、衛星110は、さらに、制御セグメント202を含む。仮想化実行セグメント201およびインターフェースセグメント203に通信可能にリンクされることができる制御セグメント202は、衛星110の衛星の物流制御要素を担う。これらの動作は、衛星上の太陽電池パネルの配備を管理すること、地球もしくは太陽に関する衛星の位置を管理すること、または任意の他の同様の動作を含むことができる。少なくとも1つの例では、飛行制御システム111は、オペレーティングシステム235からの要求を監視し、衛星がオペレーティングシステム235からの要求を受け入れることができるかどうかを判定することができる。例えば、仮想ノード241は、ユーザセンサを移動させる要求を生成することができ、これも推進およびナビゲーション210を使用した移動を必要とする。要求に応答して、飛行制御システム211は、移動ができないと判定し、推進およびナビゲーション210を使用して衛星の移動を防止することができる。さらに、いくつかの実施例では、飛行制御システム211は、移動が許可されていないことを示す通知をオペレーティングシステム235および仮想ノード241に提供することができる。
【0023】
図2の例では別個のシステムとして示されているが、いくつかの例では、飛行制御システムは、処理システム230および記憶システム232上に実装されて記憶されてもよいことが理解されるべきである。しかしながら、飛行制御システムは、別個の記憶システムに記憶され、オペレーティングシステム235およびその対応する仮想ノードとは異なる処理システムを使用してもよいこともまた理解されるべきである。
【0024】
図3は、実施例にかかる仮想ノード用のプラットフォームを提供することができる衛星を展開する動作を示している。
図3の動作は、
図1の衛星環境100のシステムおよびオブジェクトを参照して以下の段落において括弧内で参照される。
【0025】
図示のように、動作は、衛星プラットフォームの1つ以上の衛星内の仮想ノードとして展開されることができるアプリケーションを開発すること(301)を含む。アプリケーションを開発するために、アプリケーションが衛星上のセンサを使用およびアクセスして所望のデータを取得することを可能にするツールおよびAPIを含む設計プラットフォーム175が開発者に提供されることができる。設計プラットフォーム175を使用してアプリケーションが開発されると、開発者は、検証プラットフォーム176によって
図1に表されているシミュレーションプラットフォームを使用してアプリケーションを試験し(302)、検証プラットフォームは、アプリケーションの動作を監視するために物理または仮想シミュレーションプラットフォームを提供することができる。さらに、検証プラットフォーム176は、アプリケーションが他の協調アプリケーションと干渉しないこと、または衛星自体の飛行にいかなる問題も引き起こさないことを保証するために様々な試験を提供することができる。
【0026】
試験されると、アプリケーションは、衛星プラットフォーム内の1つ以上の衛星に展開される(303)。いくつかの例では、アプリケーションを衛星に展開するために、アプリケーションは、スケジュールを必要とすることができ、そのスケジュールは、アプリケーションの開発者のタスクおよび予算の要件に基づいて決定されることができる。少なくとも一実施例では、ユーザは、関心のある地理的領域、関心のある動作時間、予算の制約、またはそれらの組み合わせを含む任意の他の同様の変数を編成プラットフォーム177に提供することができる。変数が提供されると、ユーザは、所望のタスクを実行するために利用可能な衛星のプールおよび動作時間から選択することができる。スケジューリングされると、アプリケーションは、地上制御システム170を介して衛星プラットフォーム内の1つ以上の衛星に展開されることができる。衛星のそれぞれについての更新されたスケジュールとともに展開された後、アプリケーションは、同じ衛星上の1つ以上のアプリケーションとともに仮想ノードとして実行されることができる。
【0027】
オプションの動作として、
図3に示すように、アプリケーションは、さらに、第1の衛星から1つ以上の二次衛星へと展開されてもよい(304)。衛星にわたるこの展開は、地上制御システム170がアプリケーションを衛星プラットフォームにアップロードする回数を少なくすることを可能にし、代わりに、アプリケーション自体がアプリケーションをプラットフォーム内の他の衛星ノードに配信または展開することを可能にする。例えば、地上制御システム170は、衛星122にアプリケーションを展開することができる。次に、衛星122は、アプリケーションを衛星111〜112に展開して、アプリケーション用のピアグループ141を生成することができる。したがって、個々の衛星にアプリケーションを提供するために地上制御システム170に頼る代わりに、衛星自体が衛星プラットフォーム全体にアプリケーションを展開することができる。
【0028】
図4は、実施例にかかる衛星内に仮想アプリケーションを展開する動作を示している。
図3の動作は、
図1のコンピューティング環境100のシステムおよびオブジェクトを参照して以下の段落において括弧内で参照される。特に、
図4の動作は、
図1および
図2の衛星110を参照して説明される。
【0029】
図4に示すように、動作は、衛星110上の個々の仮想ノードとして実行可能な複数のアプリケーションを展開すること(401)を含む。これらの仮想ノードは、いくつかの例ではフルオペレーティングシステム仮想マシンを含むことができるが、いくつかの場合にはDockerおよびLinux(登録商標)コンテナなどのコンテナも含むことができる。これらのアプリケーションは、地上制御システム170を使用して衛星110に提供されてもよく、また、衛星プラットフォーム内を周回する他の衛星を介して提供されてもよい。アプリケーションに加えて、動作は、さらに、衛星110上の複数のアプリケーションについてのリソーススケジュールを展開すること(402)を含み、リソーススケジュールは、ユーザセンサの利用可能性および各アプリケーションに対するシステムリソースの処理をスケジューリングするために使用される。このリソースのスケジューリングは、いくつかの例では時分割スケジューリングを含むことができ、2つのアプリケーションは、いずれかの場合に処理システムおよび/またはセンサにアクセスすることが防止されることができる。例えば、仮想ノード241として動作する第1のアプリケーションは、処理システム230上で第1の期間中に実行されることができるのに対して、仮想ノード242として動作する第2のアプリケーションは、処理システム231上で第2の期間中に実行されることができる。時間リソーススケジューリングに加えてまたはその代わりに、アプリケーションには、衛星110の物理ハードウェアをいずれかの場合に複数のアプリケーションに提供するために使用されることができるハードウェアリソーススケジューリングがさらに提供されることができる。例えば、仮想ノード241として動作する第1のアプリケーションは、処理システム230の第1の処理コアを使用して実行されることができるのに対して、仮想ノード242として動作する第2のアプリケーションは、処理システム230の第2の処理コアを使用して実行されることができる。
【0030】
これらは、衛星110に提供されるリソーススケジュールを介して達成されることができる時分割およびリソース分割のいくつかの例であるが、時分割およびリソース分割の他の組み合わせがリソーススケジュールを介して提供されてもよいことが理解されるべきである。
【0031】
アプリケーションおよびリソーススケジュールが衛星110に提供されると、動作は、さらに、リソーススケジュールに基づいて複数のアプリケーションを実行すること(403)を含む。いくつかの実施例では、スケジュールが提供されると、そのスケジュールは、各仮想ノードの割り当て特権および実行特権を決定するためにオペレーティングシステム235によって使用されることができる。したがって、動作システム235は、スケジュールに基づいて、仮想マシンを開始および停止し、各仮想マシンにセンサへのアドレス指定を提供し、他の可能なスケジューリング動作の中でも、仮想マシンへのリソースの不適切なアクセスを防ぐためのセキュリティ対策を確立することができる。
【0032】
ここで
図5を参照すると、
図5は、実施例にかかる衛星間で状態情報を提供することができる衛星システム500を示している。動作シナリオ500は、衛星510〜512を有する衛星クラスタ520を含み、さらに地球540上の地上制御システム530を含む。
【0033】
本明細書に記載されるように、衛星プラットフォームが展開されることができ、複数の衛星がソフトウェアアプリケーション用の処理空間を提供することが可能である。いくつかの実施例では、衛星プラットフォームは、衛星のうちの1つの障害の場合にバックアップが利用可能であることを保証するために状態情報を使用することができ、さらに複数の衛星にわたって実行されるアプリケーションについてのデータを通信するために使用されることができる。ここで、衛星510〜512の各衛星は、ローカル状態情報を維持し、少なくとも1つの他の衛星と状態情報を通信し、地上制御システム530に状態情報を提供する。
【0034】
いくつかの実施例では、衛星510は、アプリケーションの第1のバージョンで構成されることができる一方で、衛星511は、アプリケーションの第2のバージョンで構成される。衛星の動作中、衛星510は、第1のアプリケーションノードの実行に関連する状態情報を維持し、衛星511に配信するために状態情報を転送することができる。衛星511は、状態データを受信し、状態情報にしたがって第2のアプリケーションノードを実行することができる。この状態データは、第1のアプリケーションノードについて実行されているプロセスに関する情報、第1のアプリケーションノードについて取得されているセンサデータ、または任意の他の同様の状態情報を含むことができる。
【0035】
この構成の結果として、いくつかの例では、衛星510は、処理済みおよび/または未処理の撮像データなどの第1のアプリケーションについての状態情報を維持し、その状態情報を衛星511に転送することができる。そして、衛星511は、アプリケーションの第2のバージョンを使用して状態情報を修正することができ、状態情報を修正することは、センサ511からの追加のセンサデータを追加すること、第1の衛星および第2の衛星からのセンサデータを処理すること、第1の衛星からのデータの部分を削除すること、またはデータの他の同様の操作を提供することを含むことができる。状態情報が修正されると、状態情報は、衛星512に通信されることができ、または地上制御システムに通信されることができる。衛星510〜512上に撮像センサを有するものなどのいくつかの実施例では、第1の衛星から第2の衛星への状態情報の交換は、少なくとも1つの地上ベースの関心オブジェクトを追跡するために第2の衛星によって使用されることができ、または、新たなセンサデータに基づいて、少なくとも1つの地上ベースの関心オブジェクトについての認識プロセスとして機能するように状態情報の分析を改良するために使用されることができる。
【0036】
いくつかの例では、衛星510上の第1のアプリケーションノードからの状態情報を修正するためのピアとして動作する代わりに、衛星511は、衛星510上の第1のアプリケーションについてのバックアップとして動作するように構成されることができる。特に、衛星510は、衛星511に状態情報を提供することができ、状態情報は、アプリケーション510の現在の状態を含む。状態情報がピア衛星511に提供されると、衛星511は、衛星510の動作状態における障害を識別することができる。障害の識別に応答して、衛星511は、衛星510から少なくとも1つの障害のある仮想ノードを実行することができる新たなピアリングノードを識別し、衛星510から受信した状態情報に少なくとも部分的に基づいて新たなピアリングノードを確立する。いくつかの実施例では、新たなピアリングノードは、衛星511を含むことができるが、新たなピアリングノードは、衛星プラットフォーム内の他の衛星を含むことができることが理解されるべきである。
【0037】
衛星システム500の動作をさらに説明するために、
図6が提供される。
図6は、実施例にかかる衛星クラスタ内の衛星の障害を解消するタイミング図を示している。
図6は、
図5の衛星システム500からの衛星510〜512を含む。
【0038】
この例に示されるように、衛星510〜512は、状態情報を交換し、状態情報は、各ノード上で実行されているアプリケーションの現在の状態についての情報を含む。この状態情報は、どのアプリケーションが実行されているか(スケジューリング情報)、各アプリケーションについてどのタスクまたはプロセスが実行されているか、各アプリケーションからのデータ、またはいくつかの他の同様の状態情報を含むことができる。状態情報の交換中に、衛星511は、これらに限定されるものではないが、ハードウェア障害、ソフトウェア障害、太陽現象、またはいくつかの他の同様の障害を含む様々な要因から生じることがある障害に遭遇する。障害が発生すると、他の衛星、この例では衛星512は、衛星511が障害から回復することが不可能であることを識別し、障害前の衛星511の以前の状態を識別する。以前の状態の識別後、衛星512は、次に状態を衛星511に提供し、衛星511が以前の状態を実行することを可能にする。
【0039】
いくつかの実施例では、衛星間で状態情報を交換するために、各衛星は、定義された間隔で状態情報を提供するように構成されることができる。これらの間隔は、衛星上で動作するアプリケーション自体によって定義されてもよく、あるいはアプリケーションについてのプラットフォームを提供するオペレーティングシステムまたはハイパーバイザによって定義されてもよい。いくつかの例では、衛星間の状態交換は、どの衛星が状態を交換する際に使用されるべきかをプロバイダが選択することができるように、オペレーティングシステムおよび/または衛星プラットフォームプロバイダによって定義されることができる。他の実施例では、アプリケーションは、どの衛星が状態情報を交換するためのクラスタとして定義されるべきかを定義するために使用されることができる。例えば、アプリケーションは、アプリケーションのバージョンを実行するために使用される他の衛星と状態情報を交換することができる。
【0040】
少なくとも一実施例では、衛星511が障害から回復することができないことを識別する際に、衛星512は、衛星512からの回復状態情報なしに衛星511が動作可能であるかどうかを示す通知を衛星511から受信するように構成されることができる。直接通知または通知の欠如のいずれかによって衛星511が回復することができないことを示す場合、衛星512は、受信した最後の状態を識別し、実装のためにその状態を衛星511に提供することができる。この状態の提供は、衛星511上の全てのアプリケーションについての状態、または障害に遭遇したアプリケーションに関連する状態データの一部を含むことができる。
【0041】
図7は、実施例にかかる衛星上の少なくとも1つのアプリケーションノードの障害を解消するための動作を示している。
図7の動作は、
図5の衛星システム500のシステムおよびオブジェクトを参照して以下の段落で括弧内に参照される。特に、衛星511の障害について言及するが、衛星システムの衛星510および512によって同様の動作が提供されることができることが理解されるべきである。
【0042】
図示のように、衛星511の動作は、衛星511上の仮想アプリケーションノードに関するローカル状態情報を維持すること(701)を含み、アプリケーションノードは、フルオペレーティングシステム仮想マシンまたは仮想コンテナを含むことができ、状態情報は、実行中のプロセスについて取得されたアプリケーションおよびデータのそれぞれについて実行されるプロセスに関する情報を含むことができる。状態情報が各仮想ノードについて収集されると、動作は、さらに、アプリケーション仮想ノードのうちの少なくとも1つについての割り込みイベントを識別すること(702)を提供する。この割り込みは、ソフトウェアの割り込みまたは障害、ハードウェアの割り込みまたは障害、または太陽フレアもしくはスペースデブリなどの自然の事象による割り込みを含むことができる。割り込みは、アプリケーションノードのオペレーティングシステムまたはハイパーバイザによって識別されてもよく、オペレーティングシステムもしくはハイパーバイザの再起動、アプリケーションからの異常なもしくは予測不可能な活動、オペレーティングシステムもしくはハイパーバイザに問題を報告するアプリケーション、または他の割り込み識別イベントによって識別されてもよい。
【0043】
少なくとも1つのアプリケーションノードについての割り込みイベントを識別することに応答して、衛星511の動作は、さらに、少なくとも1つのアプリケーションノードについての最新の状態を識別し(703)、少なくとも1つのアプリケーションノードについての最新の状態に基づいてユーザ空間を構成する(704)。例えば、アプリケーションが衛星511上で実行されているとき、動作状態は、その状態が少なくとも1つのアプリケーションノードの障害から回復するために使用されることができるように、衛星上で局所的に維持されることができる。これらの状態は、衛星の別個の記憶媒体、または一次アプリケーションと同じ記憶媒体に記憶されることができ、定義された間隔で更新されることができる。衛星上で実行されているアプリケーションノードの障害を識別することに応答して、衛星に記憶されている最近の状態が識別されることができ、アプリケーションは、前の状態に復元されることができる。いくつかの例では、この状態更新は、障害の前に実行されていたプロセスを再開することを含むことができる。他の実施例では、アプリケーションノードのプロセスを再開することに加えてまたはその代わりに、データは、衛星511上でリフレッシュされて少なくとも1つのアプリケーションを障害前の前の状態にすることができる。
【0044】
図8は、実施例にかかる衛星間で状態情報を提供する動作シナリオ800を示している。動作シナリオ800は、
図5の衛星システム500からのシステムおよび要素を含む。特に、動作シナリオ800は、
図5の衛星システム500からの衛星510〜512、地上制御システム530、および地球540を含む。
【0045】
動作中、衛星510〜512は、衛星間で動作データをハンドオフすることができるアプリケーションノードを用いて構成されることができる。このハンドオフは、単一の衛星がその定義された軌道を使用することができないことがあっても、アプリケーションが地理的な特徴に関する動作を継続することを可能にする。例えば、画像を撮像し、特定の地理的領域にわたって画像を処理するためのアプリケーションが開発されることができる。第1の衛星が画像を撮像して処理すると、衛星の軌道は、関心のある地理的領域から遠ざかることがある。結果として、第1の衛星上のアプリケーションは、状態情報、またはこの例では撮像データを第2の衛星に提供し、第2の衛星が関心のある地理的領域に関して動作を継続することを可能にすることができる。
【0046】
ここで、動作シナリオ800に示すように、衛星510は、ステップ1において、第1のセンサデータを識別し、ステップ2において、センサデータを衛星511に転送する。いくつかの例では、衛星510から衛星511に転送されるセンサデータは、生のセンサデータを含むことができ、生のセンサデータは、生の撮像ファイル、ヒートマッピング、光測定値、または衛星510上のセンサからのいくつかの他のセンサデータを含むことができる。衛星510から受信されると、衛星511は、ステップ3において、第2のセンサデータを識別し、ステップ4において、センサデータおよび第2のセンサデータを衛星512に転送することができる。
【0047】
いくつかの実施例では、衛星511は、衛星510からの結合データならびに衛星511によって識別されたローカルセンサデータに対して演算を実行して修正状態データを生成するように構成されることができる。例えば、アプリケーションが撮像アプリケーションである場合、衛星511は、画像の特性を判定する際に、衛星510から得られた画像と、衛星511上の1つ以上の撮像センサを使用して識別されたローカル画像とを使用することができる。これらの特性は、画像内のオブジェクトの動き、画像のオブジェクト内の物理的変化、または画像からのいくつかの他の判定を含むことができる。いくつかの例では、処理されたデータはまた、衛星510〜511によって識別された生データとともに衛星512に転送されてもよい。
【0048】
データが衛星511から受信されると、衛星512は、ステップ5において、第3のセンサデータを識別し、ステップ6において、受信されてローカルに識別された状態データの属性を識別することができる。撮像データの例に戻って参照すると、衛星512は、衛星510〜511上のセンサから得られた撮像データ、ならびにセンサ512から得られたローカル撮像データを使用して、画像内の属性を識別することができる。これは、衛星512が衛星512のセンサからの情報だけでは識別することができなかったかもしれない特定の地理的領域内の特性または属性を識別することを可能にする。
【0049】
いくつかの例では、衛星間で転送される情報は、前の衛星からの識別可能な特性を含むことができる。これらの特性は、その特定の衛星におけるセンサデータの処理を介して得られた情報を含むことができる。例えば、衛星510は、地理的領域内の関心オブジェクトを識別し、そのオブジェクトの特性を衛星511に通信することができる。これらの特性は、オブジェクトの形状、オブジェクトの位置、またはオブジェクトの任意の他の同様の特性を含むことができる。衛星510からの情報、およびいくつかの例では衛星510から提供される任意の生データに基づいて、衛星511は、関心オブジェクトのさらなる特性を識別することができる。これらの特性は、オブジェクトの動き、オブジェクトの任意の形状もしくは色の変化、または任意の他の同様の特性を含むことができる。さらに、オブジェクトの特性を識別する衛星511に加えてまたはその代わりに、衛星511は、生データおよび識別された特性を衛星512に転送することができる。これは、衛星512が衛星510〜511によって識別された属性に少なくとも部分的に基づいて生データ内の属性を識別することを可能にする。
【0050】
動作シナリオ800にさらに示されるように、属性または特性が衛星によって識別されると、データは、状態情報として地上制御システム530に報告されることができる。この状態情報は、センサデータの識別された属性に関連する関連データのみを含むことができるが、いくつかの例では生センサデータの少なくとも一部も含むこともできる。さらに、状態データを地上制御システム530に報告する衛星512としてのみ示されているが、状態データは、衛星510〜511のいずれかから地上制御システム530に提供されてもよいことが理解されるべきである。
【0051】
図9は、実施例にかかる衛星の障害に応答して新たなピアを生成する動作シナリオ900を示している。動作シナリオ900は、
図5の衛星システム500からのシステムおよび要素を含む。特に、動作シナリオ900は、衛星510〜512を含み、さらに新たな衛星513を含む。
【0052】
本明細書で説明されるように、衛星プラットフォーム内の衛星は、ピアクラスタにグループ化されてもよく、ピアクラスタは、各衛星上で実行されている仮想ノードに関する状態情報を交換する。この状態情報は、ノード上で実行されているアプリケーションについての画像、個々のアプリケーションについて実行されているプロセス、アプリケーションについてのセンサデータ、または任意の他の同様の情報を含むことができる。動作シナリオ500に示されるように、衛星510〜512は、ステップ1において、その上で実行されているアプリケーションに関する状態情報を交換することができる。状態情報を交換している間に、衛星511または衛星512のうちの少なくとも1つは、衛星510による障害を識別することができる。この障害は、ハードウェア障害、ソフトウェア障害、または他の同様のタイプの障害の結果である可能性があり、仮想ノードのうちの少なくとも1つが動作不能になる可能性がある。衛星510が障害を報告するときまたは状態通知が衛星510から受信されないときに検出されることができる障害の識別に応答して、ステップ3において、状態情報の交換のために新たな衛星513がピアクラスタに追加されることができる。
【0053】
いくつかの実施例では、新たなピアを識別する際に、新たなピアは、衛星511〜512からの状態情報を記憶するために使用されることができ、障害がある衛星510についてのアプリケーションを実行するために使用されることができない。他の実施例では、新たなピアを識別する際に、衛星513は、衛星511および/または512によって提供される状態情報にしたがって衛星510の1つ以上のアプリケーションを実行して衛星510の障害を解消するように構成されることができる。参加すると、衛星513は、さらに、将来の状態情報を衛星511および512と通信するように構成されることができる。
【0054】
図10は、実施例にかかる衛星システムにおける衛星の障害を解消するタイミング
図1000を示している。
図10は、
図5の衛星システム500からの衛星510〜512を含む。
【0055】
図示のように、ピア衛星グループとして機能する衛星510〜512は、その上で実行されている少なくとも1つのアプリケーションに関する動作状態情報と、少なくとも1つのアプリケーションによる処理のために収集されたセンサデータ情報とを含む状態情報を交換する。状態情報の交換中に、衛星511は、衛星上で少なくとも1つのアプリケーションの実行を妨げるハードウェアまたはソフトウェアの障害に遭遇することがある。障害後、衛星510〜511は、衛星511が障害から回復することが不可能であることを識別し、障害があるアプリケーションノードの実装を開始する。
【0056】
少なくとも一実施例では、衛星511の障害を識別するために、衛星510および512は、衛星511とヘルスチェック通信を交換することができる。衛星511が通信のうちの1つにおいて障害が発生したことを示すか、または定義された期間内にヘルスチェック通信を通信できない場合、衛星511〜512は、障害が発生したことを識別することができる。障害が識別されると、障害が発生したノードを実装する際に、その実装は、障害を識別した直後に行われてもよく、または障害に関してある期間が経過した後に行われてもよい。例えば、衛星512は、衛星511の障害を識別し、定義された期間後に衛星511が利用不可能であると判定されるまで、障害があるノードの実装を保留してもよい。期間が経過すると、衛星512は、障害があるアプリケーションのうちの1つ以上を仮想ノードとして実装することができる。
【0057】
衛星511からの障害があるノードを実装する2つの衛星が
図10の例に示されているが、障害はあるノードを実装する際に任意の数の衛星が使用されてもよいことが理解されるべきである。例えば、衛星511は、衛星512に状態情報を提供し、衛星512が衛星511からの障害があるアプリケーションノードを実装することを可能にすることができる。
【0058】
ここで
図11を参照すると、
図11は、実施例にかかる衛星動作を示している。
図11は、
図5の衛星システム500からの衛星510を含むが、衛星プラットフォームの任意の衛星で同様の動作が起こり得ることが理解されるべきである。
【0059】
図示のように、衛星510は、地上制御システムからアプリケーションおよび状態情報を受信するように構成されている。このアプリケーションおよび状態情報は、仮想マシンのオペレーティングシステムもしくはハイパーバイザへの更新、ユーザソフトウェアペイロード(アプリケーションおよび更新)、およびアプリケーションのタスク、アプリケーションのスケジュール、または任意の他の同様の情報を含むことができる状態情報を含むことができる。地上との通信に加えて、衛星510は、さらに、衛星のユーザ空間に記憶されているアプリケーションを実行し、各アプリケーションにセンサデータを提供するように構成される。これらのアプリケーションは、地上制御システムから提供され且つ仮想ノード用のオペレーティングシステムまたはハイパーバイザによって実装されることができるスケジュールにしたがって実行され、スケジュールは、各アプリケーションにリソースを割り当てる。これらのリソースは、衛星上のセンサリソースと同様に処理リソースを含むことができる。さらに、仮想ノードの実行中、衛星510は、各アプリケーションの状態情報を維持するように構成されている。この状態情報は、各アプリケーションについて実行しているプロセスの状態、各アプリケーションについて収集されたデータ、または他の同様の状態情報を含むことができ、定義された間隔で収集されることができる。いくつかの実施例では、状態情報は、衛星上にローカルに記憶されて、1つ以上のアプリケーションによるハードウェアまたはソフトウェアの障害から回復することができる。いくつかの実施例では、状態情報は、1つ以上の他のピア衛星および/または地上制御システムに通信されることができ、状態情報は、障害イベント中の回復に使用されることができる。この状態情報は、衛星510を回復するために使用されてもよく、または他のピア衛星上の仮想ノードとしてアプリケーションを実装するために使用されてもよい。
【0060】
上述したように、アプリケーションの実行を提供するために、オペレーティングシステムまたはハイパーバイザは、ユーザタスクを交換し且つ衛星510上で実行されている各仮想アプリケーションノードへのリソースの割り当てを管理するために使用されることができる。このスケジューリングは、第1のアプリケーションに第1の期間にわたってユーザセンサへのアクセスを提供すること、および第2のアプリケーションに第2の期間にわたって同じユーザセンサへのアクセスを提供することなどのリソースの時分割割り当てを含むことができ、1つ以上のコアを第1の仮想ノードに提供することおよび1つ以上の二次コアを第2の仮想ノードに提供することなどのリソースの物理的共有をさらに含むことができる。これらは、衛星上にリソースを割り当てるほんの数例であるが、衛星に提供されるスケジュールに基づいて時分割および物理的リソース分割の任意の組み合わせを使用できることが理解されるべきである。
【0061】
衛星510上のアプリケーションについてのプラットフォームを提供することに加えて、1つ以上のプロセスは、ヘルス監視専用とすることができる。上述した動作と同様に、衛星は、衛星が他の衛星上の動作を監視することを可能にするピアまたはクラスタとして構成されることができる。これは、衛星510が他の衛星にヘルスチェック通信を提供すること、ならびに障害または問題が検出されたときに通知または警告を受信することを可能にする。いくつかの例では、第2の衛星内の障害を識別するために、衛星510は、その障害を示す通知を直接受信することができる。他の例では、衛星510は、定義された期間内に「ハートビート(heartbeat)」または状態通知を受信することに障害(失敗)することができ、受信の欠如に基づいて、障害が他の衛星で発生したと判定することができる。
【0062】
第2の衛星について障害が識別されると、衛星510は、第2の衛星からのアプリケーションをサポートするために1つ以上の新たな仮想ノードを開始することができ、第2の衛星の回復を助けるために状態情報を第2の衛星に提供することができ、第2の衛星を交換するためにピアグループに追加される第3の衛星を識別することができ、または動作のいくつかの組み合わせを提供することができる。
【0063】
図12は、実施例にかかる展開ユーザインターフェース1200を示している。展開ユーザインターフェース1200は、アプリケーション展開のための衛星クラスタを表す衛星1210〜1213および1220〜1223を含む。展開インターフェース1200は、アプリケーションを展開するシミュレーションにおいて使用されることができるか、または展開されたアプリケーションについての状態情報を提供するために使用されることができるインターフェースを表す。
【0064】
第1に、シミュレーションインターフェースとして、開発ユーザインターフェース1200は、アプリケーションの機能を試験するために使用されることができ、さらにアプリケーションが任意の検証試験に合格したかどうかを判定するために使用されることができる。開発者は、アプリケーションをシミュレートされた衛星1210〜1213および1220〜1223のうちの1つ以上に展開し、一定期間にわたってアプリケーションの動作を監視することができる。アプリケーションが所望どおりに動作していると開発者が判定した場合、そのアプリケーションは、展開が承認され、物理衛星プラットフォーム内の1つ以上の衛星に展開されることができる。しかしながら、変更が必要であると開発者が判定した場合、開発者は、開発ツールに戻ってアプリケーションコードを変更することができる。いくつかの例では、開発ユーザインターフェースは、アプリケーションに人工センサデータを提供して、アプリケーションプロセスが所望どおりに機能していることを保証するために使用されることができる。この人工センサデータは、撮像データ、光測定値、熱測定値、またはアプリケーションによって必要とされるセンサに基づくいくつかの他のデータを含むことができる。
【0065】
第2に、物理プラットフォームにおけるアプリケーションの展開を監視するために、アプリケーションの管理者または開発者に同様のインターフェースが提供されることができる。特に、衛星プラットフォーム内の衛星は、プラットフォーム用の地上制御システムに状態情報を提供するように構成されることができる。この情報は、アプリケーションの現在の動作状態(実行中のプロセス、メモリ状態、記憶状態など)を含むことができ、さらに、取得されているセンサデータに関する情報(処理済みおよび未処理の両方)を含むことができる。状態情報に基づいて、開発ユーザインターフェース1200は、フレームワークに展開されているときのアプリケーションの状態を表示することができる。例えば、アプリケーションが衛星1210〜1213からなる衛星クラスタに展開された場合、開発ユーザインターフェース1200は、各衛星上のアプリケーションに関する状態情報を提供することができる。しかしながら、プラットフォームの同じ衛星または他の衛星上でともに実行されている他のアプリケーションは、管理者または開発者に提供されなくてもよい。
【0066】
図12の例ではユーザインターフェースとして示されているが、いくつかの例では、アプリケーションの試験および監視は、展開された衛星の物理的表現を介して達成されてもよいことが理解されるべきである。この物理的表現は、アプリケーションが展開される前にアプリケーションを試験するため、またはアプリケーションが展開された後のアプリケーションの現在の状態を表すために使用されることができる1つ以上の衛星モデルを含むことができる。
【0067】
図13は、実施例にかかる仮想化衛星アプリケーションプラットフォームを提供するための衛星コンピューティングシステム1300を示している。コンピューティングシステム1300は、衛星に関して本明細書で開示されている様々な動作アーキテクチャ、プロセス、シナリオ、およびシーケンスが実装されることができる任意のコンピューティングシステムまたはシステムを表す。コンピューティングシステム1300は、
図1および
図5からの衛星の例であるが、他の例が存在してもよい。コンピューティングシステム1300は、通信インターフェース1301、センサ1302、および処理システム1303を備える。処理システム1303は、通信インターフェース1301およびセンサ1302にリンクされている。センサ1302は、撮像センサ、熱センサ、光センサ、またはいくつかの他の同様のタイプのセンサを含むことができる。処理システム1303は、処理回路1305と、オペレーティングソフトウェア1307を記憶するメモリ装置1306とを備える。コンピューティングシステム1300は、明確にするために示されていない、電池、太陽電池パネル、および筐体などの他の周知の構成要素を含むことができる。
【0068】
通信インターフェース1301は、ネットワークカード、ポート、無線周波数(RF)、処理回路およびソフトウェア、あるいはいくつかの他の通信装置などの通信リンクを介して通信する構成要素を備える。通信インターフェース1301は、無線リンクを介して通信するように構成されることができる。通信インターフェース1301は、時分割多重(TDM)、インターネットプロトコル(IP)、無線プロトコル、通信シグナリング、またはそれらの組み合わせを含む−いくつかの他の通信フォーマットを使用するように構成されることができる。いくつかの実施例では、通信インターフェース1301は、衛星プラットフォーム内の1つ以上の他の衛星と通信し、地上制御システムと通信することができる。
【0069】
処理回路1305は、マイクロプロセッサと、メモリ装置1306からオペレーティングソフトウェア1307を取得して実行する他の回路とを含む。メモリ装置1306は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含むことができる。メモリ装置1306は、単一の記憶装置として実装されてもよいが、複数の記憶装置またはサブシステムにわたって実装されてもよい。メモリ装置1306は、オペレーティングソフトウェア1307を読み取るためのコントローラなどの追加の要素を備えることができる。記憶媒体の例には、ランダムアクセスメモリ、読み取り専用メモリ、磁気ディスク、光ディスク、およびフラッシュメモリ、ならびにそれらの任意の組み合わせまたは変形形態、あるいは任意の他の種類の記憶媒体が含まれる。いくつかの実施例では、記憶媒体は、非一時的記憶媒体とすることができる。場合によっては、記憶媒体の少なくとも一部は、一時的なものとすることができる。記憶媒体が伝搬信号であることは決してないことが理解されるべきである。
【0070】
処理回路1305は、通常、メモリ装置1306ならびに通信インターフェース1301およびセンサ1302の一部も保持することができる回路基板上に搭載される。オペレーティングソフトウェア1307は、コンピュータプログラム、ファームウェア、またはいくつかの他の形態の機械可読プログラム命令を含む。オペレーティングソフトウェア1307は、制御モジュール1308、オペレーティングシステムモジュール1309、およびノード1310を含むが、任意の数のソフトウェアモジュールが同じ動作を提供してもよい。オペレーティングソフトウェア1307は、ユーティリティ、ドライバ、ネットワークインターフェース、アプリケーション、またはいくつかの他の種類のソフトウェアをさらに含むことができる。処理回路1305によって実行されると、オペレーティングソフトウェア1307は、処理システム1303に、本明細書で説明されるようにコンピューティングシステム1300を動作させるように指示する。
【0071】
少なくとも一実施例では、ノード1310は、フルオペレーティングシステム仮想マシンまたはコンテナを表す衛星コンピューティングシステム1300に展開されることができ、各ノードは、特定のアプリケーションを提供するように構成される。ノードを実行するために、オペレーティングシステムおよび/またはハイパーバイザを含むことができるオペレーティングシステムモジュール1309は、処理システム1303によって実行されることができ、オペレーティングシステムモジュール1309は、ノード1310についてのプラットフォームを提供する。いくつかの実施例では、プラットフォームを提供する際に、オペレーティングシステムモジュール1309は、ノード1310内の各ノードに処理およびセンサ1302を割り当てるリソーススケジュールを用いて構成されることができる。このリソースの割り当ては、第1のアプリケーションに第1の期間にわたってユーザセンサへのアクセスを提供すること、および第2のアプリケーションに第2の期間にわたって同じユーザセンサへのアクセスを提供することなどのリソースの時分割割り当てを含むことができ、1つ以上のコアを第1の仮想ノードに提供することおよび1つ以上の二次コアを第2の仮想ノードに提供することなどのリソースの物理的共有をさらに含むことができる。
【0072】
ノード1310のそれぞれについてのアプリケーションを実行することに加えて、オペレーティングシステムモジュール1309は、さらに、状態判定および分配のためのプラットフォームを提供することができる。この状態判定は、処理システム1303が各アプリケーションの状態を識別し、他の衛星および地上制御システムと状態を共有することを可能にすることができる。状態は、各アプリケーションノード内のプロセスの動作状態、および/または各アプリケーションノードのデータ状態を含むことができる。状態は、衛星コンピューティングシステム1300上で実行されている様々なアプリケーションの回復に使用されてもよく、さらに、アプリケーションについての拡張されたデータ演算を提供する際に使用されてもよい。例えば、衛星コンピューティングシステム1300上のノードとして実行されているアプリケーションは、データを第2の衛星ノードに通信することができる。この衛星ノードは、第2の衛星上のセンサを使用して第2のデータを識別し、第1の衛星からのデータを第2のデータと組み合わせて特定の動作を提供することができる。この動作は、いくつかの例では画像解析を含むことができ、アプリケーションは、オブジェクトが動いているかどうか、オブジェクトの種類、オブジェクト内の動きの速度、または組み合わされたデータに基づくいくつかの他の同様の判定を行うことができる。
【0073】
例示的な例として、衛星コンピューティングシステム1300は、1つ以上の撮像センサまたはセンサ1302内の撮像システムを使用して、撮像センサによって収集された撮像データに関する状態情報を確立することができる。識別されると、状態情報は、第2の衛星装置に通信されてもよく、第2の衛星装置は、第2の撮像センサを用いて少なくとも第2の撮像センサによって撮像された撮像データによって状態情報を修正してもよい。この修正は、少なくとも1つの関心のある地上ベースのオブジェクトの位置追跡を含むことができ、または少なくとも1つの関心のある地上ベースのオブジェクトについての認識プロセスとして機能するために第2の撮像センサによって撮像された撮像データに基づく状態情報の精密分析を含むことができる。
【0074】
いくつかの例では、センサデータのさらなる分析を提供するために状態情報を交換することに加えてまたはその代わりに、状態情報はまた、衛星コンピューティングシステム1300のバックアップを提供するために使用されることもできる。特に、状態情報は、障害が検出されたときに第2の衛星装置が衛星コンピューティングシステム1300からの1つ以上の仮想ノードを実装することを可能にする第2の衛星装置と共有されることができる。1つ以上の仮想ノードのこの実装または確立は、衛星コンピューティングシステム1300から状態情報を受信する衛星において直接行われてもよく、または衛星コンピューティングシステム1300から状態情報を受信する衛星によって構成可能な第3の衛星で行われてもよい。
【0075】
前の例では他の衛星に情報を提供するように示されていたが、衛星コンピューティングシステム1300はまた、他の衛星から状態情報を受信し、受信した状態情報にしたがって同様の動作を提供するように構成されてもよいことが理解されるべきである。これらの動作は、衛星コンピューティングシステム1300についてのセンサに基づいて状態情報を修正すること、または二次衛星から提供される状態情報に基づいてバックアップピアリング動作を提供することを含むことができる。
【0076】
また
図13に示すように、衛星コンピューティングシステム1300は、衛星用の飛行制御システムとして使用される制御モジュール1308をさらに含む。特に、衛星コンピューティングシステム1300上の別個の処理回路を使用して動作することができる制御モジュール1308は、衛星の電力管理および飛行制御を担うことができる。いくつかの例では、制御モジュール1308は、ノード1310上のアプリケーションにデータを提供するために、ノード1310およびオペレーティングシステム1308から要求を受信することができる。衛星の飛行を含まずに要求に対応できる場合、制御モジュール1308は、要求されたデータをオペレーティングシステムモジュール1309または対応するノードに提供することができる。対照的に、情報を提供することができないまたは飛行動作に対応することができないと判定された場合、制御モジュール1308は、データまたは飛行動作を提供することができないことがある。
【0077】
図14は、実施例にかかる仮想衛星アプリケーションを生成するための開発コンピューティングシステム1400を示している。コンピューティングシステム1400は、地上制御システムに関して本明細書で開示されている様々な動作アーキテクチャ、プロセス、シナリオ、およびシーケンスが実装されることができる任意のコンピューティングシステムまたはシステムを表す。コンピューティングシステム1400は、
図1および
図5からの地上制御システムの例であるが、他の例が存在してもよい。コンピューティングシステム1400は、通信インターフェース1401、ユーザインターフェース1402、および処理システム1403を備える。処理システム1403は、通信インターフェース1401およびユーザインターフェース1402にリンクされている。処理システム1403は、処理回路1405と、オペレーティングソフトウェア1407を記憶するメモリ装置1406とを含む。コンピューティングシステム1400は、明確にするために示されていない、電池、電源、および筐体などの他の周知の構成要素を含むことができる。コンピューティングシステム1400は、1つ以上のサーバコンピューティングシステム、デスクトップコンピューティングシステム、ラップトップコンピューティングシステム、タブレット、またはそれらの組み合わせを含むいくつかの他のコンピューティングシステムを表すことができる。
【0078】
通信インターフェース1401は、ネットワークカード、ポート、無線周波数(RF)、処理回路およびソフトウェア、あるいはいくつかの他の通信装置などの通信リンクを介して通信する構成要素を備える。通信インターフェース1401は、メタリックリンク、無線リンク、または光リンクを介して通信するように構成されることができる。通信インターフェース1401は、時分割多重(TDM)、インターネットプロトコル(IP)、イーサネット(登録商標)、光ネットワーキング、無線プロトコル、通信シグナリング、またはそれらの組み合わせを含む−いくつかの他の通信フォーマットを使用するように構成されることができる。いくつかの実施例では、通信インターフェース1401は、アプリケーション、更新、および他の設定情報を提供するために衛星プラットフォームの衛星と通信するように構成されることができ、さらに各アプリケーションのプロセスの状態に関する状態情報および各アプリケーションのデータを衛星から受信するように構成されることができる。
【0079】
ユーザインターフェース1402は、ユーザと対話してユーザ入力を受信し、媒体および/または情報を提示する構成要素を備える。ユーザインターフェース1402は、スピーカ、マイクロフォン、ボタン、ライト、ディスプレイスクリーン、タッチスクリーン、タッチパッド、スクロールホイール、通信ポート、またはそれらの組み合わせを含む−いくつかの他のユーザ入出力装置を含むことができる。いくつかの例では、ユーザインターフェース1402は省略されてもよい。いくつかの実施例では、ユーザインターフェース1402は、開発者入力を受信して所望のアプリケーションを生成し、仮想衛星環境内でそのアプリケーションを試験するために使用されることができる。ディスプレイスクリーンはまた、物理衛星プラットフォームに展開されているアプリケーションに関する状態情報を表示するためにも使用されることができる。
【0080】
処理回路1405は、マイクロプロセッサと、メモリ装置1406からオペレーティングソフトウェア1407を取得して実行する他の回路とを備える。メモリ装置1406は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性、取り外し可能および取り外し不能の媒体を含むことができる。メモリ装置1406は、単一の記憶装置として実装されてもよいが、複数の記憶装置またはサブシステムにわたって実装されてもよい。メモリ装置1406は、オペレーティングソフトウェア1407を読み取るためのコントローラなどの追加の要素を備えることができる。記憶媒体の例には、ランダムアクセスメモリ、読み取り専用メモリ、磁気ディスク、光ディスク、およびフラッシュメモリ、ならびにそれらの任意の組み合わせまたは変形形態、あるいは任意の他の種類の記憶媒体が含まれる。いくつかの実施例では、記憶媒体は、非一時的記憶媒体とすることができる。場合によっては、記憶媒体の少なくとも一部は、一時的なものとすることができる。記憶媒体が伝搬信号であることは決してないことが理解されるべきである。
【0081】
処理回路1405は、通常、メモリ装置1406ならびに通信インターフェース1401およびユーザインターフェース1402の一部も保持することができる回路基板上に搭載される。オペレーティングソフトウェア1407は、コンピュータプログラム、ファームウェア、またはいくつかの他の形態の機械可読プログラム命令を含む。オペレーティングソフトウェア1407は、設計モジュール1408、検証モジュール1409、および展開モジュール1410を含むが、アプリケーション内の任意の数のソフトウェアモジュールは、同じ動作を提供することができる。オペレーティングソフトウェア1407は、オペレーティングシステム、ユーティリティ、ドライバ、ネットワークインターフェース、アプリケーション、またはいくつかの他の種類のソフトウェアをさらに含むことができる。処理回路1405によって実行されると、オペレーティングソフトウェア1407は、処理システム1403に、本明細書で説明されるようにコンピューティングシステム1400を動作させるように指示する。
【0082】
少なくとも一実施例では、設計モジュール1408は、開発者が衛星上の仮想ノードとして実装可能な新たなアプリケーションを生成することを可能にするプラットフォームを開発者に提供するように処理システム1403に指示する。いくつかの例では、設計モジュール1408は、撮像、光検知、温度検知、および他の同様のセンサなどの物理センサからノードがデータを要求および受信し、データの少なくとも一部を処理することを可能にするツールおよびAPIを提供することができる。設計モジュール1408はまた、アプリケーションを設計するために使用されてもよく、異なる衛星上に配置されたアプリケーションの異なるバージョンは、状態情報を交換してセンサデータ内の特性を識別する能力を強化してもよい。
【0083】
アプリケーションが設計モジュール140を使用して生成されると、検証モジュール1409は、生成されたアプリケーションについての仮想または物理試験インターフェースを提供するために使用されることができる。この試験インターフェースは、1つ以上の物理衛星の表現を含むことができ、アプリケーションは、アプリケーションの動作を検証するために試験衛星に展開されることができる。この試験は、他の可能な試験動作の中でも、試験データをアプリケーションに提供すること、障害に対してアプリケーションを試験することを含むことができる。アプリケーションが所望どおりに実行される場合、そのアプリケーションは、展開のために承認されることができるが、アプリケーションが所望どおりに実行されない場合、開発者は、設計モジュールに戻ってアプリケーションを修正することができる。
【0084】
アプリケーションを試験した後、展開モジュール1410は、周回軌道衛星プラットフォーム内の1つ以上の衛星にアプリケーションを展開するように処理システム1403に指示する。この展開は、必要な衛星のそれぞれに直接アップリンクでアプリケーションを展開することを含むことができ、またはアプリケーションをプラットフォームの他の衛星に分配する1つ以上の第1の衛星にアプリケーションを展開することを含むことができる。
【0085】
ここで、アプリケーションを展開するとき、展開モジュール1410は、衛星プラットフォーム内の他のアプリケーションに関してアプリケーションのリソーススケジュールを決定するように処理システム1403に指示する。少なくとも一実施例では、ユーザは、コスト、アプリケーションの動作に必要な時間、アプリケーションに必要なセンサなどの特性を選択することができる。特性を提供することに応答して、タイムスロットおよび衛星は、利用可能な衛星および必要な特性を満たす時間を示す開発者に利用可能にされることができる。利用可能な衛星および時間から、開発者は、アプリケーションのスケジュールを選択することができ、アプリケーションは、アプリケーションに必要な衛星に展開されることができる。
【0086】
含まれる説明および図は、当業者に最良の選択肢を構成して使用する方法を教示するための特定の実施例を示している。本発明の原理を教示する目的で、いくつかの従来の態様は、簡略化または省略されている。当業者は、本発明の範囲内に入るこれらの実施例からの変形形態を理解するであろう。当業者はまた、上述した特徴が様々な方法で組み合わせられて複数の実施例を形成することができることを理解するであろう。結果として、本発明は、上述した特定の実施例に限定されるものではなく、特許請求の範囲およびそれらの均等物によってのみ限定される。