USRP2+GNUradioを使用した流星電波観測用受信機の製作



最近流行りの、USRP2+GNUradio(ソフトウェアラジオ)をレーダー用受信機として使用することを想定しつつ、
流星電波観測用受信機に応用したときの、製作状況などをご紹介します。



●USRP2+GNUradio(ソフトウェアラジオ)とは

USRP2+GNUradio(ソフトウェアラジオ)とは、受信機の中で必要となる、周波数変換処理、
フィルタ処理、復調処理などをソフトウェア上(計算機上)でやってしまおうというものです。
従来のアナログ受信機であれば、これらの処理をディスクリート部品(トランジスタ・コイル・コンデンサ
など)を組み合わせて作成したのですが、これらの処理をプログラムとして作成するので、はんだごて
で手をやけどする危険性は少なくなります。

また、ソフトウェアで受信機を構成するので、構成変更が容易にでき、柔軟性のある受信機を
作成することができます(ハードウェアでは一度作ってしまったら、構成変更は受信機作り直し
と、同じことになることが多いです)。

アナログ受信機の製作は、高周波の技術と経験が必要となり、安定的で高機能な受信機を
誰でもすぐ作れるというものではありません。しかし、ソフトウェアラジオでは、高周波技術は
それほど必要なく、プログラムの知識だけで済むので、今まで受信機を製作したくても手が
出せなかった、ソフトウェア技術者が、手を出しやすくなります。

ソフトウェアラジオの中で、USRP2+GNUradioの良いところは、既にいろいろな処理ブロック
がライブラリーとして提供されており、これらのブロックをプログラム中でつなぎ合わせるだけで、
高機能でいろいろな種類の受信機がすぐ出来てしまうことです。

また、この処理ブロックはC++で作成できるので、例えばライブラリーにない新たな復調処理が
ほしいなどの場合、個人で作成することができます。




●USRP2+GNUradioの詳細

USRP2はソフトウェアラジオのハードウェアの部分です。RF入力信号をAD変換ICを
使って100MHzサンプリングし、周波数変換、フィルタ、データの間引きなどをFPGAを
使って高速処理します(図1)。RF信号を100MHzでサンプリングした後は、FPGA内での
計算処理になりますので、アナログ的な要素はほとんどなくなります。
また、RF信号のインターフェースはドーターボードという内蔵基板を使い、このドーターボード
を変更することで、DC〜4GHz程度までのRF信号を扱えることになります。

USRP2は、基準信号入力や1pps入力に対応しており、例えば基準信号入力にGPS10MHzを入力
することにより、高精度な周波数受信が可能になります。

PCとのデータ通信は、イーサネットを使い、USB接続でのデータ転送に比べて格段に
大量のデータをやり取りできます。

USRP2やドーターボードは、Ettus Reserchで製造販売されています。ただしUSRP2は現在(2012/02)
販売中止になっており、USRPの最新バージョンはUSRP N210($1700)となっています。

                             (図1)USRP2

GNUraidoはPC上で動くソフトウェア(ライブラリーみたいなもの)で、USRP2を制御し、USRP2の動き
(受信周波数やフィルタ特性など)を設定します。また、USRP2から出力されるI/Qデータの復調処理
(例えば音声出力)をしたり、スペクトルに変換したりします。

GNUraidoはLinuxPC上で動かすことが一般的で、Pythonを使って呼び出し、Pythonプログラム
の中で、受信機構成などを書いていきます。

以上、USRP2+GNUradioについて、個人的に理解していることを書きました。



●USRP2+GNUradioの流星電波観測への応用

上記のように、USRP2+GNUradioに利点が多いため、これをレーダー用受信機として使えないか
と考えました。以前、レーダー用受信機をアナログで作ったのですが、その煩雑さにかなり懲り
ました。しかし、いきなりUSRP2+GNUradioを使って、レーダー用受信機を作成するには、
ハードルが高いので、とりあえず、アマチュア無線のビーコン電波を受信する流星電波観測に
応用して、USRP2+GNUradioの使い勝手や受信機性能などの感触をつかんでおこうと考えました。


図2が今回作成した、USRP2+GNUradioを使用した流星電波観測システムの構成図です。




                              (図2)システム構成図


※受信する電波は、福井県鯖江市から送信されている53.75MHzのアマチュア無線ビーコン(JA9YDB)
を使用します。
※発射された電波は、流星が流れたときに生じる電離柱に反射し、受信点に到達します。



図2を簡単に説明します。

@共同教育施設1号館屋上に、50MHz帯のアマチュア無線用のアンテナを設置し、流星からの
反射電波を受信します。

A妨害波の影響を防ぐため、中心周波数53.75MHzのBPF(バンドパスフィルタ)を挿入します。

BBPF後に+30dBゲインのアンプを入れます(USRP2への直接入力ではゲインが足りない)。

Cアンプ出力をUSRP2に入力します。

D受信周波数精度を高めるため、周波数基準信号としてGPS10MHzをUSRP2に入力します。

EUSRP2の中では、NCOを使って受信周波数を0Hzに落とすダウンコンバーター、帯域5kHzの
ローパスフィルタ(FIRフィルタ)、100MHzサンプリングレートを1kHzに落とすデシメーション処理
などをやっています。

FUSRP2の処理で出力される1kHzサンプルのI/Qデータを、イーサネットを通してLinuxPC
(Ubuntu10.04)に連続保存していきます。

GLinuxPCの中で保存したデータを10分ごとにFFT処理し(Matplotlibを使用)、スペクトル図を
作成します。さらに作成したスペクトル図をstdb2(サーバ)に転送します。

Hstdb2でCGIを動かし、10分ごとのスペクトル図をWEB上に公開します。(スペクトル図はこちら



●レーダーへの応用を意識した受信周波数精度の確認

USRP2+GNUradioをレーダー用受信機へ応用するためのには、受信周波数精度が確保できるかどうかが
大切です。なぜなら、レーダー用受信機では、反射物のドップラーシフトを計測することがたびたびあり、
受信周波数に誤差があると、ドップラーシフト測定にそのまま影響するからです。

そのため、USRP2に基準周波数としてGPS10MHzを入力し、受信周波数精度を確保しようと
している訳ですが、本当に精度が出ているか確認する必要があります。

そこで、USRP2のRF入力にGPS10MHzを入力し、受信周波数を10MHzと設定し、周波数誤差を
確認しました。図3が受信したGPS10MHz信号をスペクトル図にしたものです。



                 (図3)GPS10MHzを受信した時のスペクトル図


図3より、GPS10MHzは0Hz付近で受信出来ており、USRP2は基準信号にロックし、受信周波数精度
は非常に高いと言えます。ちなみに、基準信号としてGPS10MHzを使わない場合、つまり、USRP2内部
の水晶発振器を基準として受信した場合、200Hzほどずれてしまいます。



●実際の観測データ

図4、5が実際に観測した電波のスペクトル図です。図4が飛行機の反射波を表し、飛行機の移動に
伴ってドップラーシフトしているのがわかります。USRP2のサンプリングレートの関係で、周波数の
プラスマイナスが反転して表示されています。

図5が流星反射波のスペクトル図です。流星反射はほとんどが0.5秒以下の短い時間の現象のため、
10分間のスペクトル図にすると、点状になってしまいます。


                         (図4)飛行機の反射波


                           (図5)流星の反射波



●USRP2+GNUradioの使用感&まとめ

今回、USRP2+GNUradioをレーダー用受信機として使用することを考えながら、流星電波観測用の
受信機に応用してみたわけですが、感じたことを以下に書きます。


・レーダー用受信機として必須の、受信周波数精度は、GPS10MHzを入力することで確保できる。

・レーダー用受信機としては、GPS1ppsも入力しておきたいが(時刻精度を保つため)、USRP2に
1ppsを入力する端子はあるものの、その取り込み方がどうしてもわからなかった。→(分かる方が
いれば教えてください)

・レーダー用受信機としては、TXトリガ信号も入力しておきたいが(反射物までの距離を測るため)、
USRP2には、これを入れる入力端子がない。(USRP1では、ドーターボードを2つ載せることが可能
なので、TXトリガ信号を入力できるが、10MHz基準と1ppsが入力できないので、これも使いにくい)

・受信機の感度は思った以上にいい感じ。デジタル受信機なので、デジタルノイズが混入して、感度は
悪いのではないかと思っていたが、そうでもないようだ。

・ちょっとひずみに弱い感じ。ちょっと強めの信号を入れると不要波が出てくることが多い気がする。

・連続してデータを取っていると、2週間に1度くらい、データ取得プログラムが止まっている。
→プログラムに改善の余地あり。



以上により、USRP2+GNUradioをレーダー用受信機として応用する場合、単純に反射物のドップラー
シフトを測りたいだけなら、比較的簡単に実用化できるが、その他の測定(例えば、距離測定)にも
使いたいときには、まだ少し壁があるようだと、感じました。

USRP2+GNUradioを使った流星電波観測のデータ




Yoshiyuki Hamaguchi のHPへ戻る