From 94043ab3309b5bcfcdf2ee9da7ae009e114fb1a5 Mon Sep 17 00:00:00 2001 From: Steffen Pohle Date: Tue, 27 Feb 2024 22:13:39 +0100 Subject: [PATCH] posctl calibration maximum time increased and added max distance for detection of rotation and axis movement --- posctl.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/posctl.cc b/posctl.cc index 28783ff..b2b5ae2 100644 --- a/posctl.cc +++ b/posctl.cc @@ -58,8 +58,9 @@ void axis_history_add(int axis, double diff, double out) { axis_history[axis][axis_history_pos[axis]].out = out; } -#define CALIB_DURATION_DELTA 10.0 -#define CALIB_DURATION_AXIS 10.0 +#define CALIB_DURATION_DELTA 120.0 // max time in sec for the detection of rotation movement +#define CALIB_DURATION_AXIS 120.0 // max time in sec for the detection of axis movement +#define CALIB_DURATION_DIST 100.0 // max distance to detect movement void posctl_gui_update(); @@ -679,11 +680,12 @@ void PosCtl::CalibModeDelta(int x, int y) { struct timeval tv; float timediff; double a1min, a1max; + float dist = hypot ((float)(x - calib_pos.x), (float)(y - calib_pos.y)); gettimeofday (&tv, NULL); timediff = (float)(tv.tv_sec - calib_timestamp.tv_sec) + ((tv.tv_usec - calib_timestamp.tv_usec) / 1000000.0); - if (timediff > CALIB_DURATION_DELTA) { + if (timediff > CALIB_DURATION_DELTA || dist > CALIB_DURATION_DIST) { position_f_2d fp; printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__); @@ -713,11 +715,13 @@ void PosCtl::CalibModeAxis(int x, int y) { struct timeval tv; float timediff; position_f_2d fp; + float dist = hypot ((float)(x - calib_pos.x), (float)(y - calib_pos.y)); gettimeofday (&tv, NULL); timediff = (float)(tv.tv_sec - calib_timestamp.tv_sec) + ((tv.tv_usec - calib_timestamp.tv_usec) / 1000000.0); - if (timediff > CALIB_DURATION_AXIS) { + + if (timediff > CALIB_DURATION_AXIS || dist > CALIB_DURATION_DIST) { printf ("%s:%d %s calib_mode: %d\n", __FILE__, __LINE__, __FUNCTION__, calib_mode); fp.x = +(x - calib_pos.x) / timediff;