aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/delta.py
Commit message (Collapse)AuthorAgeFilesLines
* force_move: Use strings for axes to clear in clear_homing_state()Kevin O'Connor2025-01-211-2/+2
| | | | | | | Pass a string such as "xyz" to kin.clear_homing_state(). This makes the parameter a little less cryptic. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Pass set_position() homing_axes parameter as a stringKevin O'Connor2025-01-211-2/+2
| | | | | | | | Use strings such as "xyz" to specify which axes are to be considered homing during a set_position() call. This makes the parameter a little less cryptic. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper_enable: Directly call clear_homing_state() on motor off eventKevin O'Connor2025-01-211-4/+0
| | | | | | | | Call clear_homing_state() on each motor off event. This simplifies the kinematic classes as they no longer need to register and handle the motor_off event. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* force_move: Implement CLEAR for SET_KINEMATIC_POSITION (#6262)Dennis Marttinen2025-01-101-2/+6
| | | | | | | | `CLEAR` clears the homing status (resets the axis limits) without turning off the motors. This is particularly useful when implementing safe Z homing in `[homing_override]` on printers with multiple independent Z steppers (where `FORCE_MOVE` can't be used). Signed-off-by: Dennis Marttinen <twelho@welho.tech>
* delta: Better delta build volume constraint checkjanherich2022-12-301-1/+7
| | | | | | | | | | Existing code uses very restrictive build volume constraint checking with just narrow cone on top of fully cylinder for delta printers. Code here implements more permissive and still safe build volume constraint checks. Signed-off-by: Jan Herich <jan.herich@gmail.com>
* delta: Added the possibility to get where the "cone shape" of the build ↵Nitram2022-08-191-0/+1
| | | | | | | volume starts from Macros (#5662) Added the possibility to get where the "cone shape" of the build volume starts from Macros Signed-off-by: Martin Malmqvist <Volcomosq@gmx.com>
* delta: Multiple steppers on delta tower (#5217)Andrei Ignat2022-02-281-3/+3
| | | | | Updated tower rail setup to support multiple steppers per tower. Signed-off-by: Andrei Ignat <andrei@ignat.se>
* delta: max z-accel and speed ratio calculation for deltas (#4689)Nitram2021-11-291-1/+4
| | | | | Adding a possibility to use a lower z- acceleration. Signed-off-by: Martin Malmqvist <volcomosq@gmx.com>
* delta: Don't limit XY+Z moves to max_z_velocityKevin O'Connor2021-10-111-5/+3
| | | | | | | | | Scale the max_z_velocity limit by the amount of movement in the Z. This should improve bed_mesh and vase mode prints on delta printers. Reported by @hywelmartin and @dalegaard. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Make the 'arm_length' description more clear in save_state()Kevin O'Connor2021-09-021-3/+3
| | | | | | Reported by @conlank. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper: Remove set_tag_position() codeKevin O'Connor2021-05-291-2/+2
| | | | | | Have callers store the stepper positions in a dict. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper: Do not set min_stop_interval in micro-controllerKevin O'Connor2021-04-301-5/+1
| | | | | | | | The min_stop_interval safety check is fragile and leads to a notable amount of complexity. Avoid these issues by not programming this safety check. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: Calculate axis_minimum/axis_maximum in advanceKevin O'Connor2021-01-081-17/+17
| | | | | | | | Calculate the get_status() axis_minimum and axis_maximum fields in advance so that they don't need to be calculated on each get_status() call. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: report all axis limits (min/max)Janar Sööt2020-12-281-2/+9
| | | | Signed-off-by: Janar Sööt <janar.soot@gmail.com>
* homing: Remove EndstopErrorKevin O'Connor2020-09-041-1/+1
| | | | | | | There's no reason to distinguish between an EndstopError and a CommandError, so just use CommandError. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Add a move.move_error() helperKevin O'Connor2020-09-031-2/+2
| | | | | | | Move the EndstopMoveError() code from homing.py to a new method in the toolhead Move class. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Add print_radius option to customize valid XY radiusKevin O'Connor2020-01-231-1/+2
| | | | | | Add ability to override the default XY move checking radius. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: Remove support for identifying Z steppersKevin O'Connor2020-01-231-1/+1
| | | | | | | | | The caller can now determine which steppers are connected to cartesian Z movement via the new stepper.is_active_axis() method. It is therefore no longer necessary for the kinematic code to identify these steppers. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Simplify DeltaCalibration state trackingKevin O'Connor2020-01-061-42/+46
| | | | | | Limit the use of coordinate descent "params". Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Move low-level delta calibration to delta.pyKevin O'Connor2020-01-061-2/+66
| | | | | | | Move the linear delta specific calibration code from delta_calibrate.py to delta.py. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Report which axes are homed via get_status()Kevin O'Connor2019-11-241-2/+2
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper: Add get/set_tag_position() and convert calc_position()Kevin O'Connor2019-11-131-2/+2
| | | | | | | | | Rename calc_position() to calc_tag_position() and have it calculate the value of the position from the last stepper set_tag_position() call. This enables the calc_tag_position() code to be more flexible as it can be run with arbitrary positions. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper_enable: Move motor_off() logic to stepper_enable.pyKevin O'Connor2019-11-121-3/+3
| | | | | | | | Directly disable all the stepper motors on a global motor_off() from the StepperEnable() class in stepper_enable.py. This simplifies the toolhead and kinematic classes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Rename register_move_handler() to register_step_generator()Kevin O'Connor2019-11-071-1/+1
| | | | | | | Rename the function so it is more clear what the step generation code path is. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Remove kinematic move() callKevin O'Connor2019-11-061-2/+0
| | | | | | | Now that all kinematics use the trapq system, there is no need to call into the kinematics on each g-code move. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Convert step generation to use trapq systemKevin O'Connor2019-11-061-11/+7
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: Add get_status() method to kinematicsFlorian Heilmann2019-08-091-0/+3
| | | | Signed-off-by: Florian Heilmann <Florian.Heilmann@gmx.net>
* homing: Remove no longer needed homing time delay codeKevin O'Connor2019-07-101-2/+1
| | | | | | | | Now that homing is implemented via "drip moves", it is no longer necessary to round the homing speed and it is no longer necessary to add a delay for cpu processing time. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Make sure to clear limit_xy2 after a homing moveKevin O'Connor2018-10-271-0/+1
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Make sure to also exempt the homing retract move from boundary checksKevin O'Connor2018-10-271-8/+11
| | | | | | | | | Commit 459e5219 added a special case to the boundary checks to permit homing moves. In some cases, the second home retract could also be outside the normal boundary checks - extend the special case to also permit that move. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* homing: Move homing offset adjustment logic to generic homing codeKevin O'Connor2018-10-101-4/+0
| | | | | | | Move the "stepper phase" adjustment logic from the kinematic classes to the generic homing.py code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Add a special case to the limit checks for the homing positionKevin O'Connor2018-10-101-4/+5
| | | | | | | | | | When a delta printer has different arm lengths or different endstop positions then the homing position falls outside of the normal printable area. Add a special check to the range checking code to permit this move instead of homing to a position near the actual homing position. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Reorganize init()Kevin O'Connor2018-10-101-18/+18
| | | | | | Just code movement. Move boundary check init to after tower init. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* homing: Implement second home from homing.pyKevin O'Connor2018-10-101-15/+4
| | | | | | | Move the logic for performing the second home from the kinematics classes to the generic homing code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Wrap lines to 80 columnsKevin O'Connor2018-10-101-5/+6
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* cartesian: Use homing_speed for homing retract speedKevin O'Connor2018-10-091-1/+1
| | | | | | | | Commit b0d859f2 introduced a second_homing_speed parameter, and it also changed the retract speed. Revert the retract speed change (use homing_speed when the head retracts). Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* stepper: Adding support for a second_homing_speed parameter (#677)Chris Whiteford2018-10-041-2/+3
| | | Signed-off-by: Chris Whiteford <chris@chrisandtennille.com>
* delta: Move "stable position" logic to delta_calibrate.pyKevin O'Connor2018-09-251-33/+9
| | | | | | | Move the "stable position" logic from the delta.py kinematics code to the delta_calibrate.py calibration code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Fix maximum halt velocity calculationKevin O'Connor2018-09-121-2/+3
| | | | | | | | | | | If an arm is nearly parallel to the bed then that tower's carriage may have a velocity up to 3 times greater than the toolhead's maximum velocity (relative to the print). Take that into account when calculating the stepper's maximum halt velocity. This fixes some rare "No next step" shutdowns on delta printers. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: Convert get_rails() method to get_steppers()Kevin O'Connor2018-07-161-2/+2
| | | | | | | All callers of get_rails() actually just want the steppers, so return them directly. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Store stable positions as integersKevin O'Connor2018-07-151-11/+13
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* delta: Minor change to get_position_from_stable()Kevin O'Connor2018-07-141-12/+16
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* mcu: Enhance itersolve stepper kinematics allocationKevin O'Connor2018-07-131-6/+2
| | | | | | | Allocate the stepper_kinematics directly in mcu.py - that way the kinematic classes don't have to interact with the chelper code. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Fill cmove in toolhead instead of in each kinematic classKevin O'Connor2018-07-131-9/+1
| | | | | | This simplifies the kinematic classes. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* toolhead: Move kinematic modules to new kinematics/ directoryKevin O'Connor2018-07-121-0/+203
Move extruder.py, cartesian.py, corexy.py, and delta.py to a new kinematics/ sub-directory. This is intended to make adding new kinematics a little easier. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>