(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024104729
(43)【公開日】2024-08-05
(54)【発明の名称】航空訓練のためのマスタデータモデル
(51)【国際特許分類】
G09B 9/08 20060101AFI20240729BHJP
【FI】
G09B9/08
【審査請求】未請求
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023212645
(22)【出願日】2023-12-18
(31)【優先権主張番号】18/158,469
(32)【優先日】2023-01-24
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
2.JAVA
(71)【出願人】
【識別番号】500520743
【氏名又は名称】ザ・ボーイング・カンパニー
【氏名又は名称原語表記】The Boeing Company
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】クラッブ, ジェームズ ティー.
(72)【発明者】
【氏名】シュール, ケン ジェー.
(72)【発明者】
【氏名】イップ, デニス
(72)【発明者】
【氏名】エレーラ, ミゲル
(72)【発明者】
【氏名】ニュエン, トロン
(72)【発明者】
【氏名】トラン, ケイ
(57)【要約】 (修正有)
【課題】フライトシミュレータを使用して訓練レッスンを実行する。
【解決手段】航空機を運航するための手続きを含む構造化されていないデータ(例えば、飛行規程)を取り込むことと、構造化されていないデータを、上記手続きを上記手続き中のステップとともに列挙する半構造化データに変換することと、を提供する。さらに、手続き型のステップが、actor-verb-objectの形式を有するデータ構造に変換される。加えて、データ構造が航空機内の構成要素にマッピングされ、航空機内の構成要素が、ソフトウェア・フライトシミュレータ内の対応する構成要素にマッピングされる。
【選択図】なし
【特許請求の範囲】
【請求項1】
方法であって、
航空機を運航するための複数の手続きを含む構造化されていないデータ(105)を取り込むこと(205)と、
前記構造化されていないデータを、前記複数の手続きのそれぞれについて複数のステップを含む半構造化データ(110)に変換すること(210)と、
前記複数の手続き中の前記ステップを、actor-verb-objectの形式によるデータ構造に変換すること(215)と、
前記データ構造を前記航空機(165)内の構成要素にマッピングすること(220)と、
前記航空機内の前記構成要素を、ソフトウェア・フライトシミュレータ(505)内の対応する構成要素にマッピングすること(225)と、
を含む、方法。
【請求項2】
前記データ構造が、データ相互交換形式で表される、請求項1に記載の方法。
【請求項3】
前記データ構造が、エクスペリエンスAPI(xAPI:experience application programming interface)ステートメントである、請求項1に記載の方法。
【請求項4】
前記構造化されていないデータが、前記航空機を運航するための飛行規程を含む、請求項1に記載の方法。
【請求項5】
前記構造化されていないデータを前記半構造化データに変換することが、
前記複数の手続きを正確に実行するために前記複数の手続きのそれぞれの前記ステップを実行しなければならないパターンを特定することを含む、請求項1に記載の方法。
【請求項6】
前記複数の手続中の前記ステップを前記データ構造に変換することが、
訓練レッスンを策定するために、ユーザ入力に応じて前記複数の手続きから或る手続きを選択すること(405)と、
選択された前記手続き中の少なくとも1つのステップのためのテキスト記述を受信すること(415)と、
前記選択された手続きのための前記データ構造及び前記テキスト記述をまとめて、前記ソフトウェア・フライトシミュレータにより実行可能なファイルにすること(420)と、
を含む、請求項1に記載の方法。
【請求項7】
前記ファイルがJSON(JavaScript Object Notation)ファイルである、請求項6に記載の方法。
【請求項8】
前記選択された手続き中の或るステップを、前記actor-verb-objectの形式による新しいデータ構造を追加すること又は前記選択された手続き中の前記データ構造のうちの1つを削除することの少なくとも一方によって、修正すること(410)をさらに含む、請求項6に記載の方法。
【請求項9】
システムであって、
プロセッサ(120)と、
命令を含むメモリ(125)と、
を備え、前記命令が、前記プロセッサによって実行されると、
航空機を運航するための複数の手続きを含む構造化されていないデータを取り込むことと、
前記構造化されていないデータを、前記複数の手続きのそれぞれについて複数のステップを含む半構造化データに変換することと、
前記複数の手続き中の前記ステップを、actor-verb-objectの形式によるデータ構造に変換することと、
前記データ構造を前記航空機内の構成要素にマッピングすることと、
前記航空機内の前記構成要素を、ソフトウェア・フライトシミュレータ内の対応する構成要素にマッピングすることと、
を含む動作を前記システムが実行することを可能にする、システム。
【請求項10】
前記データ構造が、データ相互交換形式で表される、請求項9に記載のシステム。
【請求項11】
前記データ構造が、エクスペリエンスAPI(xAPI:experience application programming interface)ステートメントである、請求項9に記載のシステム。
【請求項12】
前記構造化されていないデータが、前記航空機を運航するための飛行規程を含む、請求項9に記載のシステム。
【請求項13】
前記構造化されていないデータを前記半構造化データに変換することが、
前記複数の手続きを正確に実行するために前記複数の手続きのそれぞれの前記ステップを実行しなければならないパターンを特定することを含む、請求項9に記載のシステム。
【請求項14】
前記複数の手続中の前記ステップを前記データ構造に変換することが、
訓練レッスンを策定するために、ユーザ入力に応じて前記複数の手続きから或る手続きを選択することと、
選択された前記手続き中の少なくとも1つのステップのためのテキスト記述を受信することと、
前記選択された手続きのための前記データ構造及び前記テキスト記述をまとめて、前記ソフトウェア・フライトシミュレータにより実行可能なファイルにすることと、
を含む、請求項9に記載のシステム。
【請求項15】
前記動作が、
前記選択された手続き中の或るステップを、前記actor-verb-objectの形式による新しいデータ構造を追加すること又は前記選択された手続き中の前記データ構造のうちの1つを削除することの少なくとも一方によって、修正すること
を含む、請求項14に記載のシステム。
【請求項16】
コンピュータプログラムコードを含む非一過性のコンピュータ可読媒体であって、前記コンピュータプログラムコードが、1つ以上のコンピュータプロセッサによる処理によって実行されると、
航空機を運航するための複数の手続きを含む構造化されていないデータを取り込むことと、
前記構造化されていないデータを、前記複数の手続きのそれぞれについて複数のステップを含む半構造化データに変換することと、
前記複数の手続き中の前記ステップを、actor-verb-objectの形式によるデータ構造に変換することと、
前記データ構造を前記航空機内の構成要素にマッピングすることと、
前記航空機内の前記構成要素を、ソフトウェア・フライトシミュレータ内の対応する構成要素にマッピングすることと、
を含む動作を実行する、非一過性のコンピュータ可読媒体。
【請求項17】
前記データ構造が、データ相互交換形式で表される、請求項16に記載の非一過性のコンピュータ可読媒体。
【請求項18】
前記データ構造が、エクスペリエンスAPI(xAPI:experience application programming interface)ステートメントである、請求項16に記載の非一過性のコンピュータ可読媒体。
【請求項19】
前記構造化されていないデータを前記半構造化データに変換することが、
前記複数の手続きを正確に実行するために前記複数の手続きのそれぞれの前記ステップを実行しなければならないパターンを特定することを含む、請求項16に記載の非一過性のコンピュータ可読媒体。
【請求項20】
前記複数の手続中の前記ステップを前記データ構造に変換することが、
訓練レッスンを策定するために、ユーザ入力に応じて前記複数の手続きから或る手続きを選択することと、
選択された前記手続き中の少なくとも1つのステップのためのテキスト記述を受信することと、
前記選択された手続きのための前記データ構造及び前記テキスト記述をまとめて、前記ソフトウェア・フライトシミュレータにより実行可能なファイルにすることと、
を含む、請求項16に記載の非一過性のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の態様は、シミュレーションシステムを使用した操縦士の訓練に関する。
【背景技術】
【0002】
高忠実度の航空機シミュレータは、非常にコストが高く製造することが困難である。上記シミュレータは、航空機の運航を正確にシミュレートするために、複雑なソフトウェアと物理的構造の両方を必要とする。しかしながら、多くの操縦士訓練レッスンでは、フライト前の処理、安全点検、タキシング(地上走行)など、高忠実度の航空機シミュレータが必要ではない。それにも関わらず、これらのアクションは、コストが高いが高忠実度のシミュレータ内又は航空機内で実行する必要があり、かつ、訓練生が訓練タスクを成功裏に完了したかどうかを判定するために、指導者の存在が必要となることが多い。
【発明の概要】
【0003】
本開示は、幾つかの態様における方法、システム、又はコンピュータ可読媒体であって、航空機を運航するための複数の手続きを含む構造化されていないデータを取り込むことと、構造化されていないデータを、複数の手続きのそれぞれについて複数のステップを含む半構造化データに変換することと、複数の手続き中のステップを、actor-verb-objectの形式によるデータ構造に変換することと、データ構造を航空機内の構成要素にマッピングすることと、航空機内の構成要素を、ソフトウェア・フライトシミュレータ内の対応する構成要素にマッピングすることと、を含む、方法、システム、又はコンピュータ可読媒体を提供する。
【0004】
一態様において、先の又は以下の任意の実施例との組み合わせでは、データ構造が、データ相互交換形式で表される。
【0005】
一態様において、先の又は以下の任意の実施例との組み合わせでは、データ構造が、エクスペリエンスAPI(xAPI:experience application programming interface)ステートメントである。
【0006】
一態様において、先の又は以下の任意の実施例との組み合わせでは、構造化されていないデータが、航空機を運航するための飛行規程を含む。
【0007】
一態様において、先の又は以下の任意の実施例との組み合わせでは、構造化されていないデータを半構造化データに変換することが、複数の手続きを正確に実行するために複数の手続きのそれぞれの上記ステップを実行しなければならないパターンを特定することを含む。
【0008】
一態様において、先の又は以下の任意の実施例との組み合わせでは、複数の手続中のステップ含むデータ構造に変換することが、レッスンを策定するために、ユーザ入力に応じて複数の手続きから或る手続きを選択することと、選択された手続き中の少なくとも1つのステップのためのテキスト記述を受信することと、選択された手続きのためのデータ構造及びテキスト記述をまとめて、ソフトウェア・フライトシミュレータにより実行可能なファイルにすることと、を含む。
【0009】
一態様において、先の又は以下の任意の実施例との組み合わせでは、ファイルが、JSON(JavaScript Object Notation)ファイルである。
【0010】
一態様において、先の2つの実施例との組み合わせでは、方法は、選択された手続き中の或るステップを、actor-verb-objectの形式による新しいデータ構造を追加すること又は選択された手続き中のデータ構造の1つを削除することの少なくとも一方によって、修正することを含む。
【0011】
本開示の先に記載の特徴が詳細に理解できるように、先に簡単に要約したものよりもさらに詳細な本開示の説明が、いくつかが添付の図面において例示されている例示的な態様を参照することによってなされうる。
【図面の簡単な説明】
【0012】
【
図1】本明細書に記載の一態様に係る、訓練データモデルを生成するためのシステムを示す。
【
図2】本明細書に記載の一態様に係る、訓練データモデルを生成するためのフロー図である。
【
図3】本明細書に記載の一態様に係る、訓練データモデルのブロック図である。
【
図4】本明細書に記載の一態様に係る、訓練データモデルを使用して訓練レッスンを生成するためのフロー図である。
【
図5】一態様に係る、フライトシミュレータを使用して訓練レッスンを実行するためのシステムを示す。
【
図6】一態様に係る、フライトシミュレータを使用して訓練レッスンを実行するためのシステムを示す。
【
図7】一態様に係る、訓練レッスンを実行するようフライトシミュレータを動作させるためのフロー図である。
【
図8】一態様に係る、訓練レッスンのためにフライトシミュレータによってインタラクティブなグラフィックユーザインタフェースを生成するためのフロー図である。
【発明を実施するための形態】
【0013】
本明細書に記載の一態様は、操縦士の訓練レッスンを生成するためのプラットフォームを使い易くする訓練データモデルを生成する。訓練データモデルは、特定の航空機のための飛行規程(例えば、(FCOM:flight crew operating manual))に基づきうる。しかしながら、飛行規程は、実行すべき様々な手続きを説明した構造化されていないデータである。飛行規程は通常、訓練された操縦士のために書かれており、即ち、新人の操縦士を訓練するための詳細事項は十分ではない。このような短所を克服するために、一態様において、飛行規程が、取り込まれて、構造化されていないデータから、複数のステップを含む手続きを含む半構造化データへと変換される。その後、上記の手続きにおけるステップが、actor-verb-objectのデータ構造(例えば、エクスペリエンスAPI(xAPI:experience application programming interface)のステートメント)に変換される。例えば、燃料ポンプを停止する手続きの或るステップが、actor-verb-objectのデータ構造に変換可能であり、ここで、「操縦士」がactorであり、「停止する」がverbであり、「燃料ポンプのためのスイッチ」がobjectである。
【0014】
actor-verb-objectのデータ構造はまた、航空機の構成要素(例えば、スイッチ、制御システム、ペダル、アクチュエータなど)、及び航空機システムの状態(例えば、高度計の値、又は燃料タンク内の燃料レベル)にマッピングすることも可能である。逆に、航空機の構成要素が、フライトシミュレータ内のシミュレートされる構成要素にマッピング可能である。このようにして、(複数のactor-verb-objectのデータ構造を含む)手続きが、航空機の構成要素とフライトシミュレータ内の構成要素との両方にマッピングされうる。その後、上記の手続きは、飛行規程中の手続きに直接的にマッピング可能な「スケルトン」(skeleton)の訓練レッスンを提供するために、訓練データモデルに格納されうる。その後、指導者は、訓練データモデル中の手続きのうちの1つを選択して、フライトシミュレータ内で実行可能な訓練レッスンを生成するために手続きに対して改訂し、更新し、及び拡張することが可能である。
【0015】
本明細書に記載の一態様は、フライトシミュレータを使用して訓練レッスンを実行するためのシステムである。本システムは、ユーザデバイス上に表示されうるグラフィックユーザインタフェース(GUI)を生成するために使用可能な民生品の(commercial、off-the-shelf)のフライトシミュレータを含みうる。しかしながら、上記フライトシミュレータは通常、操縦士を訓練するためには使用されず、その代わりにエンタテインメント(例えば、ゲームのフライトシミュレータ)のために使用されている。このように、上記フライトシミュレータは、訓練を目的として特定の航空機の十分に精確なシミュレーションを提供しない可能性がある。一態様において、作業フローエンジンが、フライトシミュレータによって生成されたイベントを監視し、そのイベントを、特定の航空機を精確にモデル化するために設計された飛行機シミュレータを更新するために使用することが可能である。民生品のフライトシミュレータとは違って、上記の飛行機シミュレータは、飛行機を精確にシミュレートするソフトウェアでありうる。両方の種類のシミュレータを使用する利点は、本システムが、フライトシミュレータによって提供されるGUI及びユーザ相互作用機能を、飛行機シミュレータにより提供される精度とともに活用できることにある。従って、高忠実度のシミュレータを開発(又は使用)しなければならない代わりに、民生品のフライトシミュレータ、及び低忠実度の飛行機シミュレータへの媒体を使用して、多くの訓練レッスンを実行することが可能であり、上記飛行機シミュレータは、GUIを生成し又はユーザ入力を取り込む必要がない。というのは、当該機能はフライトシミュレータによって実行されるからである。
【0016】
図1は、本明細書に記載の一態様に係る、訓練データモデル180を生成するためのシステム100を示す。
図1の左側には、飛行規程(例えば、FCOM)又は航空機についての他の種類の情報といった、構造化されていないデータ105が図示されている。構造化されていないデータ105は、人間が読めるテキストで書かれうる。このデータ105は、人間が読んで処理することが意図されており、従って、計算システムが直接的に解釈できないという意味において構造化されていない。構造化されていないデータ105が紙媒体のマニュアルである場合には、システム100は、(例えば、光学的な文字認識を使用して)データ105を電子的形態に変換することができる。
【0017】
図1は、任意の数のコアを含む1つ以上の計算プロセッサを表すプロセッサ120と、メモリ125と、を備えた計算システム115を含み、メモリ125は、揮発性の記憶素子、不揮発性の記憶素子、及びこれらの組み合わせを含みうる。メモリ125は、構造化されていないデータ105を半構造化データ110に変換する抽出器130(例えば、ソフトウェアアプリケーション)を含む。半構造化データ110は、1つ以上のステップ(例えば、ステップA、B、...N)に分けられた手続きのリストを含みうる。一態様において、抽出器130が、航空機を運航するための様々な手続きを識別するために、構造化されていないデータ105を構文解析することが可能である。上記手続きは、フライト前の点検、保守、地上走行、離陸、飛行、着陸などを含みうる。
【0018】
しかしながら、上記手続きは、訓練された操縦士のために書かれている可能性があり、即ち、新人の操縦士を訓練するための詳細事項は十分ではないことが多い。例えば、飛行規程における燃料アンバランスを処理するための手続きは、燃料レベルが低いタンク内の燃料ポンプを停止するよう、操縦士に指示しうるが、さらに細かい詳細事項は含まれていない。飛行機は同じ燃料タンクのために複数の燃料ポンプを有しうるため、どの燃料タンクか、及びどのスイッチを切るのかを特定することは操縦士の訓練にかかっている。抽出器130は、人間のエキスポートに助けられうるが、燃料アンパランス手続きにおけるステップであって、構造化されていないデータ105において概説された手続きに内在しうるステップ又は欠けている可能性があるステップを特定することができる。例えば、抽出器130は、航空機内の4つの燃料ポンプを列挙して、これらの燃料ポンプのスイッチがどこに位置しているかを提示することができる。さらに、抽出器130は、どの燃料タンクのレベルが低いかをどのように特定するかを未訓練の操縦士に伝えるステップを追加することができる。
【0019】
加えて、上記手続きは、未訓練の操縦士がステップをどのよう進むべきかを示すパターンを含みうる。幾つかの手続きは、連続的に、即ち、最初にステップA、次いでステップB、次いでステップCなどと実行しなければならないこともある。しかしながら他の手続きでは、ステップが分散している可能性があり、例えば、ステップAを実行した後に、ステップBとステップCの両方を実行するが、ステップDに進むまでの順序は任意である。他の例では、幾つかのステップのみ実行する必要があり、例えば、ステップAを実行した後で、ステップB又はステップCの一方を実行し、その後ステップDに進む。パターンは、手続きを正しく踏むために手続き中のステップを実行しなければならないやり方を示しうる。このパターンは、抽出器130によって又はエキスパートの助けを借りて、プログラムで生成されうる。
【0020】
計算システム115は、xAPIコンバータ135も含み、xAPIコンバータ135は、半構造化データ110の手続き中のステップを、xAPIステートメント140に変換することができ、xAPIステートメント140は、actor145(例えば、訓練生)、verb150(例えば、訓練生によって行われるアクション)、object155(例えば、アクションがそれに対して行われる対象)を含む。例えば、燃料ポンプアンパランス手続きにおけるステップは、操縦士が、燃料レベルが低いタンクのスイッチを切ることを含みうる。このことが、xAPIステートメント140に、即ち、actorオブジェクト(例えば訓練生)、verb URI(uniform resource identifier)(例えば、停止される又は切られる)、及び、objectフィールド(例えば、燃料レベルが低いタンクの燃料ポンプ)に変換されうる。xAPIステートメント140は、JSON(JavaScript Object Notation)を使用して表されうる。
【0021】
xAPIステートメント140が具体例として記載されているが、上記のステートメントは、actor-object-verbのステートメントをサポートする任意の種類のデータ構造とすることができる。計算システムによって容易に解釈可能でかつ実行可能であるxAPIステートメント140は、手続き中のステップを表すためのデータ構造を提供する。
図4で説明するように、xAPIステートメント140は、レッスンを策定するために指導者がソフトウェアコードを生成し又は書く必要がないノーコード(no-code)のソルーションを使用して、訓練レッスンを生成するために使用されうる。
【0022】
計算システム115は、xAPIステートメント140を航空機の構成要素165にマッピングする航空機マッパ160(例えば、ソフトウェアアプリケーション)も含む。例えば、航空機マッパ160は、xAPIステートメント140中の動作の対象となるobjectを、航空機内の特定の構成要素にマッピングすることができ、例えば、xAPIステートメント140中のスイッチ又は燃料ポンプを、航空機内の特定のスイッチ又は燃料ポンプに対してマッピングすることができる。
【0023】
計算システム115は、シミュレータマッパ170(例えば、ソフトウェアアプリケーション)も含み、シミュレータマッパ170は、フライトシミュレータが使用するシミュレートされる航空機の構成要素175を、実際の航空機の構成要素165にマッピングする。例えば、フライトシミュレータは、自身のシミュレートされる航空機の構成要素175を、実際の航空機の構成要素165とは違うように命名することができる。例えば、フライトシミュレータは、燃料ポンプのスイッチを「燃料ポンプ・スイッチ1」と命名することができるが、実際の燃料ポンプのスイッチは、「尾翼/左の燃料ポンプのスイッチ」と命名されている。シミュレータマッパ170は、上記のシミュレートされる構成要素を実際の構成要素に対してマッピングすることができ、これにより、フライトシミュレータ内のシミュレートされる構成要素175の状態を変更するイベントが、航空機内の実際の構成要素165に対してマッピングされうる。
【0024】
さらに、シミュレータマッパ170は、航空機の構成要素165の状態(例えば、スイッチが「ON」、「OFF」、又は「NEUTRAL」でありうる)を、シミュレートされる構成要素175の状態にマッピングすることができる。このようにして、シミュレータが表示するシミュレートされる構成要素の状態が、航空機の構成要素165の状態に対してマッピングされうる。さらに、航空機の構成要素165の状態が、半構造化データ110の手続きに対してマッピングされうる。
【0025】
図2で説明するように、計算システム115は、先に記載の様々なモデルを使用して、訓練データモデル180を生成することが可能であり、訓練データモデル180は、構造化されていないデータ105中の手続きとともに、フライトシミュレータのための、コンピュータにより実行可能な訓練レッスンを生成するための手段を含む。
【0026】
図2は、本明細書に記載の一態様に係る、訓練データモデルを生成するための方法200のフロー図である。ブロック205において、計算システム(例えば、
図1の計算システム115)が、航空機を運航するための構造化されていないデータを取り込む。一態様において、構造化されていないデータが、航空機を運航するための複数の手続きを含む。上記の運航手続きは、航空機を飛ばすためのステップ、航空機の飛行を準備するステップ、航空機を飛ばした後に取るステップ、航空機の保守、及び/又はトラブルシューティングを含みうる。運航手続きは、訓練された操縦士が目で追うことが意図された人間の言語で表わされうる。従って、手続きは、未訓練の操縦士が知らない可能性がある特定のステップを省きうる。方法200は、構造化されていないデータにおいて概説された手続きを使用して、フライトシミュレータ上で実行される新しい訓練レッスンを生成するために指導者が使用可能な訓練データモデルを提供するための技術を提供する。
【0027】
一態様において、構造化されていないデータを取り込むことが、航空機のマニュアル又は他の運航仕様書から電子データにテキストを変換することを含む。しかしながら、他の態様において、構造化されていないデータが、電子的形態で既に存在しうる。
【0028】
ブロック210において、抽出器(例えば、
図1の抽出器130)が、構造化されていないデータを、航空機を運航するための複数のステップを含む手続きを含む半構造化データに変換する。例えば、抽出器は、取り込まれた構造化されていないデータを構文解析して、データ中の概説された別々の手続きを識別し、その後上記手続き中のステップを識別することが可能である。このことは、新しい手続きが始まるときを示すヘッダ、改ページ、タイトルなどといった、構造化されていないデータ中のプロンプトを使用して行われうる。
【0029】
さらに、手続き中の個々のステップは、箇条書き、数字、又は用語(例えば、ステップA、B、及びC、又は1、2、及び3)によって示すことができ、これらは、抽出器によって、同じ手続き中の異なるステップとして識別されうる。
【0030】
一態様において、エキスパートが、新しい手続きを示すため又は手続き中のステップを識別するための入力を提供することができる。さらに、エキスパートは、構造化されていないデータ中に示唆されてはいるが述べられていない可能性のあるステップを特定することが可能である。例えば、飛行規程には、燃料レベルが低いタンクの燃料ポンプを停止するように言っているステップが有りうるが、エキスパートには、飛行機内に2つの燃料タンクが存在し当該燃料タンクのそれぞれが2つの燃料ポンプを有することが既知でありうる。エキスパートは、上記ステップを4つのステップに分解することができ、ここでは、2ステップが、燃料レベルが低いタンクと仮定して左の燃料タンク内の2つのスイッチを切るために使用され、他の2ステップが、燃料レベルが低いタンクと仮定して右のタンク内の2つのスイッチを切るために使用される。構造化されていないデータ中の上記の1ステップを4ステップに分解することによって、抽出器は、両方のシナリオ(例えば、左のタンクの燃料レベルが低い場合と、右のタンクの燃料レベルが低い場合の燃料アンパランスが存在する)をテストするためのステップを有することができる。以下に述べるように、複数のシナリオをテストするためのステップを有することで、訓練レッスンを開発するときに、指導者により多くの選択肢が与えられる。
【0031】
一態様において、抽出器及びエキスパートは、手続き中のステップが実行されるパターンを決定することができる。例えば、幾つかのステップは、連続的に実行しなければならないこともあるが、他のステップは並行して実行される。さらに別の実施例において、幾つかのステップが任意選択的でありうる(ステップ1又はステップ2を実行した後で、ステップ3に進む)。或る手続きは、複数のパターンを有しうる。例えば、或る手続きは、最初の3ステップを連続的に実行する必要があるが、次の3ステップは、特定の順序ではなく、並行して実行することができる。抽出器は、上記ステップを実行するために使用されるこのパターン(又は複数のパターン)を、半構造化データに埋め込むことができる。
【0032】
ブロック215において、xAPIコンバータ(例えば、
図1のxAPIコンバータ135)が、手続き中のステップを、actor-verb-objectの形式によるデータ構造に変換する。一態様において、ステップがxAPIステートメントに変換されるが、適切な例がたった1つだけ存在する。
【0033】
xAPIコンバータは、半構造化データを構文解析して、各ステップにおいて、actor、actorにより実行されるアクション、及びobjectを特定することができる。その後、この情報を使用して、データ交換形式を用いて対応するxAPIステートメントを生成することができる。
【0034】
ブロック220において、航空機マッパ(例えば、
図1の航空機マッパ160)が、データ構造のそれぞれを、航空機内の構成要素に対してマッピングすることができる。一態様において、より具体的には、航空機マッパは、データ構造におけるobjectを、航空機の構成要素に対してマッピングする。従って、各データ構造が、飛行機内の特定の構成要素(スロットル、スイッチ、操縦室内のタッチ画面など)にアクションを実行することに対して、マッピングされうる。
【0035】
ブロック225において、シミュレータマッパ(例えば、シミュレータマッパ170)が、航空機の構成要素のそれぞれを、ソフトウェア・フライトシミュレータ内の対応する構成要素に対してマッピングする。先に述べたように、フライトシミュレータは、自身のシミュレートされる航空機の構成要素を、実際の航空機の構成要素とは違うように命名しうる。例えば、フライトシミュレータは、燃料ポンプのスイッチを「燃料ポンプ・スイッチ1」と命名することができるが、実際の燃料ポンプのスイッチは、「尾翼/左の燃料ポンプのスイッチ」と命名されている。シミュレータマッパは、上記のシミュレートされる構成要素を実際の構成要素に対してマッピングすることができ、これにより、フライトシミュレータ内のシミュレートされる構成要素の状態を変更するイベントが、航空機内の実際の構成要素に対してマッピングされうる。
【0036】
さらに、フライトシミュレータ内のシミュレートされる構成要素を実際の航空機の構成要素にマッピングすることで、データ構造(例えば、xAPIステートメント)を、シミュレートされる構成要素にリンクすることができる。例えば、訓練レッスンの実行時に訓練生がフライトシミュレータ内のスイッチを入れた場合に、(
図5~
図8で述べる)バックエンドシステムは、そのアクションが、訓練レッスンにおけるxAPIステートメントのうちの1つにマッピングされているのか判定することが可能である。そうである場合には、バックエンドシステムは、訓練生がそのステップを正確に実行したと判定することができる。
【0037】
一態様において、ブロック225が、様々なフライトシミュレータをサポートする訓練データモデルを生成するために繰り返されうる。例えば、様々なシミュレートされる構成要素をそれぞれが有する複数の様々な市販のフライトシミュレータが存在する。ブロック225は、上記フライトシミュレータのそれぞれについて、シミュレートされる構成要素に対する実際の航空機の構成要素のマッピングを形成するために使用されうる。従って、得られた訓練データモデルは、複数の様々なフライトシミュレータで使用することができる。
【0038】
データ、及び方法200において決定されたマッピングを用いて、システムは、未訓練の操縦士の訓練レッスンを提供するための、選択し修正することができる手続きを含む訓練データモデルを生成することが可能である。
【0039】
図3は、本明細書に記載の一態様に係る、訓練データモデル180のブロック図である。訓練データモデル180は、複数の手続き305A~C、並びに、航空機の構成要素に対するxAPIステートメントのマッピング315、及び、シミュレータの構成要素に対する航空機の構成要素のマッピング320を含む。航空機の構成要素に対するxAPIステートメントのマッピング315は、
図2のブロック220で形成することができ、シミュレータの構成要素に対する航空機の構成要素のマッピング320は、
図2のブロック225で形成することができる。マッピング315及び320はまた、実際のシミュレートされる航空機の構成要素の状態(例えば、スイッチが「ON」、「OFF」、又は「NEUTRAL」でありうる)もマッピングすることができる。
【0040】
手続き305は、
図2のブロック205~215を使用して生成することができる。手続き305のそれぞれは、xAPIステートメント140の集合、及び1つ以上のパターン310を含む。xAPIステートメント140の集合は手続き305ごとに異なりうるが、手続きは、共通の複数のxAPIステートメント140を有しうる。
【0041】
さらに、手続き305は、複数の様々なパターン310を有することができ、ここで、幾つかのパターンが、xAPIステートメント140の下位レベルの部分(sub-portion)に適用される。例えば、手続きが正確に実行されるために、第1のパターンは、手続きの最初の3つのxAPIステートメント140を連続して実行しなければならないことを示すことができ、第2のパターンは、次の2つのxAPIステートメント140が並行して実行可能であることを示し、第3のパターンは、最後の2つのxAPIステートメント140のうちの一方のみを実行する必要があることを示す。
【0042】
一態様において、方法200は、様々な構造化されていないデータに基づいて訓練データモデル300を生成するために使用することができる。例えば、方法200は、第1の時間に、航空機の製造業者によって作られた飛行規程を使用して、第1の訓練データモデル300を生成するために実行されうる。その後、方法200は、第2の時間に、航空機の使用者によって作成された飛行規程を使用して、第2の訓練データモデル300を生成するために実行されうる。第1の訓練データモデルの手続きを、第2の訓練データモデルの手続きと比較して、異なるステップを含む手続きを特定することができる。このことは、異なる手続きを特定するため、及びどの手続きがより良いのか(又はより不足があるのか)を特定するために使用されうる。この情報を使用して、飛行規程を更新し又は政府の規制当局の認可を得る(上記飛行規程のうちの一方が既に認可されている場合)ことが可能である。さらに、手続き同士を比較することで、安全性を向上させることができる。例えば、使用者が、安全ではない手続きに対する変更又は編集を行うつもりであったなら、「フラグ」又はアラートを付けて提示できるであろう。さらに、その手続きがなぜ訓練のために安全ではない可能性があるかを説明する会話を行うことを確実にするために、使用者に念押しすることが、製造業者に通知されうるであろう。
【0043】
図4は、本明細書に記載の一態様に係る、訓練データモデルを使用して訓練レッスンを生成するための方法400のフロー図である。一態様において、方法400では、訓練データモデル(例えば、
図3のモデル180)が既に生成されていると仮定する。
【0044】
一態様において、方法400は、訓練レッスンを生成するためのノーコードの方法である。即ち、以前の解決策では、(通常はコンピュータのプログラミングに不慣れな)フライト・インストラクタが、(通常はフライト訓練レッスンには不慣れな)コンピュータのプログラマと一緒に作業して、フライトシミュレータ上に実装可能なレッスンをプログラミングすることが必要であった。これは、時間を消費する高価なプロセスである。対照的に、訓練データモデルを活用することで、インストラクタは、フライトシミュレータ上に実装可能な訓練レッスンを生成するために、追加のソフトウェアコードを書く必要なく、方法400を実行することが可能である。従って、方法400は、ソフトウェアのプログラミングの経験がない人物も実行することができ、又はソフトウェアのプログラミングの経験がある人物の助けがなくても、実行することができる。
【0045】
ブロック405において、インストラクタが訓練データモデルから手続きを選択する。一態様において、計算システムが、訓練データモデル内の手続きを列挙するユーザインタフェースを提供する。例えば、訓練データモデル内の手続きは、インデックス付けすることができ、又はそうでなければ、インストラクタが所望の訓練レッスンに対応する手続きを識別し選択できるように、検索可能でありうる。
【0046】
ブロック410において、インストラクタは、選択された手続きにおけるステップを修正することが可能である。例えば、インストラクタは、訓練生が、手続きの一部として、手続き中には列挙されなかった(例えば、構造化されていないデータの一部ではなく、かつ抽出器により追加されなかった)追加のステップを実行することを欲することがある。例えば、操縦士が、埃っぽく又は砂だらけの環境で航空機を飛ばすことを訓練している場合には、インストラクタは、フィルタ又は吸気口が詰まっていないかを検証するためのより多くのステップを追加することができる。有利に、手続きは、本来の手続きからのステップを未だ含むが、システムは、インストラクタによって定められた追加のステップを生成して、当該ステップを、手続きに追加可能な追加のxAPIステートメントに変換することができる。例えば、新しいステップを追加するときには、ユーザインタフェースは、インストラクタが新ステップのactor、verb、及びobjectを定義するフィールドを提供することが可能であり、これらはその後、抽出器によって、データ相互交換形式を使用して、xAPIステートメントに変換されうる。
【0047】
一態様において、インストラクタは、手続きからステップを削除し、又は当該ステップに対応するパターンを変更することが可能である。しかしながら、このことは、その手続きが、政府の規制当局によってもはや認可されないことを意味しうる。例えば、一態様において、飛行規程の中の全ての手続き(例えば、構造化されていないデータ)が、政府の規制当局によって認可されうる。手続きにステップを追加することは、得られる訓練レッスンが、元々のステップが未だ実行されるため、政府の規制当局による認可を未だに得ていることを意味しうる。しかしながら、ステップを削除することは、得られる訓練レッスンが、政府の規制当局によってもはや認可されえないことを意味しうる。
【0048】
いずれにせよ、ブロック410は、破線で示すように任意選択的である。
【0049】
ブロック415において、ユーザインタフェースが、選択された手続きにおける1つ以上のステップのためのテキスト記述を受信する。通常では、飛行規程における手続きのステップは、書面での記述をあまり含まず、実行する必要があるアクションを簡潔に説明する。対照的に、インストラクタは、訓練生が航空機の構成要素を識別するのを助け、「なぜ」特定のステップを実行するべきなのかを提供するために、より多くのテキストを追加することを欲する可能性がある。ユーザインタフェースは、或るステップのxAPIステートメントに入れられる追加情報を提供するために、インストラクタのためのフィールドを提供することが可能である。
【0050】
ブロック420において、計算システムは、インストラクタによって選択された手続きのステップ及びテキスト記述をまとめてファイルにする。ファイルは、フライトシミュレータによって、訓練レッスンを実行するために実行可能である。一態様において、ファイルは、JSONファイル又はXMLファイルでありうる。以下の
図5~
図8では、フライトシミュレータ上で訓練レッスンを実行するために訓練レッスンファイルを使用する様々なシステムが説明される。
【0051】
方法400の1つの利点は、ステップ、及びインストラクタによって行われる変更を追跡して、得られる訓練レッスンが、どのように元々の手続きを未だ充足し(又は充足しないか)を示すことができることである。例えば、得られる手続きと元々の手続きとを比較して、得られる手続きが、同じパターンで実行される同じステップを有するのかを判定することができる。得られる手続きは、追加のステップ及びより多くのテキストを有しうるが、それでも尚、元々の手続きからのステップを有しうるであろう。このことによって、訓練レッスンが政府の規制当局の要件を未だ満たすと認定することが容易になりうる。そうでない場合は、訓練レッスンは、政府の規制当局によって再認可される必要がありうる。
【0052】
図5は、一態様に係る、フライトシミュレータ505を利用して訓練レッスンを実行するためのシステム500を示す。一態様において、フライトシミュレータ505が、先に記載の訓練モデル及び方法400を使用して生成された訓練レッスンファイル525を受信して、実行する。しかしながら、
図5~
図8の記載は、訓練レッスンファイル525を生成するための、先に
図1~
図4に記載されたものとは別の技術でも使用されうる。
【0053】
フライトシミュレータ505は、シミュレートされた操縦室又は飛行経験を、表示装置を介してユーザに提供する任意のソフトウェアアプリケーションでありうる。示されるように、フライトシミュレータ505は、ユーザデバイス(図示せず)上に表示するためのグラフィカルユーザインタフェース(GUI)540を出力する。本例では、GUI540が、航空機の操縦室のビュー(view)を提供する。ユーザはこの場合、タッチ画面、マウス、キーボード、トラックパッド、仮想現実(VR)ヘッドセット、ゲームコントローラなどといった入力デバイスを使用して、フライトシミュレータ505によって出力されたGUI540を変更する入力を、フライトシミュレータ505に与えることができる。例えば、ユーザは、入力デバイスを使用して、左側又は右側により向くようにビューを変更することができる。あるいは、ユーザは、入力デバイスを使用して、表示されているシミュレートされた構成要素(例えば、GUI540で表示されたスイッチ、タッチ画面、スロットル、ペダル)と相互作用することができる。ユーザが入力を与える間、フライトシミュレータ505はその入力に応じて、以下に述べるように自身が航空機を運航している印象をユーザに対して与えるように、GUI540を更新することができる。
【0054】
一態様において、フライトシミュレータ505が、操縦士が実際の航空機を飛ばすことを訓練するためのものというよりも、通常はエンタテインメント又はゲーム目的で使用されうる民生品のフライトシミュレータである。このように、フライトシミュレータ505は、シミュレートされている本当の航空機の実際の機能を十全にシミュレートするのに十分な忠実度又は精確な挙動を有さない虞がある。上記の不足点にもかかわらず、システム500は、GUI540を生成しユーザからの入力を受信するというフライトシミュレータの能力を活用して、航空機のための十分に精確なシミュレーションシステムを生成することができる。
【0055】
システム500は、作業フローエンジン515及び飛行機シミュレータ530も含む。作業フローエンジン515(例えば、ソフトウェアアプリケーション)は、フライトシミュレータ505と飛行機シミュレータ530との間のミドルウェアとして機能する。本例では、フライトシミュレータ505は、シミュレートされている航空機の機能に影響を与えるイベントを識別するイベントスニッファ510(フライトシミュレータ505への付属品でありうる)を含む。例えば、ユーザが、GUI540内の操縦室のビューを変更する場合には、このイベントは、飛行機の機能を変更しないため、イベントスニッファ510によって選択又は識別されえない。対照的に、ユーザが、操縦室内のスイッチを入れ又はフライトパラメータの設定を変更する場合には、イベントスニッファ510は、このイベントが航空機の機能に影響を与えうると判定して、当該イベントを作業フローエンジン515に転送することが可能である。
【0056】
それに対して、作業フローエンジン515は、そのイベントを飛行機シミュレータ530に転送する。飛行機シミュレータ530(例えば、ソフトウェアアプリケーション)は、フライトシミュレータ505より忠実度が高いシミュレータとすることができ、実際の航空機の機能をより精確にモデル化し又はシミュレートする。例えば、フライトシミュレータ505は、複数の様々な航空機のためのモデル及び操縦室を含みうるが、飛行機シミュレータ530は、ただ1つの航空機のためのモデルを有しうる。有利に、飛行機シミュレータ530は、ユーザと相互作用するためのあらゆる種類の入力/出力機能を有する必要はない。というのは、当該機能は、フライトシミュレータ505によって提供されるからである。その代わりに、飛行機シミュレータ530は、精確な数学的で物理学に基づく航空機モデルと、作業フローエンジン515からイベントを受信し、航空機で当該イベントをシミュレートし、その後当該イベントの影響又は結果を作業フローエンジン515に送信するためのデータ構造と、を含みうる。これに対して、作業フローエンジン515は、GUI540を変更しうるフライトシミュレータ505に、追加の出力を与えることができる。
【0057】
一例として、ユーザは、シミュレートされた操縦室内にあるスイッチであって、航空機の構成要素を停止させるスイッチを入れることができる。イベントスニッファ510は、このことを作業フローエンジン515に報告し、これに対して、作業フローエンジン515は、スイッチの変更された状態を飛行機シミュレータ530に報告する。飛行機シミュレータ530は、スイッチを入れることで、警報又は他の出力が引き起こされて作業フローエンジン515に報知されたと判定することができる。その後、上記エンジン515は、この情報をフライトシミュレータ505に押し進めて、フライトシミュレータ505に、警報又は他の出力を示すためにGUI540を更新するよう指示する。このように、フライトシミュレータ505は、警報の理由が完全に分からない可能性があるが、それにもかかわらずGUI540に警報を出力することが可能である。
【0058】
2つのシミュレータを使用することには幾つかの利点がある。既に述べたように、フライトシミュレータは忠実度がより低い可能性があるが、忠実度がより高いシミュレータである飛行機シミュレータ530は、入力/出力機能を有する必要がなく、その代わりにフライトシミュレータ505に頼ることができる。加えて、2つのシミュレータを使用するということは、飛行機シミュレータ530によって使用される任意の占有又は極秘の航空機モデルが、フライトシミュレータ505から切り離された状態で維持されることを意味する。即ち、フライトシミュレータは、飛行機シミュレータ530がどのように機能するかを知ることなく、ユーザ入力を収集して当該入力の結果を表示することができる。このことで、データの安全性が向上し、ここで、飛行機シミュレータ530は、フライトシミュレータ505に組み込まれているというよりも、フライトシミュレータ505から切り離されて機能することが可能である。
【0059】
フライトシミュレータ505と飛行機シミュレータ530とは、2つの異なるエンティティによって開発された2つの別体のシミュレータでありうるため、これらは、様々な航空機の構成要素を異なる名前で呼びうる又はラベル付けしうる。例えば、フライトシミュレータ505が燃料ポンプ・スイッチ1とラベル付けするものを、飛行機シミュレータ530は、尾翼/左の燃料ポンプ・スイッチと称しうる。2つのシミュレータが、同じ構成要素を説明するために異なった名前空間を使用するため、作業フローエンジン515は、フライトシミュレータ505と飛行機シミュレータ530との間でデータを送信するときには、
図3に記載の、シミュレータの構成要素に対する航空機の構成要素のマッピング320を使用して、変換を行うことが可能である。例えば、イベントスニッファ510から、ユーザが燃料ポンプ・スイッチ1の状態を変更したことを示すイベントを受信したときには、作業フローエンジン515は、このイベントを、尾翼/左の燃料ポンプ・スイッチの状態を変更するイベントに変換し、当該イベントを飛行機シミュレータ530に送信する。このように、作業フローエンジン515が2つの名前空間の間でイベントを変換できるため、フライトシミュレータ505と飛行機シミュレータ530とは、他方のシミュレータの名前空間が何なのかを心配することなく開発され、保守されうる。
【0060】
2つのシミュレータの間でイベント及び更新されたデータを送信することに加えて、作業フローエンジン515は、GUI540のためのオーバレイ535を生成するオーバレイ生成器520も含む。オーバレイ535中の情報は、訓練レッスンファイル525に基づいている。一態様において、オーバレイ535が、レッスンファイル525からの情報をユーザ(例えば、訓練生)に出力するために使用される。一般に、オーバレイ535は透明であり、これにより、GUI540と一体にされたときには、ユーザには、GUI540によって提供されたオブジェクト、テキスト、及びビューが見える。しかしながら、オーバレイ535は、GUI540の対応する部分を塞ぐ透明ではない部分を含む。例えば、オーバレイ535は、「ステップ1」を含み、「ステップ1」は、訓練レッスンの第1のステップをどのように完了するかを説明した訓練生への指示を含む可能性がある。テキストに加えて、オーバレイ535はボタンを含むことができ、当該ボタンは、例えば、ユーザによって選択されるとオーバレイ535内で飛行規程を開く「マニュアル」、及び、選択されると、ステップ1を完了するための追加の情報又は手掛かりを開く「ヘルプ」である。
【0061】
他の実施形態において、オーバレイ535が、前後関係にある(contextual)同時の訓練を可能にするための追加の教材又はビューを表示するために使用される。例えば、訓練生が燃料アンパランスの手続きを学んでいる場合には、システムは、1のタンクから他のタンクに移動する燃料を示すために、作業フローエンジンによってアニメ化された系統図を表示するよう、オーバレイ535を更新することができるであろう。しばしば、システムの訓練は、手続き型の訓練とは異なる訓練イベントである。しかしながら、本明細書に記載のシステムを使用すると、訓練生は、手続き/アクションステップを同時に学びながら、航空機内のシステムがどのように機能するのかを学ぶことができる。このことは、航空機自体がシステムレベルでどのように動作するのかも学びつつ、航空機をどのように運航するかを学ぶために要する時間を短縮する可能性がある。
【0062】
オーバレイ生成器520は、訓練生が手続きを進める間に、オーバレイ535を更新することが可能である。例えば、ステップ1が、訓練生に、燃料ポンプを停止させるためにスイッチを入れるよう指示すると仮定する。イベントスニッファ510は、フライトシミュレータ505によって生成されたイベントを監視し、当該イベントを、先に述べたように作業フローエンジン515に送信する。作業フローエンジン515が、ユーザが正しいスイッチを入れたというイベントを識別した場合には、これに応じて、オーバレイ生成器520はその後、「正解!」(Correct!)といった確認をオーバレイ535上に表示し、次いで、以前にステップ1のための指示が表示されたオーバレイ535の同じ位置に、ステップ2のための指示を表示することができる。さらに、訓練生が、間違ったスイッチを選択した場合に、このことは、イベントスニッファ510、及び作業フローエンジン515によって検出することが可能であり、これに応じて、オーバレイ生成器520は、「正しくないスイッチが選択されています」といったフィードバックを提供するために、オーバレイ535を変更することが可能である。
【0063】
一態様において、インストラクタ又は訓練生は、或る経験についての難易度レベルを設定することができる。このように、プロンプト、サポート画像、テキスト、又は学習素材が、難易度が低いモード(easy mode)のために、各ステップで容易に提供されうる。対照的に、エキスパートモードでは、訓練生が助けを要求しない限り又は要求されたアクションを進めるのに長く掛かり過ぎない限り、システムは、手続きを実行するよう訓練生に単にプロンプトを与えることができ、追加のプロンプトを与えることはない。このことは、作業フローエンジン515によって管理されうる。
【0064】
一態様において、フライトシミュレータ505には、オーバレイ535、及びオーバレイ535が含む情報が分からない。その代わりに、オーバレイ生成器520が、フライトシミュレータ505からGUI540を受信してオーバレイ535と一体にし、結合されたGUIを生成することができる。その後、上記結合されたGUIは、表示するためにユーザに送信されうる。このように、ユーザは、オーバレイ535内の情報とGUI540との結合であるGUIを見る。
【0065】
一態様において、作業フローエンジン515が、ファイル525で決められたレッスンを進む訓練生の進捗度を追跡することができる。このことは、訓練生が、どのステップを正確に実行したか、及び、どのステップが不正確に実行されたのかを追跡することを含みうる。この情報を、飛行機内訓練及び教室指示といった他の訓練情報と一緒に使用して、訓練生の進捗度及び達成度の全体像を与えることができる。さらに、システム500は、インストラクタの主観的な見解に影響を受けうる飛行機内訓練及び教室指示とは異なって、レッスンを完了するための訓練生の能力の客観的な見解を提供する。
【0066】
図6は、一態様に係る、フライトシミュレータ505を利用して訓練レッスンを実行するためのシステム600を示す。フライトシミュレータ505及び飛行機シミュレータ530を実行することは、通常は、計算負荷が高い(compute intensive)タスクである。第1の計算システム上でフライトシミュレータ505を実行し、かつ第2の計算システム上で飛行機シミュレータ530を実行することでさえも、ラップトップ及びタブレットといった多くの種類の計算システムによって提供されるよりも大きな処理能力及びメモリが必要である。しかしながら、より高性能の計算システムへの訓練に限定しないことが望ましいであろう。その代わりに、
図6は、フライトシミュレータ505及び飛行機シミュレータ530がユーザデバイス620と別体の計算システム605上で実行されうる訓練システム600を示している。
【0067】
本例では、計算システム605は、1つの計算装置(例えば、ディスクトップ若しくはサーバ)、又はデータセンタ若しくはクラウド計算環境といった計算環境でありうる。例えば、フライトシミュレータ505は、クラウド計算環境(例えば、仮想マシン又はコンテナ)内の第1の計算システムによって実行することができ、飛行機シミュレータ530は、クラウド計算環境内の第2の計算システムによって実行される。
【0068】
対照的に、ユーザデバイス620(例えば、ディスクトップ、ラップトップ、タブレット、スマートフォンなど)は、計算システム605によりもはるかに少ない計算リソースを有しうるが、同様にはるかに計算負荷が低い計算タスクを実行する。本例では、ユーザデバイス620が、ネットワーク615(例えば、公共の又はプライベートのネットワーク)によって、計算システム605に接続されている。作業フローエンジン515が、結合されたGUI630をネットワーク615を介してユーザデバイス620にストリーミング配信するストリームエンジン610を含む。一態様において、結合されたGUI630は、
図5に示すオーバレイ535とフライトシミュレータ505により生成されたGUI540とを一体にした結果である。ストリームエンジン610は、結合されたGUI630を、望ましいフレームレート(例えば、毎秒30又は40フレーム)で、ユーザデバイス620にストリーミング配信することができ、ここで、各フレームは、結合されたGUI430である。
【0069】
ユーザデバイス620は、ストリームエンジン610から受信した結合されたGUI430を表示するための画面625を有する。ユーザデバイス620は、この場合、ユーザデバイス620の一部でありうる入力デバイス(例えば、タッチ画面若しくは組み込まれたボタン)を介して、又は、キーボード、マウス、若しくはゲームコントローラといった接続された入力デバイスから、ユーザ入力を受信することができる。その後、このユーザ入力635は、ネットワーク615を介してフライトシミュレータ505に送信され、フライトシミュレータ505は、先に記載したように、フライトシミュレータ505、作業フローエンジン515、及び飛行機シミュレータ530により評価可能なイベントを生成して、新しい結合されたGUI630を生成し、当該GUI630がその後、ユーザデバイス620に転送される。このようにして、ユーザデバイス620は、受信したGUI630の表示、及びユーザ入力の受信といった、比較的負荷が軽い(light-weight)の計算機能を実行する。グラフィック処理、飛行機のシミュレーション、及びイベント処理といった、より負荷が重い(heavier-weight)計算機能は、計算システム605によって実行される。
【0070】
さらに、システム600は、訓練生に対して、(ネットワーク615へのアクセス権を有する限り)どこでいつ訓練を行うかについてよりフレキシビリティを提供する。(大きくてかさばる可能性がある)計算システム605を有する物理的位置で訓練をしなければならないというよりも、訓練生は例えば、離れた位置で、タブレット又はラップトップを使用して訓練を行うことが出来るであろう。さらに、極秘又は占有のデータを含みうる飛行機シミュレータ530を実行する計算システム605は安全な位置に存在しうるが、訓練生は任意の位置にいられるように、リモートでの訓練は望まれうる。本例でユーザデバイス620に送信されているデータはGUI630のみであるため、安全性のリスクは小さい。
【0071】
図6は、離れている学習環境又は訓練環境を示しているが、当該態様は1つの計算装置によって実行することができるであろう。例えば、計算システム605は、表示装置及びユーザ入力デバイスを含むことができるであろうし、その場合には、訓練は、1つの位置で行われるであろう。
【0072】
図7は、一態様に係る、訓練レッスンを実行するようフライトシミュレータを動作させるための方法700のフロー図である。ブロック705において、作業フローエンジン(例えば、
図5の作業フローエンジン515)が、フライトシミュレータ(例えば、
図5のフライトシミュレータ505)を、レッスンファイル(例えば、JSONファイルでありうる
図5のレッスンファイル525)での初期条件に設定する。例えば、訓練生がフライトシミュレータを起動しなければならない代わりに、レッスンファイルが、作業フローエンジンがレッスンのための正確なコンテキストを提供するために使用可能なパラメータを含みうる。例えば、レッスンファイルは、レッスンがどの飛行機のためのものでであるかを示すことができ、これに応じて、フライトシミュレータに、その飛行機のための操縦室をロードするよう指示することができる。さらに、レッスンが、陸上走行の状況に関する場合には、フライトシミュレータは、飛行機を駐機場に配置することができる。レッスンが緊急の状況に関する場合には、作業フローエンジンは、緊急事態に対応する警報及びフライトパラメータを出力するために、フライトシミュレータ内のパラメータを設定することができる。従って、訓練レッスンの選択後に、作業フローエンジンは、対応するレッスンファイルを使用して、フライトシミュレータをプログラムで起動することができ、従って、訓練生が起動する必要はない。
【0073】
ブロック710において、作業フローエンジンは、フライトシミュレータから、航空機の運航に影響を与えるイベントを受信する。例えば、上記イベントは、制御入力(例えば、ユーザが、スイッチを入れる、航空機の速度又は方向を変更する、制御システムを作動/停止させるなど)を含みうる。対照的に、作業フローエンジンは、ユーザが、操縦室の自身のビューを変更する、(入力を変更することなく)操縦室内のフライトコントローラ内のメニューを閲覧するなどといった、航空機の動作を制御しないイベントを受信しえない。先に述べたように、フライトシミュレータ内のイベントスニッファは、どのイベントが航空機の運航に影響を与え、どのイベントが影響を与えないかを判定することができる。一態様において、イベントスニッファが、航空機の運航に影響を与えるイベントのみ作業フローエンジンに転送する。
【0074】
ブロック715において、作業フローエンジンが、イベントを飛行機シミュレータのための入力に変える。例えば、イベントは、飛行機シミュレータに入力を提供するために使用される形式とは異なる形式で受信される可能性がある。1つの特定の例として、フライトシミュレータによって使用される名前空間は、飛行機シミュレータによって使用される名前空間とは異なりうる。その場合に、
図3のマッピング320が、フライトシミュレータから受信されたイベントを飛行機シミュレータのための入力に変えるときに、名前空間の間で切り替えるために使用可能である。
【0075】
ブロック720において、作業フローエンジンが、飛行機シミュレータからの出力を受信する。上記の出力は、ブロック715で提供された入力のために、飛行機の機能又は動作がどのように変化したのかを示しうる。例えば、ユーザが航空機を傾けた場合には、飛行機シミュレータは、このことが対気速度、方向、及び他のフライトパラメータに対して与える影響を計算することができる。飛行機シミュレータは、更新されたフライトパラメータを作業フローエンジンに対して出力することができる。
【0076】
ブロック725において、作業フローエンジンは、レッスンステップが正確に実行されたかを判定する。一態様において、作業フローエンジンは、フライトシミュレータから受信された入力及び/又は飛行機シミュレータの出力を監視して、ステップが正確に実行されたかを判定することができる。例えば、ステップが、訓練生にスイッチを入れることを要求した場合に、このステップが正確に実行されたかを判定するには、フライトシミュレータからのイベントで十分である。しかしながら、ステップが、訓練生に、航空機の速度を下げること又は特定の構成要素への負荷を低減することを要求した場合には、作業フローエンジンは、飛行機シミュレータから受信された出力を評価して、このステップが正確に実行されたかを判定することができる。
【0077】
ステップが正確に実行されたかについての判定の一部として、作業フローエンジンは、ステップが実行されるパターンを考慮することができる。例えば、ユーザはステップを連続的に実行しなければならないこともあるが、他のレッスンでは、システムが、複数のステップを同時に表示しうる。ユーザは、上記ステップのうちの1つだけ実行しなければならないこともあり、又は、全てのステップを実行しなければならないが、それは任意の順序であってよい。この情報は、
図3に図示されたパターン310に格納されうる。
【0078】
ステップが正確に実行されなかった場合には、方法700は、ブロック730に進んで、ユーザ又は訓練生にフィードバックを提供する。例えば、オーバレイ生成器は、ユーザが正しくないアクションを実行したことを示すよう、オーバレイを更新することができる。任意選択的に、オーバレイ生成器は、フィードバックを提供しえないが、代わりに、ユーザが正しいアクションを実行するまで正しい指示を表示続けることができる。
【0079】
ステップが正確に実行された場合には、方法700はブロック735に進み、そこでは、作業フローエンジンが、現在のステップが、レッスン(又は手続き)の最後ステップであったかを判定する。そうでない場合には、方法700はブロック740に進み、そこでは、オーバレイ生成器が、レッスンの次のステップを表示する。一態様において、オーバレイ生成器が、オーバレイから以前のステップを削除して、レッスンの次のステップに対応するテキストと置換する。
【0080】
ブロック745において、作業フローエンジンが、ブロック720で受信された飛行機シミュレータからの出力に基づいて、フライトシミュレータを更新する。従って、本例では、フライトシミュレータは、フライトパラメータを設定するために、航空機の(忠実度が低い可能性がある)自身のモデルに依拠する必要がないが、(忠実度がより高いシミュレータでありうる)飛行機シミュレータの出力に依拠することができる。例えば、飛行機シミュレータは、ユーザのアクションが警報を鳴らした(又は警報を切らせた)と判定することができ、この場合に、作業フローエンジンは、フライトシミュレータに、警報を視覚的に又は音声で出力するよう(又は反対に、警報を出力するの止めるよう)指示することが可能である。他の例において、飛行機が陸上走行している場合に、飛行機シミュレータは、ユーザのアクションにより航空機がどの程度回転したのかを決定することができ、フライトシミュレータはこの場合、その回転を視覚的にシミュレートするために、自身の出力を更新することができる。さらに別の実施例において、ユーザが、飛行中に航空機を傾けた場合に、飛行機シミュレータは、このことが対気速度、方向、及び他のフライトパラメータに対して与える影響を計算することができ、フライトシミュレータはこの場合、そのユーザアクションを視覚的にシミュレートするために、自身の出力を更新することができる。
【0081】
一態様において、作業フローエンジンが、飛行機シミュレータの出力を使用して、フライトシミュレータの状態を設定又は変更する。
【0082】
一態様において、ブロック745の実行の一部として、作業フローエンジンは、飛行機シミュレータによって受信された出力を、例えば名前空間の間で変換する又はフライトシミュレータが認識できるデータ形式を使用するなど、フライトシミュレータが受信可能な入力に変えることができる。
【0083】
その後、方法400はブロック710に戻り、そこで、方法700が繰り返されて、新しいイベントが、次のステップが正確に実行されたことを示すかを判定する。
【0084】
ユーザが、レッスンを成功裏に完了した(又は、レッスンを中止した)ときには、方法700はブロック750に進むことができ、そこで、作業フローエンジンが、レッスン結果を格納する。一態様において、作業フローエンジンは、レッスンを進む訓練生の進捗度を追跡することができる。このことは、訓練生が、どのステップを正確に実行したか、及び、どのステップが不正確に実行されたのかを追跡することを含みうる。この情報を、飛行機内訓練及び教室指示といった他の訓練情報と一緒に使用して、訓練生の進捗度及び達成度の全体像を与えることができる。
【0085】
図8は、一態様に係る、訓練レッスンのためにフライトシミュレータによって、インタラクティブなグラフィックユーザインタフェースを生成するための方法800のフロー図である。方法800は、フライトシミュレータにより生成されたGUIへのオーバレイとして、レッスン指示及び他のリソースを訓練生に提供するために使用される。例えば、方法800は、訓練生にレッスン情報を表示するため及び訓練生からの入力を受信するために、方法700において使用することができる。さらに、方法800では、
図6に図示したものの一例として、ユーザデバイスが、フライトシミュレータ及び飛行機シミュレータを実行する計算システムから離れていると仮定する。
【0086】
ブロック805において、オーバレイ生成器(例えば、
図5のオーバレイ生成器520)が、フライトシミュレータからインタラクティブGUIを受信する。インタラクティブGUIは、
図5のGUI540でありうる。インタラクティブGUIは、ユーザが制御しうる航空機の操縦室内にあるシミュレートされる航空機の構成要素(例えば、スイッチ、タッチ画面、制御部、ペダルなど)を含みうる。
【0087】
ブロック810において、オーバレイ生成器が、レッスンファイルを使用してオーバレイを生成する。オーバレイは、レッスンの1ステップ(又は複数のステップを含みうる。オーバレイはまた、ステップについての補足情報も含むことができ、例えば、特定の航空機構成要素が、操縦室内のどこで見つけられるか、そのステップをなぜ実行すべきなのかなどについての情報も含みうる。オーバレイは、飛行規程、訓練生がステップをリハーサルするための映像、ヘルプトピックといった他の教材を、ディスプレイに表示するための1つ以上のインタラクティブボタンも含みうる。
【0088】
ブロック815において、オーバレイ生成器が、オーバレイとインタラクティブGUIとを結合する。テキスト、ボタン、又は他の情報を含むオーバレイの部分は、インタラクティブGUIの対応する部分を塞ぎうる。しかしながら、オーバレイの残りの部分は透明とすることができ、これにより、オーバレイとインタラクティブGUIとが結合されたときに、オーバレイ内のテキスト又はオブジェクトによって塞がれていないGUIの部分はいずれも見ることができる。
【0089】
ブロック820において、ストリームエンジン(例えば、
図6のストリームエンジン610)が、オーバレイ及びインタラクティブGUIから形成された結合されたGUIを、ユーザデバイス、例えば、ディスクトップ、ラップトップ、タブレット、スマートフォンなどに送信する。ユーザデバイスは、結合されたGUIを受信して表示するためのディスプレイ及びネットワーク接続を含む任意のデバイスでありうる。
【0090】
ブロック825において、作業フローエンジンが、ユーザデバイスからユーザ入力を受信する。例えば、ユーザ入力は、ブロック820でユーザデバイスに送信された結合されたGUI上に表示されたレッスンの或るステップを実行しようとするユーザの試みに応じたものでありうる。
【0091】
ブロック830において、作業フローエンジンは、このことによりイベントが生成されたのかを判定するために、ユーザ入力をフライトシミュレータに転送する。その後、作業フローエンジンは、上記イベントが、ユーザがレッスンステップを正確に実行したこと又は実行しなかったことを示すのか判定することができる。このことについては、先の図でより詳細に述べている。
【0092】
他の態様において、作業フローエンジンがユーザ入力を受信するというより、フライトシミュレータが、ネットワークを介してユーザデバイスから直接的にユーザ入力を受信することができる。いずれの場合にせよ、方法800は、遠隔訓練環境のための技術を提供し、ここでは、第1の位置にある計算リソースがGUIを生成して、第2の位置にあるユーザデバイスに送信することができる。その後、ユーザデバイスは、第1の位置にある計算リソースにユーザ入力を転送して、ユーザがレッスンの1つ以上のステップを正確に実行したかを判定することができる。有利に、ユーザデバイスは、結合されたGUIの表示、及び作業フローエンジン又はフライトシミュレータに後に転送されるユーザ入力の生成といった、比較的負荷が軽い計算機能を実行する。このことによって、訓練をより広範囲のユーザデバイス上で実行することが可能となる。
【0093】
本開示では、様々な態様が参照される。しかしながら、本開示は、特定の記載された態様には限定されない。その代わりに、本開示で提供される態様を実現し実践するために、以下の特徴及び要素の任意の組み合わせが、様々な態様に関係するか否かに関わらず、想定される。加えて、上記態様の要素が、「A及びBの少なくとも1つ」の形態で記載されるときには、要素Aを排他的に含む態様、要素Bを排他的に含む態様、並びに、要素A及びBを含む態様、のそれぞれが想定されると理解されたい。さらに、幾つかの態様は他の可能な解決策及び/又は従来技術に対して利点を実現しうるが、特定の利点が所与の態様によって実現されるか否かは、本開示を限定しない。従って、本明細書で開示される態様、特徴、及び利点は、単なる例示であり、請求項に明示的に記載されない限り、添付の特許請求の範囲の要素であるとも、添付の特許請求の範囲を限定するとも見なされない。同様に、「本発明」への言及は、本明細書で開示されている発明のあらゆる主題を一般化するものと解釈すべきではなく、かつ、請求項に明示的に記載されない限り、添付の特許請求の範囲の要素であるとも、添付の特許請求の範囲を限定するとも見なすべきではない。
【0094】
当業者によって想定されるように、本明細書に記載の態様は、システム、方法、又はコンピュータプログラム製品として具現化されうる。これに対応して、態様は、専らハードウェアである態様、専らソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)である態様、又はソフトウェアとハードウェアの態様を組み合わせた態様の形式をとり得る。本明細書では、それらは全て「回路」、「モジュール」又は「システム」と広く称されうる。さらに、本明細書に記載の態様は、コンピュータ可読プログラムコードが具現化される1つ以上のコンピュータ可読媒体において具現化されたコンピュータプログラム製品の形態をとりうる。
【0095】
コンピュータ可読媒体で具現化されたプログラムコードは、無線、有線、光ファイバケーブル、RFなど、又は、それらの任意の適切な組み合わせを含むがそれらに限定されない、任意の適切な媒体を使用して伝送されうる。
【0096】
本開示の態様の工程を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び、「C」プログラミング言語もしくはこれに類するプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ以上のプログラミング言語の任意の組み合わせで書かれていてよい。プログラムコードは、専らユーザのコンピュータで実行されうるか、部分的にユーザのコンピュータで実行されうるか、スタンドアローン型のソフトウェアパッケージとして実行されうるか、部分的にユーザのコンピュータで、かつ部分的に遠隔コンピュータで実行されうるか、又は、専ら遠隔コンピュータ若しくはサーバで実行されうる。後者の事例の場合、遠隔コンピュータは、ローカルエリアネットワーク(LAN:local area network)若しくはワイドエリアネットワーク(WAN:wide area network)を含む任意の種類のネットワークを通じてユーザのコンピュータに接続されていてよいか、又は、(例えば、インタネットサービスプロバイダを使用してインタネットを通じて、)外部コンピュータへの接続がなされてよい。
【0097】
本開示の態様は、本明細書では、本開示の態様に係る方法、装置(システム)、及びコンピュータプログラム製品のフロー図及び/またはブロック図を参照して記載される。フロー図及び/又はブロック図の各ブロック、並びに、フロー図及び/又はブロック図における複数のブロックの組み合わせは、コンピュータプログラム命令によって実行可能であると理解されたい。上記のコンピュータプログラム命令は、機械を製造するために、汎用コンピュータ若しくは特殊用途コンピュータのプロセッサ、又は他のプログラマブルデータ処理装置に提供されてよく、これにより、コンピュータのプロセッサ又は他のプログラマブルデータ処理装置を介して実行される上記命令が、フロー図及び/又はブロック図のブロック内で特定されている機能/作用を実行するための手段を創出する。
【0098】
上記のコンピュータプログラム命令は、コンピュータ可読媒体であって、当該コンピュータ可読媒体に格納された命令が、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスに、製造品を作製するために特定のやり方で機能するよう指示しうる、コンピュータ可読媒体に記憶されることも可能であり、そのコンピュータプログラム命令は、フロー図及び/又はブロック図のブロック内で特定されている機能/作用を実行する命令を含む。
【0099】
コンピュータ可読プログラム命令はまた、一連の処理ステップをコンピュータ、他のプログラマブル装置、又はコンピュータにより実行されるプロセスを発生させる他のデバイス上で実行させるために、コンピュータ、他のプログラマブルデータ処理装置、又は他の装置にロードすることができ、これにより、コンピュータ、他のプログラマブルデータ処理装置、又は他の装置で実行される命令が、フロー図及び/又はブロック図のブロック内で特定されている機能/作用を実行するためのプロセスを提供する。
【0100】
図面中のフロー図及びブロック図は、本開示の様々な態様に係るシステム、方法及びコンピュータプログラム製品の可能な実施形態のアーキテクチャ、機能、及び動作を図示している。そのため、フロー図又はブロック図における各ブロックは、特定の論理的機能を実行するための1つ以上の実行可能な命令を含む、コードのモジュール、セグメント、又は部分を表しうる。幾つかの代替的な実施形態では、ブロックに記載された機能が、図面に記載の順序から外れて行われうることに注意されたい。例えば、連続して示されている2つのブロックは、実際には、関連する機能に従って、実質的に同時に実行されてよく、又は時には、逆の順序若しくは順序から外れて実行されてよい。ブロック図及び/又はフロー図の各ブロック、並びに、ブロック図及び/又はフロー図におけるブロックの組み合わせは、特定の機能若しくは作用を実行する特殊用途のハードウェアベースのシステムによって、又は、特殊用途ハードウェアとコンピュータ命令との組み合わせによって実現されうることにも注意されたい。
【0101】
先の記載は、本開示の態様を対象とするが、本開示の他の態様及び更なる態様が、本開示の基本的な範囲を逸脱することなく考案されてよく、本開示の範囲は、以下の特許請求の範囲によって定められる。
【外国語明細書】