fixed normal force negative display scale problem
This commit is contained in:
@@ -47,8 +47,10 @@ from .acquisition import (
|
||||
from .camera_discovery import list_cameras, pick_default_camera
|
||||
from .dd06_acquisition import Dd06AcquisitionWorker
|
||||
from .force_calibration import (
|
||||
CALIBRATED_FORCE_Y_MAX,
|
||||
CALIBRATED_FORCE_Y_MIN,
|
||||
CALIBRATED_NORMAL_FORCE_Y_MAX,
|
||||
CALIBRATED_NORMAL_FORCE_Y_MIN,
|
||||
CALIBRATED_SHEAR_FORCE_Y_MAX,
|
||||
CALIBRATED_SHEAR_FORCE_Y_MIN,
|
||||
FORCE_SAMPLE_RATE_HZ,
|
||||
PLOT_BUFFER_POINTS,
|
||||
PLOT_WINDOW_SEC,
|
||||
@@ -896,20 +898,44 @@ class ExhibitionWindow(QMainWindow):
|
||||
)
|
||||
self.image_label.setPixmap(scaled)
|
||||
|
||||
def _calibrated_y_range(self, channel_index: int) -> tuple[float, float]:
|
||||
if channel_index == 0:
|
||||
return CALIBRATED_NORMAL_FORCE_Y_MIN, CALIBRATED_NORMAL_FORCE_Y_MAX
|
||||
return CALIBRATED_SHEAR_FORCE_Y_MIN, CALIBRATED_SHEAR_FORCE_Y_MAX
|
||||
|
||||
def _apply_calibrated_y_axis(self, plot, channel_index: int) -> None:
|
||||
axis = plot.getAxis("left")
|
||||
if channel_index == 0:
|
||||
ticks = [(0, "0"), (5, "5"), (10, "10"), (15, "15"), (20, "20")]
|
||||
else:
|
||||
ticks = [
|
||||
(-20, "-20"),
|
||||
(-10, "-10"),
|
||||
(0, "0"),
|
||||
(10, "10"),
|
||||
(20, "20"),
|
||||
]
|
||||
axis.setTicks([ticks])
|
||||
|
||||
def _update_plots(self) -> None:
|
||||
state = self.force_history.state()
|
||||
if state is None:
|
||||
return
|
||||
for i, curve in enumerate(self.curves):
|
||||
x = state.times
|
||||
y = state.values[:, i]
|
||||
y = state.values[:, i].copy()
|
||||
if self._force_calibrated and i == 0:
|
||||
y = np.maximum(y, 0.0)
|
||||
curve.setData(x, y)
|
||||
if self._force_calibrated:
|
||||
ymin, ymax = CALIBRATED_FORCE_Y_MIN, CALIBRATED_FORCE_Y_MAX
|
||||
ymin, ymax = self._calibrated_y_range(i)
|
||||
self._apply_calibrated_y_axis(self.plots[i], i)
|
||||
else:
|
||||
ymin, ymax = state.y_ranges[i]
|
||||
self.plots[i].getAxis("left").setTicks(None)
|
||||
self.plots[i].setYRange(ymin, ymax, padding=0)
|
||||
self.dot_cores[i].setData(x[-1:], y[-1:])
|
||||
dot_y = y[-1:]
|
||||
self.dot_cores[i].setData(x[-1:], dot_y)
|
||||
x0, x1 = state.x_range
|
||||
for plot in self.plots:
|
||||
plot.setXRange(x0, x1, padding=0)
|
||||
|
||||
@@ -11,8 +11,10 @@ FORCE_SAMPLE_RATE_HZ = 30.0
|
||||
PLOT_BUFFER_POINTS = 120
|
||||
PLOT_WINDOW_SEC = PLOT_BUFFER_POINTS / FORCE_SAMPLE_RATE_HZ
|
||||
Y_AXIS_MIN_SPAN = 20000.0
|
||||
CALIBRATED_FORCE_Y_MIN = -20.0
|
||||
CALIBRATED_FORCE_Y_MAX = 20.0
|
||||
CALIBRATED_NORMAL_FORCE_Y_MIN = 0.0
|
||||
CALIBRATED_NORMAL_FORCE_Y_MAX = 20.0
|
||||
CALIBRATED_SHEAR_FORCE_Y_MIN = -20.0
|
||||
CALIBRATED_SHEAR_FORCE_Y_MAX = 20.0
|
||||
Y_RANGE_ALPHA = 0.5
|
||||
LOWPASS_CUTOFF_HZ = 10.0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user