最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ADS-B 信号を使用した飛行機追跡

この例では、MATLAB® および Communications Toolbox™ を使用して Automatic Dependent Surveillance-Broadcast (ADS-B) 信号を処理することにより飛行機を追跡する方法を示します。取得した信号か、RTL-SDR 無線機または ADALM-PLUTO 無線機を使用してリアルタイムに受信した信号のいずれかを使用できます。この例では、Mapping Toolbox™ があれば、追跡している飛行機を地図上に表示できます。

必要なソフトウェアとハードウェア

取得した信号を使用してこの例を実行するには、次のソフトウェアが必要です。

信号をリアルタイムで受信するには、以下の SDR デバイスのいずれかと、対応するサポート パッケージ アドオンも必要です。

Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、Software-Defined Radio (SDR) 情報ページのサポートされているハードウェアの節を参照してください。

背景

ADS-B は、航空機を追跡するため協調監視技術です。この技術により、航空機は、モード S 信号方式を使用して、位置情報 (高度、GPS 座標、機首方位など) を定期的にブロードキャストします。

モード S は、航空トランスポンダーの質問モードの種類です。航空機は、質問要求を受信すると、トランスポンダーのスクォーク コードを返信します。これは、モード 3A と呼ばれています。モード S (選択) は、トランスポンダーが頻繁に質問されるのを避けるために設計された質問モードの一種です。モード S の詳細については、[ 1 ] を参照してください。このモードはヨーロッパで広く採用されており、北アメリカでは段階的に導入されています。

モード S 信号方式は、航空無線システムで使用される非要請メッセージとして定義されたスキッタ メッセージを使用します。モード S には次のプロパティがあります。

  • 送信周波数: 1090 MHz

  • 変調: パルス時間変調

  • データ転送速度: 1 メガビット/秒

  • 短スキッタ長: 56 マイクロ秒

  • 拡張スキッタ長: 112 マイクロ秒

短スキッタ メッセージには、次の情報が含まれています。

  • ダウンリンク形式 (DF)

  • 機能 (CA)

  • 航空機 ID (一意の 24 ビット シーケンス)

  • CRC チェックサム

拡張スキッタ (ADS-B) メッセージには、短スキッタ内のすべての情報と、次のいずれかが含まれています。

  • 高度

  • 位置

  • 機首方位

  • 水平および垂直速度

モード S の信号形式には、次の図のように 8 マイクロ秒の長さの同期パルスに続き、56 または 112 マイクロ秒のデータが含まれています。

例の実行

MATLAB コマンド ウィンドウで ADSBExample と入力するか、リンクをクリックして例を実行します。この例を実行するときには、次の情報を入力する必要があります。

  1. 受信期間の秒数

  2. 信号ソース (取得されたデータまたは RTL-SDR 無線機または ADALM-PLUTO 無線機)

  3. オプションの出力方法 (マップ、テキスト ファイル、またはそれら両方)

この例では、次の図のように、検出された飛行機に関する情報が表形式で表示されます。

Mapping Toolbox の有効なライセンスがある場合は、マップ上で飛行機を観察することもできます。

受信機の構造

次のブロック線図は、受信機コードの構造をまとめています。処理には、信号ソース、物理層、メッセージ パーサー、およびデータ ビューアーの 4 つの主要な部分があります。

信号ソース

この例では、3 つの信号ソースを使用できます。

  1. "取得した信号": ファイルに書き込まれ、2.4 Msps でベースバンド ファイル リーダー オブジェクトから取得される無線信号

  2. ''RTL-SDR 無線機'': 2.4 Msps の RTL-SDR 無線機

  3. "ADALM-PLUTO 無線機": 12 Msps の ADALM-PLUTO 無線機

"RTL-SDR" または "ADALM-PLUTO" を信号ソースとして割り当てる場合、例は、指定した無線機 (無線アドレス '0' の RTL-SDR 無線機または無線アドレス 'usb:0' の ADALM-PLUTO 無線機のいずれか) のコンピューターを検索し、信号ソースとして使用します。

ここで、拡張スキッタ メッセージは 120 マイクロ秒の長さになるため、信号ソースは 180 拡張スキッタ メッセージを一度に含むために十分なサンプルを処理するように構成され、信号プロパティの SamplesPerFrame を適宜設定します。残りのアルゴリズムは、データのこのフレームでモード S パケットを検索し、識別されたパケットをすべて正しく出力します。このタイプの処理は、バッチ処理として定義されます。また、この代わりに一度に 1 つずつ拡張スキッタ メッセージを処理することもできます。この単一パケットの処理方法は、バッチ処理の 180 倍以上のオーバーヘッドが生じますが、一方で遅延が 1/180 以下になります。ADS-B 受信機には遅延に対する耐性があるため、バッチ処理が使用されました。

物理層

信号ソースから受信したベースバンド サンプルは物理 (PHY) 層によって処理され、PHY 層のヘッダー情報と生のメッセージ ビットを含むパケットが生成されます。次の図は、物理層の構造を示しています。

RTL-SDR 無線機は、[200e3, 2.8e6] Hz の範囲のサンプリング レートを使用することができます。RTL-SDR 無線機がソースの場合、例は、2.4e6 Hz のサンプリング レートを使用し、12e6 Hz の実際のサンプリング レートに対して係数 5 によって内挿します。

ADALM-PLUTO 無線機は、[520e3, 61.44e6] Hz の範囲のサンプリング レートを使用することができます。ADALM-PLUTO 無線機がソースの場合、例は 12 MHz で直接入力をサンプリングします。

1 Mbit/s のデータ転送速度と 12 MHz の実際のサンプリング レートで、シンボルあたり 12 サンプルあります。受信処理連鎖は、複素数シンボルの振幅を使用します。

パケット同期装置は、2 つの拡張スキッタ パケット、すなわち 12 MHz または 120 マイクロ秒で 1440 サンプルに相当するデータのサブフレームで動作します。このサブフレームの長さによって、拡張スキッタ パケット全体が必ずサブフレームに含まれるようになります。パケット同期装置は、受信信号と 8 マイクロ秒のプリアンブルとの相関をとってから、ピーク値を検索します。次に、同期ポイントがプリアンブルのシーケンス [1 0 0 0 0 0 1 0 1 0 0 0 0 0 0] と一致するかどうかをチェックすることによって同期ポイントを検証します。ここで、'1' は高、'0' は低の値を表します。

モード S の PPM 変調方式では、2 つのシンボルを定義します。各シンボルには 2 つのチップがあり、1 つが高の値をもち、もう 1 つが低の値をもちます。最初が高のチップで続いて低のチップの場合、これは 1 のシンボルに相当します。逆に、最初が、低のチップで続いて高のチップの場合、シンボルは 0 です。ビット パーサーは、受信したチップを復調し、バイナリ メッセージを作成します。バイナリ メッセージは、CRC チェッカーを使用して検証されます。ビット パーサーの出力は、次のフィールドを含むモード S の物理層ヘッダー パケットのベクトルです。

  • RawBits: 生のメッセージ ビット

  • CRCError: CRC がチェックをする場合 FALSE、CRC が失敗した場合 TRUE

  • Time: 受信機の開始から受信までの秒単位の時間

  • DF: ダウンリンク形式 (パケット タイプ)

  • CA: 機能

メッセージ パーサー

メッセージ パーサーが、[ 2 ] で説明されているパケット タイプに従って、生のビットからデータを抽出します。この例では、短スキッタ パケットと、飛行速度、識別情報および飛行位置データを含んだ拡張スキッタ パケットを解析できます。

データ ビューアー

データ ビューアーでは、受信したメッセージがグラフィカル ユーザー インターフェイス (GUI) に表示されます。それぞれのパケット タイプについて、検出されたパケット数、正しく復号化されたパケット数、およびパケット誤り率 (PER) が表示されます。データが取得されるたびに、アプリケーションでは、これらのメッセージから復号化された情報が表形式で一覧表示されます。

コード例

受信機は、ユーザーの入力を求めて、変数を初期化します。次にループで、信号ソース、物理層、メッセージ パーサー、およびデータ ビューアーを呼び出します。ループは、フレーム時間を使用して無線時間を追跡します。

% Request user input from the command-line for application parameters
userInput = helperAdsbUserInput;

% Calculate ADS-B system parameters based on the user input
[adsbParam,sigSrc] = helperAdsbConfig(userInput);

% Create the data viewer object and configure based on user input
viewer = helperAdsbViewer('LogFileName', userInput.LogFilename, ...
    'SignalSourceType', userInput.SignalSourceType);
if userInput.LogData
  startDataLog(viewer);
end
if userInput.LaunchMap
  startMapUpdate(viewer);
end

% Create message parser object
msgParser = helperAdsbRxMsgParser(adsbParam);

% Start the viewer and initialize radio time
start(viewer)
radioTime = 0;

% Main loop
while radioTime < userInput.Duration


     if adsbParam.isSourceRadio
        if adsbParam.isSourcePlutoSDR
            [rcv,~,lostFlag] = sigSrc();
        else
            [rcv,~,lost] = sigSrc();
            lostFlag = logical(lost);
        end
    else
        rcv = sigSrc();
        lostFlag = false;
     end

  % Process physical layer information (Physical Layer)
  [pkt,pktCnt] = helperAdsbRxPhy(rcv, radioTime, adsbParam);

  % Parse message bits (Message Parser)
  [msg,msgCnt] = msgParser(pkt,pktCnt);

  % View results packet contents (Data Viewer)
  update(viewer, msg, msgCnt, lostFlag);

  % Update radio time
  radioTime = radioTime + adsbParam.FrameDuration;
end

% Stop the viewer and release the signal source
stop(viewer)
release(sigSrc)

その他の調査

ADSBExampleApp ユーザー インターフェイスを使用して、ADS-B 信号をさらに調査することができます。このアプリでは、信号ソースを選択して、時間を変更できます。アプリを起動するには、MATLAB コマンド ウィンドウで ADSBExampleApp と入力するか、リンクをクリックします。

物理層の実装の詳細については、次の関数や System object に関する情報を参照してください。

参考文献

  1. International Civil Aviation Organization, Annex 10, Volume 4. Surveillance and Collision Avoidance Systems.

  2. Technical Provisions For Mode S Services and Extended Squitter (Doc 9871)