ubloxの受信機をパッチアンテナに繋げて,ライブのGPS信号を受信しながら
航法メッセージを眺めていると,サブフレーム4と5のページ番号に51や57など,
明らかに大きな数字が出力されていることに気づきました.
ICDを読み直してみると,サブフレーム4と5には,ページ番号そのものではなく,
それに対応したSV IDというものが挿入されているようです.RTFM!
シミュレータではページ番号を25に固定していますので,この場合のSV IDは
サブフレーム4では63,サブフレーム5では51になります.
また,サブフレーム1の送信時刻は,30秒の整数倍のGPS時刻に揃っているようです.
つまり,サブフレーム1のHOWに含まれるTOWのmodulo 30は,常に6秒となります.
この2つの修正で,30秒ごとの受信機リセットも解消され,LEA-6Tでも
スムーズに測位できるようになりました.
(クリックで拡大)
まだベースバンド信号ファイルを生成するだけのオフラインのシミュレータですが,
とりあえず動作するものが完成です.
bladeRFにはLE数の大きなFPGAが搭載されているので,これを上手く使って
リアルタイム化したいな.
【追記】fwriteでサンプリング毎にファイルに書き込んでいるのが遅いのかなと
思い,setvbufで内部バッファを大きく取って数十MBをまとめて書き込んだり,
openやwriteなどの低水準関数を使ってみたりしたのですが,まったく改善なし.
どこがネックになっているのだろう?
航法メッセージを眺めていると,サブフレーム4と5のページ番号に51や57など,
明らかに大きな数字が出力されていることに気づきました.
ICDを読み直してみると,サブフレーム4と5には,ページ番号そのものではなく,
それに対応したSV IDというものが挿入されているようです.RTFM!
シミュレータではページ番号を25に固定していますので,この場合のSV IDは
サブフレーム4では63,サブフレーム5では51になります.
また,サブフレーム1の送信時刻は,30秒の整数倍のGPS時刻に揃っているようです.
つまり,サブフレーム1のHOWに含まれるTOWのmodulo 30は,常に6秒となります.
この2つの修正で,30秒ごとの受信機リセットも解消され,LEA-6Tでも
スムーズに測位できるようになりました.
(クリックで拡大)
まだベースバンド信号ファイルを生成するだけのオフラインのシミュレータですが,
とりあえず動作するものが完成です.
bladeRFにはLE数の大きなFPGAが搭載されているので,これを上手く使って
リアルタイム化したいな.
【追記】fwriteでサンプリング毎にファイルに書き込んでいるのが遅いのかなと
思い,setvbufで内部バッファを大きく取って数十MBをまとめて書き込んだり,
openやwriteなどの低水準関数を使ってみたりしたのですが,まったく改善なし.
どこがネックになっているのだろう?
※コメント投稿者のブログIDはブログ作成者のみに通知されます