aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-01-23 21:14:09 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-01-23 21:14:09 -0500
commit2ea3631222019b1eda1eb451ac60188b36951baa (patch)
tree0601e46d9fb7dad72566bab360d1f1561eba6f56
parent8ed0f7c5c37a3e2a3c38d19b19bbd6846453a6df (diff)
downloadkutter-2ea3631222019b1eda1eb451ac60188b36951baa.tar.gz
kutter-2ea3631222019b1eda1eb451ac60188b36951baa.tar.xz
kutter-2ea3631222019b1eda1eb451ac60188b36951baa.zip
delta: Add print_radius option to customize valid XY radius
Add ability to override the default XY move checking radius. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r--config/example-delta.cfg7
-rw-r--r--klippy/kinematics/delta.py3
2 files changed, 9 insertions, 1 deletions
diff --git a/config/example-delta.cfg b/config/example-delta.cfg
index b6a25fdb..320a74af 100644
--- a/config/example-delta.cfg
+++ b/config/example-delta.cfg
@@ -107,6 +107,13 @@ delta_radius: 174.75
# axis towers. This parameter may also be calculated as:
# delta_radius = smooth_rod_offset - effector_offset - carriage_offset
# This parameter must be provided.
+#print_radius:
+# The radius (in mm) of valid toolhead XY coordinates. One may use
+# this setting to customize the range checking of toolhead moves. If
+# a large value is specified here then it may be possible to command
+# the toolhead into a collision with a tower. The default is to use
+# delta_radius for print_radius (which would normally prevent a
+# tower collision).
# The delta_calibrate section enables a DELTA_CALIBRATE extended
# g-code command that can calibrate the tower endstop positions and
diff --git a/klippy/kinematics/delta.py b/klippy/kinematics/delta.py
index 057e9241..885ce940 100644
--- a/klippy/kinematics/delta.py
+++ b/klippy/kinematics/delta.py
@@ -36,6 +36,7 @@ class DeltaKinematics:
rail.set_max_jerk(max_halt_velocity, max_halt_accel)
# Read radius and arm lengths
self.radius = radius = config.getfloat('delta_radius', above=0.)
+ print_radius = config.getfloat('print_radius', radius, above=0.)
arm_length_a = stepper_configs[0].getfloat('arm_length', above=radius)
self.arm_lengths = arm_lengths = [
sconfig.getfloat('arm_length', arm_length_a, above=radius)
@@ -80,7 +81,7 @@ class DeltaKinematics:
+ half_min_step_dist)
self.slow_xy2 = (ratio_to_dist(SLOW_RATIO) - radius)**2
self.very_slow_xy2 = (ratio_to_dist(2. * SLOW_RATIO) - radius)**2
- self.max_xy2 = min(radius, min_arm_length - radius,
+ self.max_xy2 = min(print_radius, min_arm_length - radius,
ratio_to_dist(4. * SLOW_RATIO) - radius)**2
logging.info("Delta max build radius %.2fmm (moves slowed past %.2fmm"
" and %.2fmm)" % (