diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2019-11-06 08:41:50 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2019-11-06 15:51:51 -0500 |
commit | 86121ff79ef730a0a7a4d2d35f40cc01f7e1b9e7 (patch) | |
tree | 0bd56060e88f145b419b48b4aeeaf8ca5e6c1151 /klippy/extras | |
parent | 257058981eff9b0944029c101de5f18af2fbf914 (diff) | |
download | kutter-86121ff79ef730a0a7a4d2d35f40cc01f7e1b9e7.tar.gz kutter-86121ff79ef730a0a7a4d2d35f40cc01f7e1b9e7.tar.xz kutter-86121ff79ef730a0a7a4d2d35f40cc01f7e1b9e7.zip |
toolhead: Calculate and store axes_r in move class
Calculate the ratio of axis distance to total move distance (axis_d /
move_d) and store in a new member variable axes_r. This avoids
needing to recalculate the value in other code.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
Diffstat (limited to 'klippy/extras')
-rw-r--r-- | klippy/extras/force_move.py | 13 | ||||
-rw-r--r-- | klippy/extras/manual_stepper.py | 4 |
2 files changed, 10 insertions, 7 deletions
diff --git a/klippy/extras/force_move.py b/klippy/extras/force_move.py index fe3b3a60..2f748c0a 100644 --- a/klippy/extras/force_move.py +++ b/klippy/extras/force_move.py @@ -11,16 +11,19 @@ STALL_TIME = 0.100 # Calculate a move's accel_t, cruise_t, and cruise_v def calc_move_time(dist, speed, accel): - dist = abs(dist) + axis_r = 1. + if dist < 0.: + axis_r = -1. + dist = -dist if not accel or not dist: - return 0., dist / speed, speed + return axis_r, 0., dist / speed, speed max_cruise_v2 = dist * accel if max_cruise_v2 < speed**2: speed = math.sqrt(max_cruise_v2) accel_t = speed / accel accel_decel_d = accel_t * speed cruise_t = (dist - accel_decel_d) / speed - return accel_t, cruise_t, speed + return axis_r, accel_t, cruise_t, speed class ForceMove: def __init__(self, config): @@ -67,9 +70,9 @@ class ForceMove: print_time = toolhead.get_last_move_time() prev_sk = stepper.set_stepper_kinematics(self.stepper_kinematics) stepper.set_position((0., 0., 0.)) - accel_t, cruise_t, cruise_v = calc_move_time(dist, speed, accel) + axis_r, accel_t, cruise_t, cruise_v = calc_move_time(dist, speed, accel) self.trapq_append(self.trapq, print_time, accel_t, cruise_t, accel_t, - 0., 0., 0., dist, 0., 0., 0., cruise_v, accel) + 0., 0., 0., axis_r, 0., 0., 0., cruise_v, accel) print_time += accel_t + cruise_t + accel_t stepper.generate_steps(print_time) self.trapq_free_moves(self.trapq, print_time) diff --git a/klippy/extras/manual_stepper.py b/klippy/extras/manual_stepper.py index 9b985007..73766622 100644 --- a/klippy/extras/manual_stepper.py +++ b/klippy/extras/manual_stepper.py @@ -54,11 +54,11 @@ class ManualStepper: self.sync_print_time() cp = self.stepper.get_commanded_position() dist = movepos - cp - accel_t, cruise_t, cruise_v = force_move.calc_move_time( + axis_r, accel_t, cruise_t, cruise_v = force_move.calc_move_time( dist, speed, accel) self.trapq_append(self.trapq, self.next_cmd_time, accel_t, cruise_t, accel_t, - cp, 0., 0., dist, 0., 0., + cp, 0., 0., axis_r, 0., 0., 0., cruise_v, accel) self.next_cmd_time += accel_t + cruise_t + accel_t self.stepper.generate_steps(self.next_cmd_time) |