48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
import numpy as np
|
|
|
|
from tools.rscap_v2.g90_rtk import (
|
|
parse_bestnava,
|
|
parse_pvtslna,
|
|
unicore_checksum_valid,
|
|
)
|
|
|
|
|
|
BESTNAVA = (
|
|
'#BESTNAVA,48,GPS,FINE,2430,552524000,0,0,18,8;SOL_COMPUTED,NARROW_INT,'
|
|
'30.46551864298,114.09274943336,29.6465,-15.1091,WGS84,0.0100,0.0091,'
|
|
'0.0279,"547",1.000,176.000,38,31,31,31,0,01,03,f3,SOL_COMPUTED,'
|
|
'DOPPLER_VELOCITY,0.000,0.000,1.6286,81.665533,-0.0015,0.0320,0.0167'
|
|
'*3e7e4885'
|
|
)
|
|
PVTSLNA = (
|
|
'#PVTSLNA,49,GPS,FINE,2430,552523000,0,0,18,42;NARROW_INT,29.6427,'
|
|
'30.46551666558,114.09273316982,0.0288,0.0098,0.0094,1.000,PSRDIFF,'
|
|
'29.2291,30.46551517805,114.09273145886,-15.1092,38,31,38,28,0.2276,'
|
|
'1.5569,-0.0014,NARROW_INT,0.8328,350.8610,-1.9697,37,31,31,31,'
|
|
'1.6227,1.3605,0.6398,1.0915,0.8843,5.0,28,10,25*00000000'
|
|
)
|
|
|
|
|
|
def test_bestnava_preserves_gnss_time_and_doppler_velocity() -> None:
|
|
assert unicore_checksum_valid(BESTNAVA)
|
|
row = parse_bestnava(BESTNAVA)
|
|
assert row["gnss_week"] == 2430
|
|
assert row["gnss_tow_ms"] == 552524000
|
|
assert row["position_fixed"]
|
|
assert row["doppler_velocity_valid"]
|
|
assert np.isclose(row["horizontal_speed_m_s"], 1.6286)
|
|
assert np.isclose(
|
|
np.hypot(row["velocity_east_m_s"], row["velocity_north_m_s"]), 1.6286
|
|
)
|
|
|
|
|
|
def test_pvtslna_preserves_quality_baseline_and_velocity() -> None:
|
|
row = parse_pvtslna(PVTSLNA)
|
|
assert row["position_fixed"]
|
|
assert row["heading_type"] == "NARROW_INT"
|
|
assert np.isclose(row["baseline_length_m"], 0.8328)
|
|
assert np.isclose(row["heading_deg"], 350.8610)
|
|
assert np.isclose(row["horizontal_speed_m_s"], np.hypot(0.2276, 1.5569))
|