Pocket SDRすごい(設定ファイル有効活用編)

category: gnss
tags: pocketsdr sdr

はじめに

東京海洋大学の高須知二先生が公開されているオープンソースのソフトウェア無線Pocket SDRは、試験信号を含めたあらゆる測位衛星電波を受信できます。その電波受信ハードウェアとして、

  • 2つのフロントエンド(FE)チップからなる2チャネル版FE2CH
  • 4チャネル版FE4CH
  • 8チャネル版FE8CH
  • 電波到来方向推定のためのSPIDER

があります。

測位衛星は、周波数の異なる複数信号を同時に放送します。Pocket SDRでは、用途に適した設定ファイルを選択することで、この電波収録を制御できます。そこで、最新のPocket SDR ver.0.14(ハッシュ値f9826b6)のconfディレクトリにある設定ファイルをまとめます。

設定のトレードオフ

測位衛星が利用者向けに放送する電波は、インドのNavICの例外を除き、1.5 GHz帯(ハイバンド)と、1.2 GHz帯(ローバンド)に大別されます。複数周波数帯を使うのは、受信機にて、電離層遅延量推定により測位精度を高められるようにするためです。具体的な衛星信号ごとの周波数や帯域幅は、Pocket SDRのdocディレクトリのsignal_bands.pdfにまとめられています。

一方、信号収録パラメータとしては、

  • 中心周波数
  • 帯域幅
  • 同期検波出力の同相(in-phase)と直交(quadrature)の両方を収録するか(IQ)、片側のみを収録するか(I
  • 標本化周波数
  • Iのみ収録のときの帯域幅

があります。

例えば、ハイバンドの1575.42 MHzを4 MHz帯域幅にて電波受信すれば、GPSをはじめとする、多くの衛星信号をまとめてキャッチできます。

例えば、さらにBeiDou B1I信号も受信したければ、受信帯域幅を拡げることも考えられます。しかし、帯域幅を拡げると、チャネル雑音電力が増加し、収録ファイルサイズも大きくなります。ファイルサイズは標本化周波数に比例するからです。帯域幅や標本化周波数は、あらかじめ用意された候補から選択されます。

また、収録周波数を信号周波数からオフセットさせると、回路不整合や回り込みなどで生じる、直流バイアスと呼ばれる劣化を緩和できます。このときにIのみの収録にし、IQ収録と比較して、ファイルサイズを半分にするテクニックも広く用いられます。しかし、そのためには、帯域幅を拡げ、標本化周波数をより高く設定しなければなりません。

複数周波数帯の同時受信による測位精度向上のため、標本化周波数は、すべてのチャネル間で共通です。Pocket SDRハードウェアでは、チャネル1に設定した標本化周波数が他チャネルのそれに反映されます。ローバンド信号収録の帯域幅はハイバンド信号収録の帯域幅よりも広くなりがちなので、ハイバンドの信号収録においてファイルサイズの無駄が生じることがあります。

また、FE2CHでは、チャネル1がハイバンドに、チャネル2がローバンドに固定されています。FE4CHFE8CHでは、チャネルごとに中心周波数を自由に設定できます。

したがって、利用可能な最も上位ハードウェア向けの設定ファイルを利用することが、効率的データ収録の点で、好ましい言えます。

C言語版の最新Pocket SDRアプリケーションpocket_dumppocket_trkでは、収録ファイル(拡張子はbin)とともに、収録日時やパラメータを記録するタグファイル(拡張子はtag)が作られます。信号追尾アプリケーションpocket_trkでは、このタグファイルが読み込まれ、収録パラメータが自動設定されます。

また、新しいPocket SDRアプリケーションで追加されたRawモード収録では、複数チャネルを単一ファイルにまとめて収録できます。通常は、チャネルごとに収録ファイルが生成されます。pocket_trkでは、与えた追尾信号名から、Rawモード収録ファイル内のチャネルが自動設定されます。一方、Rawモード収録では、gzipによる収録ファイル圧縮効果が小さく、また、Python版のアプリケーションではRawモード収録ファイルを扱えないようです。

タグファイル仕様やRawモード収録フォーマットについては、docディレクトリにあるcommand_ref.pdfにまとめられています

FE2CH向け設定

Pocket SDRのconfディレクトリにあるFE2CH向けの設定ファイルをまとめます。設定ファイル拡張子confを省略します。ファイル名末尾には、標本化周波数が記述されています。中心周波数や帯域幅はメガヘルツ単位で表記し、小数点以下を四捨五入しています。

configuration namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_B1IB2I_12MHzFE2CH1561 (4, IQ), 1207 (4, IQ)
pocket_B1IB3I_24MHzFE2CH1561 (4, IQ), 1269 (16, IQ)
pocket_defaultFE2CH1569 (4, I), 1176 (23, IQ)
pocket_E1E5b_24MHzFE2CH1575 (4, IQ), 1207 (16, IQ)
pocket_G1G2_12MHzFE2CH1602 (9, IQ), 1246 (9, IQ)
pocket_G1G3_24MHzFE2CH1602 (9, IQ), 1202 (16, IQ)
pocket_G1OCG2OC_12MHzFE2CH1601 (4, IQ), 1248 (4, IQ)
pocket_G1OCG3OC_24MHzFE2CH1601 (4, IQ), 1202 (16, IQ)
pocket_L1L2_4MHzFE2CH1575 (3, IQ), 1228 (3, IQ)
pocket_L1L2_6MHzFE2CH1575 (4, IQ), 1228 (4, IQ)
pocket_L1L2_8MHzFE2CH1573 (3, I), 1226 (3, I)
pocket_L1L5_20MHzFE2CH1575 (16, IQ), 1176 (16, IQ)
pocket_L1L5_24MHzFE2CH1575 (4, IQ), 1176 (16, IQ)
pocket_L1L5_32MHzFE2CH1575 (16, IQ), 1176 (16, IQ)
pocket_L1L5_40MHzFE2CH1575 (23, IQ), 1176 (23, IQ)
pocket_L1L6_12MHzFE2CH1572 (4, I), 1279 (9, IQ)
pocket_L1L6_16MHzFE2CH1571 (4, I), 1279 (9, IQ)
pocket_L1L6_24MHzFE2CH1575 (4, IQ), 1279 (9, IQ)

データ収録のテーマを決めて、それに適した設定ファイルを選びます。

異なる標本化周波数のpocket_L1L2シリーズやpocket_L1L5シリーズの設定ファイルは、標本化周波数を4 MHzから48 MHzまで変化させた時の特性検証用のものだと思います。標本化周波数は、必要な信号を受信できる範囲で最小限のものでも良いように思います。

みちびきのCLASやMADOCA-PPP高精度測位補強信号や、GalileoのHAS高精度測位補強信号を受信するためには、pocket_L1L6シリーズの設定ファイルを利用します。

BeiDouを利用するときにはpocket_B1IB2I_12MHz.confpocket_B1IB3I_24MHz.confを、GLONASSを利用するときにはpocket_Gシリーズの設定ファイルを利用します。

FE4CH向け設定

FE4CH向けの設定ファイルでは、例えば、ハイバンドに1チャネル、ローバンドに3チャネルのフロントエンド割り当てが可能です。

configuration namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_ALL_48MHzFE4CH1588 (36, IQ), 1237 (36, IQ), 1191 (36, IQ), 1273 (36, IQ)
pocket_L1G1L2G2_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ)
pocket_L1G1L5E5b_16MHzFE4CH1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1G1L5E5b_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1G1L5E6_24MHzFE4CH1568 (23, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L1G1L5L6_16MHzFE4CH1568 (16, IQ), 1602 (9, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L1L2L5E5b_24MHzFE4CH1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1207 (16, IQ)
pocket_L1L2L5L6_24MHzFE4CH1568 (16, IQ), 1228 (4, IQ), 1176 (16, IQ), 1279 (16, IQ)
pocket_L5E5bB3L6_24MHzFE4CH1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ)

広帯域受信と高速標本化により、すべての信号収録を目指す設定pocket_ALL_48MHz.confもあります。標本化周波数が16 MHzまたは24 MHzでは、

  • ローバンドでGLONASS G2信号受信設定 pocket_L1G1L2G2_24MHz.conf
  • ローバンドでのGalileo E5b信号受信設定 pocket_L1G1L5E5bシリーズ
  • ローバンドでのみちびきL6信号とGalileo E6信号受信設定 pocket_L1G1L5L6_16MHz.conf Pocket_L1G1L5E6_24MHz.conf (L6信号とE6信号は、同一設定にて利用可能です)
  • 4チャネルすべてのローバンドへの割り当て設定 pocket_L5E5bB3L6_24MHz.conf

もあります。

私は、

  • みちびきCLASとMADOCA-PPP(L6信号)やGalileo HAS(E6信号)に興味があり、
  • GPSやみちびきのL1信号やL5信号も利用したいので、
  • GPSやみちびきのL2信号をあきらめて、

pocket_L1G1L5L6_16MHz.confを中心に利用しようと思っています。

FE8CH向け設定

FE8CHでは、さらに自由に収録モードを設定できます。GalileoのE5b信号とE6信号の両方を同時収録できます!ただし、Rawモード収録であっても、FE8CHFE4CHの2倍の収録ファイルサイズを要します。また、チャネルに余裕がありますので、ハイバンドに複数チャネルを割り当てる設定も可能です。

configuration namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_L1B1G1L2G2L5E5bL6_16MHzFE8CH1575 (16, IQ), 1561 (16, IQ), 1602 (9, IQ), 1228 (16, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1273 (16, IQ)
pocket_L1B1G1L2G2L5E5bL6_24MHzFE8CH1575 (4, IQ), 1561 (4, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1274 (16, IQ)
pocket_L1G1L2G2L5E5bB3L6_16MHzFE8CH1568 (16, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ)
pocket_L1G1L2G2L5E5bB3L6_24MHzFE8CH1568 (23, IQ), 1602 (9, IQ), 1228 (4, IQ), 1246 (9, IQ), 1176 (16, IQ), 1207 (16, IQ), 1269 (16, IQ), 1279 (9, IQ)

私は、pocket_L1B1G1L2G2L5E5bL6_16MHz.confの利用のために、FE8CHが欲しくなりました。この設定、いいですね。高須先生が公開されているFE8CH収録データについても、収録ファイル名やタグファイル内容から、この設定ファイルを利用されたと推測しています。

SPIDER向け設定

一方、SPIDERは到来方向推定用ハードウェアです。利用可能な8チャネルすべてで中心周波数を同一のハイバンドに設定しています。

configuration namehardwarefrequency [MHz] (bw [MHz], mode)
pocket_L1_8CH_12MHzSPIDER1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I), 1572 (4, I)
pocket_L1_8CH_16MHzSPIDER1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I), 1571 (4, I)
pocket_L1_8CH_24MHzSPIDER1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ), 1569 (4, IQ)

おわりに

Pocket SDRの設定ファイルを確認しました。

pocket_dumpアプリケーションだけでなく、pocket_trkアプリケーションでも、-cオプションにて設定ファイルを指定できます。C言語版pocket_trk-rawオプションを用いると、収録ファイルとともにタグファイルも出力されます。

今後は、例えばFE4CHでは、次のようにデータ確認しながら、データ収録しようと思います。楽しくなってきました。

pocket_trk -c pocket_L1G1L5L6_16MHz.conf -prn 1-32,194-200 -sig L1CB -prn 205 -raw 20250430-031300.bin

関連記事