posctl calibration maximum time increased and added max distance for detection of rotation and axis movement

master
Steffen Pohle 2 years ago
parent 67e0d160af
commit 94043ab330

@ -58,8 +58,9 @@ void axis_history_add(int axis, double diff, double out) {
axis_history[axis][axis_history_pos[axis]].out = out; axis_history[axis][axis_history_pos[axis]].out = out;
} }
#define CALIB_DURATION_DELTA 10.0 #define CALIB_DURATION_DELTA 120.0 // max time in sec for the detection of rotation movement
#define CALIB_DURATION_AXIS 10.0 #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(); void posctl_gui_update();
@ -679,11 +680,12 @@ void PosCtl::CalibModeDelta(int x, int y) {
struct timeval tv; struct timeval tv;
float timediff; float timediff;
double a1min, a1max; double a1min, a1max;
float dist = hypot ((float)(x - calib_pos.x), (float)(y - calib_pos.y));
gettimeofday (&tv, NULL); gettimeofday (&tv, NULL);
timediff = (float)(tv.tv_sec - calib_timestamp.tv_sec) + ((tv.tv_usec - calib_timestamp.tv_usec) / 1000000.0); 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; position_f_2d fp;
printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__); printf ("%s:%d %s\n", __FILE__, __LINE__, __FUNCTION__);
@ -713,11 +715,13 @@ void PosCtl::CalibModeAxis(int x, int y) {
struct timeval tv; struct timeval tv;
float timediff; float timediff;
position_f_2d fp; position_f_2d fp;
float dist = hypot ((float)(x - calib_pos.x), (float)(y - calib_pos.y));
gettimeofday (&tv, NULL); gettimeofday (&tv, NULL);
timediff = (float)(tv.tv_sec - calib_timestamp.tv_sec) + ((tv.tv_usec - calib_timestamp.tv_usec) / 1000000.0); 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); printf ("%s:%d %s calib_mode: %d\n", __FILE__, __LINE__, __FUNCTION__, calib_mode);
fp.x = +(x - calib_pos.x) / timediff; fp.x = +(x - calib_pos.x) / timediff;

Loading…
Cancel
Save