Radar 09 · FMCW 信号処理 — 2 次元 FFT で距離-速度マップを作る

Chapter 09

FMCW 信号処理 — 2 次元 FFT で距離-速度マップを作る

この章のゴール.

「チャープの中を FFT すると距離、チャープをまたいで FFT すると速度」—— この 2 段構えを、データの並び(フレーム)から分解能の式まで一気通貫で説明できること。 ここが分かれば、ミリ波レーダーのデータシートの数字は全部読める。

この章で使う既出の用語(定義は各リンク先). 信号処理(01 章 2 節)、波長・位相(02 章 1〜2 節)、SN 比・コヒーレント積分(03 章 3 節, 5 節)、歩行者(04 章 2 節)、PRF(05 章 1 節)、サイドローブ・窓関数(06 章 5 節)、ドップラー周波数 \(f_d\)・フェーザ・FFT(07 章 2 節, 6 節)、チャープの諸元 \(B, T_c, S\)・ビート(08 章 2〜3 節)、IF 帯域・ADC・リーク(08 章 6 節)

1. フレーム — データの器

08 章の高速チャープ方式を、実際のデータの形で見る。

フレーム 1 枚ぶんのデータは、\(M \times N\) の行列に並ぶ。 行方向(チャープ内のサンプル)を高速時間、列方向(チャープ番号)を低速時間と呼び分ける。 同じ「時間」でも刻みが 2〜3 桁違う(上の例ではサンプル間隔 \(T_c/M = 0.2\) µs に対しチャープ間隔 50 µs)——この 2 つの時間軸を持つことが FMCW 処理の要である。

フレーム — M サンプル × N チャープの行列高速時間(チャープ内のサンプル 1..M)——刻み 数十 ns低速時間(チャープ 1..N、刻み 数十 µs)1 行 = 1 チャープのビート信号1 列 = 同じ瞬間(同じ距離ビン)をチャープ越しに眺めた値
同じ「時間」でも刻みが 3 桁違う 2 つの軸を持つのが FMCW 処理の要。行方向と列方向で別の情報を運ぶ

2. 1 段目 — 距離 FFT(高速時間方向)

各チャープのビート信号は「目標ごとの周波数 \(f_b = 2RS/c\) の正弦波の混合」だった(08 章)。 行ごとに FFT(07 章 6 節。サンプル列を周波数成分に分解する計算)すれば周波数——すなわち距離——ごとに分解できる。これを距離 FFTと呼ぶ。

FFT の各出力点(ビン)は距離の升目に対応する。ビンの間隔は観測時間の逆数(08 章 4 節)なので:

\[ \text{ビン幅} = \frac{1}{T_c} \;[\text{Hz}] \;\longleftrightarrow\; \Delta R = \frac{c}{2B} \]

\(M\) 点サンプルの FFT は \(M\) 個のビンを出すが、サンプルが実数(実サンプリング)なら正の周波数と負の周波数の成分が鏡像で同じ情報になるため、使えるビンは \(M/2\) 個。 ミキサを 2 系統使って複素数(振幅と位相)としてサンプルする複素サンプリング(IQ サンプリング、12 章)なら \(M\) 個全部が使える。 升目の数 × 升目の幅が最大距離を決める (ADC レートと IF 帯域の制約——08 章 6 節——と同じことの言い換えである)。

3. 2 段目 — ドップラー FFT(低速時間方向)

距離 FFT を \(N\) 本のチャープ全部に施すと、行列は「距離ビン × チャープ番号」になった。 ある距離ビンに目標がいれば、その列には同じ目標の複素値が \(N\) 個並んでいる。 07 章で導いた通り、目標が速度 \(v\) を持てばこの \(N\) 個は 1 チャープごとに

\[ \Delta\phi = \frac{4\pi v T_c}{\lambda} \]

ずつ回転する等速フェーザ——つまり周波数 \(f_d\) の正弦波を、チャープ 1 本をパルス 1 発とみなしたときの PRF \(=1/T_c\) でサンプルしたものである。 列ごとに FFT すれば速度ごとに分解できる。これをドップラー FFTと呼ぶ。

2 段の FFT — 行で距離、列で速度生データ M×N行ごとに FFT距離 FFT距離ビン × チャープ列ごとに FFTドップラー FFTRD マップ距離 FFT は「ビートの周波数=距離」の分解、ドップラー FFT は「チャープ間位相回転=速度」の分解2 つの FFT は独立で、順序は距離 → ドップラーが標準(メモリの並びの都合)
行列に FFT を 2 回かけるだけで、時間データが「距離 × 速度」の地図に化ける

2 段の FFT を終えた \(M/2 \times N\) の行列が 距離-ドップラーマップ(Range-Doppler map、RD マップ)—— 行を縦方向、列を横方向に描くと、横軸速度・縦軸距離の平面に目標が輝点として浮かぶ「レーダーの視界」である。

距離-ドップラーマップの読み方v = 0速度 →← 近づく側距離 →静止物の列(壁・ガードレール)近づく車遠ざかる自転車歩行者
世界の大半(静止物)は v=0 の縦線に整列し、動くものだけが横へ飛び出す。速度軸は最強のフィルタである

静止物は「v = 0 の縦線」に整列する.

ガードレール・建物・路面——世界の大半は止まっている。 RD マップではそれらが全部 \(v=0\) の列に集まり、動く目標だけが横へ飛び出す。 速度軸は最強のフィルタである。時速 5 km で歩く人が、巨大な壁の反射と別の場所に写る—— カメラには決してできない分離が、FFT 1 回で手に入る(クラッタの話は 14 章)。

距離-速度マップを動かす

Web 版のこの見出しの下には、目標の距離と速度をスライダーで動かし、RD マップ上の輝点が動く様子を見られる動く図がある。 速度を上げて折り返す瞬間、2 目標が同じ距離で速度違いに分かれる様子が見どころである。

4. 分解能と範囲 — 4 つの式で全部決まる

導出済みの部品を並べると、FMCW レーダーの性能表が完成する。

量式何で決まるか
距離分解能\(\Delta R = \dfrac{c}{2B}\)掃引幅 \(B\)
最大距離\(R_{\max} = \dfrac{c \, f_{IF,\max}}{2S}\)IF 帯域(ADC レート)とスロープ
速度分解能\(\Delta v = \dfrac{\lambda}{2 N T_c}\)フレーム全体の観測時間 \(N T_c\)
最大速度\(v_{\max} = \dfrac{\lambda}{4 T_c}\)チャープ周期 \(T_c\)

速度分解能だけ導出がまだなので埋める。 ドップラー FFT の観測時間はフレーム全体の \(N T_c\) なので、周波数分解能はその逆数 \(1/(N T_c)\)(08 章 4 節の理屈)。 速度に換算(\(v = \lambda f_d / 2\))して

\[ \Delta v = \frac{\lambda}{2}\cdot\frac{1}{N T_c} = \frac{\lambda}{2 N T_c} \]

数値例(77 GHz・現実的な車載設定). \(B = 1\) GHz → \(\Delta R = 15\) cm。 \(T_c = 50\) µs → \(v_{\max} = 19.5\) m/s(±70 km/h)。 \(N = 128\) → 観測 6.4 ms、\(\Delta v = 0.30\) m/s。 \(S = 20\) MHz/µs・IF 帯域 20 MHz(2 節 のとおり、複素サンプリングなら ADC 20 MSa/s、実サンプリングなら鏡像ぶんを含めて 2 倍の 40 MSa/s) → \(R_{\max} = 150\) m。 データシートの数字は全部この 4 式から逆算できる。

性能はこの 4 式で全部決まる距離分解能 ΔR = c / 2B掃引幅 B だけで決まる。4 GHz → 3.75 cm最大距離 R_max = c·f_IF / 2SIF 帯域(ADC レート)とスロープで決まる速度分解能 Δv = λ / 2NT_cフレーム全体の観測時間 NT_c で決まる最大速度 v_max = λ / 4T_cチャープ周期 T_c で決まるB↑ → 距離が細かい/ T_c↓ → 速い目標に対応/ NT_c↑ → 速度が細かい/ ADC↑ → 遠くまで全部を同時に良くするつまみは存在しない——配分の設計は 18 章で実演する
チャープ設計とはこの 4 式の連立である。データシートの数字はすべてここから逆算できる

トレードオフの三角関係

欲しいもの動かすつまみ押し出される代償
細かい距離\(B\) を広く同じ ADC なら \(R_{\max}\) が縮む(\(S\) が立つため)
速い目標\(T_c\) を短く同じ \(N\) なら \(\Delta v\) が粗くなる
細かい速度\(N T_c\) を長くフレームレート低下・データ量増

すべてを同時に良くするつまみは存在しない。 用途ごとの落とし所の付け方は 18 章で実演する。

5. FFT は積分器 — SN 比の帳尻合わせ

03 章 5 節で「1 回の観測では SN 比が足りない、位相を揃えて(コヒーレントに)\(M\) 回足せば SN 比が \(M\) 倍」と言った。その正体がこの 2 段 FFT である。 FFT の各ビンは「サンプルにそのビンの周波数で逆回転する位相を掛けてから全部足したもの」(07 章 6 節)で、目標の周波数に合ったビンでは信号が全サンプルで同じ向きに揃って足される。これはコヒーレント積分そのものである。

\[ \text{処理利得} = 10\log_{10}(M N) \;\text{dB} \]

\(M=256, N=128\) なら \(24 + 21 = \) +45 dB。 1 チャープでは雑音の海の底にいた歩行者のエコーが、フレーム全体では海面から頭を出す。 「FMCW レーダーが 10 mW で 100 m 先を見る」収支は、この処理利得込みで初めて合う。

6. 処理チェーンの全体像

RD マップはゴールではなく中間生成物である。フルパイプラインを見取り図にしておく。

処理チェーンの全体像ADCビートを標本化距離 FFTチャープごとドップラー FFT距離ビンごとCFAR 検出13 章角度推定10 章追尾15 章RD マップはゴールではなく中間生成物。ここから「点」を拾い、「物体」へ束ね、「軌跡」にするFFT×2 の処理利得 = 10 log(MN) dBM=256, N=128 → +45 dB(03 章の積分の正体)
ミリ波レーダーのチップ(SoC、16 章)の中では、このチェーンがフレームごと(数十 ms)に丸ごと走っている
段処理章
1ADC → 距離 FFT(チャープごと)本章
2ドップラー FFT(距離ビンごと) → RD マップ本章
3検出(CFAR)——輝点を「目標候補」に変える13
4角度推定——複数 RX の位相差から方位10
5クラスタリング・追尾——点を物体・軌跡へ15

7. 実装の細部 — つまずきポイントだけ

項目要点
窓関数FFT 前に必ず掛ける(ハン窓=ハニング窓、ハミング窓など)。強い目標のサイドローブが弱い目標を埋めるのを防ぐ。サイドローブを下げると分解能と SN 比を少し失う、06 章 5 節と同じトレードオフ
ゼロ埋めビンを細かく補間できるが分解能は増えない(見た目が滑らかになるだけ)
直流とリーク送信リーク(08 章)は距離ゼロ付近の巨大な直流・低周波成分。ハイパスで削ってから FFT する
データ量\(M \times N \times\) RX 数 × 2 バイト級が毎フレーム。メモリ配置と FFT 順序が組み込み実装の腕の見せ所

8. この章のまとめ

ポイント内容
フレーム\(M\) サンプル × \(N\) チャープの行列。高速時間と低速時間
2 段 FFT行方向=距離、列方向=速度。出力が RD マップ
4 つの式\(\Delta R = c/2B\)、\(R_{\max} = c f_{IF}/2S\)、\(\Delta v = \lambda/2NT_c\)、\(v_{\max} = \lambda/4T_c\)
処理利得FFT はコヒーレント積分。\(10\log MN\) dB で方程式の帳尻が合う
全体像RD マップ → CFAR → 角度 → 追尾。以降の章で 1 段ずつ