统一力值阈值处理并保留原始采样
移除自动显示基线,使逐轴阈值统一作用于曲线、读数与记录输出,标定拟合继续使用原始采样。 共享层全量测试和相关 Studio 测试通过。
This commit is contained in:
@@ -0,0 +1,52 @@
|
|||||||
|
"""One thresholded record fans out without changing calibration inputs."""
|
||||||
|
|
||||||
|
from types import SimpleNamespace
|
||||||
|
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from orisys_app_shared.force.session import SessionStore
|
||||||
|
from orisys_studio.recording import RecordingCoordinator
|
||||||
|
|
||||||
|
|
||||||
|
class _Capture:
|
||||||
|
is_recording = False
|
||||||
|
|
||||||
|
def set_alarm_handler(self, handler):
|
||||||
|
self.alarm_handler = handler
|
||||||
|
|
||||||
|
def on_packet(self, packet, *, sample):
|
||||||
|
self.sample = sample
|
||||||
|
|
||||||
|
|
||||||
|
class _Calibration:
|
||||||
|
def feed(self, sample):
|
||||||
|
self.sample = sample
|
||||||
|
|
||||||
|
|
||||||
|
def test_output_and_originals_share_frame_across_consumers():
|
||||||
|
store = SessionStore()
|
||||||
|
calibration = _Calibration()
|
||||||
|
recording = _Capture()
|
||||||
|
coordinator = RecordingCoordinator(
|
||||||
|
session_store=store, cal_recorder=calibration, recorder=recording
|
||||||
|
)
|
||||||
|
coordinator.set_force_thresholds(raw=50, newton=0.5)
|
||||||
|
packet = SimpleNamespace(
|
||||||
|
frame_id=7, mono_t=7.0, wall_t=1007.0, valid=True,
|
||||||
|
raw_available=True, force_calibrated=True,
|
||||||
|
calibrated_axes=("fn", "fx", "fy"),
|
||||||
|
normal_force_raw=49.0, shear_x_raw=-51.0, shear_y_raw=20.0,
|
||||||
|
normal_force=0.4, shear_x=-0.6, shear_y=0.1,
|
||||||
|
)
|
||||||
|
output = coordinator.on_packet(packet)
|
||||||
|
|
||||||
|
assert output is recording.sample
|
||||||
|
assert output.raw_triplet() == (49.0, -51.0, 20.0)
|
||||||
|
assert output.processed_triplet("raw") == (0.0, -51.0, 0.0)
|
||||||
|
assert output.processed_triplet("N") == (0.0, -0.6, 0.0)
|
||||||
|
assert calibration.sample.raw_triplet() == output.raw_triplet()
|
||||||
|
stored = store.data()
|
||||||
|
assert stored.frame_ids.tolist() == [7]
|
||||||
|
assert stored.raw[0].tolist() == [49.0, -51.0, 20.0]
|
||||||
|
assert stored.output_raw[0].tolist() == [0.0, -51.0, 0.0]
|
||||||
|
assert np.allclose(stored.output_newtons[0], [0.0, -0.6, 0.0])
|
||||||
Reference in New Issue
Block a user