ChatGPT-4に自分の操縦を分析してもらいました

ChatGPT-4(有料バージョン)をにはデータを読み込んで探索する機能が盛り込まれています。
これを操縦の評価に使ってみようというのが今回のテーマです。

元になるデータは下記のyoutubeで配信している、私の操縦データです。
桜美林大学のFTD2号機でILS進入をかなりゆるい感じで操縦をして、G-1000のデータ出力機能によってCSVデータとして取得したものです。動画ではデータを私自身が解析、評価を行っていますが、ChatGPT,すなわちAIに評価してもらおうという試みです。

早速試してみましょう。
下記のように、ChatGPT-4にCSVファイルを読み込ませます。
読み込ませた後の私の入力は、下の画のように「これを解析して下さい」という、とてもシンプルなものです。

回答は下記のようになりました。

ChatGPT-4の回答
現段階では、ILSアプローチの評価に必要な具体的なデータポイント(緯度、経度、高度など)の抽出に誤りがあったため、正確な分析を行うことができませんでした。もし、特定のデータ列(例:緯度や経度)についてより具体的な指示があれば、それに従って再度分析を試みることができます。また、データの初期行を改めて正確に確認し、適切な列名を割り出す作業が必要となります。

アップロードされたCSVファイルは、特にヘッダーに基づいて、ダイヤモンドDA42NGという航空機のフライトログデータであることがわかります。このファイルには、以下のような多岐にわたるデータポイントが含まれています:

  • 日付と時間(ローカルおよびUTCオフセット)
  • アクティブなウェイポイント識別子
  • 地理的座標(緯度、経度)
  • 高度指標(表示高度、MSLでの高度)
  • 気圧
  • 垂直速度、ピッチ、ロールなど、64列にわたるさまざまな飛行パラメータ

データの構造から、最初の2行は各列のデータを記述するメタデータまたはヘッダーを含み、その後の行には飛行中に記録された時系列データが含まれていることが示唆されます。

データの複雑さと範囲を考慮すると、このデータセットから抽出したい特定の分析や情報を指定していただけますか?たとえば、時間経過に伴う特定の飛行パラメータ、フライトパスの要約、またはデータ内の異常についての情報を求めていますか?

何も書かないのにどうして色々なことがわかってしまうのでしょうか?
おそらく列名から類推するのでしょうね。データがわかってもらったところで、行いたい事を指示します。

私の入力
これは私がシミュレーターでILSアプローチを実施した結果です。時系列に沿ってフライトパスの評価をして下さい。

ChatGPT-4の回答
シミュレーターで実施されたILSアプローチの結果を時系列に沿ってフライトパスを評価するためには、特に以下のパラメーターに注目して分析を進めることが有効です:

  1. 緯度と経度:フライトパスを地理的に追跡します。
  2. 高度(AltInd、AltMSL):アプローチ中の高度変化を評価します。
  3. 垂直速度(VSpdG):降下率が適切であるかを確認します。
  4. ピッチ(PichC)とロール(RollC):機体の姿勢が安定しているかを評価します。
  5. GPS修正(GPSfix)、HAL(水平警報限界)、VAL(垂直警報限界):ナビゲーション精度を確認します。

これらのパラメーターを基に、フライトパスの安定性、ナビゲーションの正確性、アプローチ中の機体制御の適切さを時系列データから評価します。まずは、これらの主要パラメーターを抽出し、フライトの進行に伴う変化を可視化することから始めましょう。これにより、ILSアプローチの実行が標準手順に従っているか、または改善が必要かどうかを判断できます。

次のステップとして、これらのパラメーターの時系列データを抽出して可視化してみます。

分析を進める過程で、「Latitude」および他の関連する列が見つからないという問題に遭遇しました。これは、使用した列名がファイル内の実際のヘッダー名と一致しないため発生した可能性があります。ファイルの初期表示から、実際には列名が正確に設定されていないか、または私の列名の解釈が誤っている可能性があります。

この問題を解決するために、正確な列名を再確認し、適切な列を参照するように分析を修正します。まず、実際の列名を確認し、それに基づいて分析を再度試みます。

列名を確認した結果、適切な列名を特定することができました。ただし、最初の分析では列名の指定が不正確であったため、実際のデータに基づいて分析を修正する必要があります。データ内の正しい列名を使用して、緯度、経度、高度、垂直速度、ピッチ、ロールのデータを抽出し、それらの時系列変化を可視化し直します。

ただし、上記の出力から、「Latitude」と「Longitude」の列名が直接見つかりませんでした。代わりに、緯度と経度のデータは「degrees」列に関連する可能性がありますが、これはおそらくヘッダーロウの解釈の誤りによるものです。データの構造を正しく理解するために、データの再構成が必要な場合があります。

ここでの説明に基づくと、データの構造を正確に把握するためのさらなる分析が必要です。しかし、緯度と経度の正確な列名を特定することが困難であるため、分析を進めるためにはデータの再確認や前処理が必要となります。

ChatGPT-4も、さすがに列名に戸惑っているようなので教えてあげます。

私の入力
「Latitude」と「Longitude」の列名は、「 Latitude」と「 Longitude」のようにスペースが挿入されているのであなたにはわかりにくかったと思います。全ての列名から先頭に含まれているスペースを削除して下さい。なお飛行高度はAltMSLを使用して下さい。

ChatGPT-4の回答
列名の先頭にあるスペースを削除して、修正された列名を使用して分析を行いました。以下の結果が得られました:

  1. フライトパス(緯度 vs. 経度)
  • フライトパスがプロットされ、飛行機の地理的な動きが可視化されています。この図から、フライトが特定の経路に沿って進んでいるかどうかを評価できます。
  1. 高度の時間経過(AltMSLを使用)
  • アプローチ中の高度変化が示されており、高度が時間とともにどのように変化しているかを確認できます。ILSアプローチ中に求められる一定の降下率を保っているかが分かります。
  1. 垂直速度の時間経過
  • 垂直速度の変化が示され、アプローチ中の降下率が適切であるかを示します。急な降下や上昇がないかを評価するのに役立ちます。
  1. ロールとピッチの時間経過
  • 機体の姿勢を示すロールとピッチの時間経過がプロットされています。この図から、飛行中の機体の安定性を評価できます。

これらの可視化に基づいて、ILSアプローチがどの程度正確に実行されたか、特にフライトパスの追跡、高度管理、機体の姿勢制御について評価できます。具体的なフィードバックやさらなる分析が必要であれば、教えてください。

ChatGPT4,恐るべしですね。最後のRollとPitchが描かれていないミスはさておき、可視化の指示も出していないのに、自主的にグラフを描いてくれるなんて素晴らしいと思いませんか?

私の入力
pythonコードを示して下さい

ChatGPT-4の回答
以下は、修正された列名を使用してILSアプローチの結果を分析し、フライトパス、高度、垂直速度、ロール、ピッチの時間経過を可視化するためのPythonコードです。このコードはPandasライブラリを使用してデータを処理し、Matplotlibライブラリを使用して結果をグラフにプロットしています。

import pandas as pd
import matplotlib.pyplot as plt

#CSVファイルからデータを読み込む

file_path = ‘/mnt/data/検証.csv’
data = pd.read_csv(file_path)

#列名の先頭にあるスペースを削除

corrected_column_names = [name.strip() for name in data.iloc[1].values]
data_filtered = data.iloc[2:] # 最初の2行を除外
data_filtered.columns = corrected_column_names # 修正された列名を設定

#必要な列を数値型に変換

numeric_columns_corrected = [‘Latitude’, ‘Longitude’, ‘AltMSL’, ‘VSpdG’, ‘RollC’, ‘PichC’]
for col in numeric_columns_corrected:
data_filtered[col] = pd.to_numeric(data_filtered[col], errors=’coerce’)

#可視化

fig, axs = plt.subplots(4, 1, figsize=(15, 20))

#フライトパス(緯度 vs. 経度)

axs[0].plot(data_filtered[‘Longitude’], data_filtered[‘Latitude’], marker=’o’, linestyle=’-‘, markersize=2)
axs[0].set_title(‘Flight Path (Latitude vs. Longitude)’)
axs[0].set_xlabel(‘Longitude’)
axs[0].set_ylabel(‘Latitude’)

#高度の時間経過(AltMSLを使用)

axs[1].plot(data_filtered[‘Lcl Time’], data_filtered[‘AltMSL’])
axs[1].set_title(‘Altitude over Time (AltMSL)’)
axs[1].set_xlabel(‘Time’)
axs[1].set_ylabel(‘Altitude MSL’)

#垂直速度の時間経過

axs[2].plot(data_filtered[‘Lcl Time’], data_filtered[‘VSpdG’])
axs[2].set_title(‘Vertical Speed over Time’)
axs[2].set_xlabel(‘Time’)
axs[2].set_ylabel(‘Vertical Speed (fpm)’)

#ロールとピッチの時間経過

axs[3].plot(data_filtered[‘Lcl Time’], data_filtered[‘RollC’], label=’Roll’)
axs[3].plot(data_filtered[‘Lcl Time’], data_filtered[‘PichC’], label=’Pitch’)
axs[3].set_title(‘Roll and Pitch over Time’)
axs[3].set_xlabel(‘Time’)
axs[3].set_ylabel(‘Degrees’)
axs[3].legend()

plt.tight_layout()
plt.show()


このコードは、アップロードされたCSVファイルが/mnt/data/検証.csvに保存されていると仮定しています。pd.read_csvを使用してデータを読み込んだ後、列名の前のスペースを削除し、数値データを適切に解析してから、必要なパラメータの時間経過に沿った変化をプロットします。

このようにPythonコードもたちどころに示してくれます。最後のグラフが真っ白なのは、RollとPitchの代わりにRollCとPitchCを指定してしまっていたことが原因であることがわかります。
このように若干怪しいときもあるのですが、素晴らしい能力です。

私の入力
後半の1/3は接地後のデータなのでカットして解析して下さい。さて、私のデータでVertival Speedがマイナス側に大きくなった時が2回ありますがわかりますか?

ChatGPT-4の返答

データの後半1/3をカットした後、垂直速度がマイナス側に大きくなった(急降下を示す)時が複数回観察されました。具体的には、垂直速度が-500 feet per minute (fpm)よりも大きなマイナス値を取った瞬間が複数存在します。

これらのポイントは、プロット上で赤い点として示されており、急降下が発生した時刻を視覚的に確認することができます。大きなマイナスの垂直速度の値は、-556.3 fpmから-735.8 fpmの範囲にあります。

特に2回の大きな降下が観測されたことについてですが、上記の出力では連続して大きなマイナスの垂直速度が記録されています。これらの値から、2つの特定の瞬間を指摘するのは難しいですが、急降下の期間があることは明らかです。急降下が発生した具体的な時点を詳細に分析するためには、これらの値の前後のコンテキスト(例えば、飛行状況の変化や操作の変更)を詳しく見る必要があります。

この解析から、フライト中に特に注意を要する急降下の瞬間を特定できました。これらの瞬間は、フライトの安全性を評価する上で重要なポイントになります。さらなる分析やフィードバックが必要であればお知らせください。

急降下とは悲しすぎる表現ですが、たったあれだけの質問で示す素晴らしい解析能力、そして可視化の能力を認めて、勘弁してあげましょう。そこで更につっこんでみます。


私の入力
赤い点の急降下の原因を知りたいと思います。分析方法には何が考えられますか?

ChatGPT-4の回答
急降下の原因を分析するには、複数のアプローチが考えられます。ここでは、データ駆動アプローチとフライトパラメータの詳細な調査を含む方法を提案します。

1. フライトパラメータの時系列分析

  • パラメータの相関分析:急降下直前、直後のフライトパラメータ(ピッチ、ロール、加速度、エンジン出力など)の変化を詳細に分析し、急降下と強く相関する要因を特定します。
  • 事象前後の比較:急降下が発生した時点のデータと正常飛行時のデータを比較し、異常なパターンや突出した変化を探します。

2. 機械学習モデルの活用

  • 異常検出:機械学習を用いた異常検出モデルを訓練し、急降下を含む異常な飛行パターンを自動で識別できるようにします。これには、飛行データの正常範囲を学習させる必要があります。
  • 因果関係分析:急降下の原因と考えられるパラメータに焦点を当て、因果関係を推測するモデルを構築します。これには因果推論や時系列分析技術が利用できます。

3. シミュレーションと再現

  • フライトシミュレーション:シミュレーターを使用して、急降下が発生した条件を再現し、様々なパラメータ(風向・風速、重量バランス、操縦入力など)を変えてその影響を観察します。
  • シナリオ分析:急降下が発生した可能性のあるシナリオ(例:乱気流、操縦ミス、システムの故障)を特定し、それぞれのシナリオを詳細に分析します。

4. 専門家のレビュー

  • パイロットとのレビュー:経験豊富なパイロットにデータをレビューしてもらい、彼らの意見や経験に基づく洞察を得ます。
  • 技術的レビュー:航空機のシステムや構造に関する専門家による技術的分析を行い、機械的な故障や設計上の問題点を特定します。

これらの分析方法を組み合わせることで、急降下の原因についてより深い理解を得ることができます。データとリソースの可用性に応じて、適切な方法を選択し、段階的に分析を進めることをお勧めします。

生成AIの素晴らしさ、御理解頂けましたでしょうか?急降下であると重ねて断定されてしまいましたが、まあいいでしょう。
そしてようやくデータサイエンスらしいテーマにたどり着きまして、更に深く突っ込みたいところですが、この先の深掘りは又の機会にしましょう。

今回は自分の操縦をChat-GPTによって可視化を行い、問題解決(急降下^^;)のためのアプローチを導き出しました。
AIを使えば大量の操縦データを読み込ませて、問題解決や教育等に直接役にたつ技術を開発することが出来ます。
実はこのような生成AIに頼らずに、例えば水平直線飛行、そしてILSアプローチのスコア化には成功しています。具体的には、操縦しながら10秒毎のスコアをリアルタイムに判定して操縦者に表示することも大学のシミュレーターでは実現しています。

この記事とyoutube動画で使用した操縦は下記にアップロードしました。ご自由にダウンロードして下さい。