固定 HHD 下采样并标记三轴力单位
避免运行中改变 HHD 测量配置,并明确部分标定时各轴单位。已通过 SDK 与共享层测试。
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user