2026年1月28日水曜日

アンテナとタグの距離を測る その5

 前回では AOA が何となくできそうみたいなところまでやりました。今回はマルチパス環境をどこまで解析できるかやってみます。エクセルで計算するのもしんどくなってきたので、ここはひとつ解析用のアプリを作ってしまおうと思います(Claudeちゃんが)。

1.Delay-and-Sum ビームフォーミング

最も基本的なビームフォーミング手法だそうです。各アンテナの信号に位相重み(ステアリングベクトル)を適用して合成し、特定方向からの信号を強調するそうです。

合成信号 = Σ (signal_i × weight_i)

weight_i = exp(-j × 2π × d × sin(θ) / λ)

パワー = |合成信号|^2


タグをアンテナの正面1mのところに置いて計測したのがこちらです。0度のところでピークになっているのがわかります。マルチパスがあると、小さいピークがあらわれるようですが、鉄板使っていろいろマルチパスっぽいことやってみたんですが、小さいピークが出ることはありませんでした。2アンテナでは難しいようです。

2.Capon(MVDR) ビームフォーマー

Minimum Variance Distortionless Response(MVDR)法という方法だそうです。共分散行列の逆行列を使用して、干渉を抑制しながらビームを形成します。Delay-and-Sumより高い角度分解能を持つそうです。

P(θ) = 1 / (a^H × R^-1 × a)

a: ステアリングベクトル

R: 共分散行列(2×2)

R^-1: 共分散行列の逆行列


結果がこちら。確かに先ほどのビームフォーミングに比べて鋭いピークが見えます。こちらもいろいろ試したんですが、小さいピークを見ることはできませんでした。

3.周波数ドメイン解析(遅延プロファイル)

複数周波数の位相データをフーリエ変換し、距離(遅延時間)ドメインに変換するんだそうです。異なる経路長を持つマルチパスを距離方向で分離することを目指すようです。

距離分解能 Δd = c / (2 × B)
c: 光速
B: 周波数帯域幅

こうなりました。マルチパスを距離で見分けようということのようです。一番期待してたんですが、計測している帯域幅が狭いせいで十分な分解能が出せないようです。

4.IQ平面プロット

各周波数での位相を I(同相)・Q(直交)成分に分解し、複素平面上にプロットします。

I = cos(phase)
Q = sin(phase)
Radius = 点の重心からの平均距離
MultipathIndicator = 点の散らばり具合(0-1)

マルチパスが無い場合は全周波数の点が1箇所に集中し、マルチパスがある場合は点が散らばるようです。

確かに点が散らばってます。ようやくマルチパスが見えてきた感じです。

5.位相安定性解析

位相の時間的な変動(分散)を周波数ごとに計測します。マルチパス環境では、反射波と直接波の干渉により位相が不安定になる傾向があるのを可視化します。


やってみましたがどの周波数でも分散値は十分小さく、安定しているようです。

と、ここまでやってみて、IQ平面プロットがマルチパスがあるかどうかを見るのに使えるかなぁというくらいで、特に有効な方法は見つかりませんでした。

2026年1月20日火曜日

アンテナとタグの距離を測る その4

 前回は MF-PDOA を実際に計算して求めてみました。が、思ったような結果は得られませんでした。マルチパス(壁や床からの反射波)があると、位相が合成されてしまって結果が歪んでしまいます。マルチパスの影響を取り除くには FFT を用いる方法やもっと幅広い帯域での測定が必要みたいですが、リーダで読み取れるチャンネルは限られているのでそう簡単には実現できません。

そこで簡単にチャレンジできることとして、アンテナを2枚にして2か所から測定してみることにします。ということで調べていると、2枚のアンテナを使うことでAOA(Angle of Arrival:到着角度)の推定もできることがわかりました。2枚のアンテナを並べて設置し、タグからの電波を受信すると、タグの位置(角度)に応じて2枚のアンテナに届く電波の経路長にわずかな差が生じます。この経路差が、アンテナ間の位相差として観測されます。

距離(PDOA)と角度(AOA)の両方がわかると、タグの2次元的な位置(平面上の座標)が特定できるようになります。さらに、マルチパス対策としても強力です。マルチパスは直接波とは異なる角度から届くことが多いです。AOAによって「タグがあるはずの方向」がわかれば、その方向以外から届く(位相を乱す)反射波成分を理論的に排除しやすくなります。と、Geminiちゃんが申しております。

まじすか?ということでまずは AOA から試してみました。

前々回に作成した位相を表示するだけのアプリを改造して、2枚アンテナで取得した位相の【差】を表示するようにしてみました。

確かにタグを左右に動かすことで位相の差が変化することがわかります。周りが金属だらけなのでマルチパスしまくりでしょうけど、いちおう判断つくくらいの動きは見れました。ただ真正面にタグがあるときも位相の差が結構70度くらい出ているのが気になります。

真正面にあるときはそれぞれのアンテナとタグの距離は同じなので、測定される位相は同じ値になって差は0になるはずです。アンテナのケーブル長や、リーダ内部の基板上の長さのちょっとした違いで差がでるそうなので、これが表れているのだと思われます。この真正面のときの差は、リーダ固有のオフセット値と考えれば補正値として利用できそうです。


2026年1月6日火曜日

アンテナとタグの距離を測る その3

 前回はRFIDリーダで取得できる位相について見てきました。約16cm動かすと位相が一周するのがわかりました。しかしこれだけでは距離を正確に測ることができません。位相が何週したかがわからなければならないからです。

そこでMF-PDOAという手法があります。これは異なる周波数で位相を測り、その差分で距離を想定するやり方です。具体的には異なる周波数 f1 と f2 で位相を測った場合、

Φ2 - Φ1 = (4π・d f2 / c) mod 2π - (4π・d f1 / c) mod 2π = 4πd(f1 - f2)/c

となって(何週分かはどちらも同じと仮定した場合)、これを d について解くと、

d = c/4π・ΔΦ / Δf

となります。横軸に周波数、縦軸に位相で測定値をプロットした場合、直線となってその傾きから距離が求められるということになります。

まじすか?ということで実際に計測してみます。

測定風景は写真撮り忘れました。左が周波数(MHz)で値が位相(rad)になります。位相は複数回測定した平均値で、-πからπに収まるように補正しています。


これを横軸周波数、縦軸位相でプロットするとこうなりました。いい感じに直線になってますね。この直線の傾きから距離が計算できるということになります。実際に計算してみました。

100cm のタグ 計算値 18.623m

200cm のタグ 計算値 14.447m

300cm のタグ 計算値 28.542m

んー・・・ これは・・・ 何か間違えてる?

Geminiちゃんに聞くと、実際はアンテナの長さとかも含まれるからじゃね?あとマルチパスの影響もあるだし。みたいなこと言ってました。まぁ室内で測定してるしマルチパスはありそうだよなー、でも現場で使うにはマルチパス絶対あるだろうしなー、ということでもう少し探ってみたいと思います。