Pocket SDR収録データ

category: gnss

Pocket SDR

Pocket SDRは、東京海洋大学の高須知二先生が公開されているオープンソースのソフトウェア無線(SDR: software defined radio)で、測位衛星(GNSS: global navigation satellite system)信号を受信するものです。これは、ハードウェア設計資料、測位ソフトウェア(C言語版とPython言語版)、収録データサンプル、ハードウェア設定ファイル、測位衛星資料からなります。この測位ソフトウェアは、Windows PC、Mac、Raspberry Piにて利用できます。

さらに、高須先生が2025年3月27日に日記・備考録で公開されたPocket SDR収録データには、みちびき6号機J08で試験中のL1C/B信号も含まれていました。

このデータにとても感動しましたので、私の持っているPocket SDR収録データも公開します。今後、観測データを収録したら、ここに追記していこうと思います。

Pocket SDR sample IF data

ドイツ・アーヘン(おすすめ度:★☆☆)

アーヘン駅前のホテルに宿泊した際、窓際にアンテナを置いて収録したデータです。失敗したデータ収録の予行演習でした。道路向かいにある高い建物のため、信号レベルが低く、充分な強度で受信できたGPS衛星数は3程度でした。残念です。

Aachen data

はじめに、GPS L1C/A信号とGalileo E1B信号のデコードを試してみてください。すべての収録ファイルをgzip圧縮しています。収録ファイルL1.bin.gzとタグファイルL1.bin.tagをダウンロードし、gunzip L1.bin.gzにて収録ファイルを解凍して、Pocket SDRのpocket_trkアプリケーションで測位します。この例では、ver. 0.14のものをmacOS上で実行しています。

$ pocket_trk L1.bin -prn 1-32 -sig E1B -prn 1-36
 1970-01-01 00:00:00.0   0.00000000    0.00000000     0.000   0/0 ---   BUFF:  4% SRCH:   2 LOCK:   9/  68
  CH RF  SAT   SIG PRN  LOCK(s) C/N0 (dB-Hz)         COFF(ms) DOP(Hz)    ADR(cyc) SYNC  #NAV #ERR #LOL FEC
   5  1  G05  L1CA   5    14.40 33.2 |              0.7138032 -1569.4    -22546.2 ----     0    0    0   0
  12  1  G12  L1CA  12    13.70 44.0 ||||||||       0.5609495  1025.9     14074.2 -B--     0    1    0   0
  20  1  G20  L1CA  20    12.87 30.0 |              0.2656514   570.1      7312.5 ----     0    0    0   0
  24  1  G24  L1CA  24    12.50 54.1 ||||||||||||   0.3122772 -1539.0    -19234.4 -BF-     1    0    0   0
  25  1  G25  L1CA  25    12.45 44.4 ||||||||       0.8502644  3326.7     41415.1 -BFR     1    0    0   0
  32  1  G32  L1CA  32    11.59 36.1 |||            0.6249231  2534.7     29402.0 -BF-     1    0    0   0
  37  1  E05   E1B   5    10.24 50.9 ||||||||||||   0.6130906 -1830.9    -18754.3 -BFR     3    0    0   0
  57  1  E25   E1B  25     3.93 45.1 |||||||||      0.2554515  2076.4      8157.7 ----     0    0    0   0

収録諸元(中心周波数やサンプリング周波数など)については、収録バッチファイルsat.shにある設定ファイル名をメモし、Pocket SDR ver.0.13の設定ファイルディレクトリにある該当ファイル内容をご参照ください(まとめを省略してすみません)。

例えば、バッチファイルによると、この収録ファイルL1.binに対応する設定ファイルはpocket_L1L2_4MHz.confです。その設定ファイル内容から、この収録ファイルは、中心周波数1575.42 MHz、サンプリング周波数4 MHz、ベースバンド収録、フィルタ帯域幅2.5 MHzの2チャネル動作のものであることがわかります。

  • 収録日: 2024年11月3日
  • 受信機: Pocket SDR FE4CH(DATAGNSS版
  • アンテナ: Beitian BT-200
  • ケーブル: RG58 2メートル
  • 収録ソフトウェア: Pocket SDR バージョン0.13

Pocket SDR signal capture at Aachen, German

このFE4CHハードウェアは、先日購入したSFP+光トランシーバの空きケースにきれいにおさまりました。これで安心して持ち運べます。

Pocket SDR FE4CH case

ドイツ・ボン(おすすめ度:★☆☆)

早朝にホテル近くの広場で収録しました。収録時間を30秒間にしたつもりが15秒間分しかなく、測位には至りませんでした。Galileo HAS(E6B信号)のデータも収録できました。

Bonn data

$ pocket_trk L1.bin -prn 1-32 -sig E1B -prn 1-36
 1970-01-01 00:00:00.0   0.00000000    0.00000000     0.000   0/0 ---   BUFF:  3% SRCH:  66 LOCK:  12/  68
  CH RF  SAT   SIG PRN  LOCK(s) C/N0 (dB-Hz)         COFF(ms) DOP(Hz)    ADR(cyc) SYNC  #NAV #ERR #LOL FEC
   2  1  G02  L1CA   2    14.57 43.9 ||||||||       0.9748175 -2165.3    -31303.0 -BF-     2    0    0   0
   3  1  G03  L1CA   3    14.52 50.1 ||||||||||||   0.8123621  -137.4     -1739.4 -BFR     2    0    0   0
   4  1  G04  L1CA   4    14.47 47.6 ||||||||||     0.4966509  2769.0     40327.1 -BFR     2    0    0   0
   9  1  G09  L1CA   9    13.80 42.8 |||||||        0.0000818  4038.4     55957.5 -B--     0    1    0   0
  17  1  G17  L1CA  17    12.54 45.3 |||||||||      0.3797798  -569.4     -6940.9 -BF-     1    0    0   0
  21  1  G21  L1CA  21    11.92 38.0 ||||           0.3916530 -2626.9    -31157.9 -BFR     1    0    0   0
  28  1  G28  L1CA  28    10.73 40.0 |||||          0.2537974  -338.7     -3487.5 -BFR     1    0    0   0
  31  1  G31  L1CA  31    10.38 42.3 |||||||        0.4448699  1725.8     18055.0 -BF-     1    0    0   0
  39  1  E07   E1B   7     8.26 44.9 ||||||||       0.4483116  1711.1     14220.3 -BFR     2    0    0   0
  40  1  E08   E1B   8     8.02 45.3 |||||||||      0.0986165 -1195.5     -9514.2 -BF-     2    0    0   0
  45  1  E13   E1B  13     6.57 42.5 |||||||        0.8008398 -1790.8    -11720.3 -BFR     1    0    0   0
  58  1  E26   E1B  26     2.48 48.3 ||||||||||     3.0899644   773.4      1923.1 ----     0    0    0   0
  TIME(s) = 15.368
$ pocket_trk L6.bin -sig E6B -prn 1-36
 1970-01-01 00:00:00.0   0.00000000    0.00000000     0.000   0/0 ---   BUFF:  2% SRCH:  24 LOCK:   4/  36
  CH RF  SAT   SIG PRN  LOCK(s) C/N0 (dB-Hz)         COFF(ms) DOP(Hz)    ADR(cyc) SYNC  #NAV #ERR #LOL FEC
   7  1  E07   E6B   7    13.26 49.5 |||||||||||    0.4929030  1278.5     17011.3 -BF-    11    0    0   0
   8  1  E08   E6B   8    13.10 44.5 ||||||||       0.3146145 -1075.1    -14027.5 -BFR    10    0    0   0
  13  1  E13   E6B  13    11.87 46.0 |||||||||      0.0517586 -1551.3    -18373.5 -BF-     9    0    0   0
  26  1  E26   E6B  26     8.55 50.2 ||||||||||||   0.1897424   522.1      4488.0 -BFR     6    0    0   0
  TIME(s) = 15.522
  • 収録日: 2024年11月7日
  • 受信機: Pocket SDR FE4CH(DATAGNSS版
  • アンテナ: Beitian BT-200
  • ケーブル: RG58 2メートル
  • 収録ソフトウェア: Pocket SDR バージョン0.13

Pocket SDR signal capture at Bonn, German

広島市立大学屋上(おすすめ度:★★☆)

GNSS観測局の空いているポートに受信機を接続して収録しました。安定した受信はできたものの、収録時間が30秒しかないために、測位には至りませんでした。

Hiroshima data

GPS L1C/A信号、みちびきL1C/A信号、Galileo E1B信号を復調してみます。

$ pocket_trk L1.bin -prn 1-32,194-199 -sig E1B -prn 1-36
 2024-11-13 02:23:10.0   0.00000000    0.00000000     0.000  0/13 ---   BUFF:  3% SRCH:   2 LOCK:  21/  74
  CH RF  SAT   SIG PRN  LOCK(s) C/N0 (dB-Hz)         COFF(ms) DOP(Hz)    ADR(cyc) SYNC  #NAV #ERR #LOL FEC
  10  1  G10  L1CA  10    28.19 46.7 ||||||||||     0.2449120  1963.7     55611.0 -BFR     3    0    0   0
  12  1  G12  L1CA  12    27.92 45.7 |||||||||      0.8748685  1214.0     34204.2 -BFR     3    0    0   0
  15  1  G15  L1CA  15    27.52 42.5 |||||||        0.0500557 -2851.5    -78342.9 -BF-     3    0    0   0
  18  1  G18  L1CA  18    27.08 38.8 |||||          0.2512724 -3306.0    -89537.8 -BFR     3    0    0   0
  23  1  G23  L1CA  23    26.36 44.4 ||||||||       0.7871624 -1001.1    -26120.4 -BF-     3    0    0   0
  24  1  G24  L1CA  24    26.25 43.8 ||||||||       0.3510061 -2562.4    -67143.9 -BF-     3    0    0   0
  25  1  G25  L1CA  25    26.18 43.0 |||||||        0.2311368  3218.6     84415.3 -BFR     3    0    0   0
  28  1  G28  L1CA  28    25.76 40.2 ||||||         0.0822586  2753.0     71032.7 -BF-     3    0    0   0
  32  1  G32  L1CA  32    25.19 40.8 ||||||         0.1392135  2207.6     55646.8 -BF-     3    0    0   0
  33  1  J02  L1CA 194    25.12 42.2 |||||||        0.3717802    -6.8      -108.7 -BFR     3    0    0   0
  34  1  J03  L1CA 195    25.03 40.6 ||||||         0.1736432  -632.9    -15807.0 -BFR     3    0    0   0
  35  1  J04  L1CA 196    24.95 43.9 ||||||||       0.9174979   452.6     11324.1 -BF-     3    0    0   0
  38  1  J07  L1CA 199    24.50 39.8 |||||          0.2416195  -184.9     -4495.7 -BF-     3    0    0   0
  40  1  E02   E1B   2    24.11 44.3 ||||||||       3.8777989  1487.8     36015.2 -BF-    11    0    0   0
  41  1  E03   E1B   3    23.90 43.4 ||||||||       1.2668959 -1252.0    -29851.4 -BF-    10    0    0   0
  45  1  E07   E1B   7    22.71 37.0 ||||           0.7894052  1695.3     38543.2 -BF-    10    0    0   0
  46  1  E08   E1B   8    22.51 45.4 |||||||||      2.6074424   520.7     11772.8 -BFR    10    0    0   0
  51  1  E13   E1B  13    21.06 40.5 ||||||         1.6390581 -1867.1    -39228.3 -BFR     9    0    0   0
  63  1  E25   E1B  25    17.37 41.3 ||||||         3.8822498 -1171.7    -20257.7 -BF-     7    0    0   0
  64  1  E26   E1B  26    17.15 37.3 ||||           2.6510517   422.8      7335.8 -BFR     7    0    0   0
  68  1  E30   E1B  30    15.99 37.8 ||||           1.5447626  2889.0     46214.2 -BFR     6    0    0   0
  TIME(s) = 30.570

みちびきCLAS(L6D信号)、MADOCA-PPP(L6E信号)、Galileo HAS(E6B信号)を復調してみます。

$ pocket_trk L6.bin -sig L6D -prn 194-199 -sig L6E -prn 204-209 -sig E6B -prn 1-36
 1970-01-01 00:00:00.0   0.00000000    0.00000000     0.000   0/0 ---   BUFF:  4% SRCH:  11 LOCK:  15/  48
  CH RF  SAT   SIG PRN  LOCK(s) C/N0 (dB-Hz)         COFF(ms) DOP(Hz)    ADR(cyc) SYNC  #NAV #ERR #LOL FEC
   1  1  J02   L6D 194    15.48 42.8 |||||||        0.9362705    -4.0       -67.0 -BF-    25    0    1   0
   3  1  J04   L6D 196    28.72 46.9 ||||||||||     0.5927748   349.6     10000.1 -BF-    27    0    0   0
   6  1  J07   L6D 199    26.77 41.6 ||||||         0.7275055  -162.3     -4374.2 -BF-    25    0    0   0
   7  1  J02   L6E 204    26.18 42.6 |||||||        0.8842673    -4.1      -119.0 -BF-    25    0    0   0
   9  1  J04   L6E 206    25.44 46.7 ||||||||||     0.5478091   349.9      8864.1 -BF-    24    0    0   0
  12  1  J07   L6E 209    11.37 41.9 |||||||        0.7971062  -162.3     -1851.2 -BF-    12    0    1   0
  14  1  E02   E6B   2    23.75 49.5 |||||||||||    0.7595063  1283.4     30535.7 -BF-    21    0    0   0
  15  1  E03   E6B   3    23.58 48.2 ||||||||||     0.6426327 -1003.6    -23666.8 -BFR    21    0    0   0
  19  1  E07   E6B   7    22.66 44.4 ||||||||       0.6984314  1358.7     30765.5 -BF-    20    0    0   0
  20  1  E08   E6B   8    22.50 49.8 |||||||||||    0.3051770   428.3      9634.0 -BFR    20    0    0   0
  25  1  E13   E6B  13    21.26 42.0 |||||||        0.9090890 -1445.9    -30697.7 -BFR    19    0    0   0
  27  1  E15   E6B  15    20.85 38.4 |||||          0.9168818 -2486.0    -51855.3 -BF-    18    0    0   0
  37  1  E25   E6B  25    18.36 47.3 ||||||||||     0.2815602  -858.7    -15714.2 -BF-    16    0    0   0
  38  1  E26   E6B  26    18.18 43.4 ||||||||       0.3408959   437.3      7997.8 -BF-    16    0    0   0
  42  1  E30   E6B  30    17.20 42.4 |||||||        0.6719913  2334.9     40155.6 -BF-    15    0    0   0
  TIME(s) = 30.711
  • 収録日: 2024年11月13日
  • 受信機: Pocket SDR FE4CH(DATAGNSS版
  • アンテナ: Beitian BT-200
  • ケーブル: RG58 2メートル + 2メートル
  • 信号スプリッタ: INSTOCK GPS410 (4 way)
  • 収録ソフトウェア: Pocket SDR バージョン0.13

Pocket SDR signal capture at Hiroshima City University, Japan

シェルスクリプトで効率的に信号解析

例えば、次のようなシェルスクリプトを作成すれば、効率的に信号解析できるかもしれません。関数psdr_execには、収録ファイル名、信号名、PRN番号範囲を与えます。信号名とPRN(pseudo random noise)番号範囲との組み合わせは、Pocket SDRのtestディレクトリにあるシェルスクリプトを参考にしました。trapCtrl+Cによる中断を受け付けるようにしています。

#!/bin/bash

set -eu

psdr_exec()
{
    FILE=$1
    SIG=$2
    PRN=$3
    echo $SIG \($FILE\)
    pocket_trk $FILE -sig $SIG -prn $PRN
}

term()
{
    echo terminated.
    exit 0
}

trap term 2

psdr_exec L1.bin   L1CA  1-32,193-202
psdr_exec L1.bin   L1CB  202-206
psdr_exec L1.bin   L1CA  120-158
psdr_exec L1.bin   L1S   183-186,189
psdr_exec L2.bin   L2CM  1-32,193-201
psdr_exec B1I.bin  B1I   1-62
psdr_exec B2I.bin  B2I   1-18
psdr_exec G1.bin   G1CA  -7-6
psdr_exec G2.bin   G2CA  -7-6
psdr_exec L6.bin   E6B   1-36
psdr_exec L6.bin   E6C   1-36
psdr_exec L6.bin   L6D   193-202
psdr_exec L6.bin   L6E   203-212
psdr_exec B1Ia.bin B1I   1-62
psdr_exec B3I.bin  B3I   1-62
psdr_exec E1.bin   E1B   1-36
psdr_exec E1.bin   E1C   1-36
psdr_exec E5b.bin  B2BI  19-50
psdr_exec E5b.bin  E5BI  1-36
psdr_exec E5b.bin  E5BQ  1-36
psdr_exec G1OC.bin G1OCD 1-27
psdr_exec G1OC.bin G1OCP 1-27
psdr_exec G3OC.bin G3OCD 1-27
psdr_exec G3OC.bin G3OCP 1-27
psdr_exec L1a.bin  B1CD  19-50
psdr_exec L1a.bin  B1CP  19-50
psdr_exec L1a.bin  E1B   1-36
psdr_exec L1a.bin  E1C   1-36
psdr_exec L1a.bin  I1SP  1-14
psdr_exec L1a.bin  I1SP  1-14
psdr_exec L1a.bin  L1CD  1-32,193-199
psdr_exec L1a.bin  L1CP  1-32,193-199
psdr_exec L5.bin   B2AD  19-50
psdr_exec L5.bin   B2AP  19-50
psdr_exec L5.bin   E5AI  1-36
psdr_exec L5.bin   E5AQ  1-36
psdr_exec L5.bin   I5S   1-14
psdr_exec L5.bin   L5I   1-32,193-199
psdr_exec L5.bin   L5I   120-158
psdr_exec L5.bin   L5Q   1-32,193-199
psdr_exec L5.bin   L5Q   120-158
psdr_exec L5.bin   L5SI  184-186,189
psdr_exec L5.bin   L5SQ  184-186,189

今後、信号収録したら、その場で内容確認します。写真撮影と一緒ですね。

おわりに

高須先生が3月末に公開されたPocket SDR収録データに感銘を受け、私もデータ公開することにしました。高須先生のデータは、山梨の清里(きよさと)で収録されたものでした。データ解析して、35年くらい前にこの周辺を友人達とドライブし、テニスやランニングをして、清泉寮(せいせんりょう)でソフトクリームを食べた、懐かしい思い出がよみがえりました。

私のデータは、30秒間程度の収録のため、測位や信号解析には不十分でした。また、自ら用意したUSB-Cケーブルのグレード不足や収録PCの容量不足のために、データの一部分が欠損していました。今後の信号収録では、しっかりと事前準備と予行演習をし、10分間はデータ収録して、その場で内容確認するようにします。


関連記事