0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

8.実施項目・メンテナンス⑤ SatNOGSデコーダでの欠損値処理の実装メモ  リーマンサット RSP-03 受信チャレンジの歩み

0
Last updated at Posted at 2026-02-18

SatNOGS decoderを作成している人。Kaitai Structでテレメトリを扱っている人に向けて、想定外のRSP-03送信データをSatNOGS側で受信したことにより発生したことへの対処を残します.

1. 背景

RSP-03のGMSKビーコンでは、打ち上げ初期に一部のパラメータが未設定の状態で送信されました.
その値は「0xFFFFFFFF」でした。これは通信エラーではなく、未設定値を示す正常な値です.
しかしSatNOGSのデコード結果では、この値の扱いに問題が発生し、その観測データそのものが取り込まれない状況となりました.

2.データ取り込みを検証して判明した問題

  • Python decoderで0xFF系の値が欠損扱いになる.
  • JSONではNaNが扱えない.
  • InfluxDB登録時にそのデータが欠損扱い.
  • GrafanaでNo data表示になる.
    結果として
  • データが存在するのに表示されない.
  • 他の正常値も巻き込んで欠損になる.
    という状態になっていました。

2. 対応方針

SatNOGS内で議論いただき、この処理に落ち着きました.
今回は decoder側(Kaitai)で未定義値を除外 する方法を採用しました.
つまりksyファイルに「値が0xFFFFFFFFなら出力しない」を追加しました.

3. 実装方法(ksy修正)

修正前は単純に値を読み出していました.

修正前(例)
seq:
  - id: imu1_x_axis_acceleration
    type: u4

修正後
instanceを使って条件付き出力に変更しました.

instances:
  imu1_x_axis_acceleration:
    if: imu1_x_axis_acceleration_raw != 0xffffffff
    value: imu1_x_axis_acceleration_raw

ポイント
Kaitaiでは

  • seq は必ず読み込む.
  • instances は条件付きで値を生成できる.
    ため、未定義値を除外できます.

4. 適用例

同様の処理を以下のようなフィールドに適用しました.

  • IMU系データ
  • MTQ関連
  • AOBC設定値

5. 結果

Grafanaでその後、No dataが無くなったことから結果、正常値のみプロットされるようになったと思われます.

6. まとめ

衛星設計時に「決められたデータ以外を出力しない、打ち上げ前に十分に確認すべき」だが、
慌てずに、SatNOGSコミュニティに相談することで解決策を得ました.
SatNOGSは大変暖かく、新しく取り組む方にも優しい組織です.
私の対処したことは、以下のことになります.

  • Kaitai Structではinstanceを使うことで未定義値を簡単に除外できる.
    • SatNOGS decoderを作る場合、Ksy記述の際に、欠損値をどこで処理するかを考えて置く.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?