固定 HHD 下采样并标记三轴力单位

避免运行中改变 HHD 测量配置,并明确部分标定时各轴单位。已通过 SDK 与共享层测试。
This commit is contained in:
ykcheungab
2026-10-05 12:56:29 +08:00
parent 80f7da5a20
commit 38d3e67b00
4 changed files with 74 additions and 36 deletions
+34
View File
@@ -319,6 +319,40 @@ def test_device_calibration_rejects_partial_axes_and_unsafe_id(tmp_path: Path):
load_for_device(root, "box", "../BOX-001")
def test_force_units_report_partial_calibration_without_changing_triplets(tmp_path: Path):
path = tmp_path / "partial.json"
doc = json.loads(_box_cal_path().read_text(encoding="utf-8"))
doc["channels"] = {"normal": doc["channels"]["normal"]}
path.write_text(json.dumps(doc), encoding="utf-8")
sensor = Sensor("external", config_name="box", cal_path=path, verbose=False, backend="cpu")
try:
assert sensor.calibrated_axes == ("fn",)
assert sensor.force_units == ("N", "raw", "raw")
assert set(sensor.force_triplets()) == {"filtered", "unfiltered"}
sensor.set_calibration(None)
assert sensor.calibrated_axes == ()
assert sensor.force_units == ("raw", "raw", "raw")
finally:
sensor.disconnect()
def test_measurement_filter_change_refuses_incompatible_calibration(tmp_path: Path):
path = tmp_path / "filtered.json"
doc = json.loads(_box_cal_path().read_text(encoding="utf-8"))
doc["pipeline"] = {"filters": {"measurement": {"flow_ema_alpha": 1.0}}}
path.write_text(json.dumps(doc), encoding="utf-8")
sensor = Sensor("external", config_name="box", cal_path=path, verbose=False, backend="cpu")
try:
sensor.configure(force_median_window=3)
assert sensor.filters_state()["readout"]["force_median_window"] == 3
with pytest.raises(CalibrationError, match="flow_ema_alpha"):
sensor.configure(flow_ema_alpha=0.5, force_median_window=5)
assert sensor.filters_state()["measurement"]["flow_ema_alpha"] == 1.0
assert sensor.filters_state()["readout"]["force_median_window"] == 3
finally:
sensor.disconnect()
def test_parse_shipped_box_file_directly():
cal = parse(json.loads(_box_cal_path().read_text(encoding="utf-8")), source_path=_box_cal_path())
assert cal.schema_version == 2