みちびき7機体制に向けたヘルス情報表現

category: gnss

はじめに

現在、4機の準天頂衛星みちびきが稼働しています。将来は、全7機になり、さらには全11機になることが計画されています。

一方、測位衛星が放送する航法メッセージ(衛星座標や時刻を含むディジタル情報列)には、その衛星が利用可能であることを示すヘルス情報が含まれています。みちびき7機体制に向けて、このヘルス情報表現が変更されることは把握していましたが、実は、よく確認していませんでした。

みちびきのヘルス情報

みちびきやGPSが放送する航法メッセージ中のエフェメリス(その衛星自身の情報)には6ビット長のヘルス情報が含まれます。GalileoやBeiDouのエフェメリスにもヘルス情報が含まれます。これらのヘルス情報は、すべて正しく機能しているときには、ゼロになると思い込んでいました。

測位衛星の状態を確認したところ、すべてのみちびきのヘルス情報が10進表示で1になっていました。

QZSS Health Information

みちびき2号機J02、みちびき3号機J07、みちびき4号機J03、みちびき初号機後継機J04のすべてがunhealthyだと思い込んでしまいました。

しかしながら、NovAtel OEM729受信機やSeptentrio mosaic-go X5受信機は、みちびき衛星からの信号を復調しています。

QZSS reception with OEM729 receiver QZSS reception with mosaic-go X5 receiver

私が公開しているQZS L6 Toolのunhealthy表示が誤っているといえます。しかし、私の持っているRTCM 3仕様書(RTCM 10403.3, 2020-04-28発行)によると、6ビットオールゼロのヘルス情報が正常状態とも読み取れます。

QZSS health description in RTCM standard 10403.3

しかしながら、みちびき7機体制移行により、最も広く使われているL1C/A信号がL1C/B信号に変更になります。この信号識別のためにもヘルス情報が利用されることになりました

みちびきの衛星測位サービス仕様書IS-QZSS-PNT-005のRevision Historyによると、4版でヘルス情報表現が変更されたことが書かれていました。3年前に発行された仕様書です。

004 January 25, 2021
3,6,7,8,15,16,37, 39,41,50,118,119,120,125,126,130,135,138,143,144
Change in Tables, Figures and explanations with addition of the new signal “L1C/B”

ヘルス情報の復号

みちびきのヘルス情報を、次のように表示することにしました。

  1. ヘルス情報の1ビット目、または、3ビット目から5ビット目までのいずれかのビットに1が含まれるならば、unhealthyなので、赤色のunhealthyの文字とともに、2ビット目から6ビット目までのそれぞれに対応する信号名も表示する。
  2. 6ビットヘルス情報がオールゼロのときには、正常なので、ヘルス情報としては何も表示しない。
  3. ヘルス情報の1ビット目が0ならば新しい信号利用表示の可能性がある。その2ビット目または6ビット目が1ならば、正常だけども新しい信号利用表示が含まれているので、その信号名を表示する。

これらをPythonコードで記述すると、次のようになります。まるでFizz Buzz問題のようです。

if (r.svh[0:1]+r.svh[2:5]).u:  # determination of QZSS health including L1C/B is complex, ref.[2], p.47, 4.1.2.3(4) 
    unhealthy = ''
    if r.svh[1]: unhealthy += ' L1C/A'
    if r.svh[2]: unhealthy += ' L2C'
    if r.svh[3]: unhealthy += ' L5'
    if r.svh[4]: unhealthy += ' L1C'
    if r.svh[5]: unhealthy += ' L1C/B'
    msg += self.trace.msg(0, f' unhealthy ({unhealthy[1:]})', fg='red')
elif not r.svh[0]:                # L1 signal is healthy
    if r.svh[1]: msg += ' L1C/B'  # transmitting L1C/B
    if r.svh[5]: msg += ' L1C/A'  # transmitting L1C/A

過去の2022-12-13に収録したみちびきの航法メッセージには、正常なヘルス情報としてオールゼロが設定されていました。航法メッセージ送信パターン変更(2023-12-21)の際に、ヘルス情報表現も変更されたのだと思います。

QZSS PNT tarnsmission pattern change announcement


関連記事