日記・備考録 |
2005 |
2006 |
2007 |
2008 |
2009 |
2010 |
2011 |
2012 |
2013 |
2014 |
2015 |
2016 |
2017 |
2018 |
2019 |
2020 |
2021 |
2022 |
2023 | 2024/
1
2
3
4
5
6
7
8
9
10
11
12 |
2025 Search |
April | May 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
June | Home |
....................................................................................................................................
前版から4カ月以上かかってしまったがやっと ver.0.12 リリース。オリジナルのシンプルなPythonコードをほぼそのままCに移植した前版から、ある程度実用的なGNSS-SDRにするために相当に複雑なプログラムになってしまった。少しだけ解説。
(1) 内部IFデータ表現として、4 x 2 bit 複素数
(sdr_cpx8_t) → 8 x 2 bit 複素数 (sdr_cpx16_t)
を採用。IF搬送波ミキシングはLUT+AVX2、相関器はAVX2による32並列処理。前版ではすべて単精度複素数で処理していた。もちろんこれは高速化のため。以上は、MAX2771の
2 bit 量子化を前提としているので、他FEの3
bit 以上量子化データを取り扱うためには修正が必要。
(2) 拡散コード長5ms以上の信号は探索しないので単独受信できない。具体的にはL1CD,
L1CP, L2CM, G1OCP, G2OCP, B1CD, B1CP, I1SD,
I1SP。これらは同一衛星の他信号のドップラー情報をアシストに使って捕捉する。これも信号探索時間短縮のため。
(3) 航法データを含まない信号は絶対時刻情報を持たないので、擬似距離生成のためにはコードサイクルのアンビギュイティを解く必要がある。これらアンビギュイティは、セカンダリコード区切り、または同一衛星の他信号
(の擬似距離) を使って解く。以上より設定によっては、擬似距離が生成できない場合がある。
(4) 各信号追尾CHスレッドは完全非同期で動いているので、同期を取ってPVT用擬似距離を集約するのは工夫が必要。現行、各CHがエポックサイクルに達したら、メインスレッドの観測データ構造体にデータを書き込み、全データが揃った時点でメインスレッドがPVT計算する実装になっている。ただしPVT解のレイテンシを保証するためタイムアウト
(250ms) を設けた。以上よりCPU高負荷時に一部観測データが欠落する場合がある。
(5) GPS週切り替え動作は試験の機会が少ないので不具合が残っている可能性がある。以上より、日曜日の朝9時に誤動作する場合は、察してください。
(6) 擬似距離ノイズが大きいのは、拡散コードの再サンプリングを省略しているのが一つの原因と推測。再サンプリングの計算コストは大きいので入れられなかった。次版では複数の再サンプリングコードバンクを事前生成して切り替える手法を追加する予定。
(7) Pocket SDR FE 4CHは、H/W設計にまだ問題が残っているので公開は見送り。基板を作り直して動作確認した後に公開予定。ただし、また一部部品が手に入らなくなっていて、部品見直しするかもしれないので、いつになることやら。
(8) 動作試験は、Windows 11 + MSYS2、Ubuntu
18.04 LTS、Ubuntu 20.04 LTS、Ubuntu 22.04
LTS、Ubuntu 24.04 LTS と Raspberry Pi OS
(全て 64bit) で行っている。AVX2未対応の計算機でもコンパイルオプションを変更すれば動くはずだが動作がかなり遅くなるので推奨はしない。Mac
OSは手元に開発環境がないので、未対応。ラズパイ用にNEONによる相関器最適化はいれたので移植は容易だとは思うが。
(9) 前版からpocket_trkの標準入力からのデータ入力とPocket
SDR FE 生データ形式ファイル読み込み機能を削除した。さっそく
Issue (参照) が上がっているので、後者は次版で復活させるかも。ただIFデータの詳細情報
(フォーマット、サンプリング周波数、LO周波数)
がないとオプション設定が非常に面倒なので、IFデータダンプ時にこれら情報を
ION GNSS Metadata-Standard (参照) 形式で同時出力して、自動認識させることを検討中。
(10) 次版は主にGUI機能の追加予定。できればリアルタイムの相関波形モニタを入れたいのだけど、グラフライブラリに何使うか悩ましい
(matplotlib なら実装は簡単だが描画が遅すぎる)。
....................................................................................................................................
https://github.com/tomojitakasu/PocketSDR
Pocket SDR ver.0.12 released.
-------------------------------------
リリース文書用写真。左からPocket SDR FE 2CH v.2.1、Pocket SDR FE 2CH v.2.3、Pocket SDR FE 4CH v.3.0。
-------------------------------------
テストを兼ねてこれも記録。Pocket SDR NMEA解 (上) とMosaic-X5 + RTKNAVI 単独測位解 (下) の比較。約30分間。Pocket SDR と Mosaic-X5 の信号受信条件は昨日と同じ。測位誤差 (RMS) は、Pocket SDR E 1.26 m、N 1.71 m、U 2.64 m、Mosaic-X5 + RTKNAVI E 0.52 m、N 3.12 m、U 1.32 m。使用衛星、DOP、測位オプションはほぼ同等なので、差は擬似距離の品質差ということになる。Pocket SDRはもう少しノイズを減らしたいところ。次のバージョンでなんとか。
....................................................................................................................................
テストを兼ねてこれも記録。Pocket SDR (上) とMosaic-X5 (下) の信号受信性能比較。Pocket SDRは、pocket_trk v.0.12、FE 4CH、L1+G1+L5+E5b、24 MHz サンプリング、全 944 CH中 192 CH 追尾でCPU負荷 64 ~ 68 % (Core i7 1260P、12C/16T)。追尾 62 衛星中有効衛星 46 衛星。Mosaic-X5は、F/W 4.14.4、Expert Controlで全ての衛星と信号を有効にしている。追尾 59 衛星中有効衛星 44 衛星。Mosaicが追尾できて Pocket SDRで追尾できていない衛星は R09、S44、逆にPocket SDRで追尾できて Mosaicで追尾できていない衛星は J07、C02、C07、C16、C33。C/N0はMosaicの方が 0 ~ 3 dB 高い。
....................................................................................................................................
中川他, GNSS解析ソフトウェアから求めた対流圏遅延量推定の比較, 第5回測位技術振興会研究発表会講演論文集, 2023年
GPS可降水量の評価。RTKLIBとG-RitZによる結果をラジオゾンデ可降水量と比較している。両者の結果とも明らかに異常なので、何らかの解析上の問題が残っているのではないかと予想。GEONETを使うのであれば、全ラジオゾンデ放球点近傍点の1年分のデータで評価すべきと思う (参照)。
....................................................................................................................................
残念、Taro君 3連覇ならず。
Google Smartphone Decimeter Challenge 2023-2024
....................................................................................................................................
やっと、pocket_trkのPVT機能が安定してきたので記録。Pocket SDR FE 4CH、L1+L2+L5+E5b、24 MHzサンプリング、全775 CH中 186 CH追尾でCPU負荷 63 ~ 65 % (Core i7 1260P、12C/16T)。60 衛星中、有効衛星数 34 衛星で、10分間の測位誤差 (RMS) E: 1.28 m、N: 1.13 m、U: 1.86 m。追尾信号はRINEXヘッダの通り。ただし、L5QとL5SQは擬似距離の 20 msアンビギュイティがまだ正常に解けない。市販受信機に比較して擬似距離ノイズがかなり大きいが、何の工夫もしていないのでこんなものであろう。現在の設定は全信号同一で、相関器幅 0.25 chip、ループフィルタ帯域幅 DLL 0.25 Hz、PLL 5.0 Hz、DLL積分時間 10 ms (L2CMのみ 20 ms) である。本当はこれらパラメータは信号ごとに最適化した方がよい。BOC用VE/VL相関器は追加していないが、今のところあんまり問題になっていない。もう少し安定したら ver. 0.12 としてリリース予定。
補足: PVT解はRTKLIBのpntpos() をほぼデフォルトで呼んでるだけなので、使用しているのはL1擬似距離のみ。それ以外の信号は追尾していてもPVT解には使っていない。連続運転させるとたまに擬似距離が1msミスる問題が残っていて、まだ完全には解消していない。(5/24追記)
再補足: RTCM MSMの信号コードは、Pocket SDRのサポート信号を網羅していないので、拡張している。(5/25追記)
....................................................................................................................................
注文していたラズパイ5用クーラー (参照) が来たので、再計測。サンプリング 24 MHz、L1+L5、全212 CH中 49 CH 追尾でCPU負荷 97 %。40 CH位までは実用になりそうな感じ。まだちょっと安定しないが、ver. 0.12で追加予定のNMEAとRTCM3出力も正常に動いている。
....................................................................................................................................
GNSS 信号帯域一覧。帯域幅 36 MHzだと、BDS B1IとGLONASS L1、Galileo E5aとE5b、BDS B2aとB2bは同時には受からないので、Pocket SDR FE 4CH 1台で全GNSS信号 (NavIC S除く) を受信するのは厳しいのである。36 MHz × 6 CHあれば行けると思うけど。
-------------------------------------
Pocket SDR FE 4CH でキャプチャしたIFデータのPSD。サンプリング48 MHz、LO (PLL) 周波数 L1: 1588 MHz, L2: 1237 MHz, L5: 1191 MHz, L6: 1273 MHz、IFフィルタ帯域幅 36 MHz。45 MHz位のIFフィルタがあれば E5a+E5bやB2a+B2bが 1 CHで受かるのだけど。(MAX2771の仕様で36 MHzまで、隠し機能で設定できたりしない ?)
....................................................................................................................................
3台目実装した。ケースボディは黒にしてみた (参照)。名称は「Pocket SDR FE 4CH」。既存のPocket SDR フロントエンド は「Pocket SDR FE 2CH」または「Pocket SDR FE」(無印) に名称変更。
....................................................................................................................................
mouser, SCH16T-K01-1
予約注文した。@\10,828 也。ラズパイ、F9Pと組み合わせてINS/GNSS複合航法用HAT作ろうかと思っている。
....................................................................................................................................
送って頂きました (参照)。ありがとうございます。
....................................................................................................................................
SpaceFlightNow, SpaceX launches European Commission's Galileo satellites on Falcon 9 rocket from the Kennedy Space Center, April 27, 2024
....................................................................................................................................
Home | by T.Takasu |