Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

この例では、MATLAB® および Communications Toolbox™ を使用して放送型自動従属監視 (ADS-B) 信号を処理することにより飛行機を追跡する方法を示します。取得した信号を使用することも、RTL-SDR 無線機、ADALM-PLUTO 無線機、または Universal Software Radio Peripheral (USRP™) 無線機を使用してリアルタイムに信号を受信することもできます。Mapping Toolbox™ ソフトウェアを使用して、追跡している飛行機を地図上で可視化することもできます。

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

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

  • Communications Toolbox™

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

  • RTL-SDR 無線機および Communications Toolbox Support Package for RTL-SDR Radio ソフトウェア アドオン

  • ADALM-PLUTO 無線機および Communications Toolbox Support Package for Analog Devices® ADALM-PLUTO Radio ソフトウェア アドオン

  • USRP 無線機および Communications Toolbox Support Package for USRP Radio ソフトウェア アドオン

Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、"ソフトウェア無線 (SDR) 情報ページ" のサポートされているハードウェアのセクションを参照してください。

はじめに

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

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

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

  • 1090 MHz の送信周波数

  • パルス時間変調 (PPM)

  • 1 Mbit/s のデータ レート

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

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

短いスキッタ メッセージには次のフィールドが含まれます。

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

  • 機能 (CA)

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

  • CRC チェックサム

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

  • 高度

  • 位置

  • 機首方位

  • 水平および垂直速度

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

受信機の構造

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

信号ソース

次の信号ソースのいずれかを指定することができます。

  • ''Captured Signal'' - ファイルに書き込まれ、2.4 Msps で Baseband File Reader オブジェクトから取得される無線信号

  • ''RTL-SDR Radio'' - 2.4 Msps の RTL-SDR 無線機

  • ''ADALM-PLUTO Radio'' - 12 Msps の ADALM-PLUTO 無線機

  • ''USRP Radio'' - すべての無線で 20 Msps の USRP 無線機 (2.4 Msps を使用する N310/N300 シリーズを除く)

''RTL-SDR''''ADALM-PLUTO''、または ''USRP Radio'' を信号ソースとして設定した場合、例は、無線アドレス '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.4 MHz のサンプル レートを使用し、実際のサンプル レートが 12 MHz になるように 5 倍に補間します。

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

USRP 無線機は、さまざまなサンプル レートを使用することができます。USRP 無線機がソースである場合、例は、ほとんどの無線機について、20 MHz のサンプル レートで入力を直接サンプリングします。N310/N300 無線機では、データが 2.4 MHz のサンプル レートで受信されるため、実際のサンプル レートが 12e6 になるように係数 5 で内挿します。

たとえば、データ レートが 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) を表示します。データが取得されるたびに、アプリケーションによって、これらのメッセージから復号化された情報がテーブルにリストされます。

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

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

% The default configuration runs using captured data. You can set
% |cmdlineInput| to |1|, then run the example to optionally change these
% configuration settings:
% # Reception duration in seconds,
% # Signal source (captured data or RTL-SDR radio or ADALM-PLUTO radio or USRP radio),
% # Optional output methods (map and/or text file).

% For the option to change default settings, set |cmdlineInput| to 1.
cmdlineInput = 0;
if cmdlineInput
    % Request user input from the command-line for application parameters
    userInput = helperAdsbUserInput;
else
    load('defaultinputsADSB.mat');
end

% 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)

次の図は、検出された飛行機に関する情報を示しています。

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

その他の調査

ADSBExampleApp アプリを使用して、ADS-B 信号を調査することができます。信号ソースを選択したり、時間を変更したりするには、このアプリを使用します。アプリを起動するには、MATLAB コマンド ウィンドウで ADSBExampleApp と入力します。

参考文献

  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)