aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/hybrid_corexy.py
Commit message (Collapse)AuthorAgeFilesLines
* Run black on all first party python codeTomasz Kramkowski2025-08-061-32/+56
|
* dual_carriage: Fixed broken safe_distance parameterDmitry Butyugin2025-05-071-1/+2
| | | | Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
* kinematics: Generic Cartesian kinematics implementation (#6815)Dmitry Butyugin2025-05-061-10/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tests: Added a regression test for generic_cartesian kinematics * kinematics: An intial implementation of generic_cartesian kinematics * generic_cartesian: Refactored kinematics configuration API * generic_cartesian: Use stepper instead of kinematic_stepper in configs * generic_cartesian: Added SET_STEPPER_KINEMATICS command * generic_cartesian: Fixed parsing of section names * docs: Generic Caretsian kinematics documentation and config samples * generic_cartesian: Implemented multi-mcu homing validation * generic_cartesian: Fixed typos in docs, minor fixes * generic_cartesian: Renamed `kinematics` option to `carriages` * generic_cartesian: Moved kinematic_stepper.py file * idex_modes: Internal refactoring of handling dual carriages * stepper: Refactored the code to not store a reference to config object * config: Updated example-generic-cartesian config * generic_cartesian: Restricted SET_STEPPER_CARRIAGES and exported status * idex_modes: Fixed handling stepper kinematics with input shaper enabled * config: Updated configs and tests for SET_DUAL_CARRIAGE new params * generic_cartesian: Avoid inheritance in the added classes Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
* force_move: Use strings for axes to clear in clear_homing_state()Kevin O'Connor2025-01-211-4/+4
| | | | | | | 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-1/+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-4/+5
| | | | | | | | `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>
* configfile: Allow getchoice() to take a listKevin O'Connor2024-06-171-1/+1
| | | | | | If a list is passed to getchoice(), seamlessly convert it to a dict. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* idex_modes: Bugfix for kinematic position calculation.Frans-willem Hardijzer2024-05-161-5/+7
| | | | | | | | | | | | | | | idex_mode would swap the X and dual-carriage rail in some cases (homing), but not in others. As such, the position calculation was correct while homing, but incorrect for the second carriage during normal moves. This commit fixes homing to work without swapped rails, removes the swapping of rails while homing, and removes the ability to swap rails (as it is now no longer used). Fix has been tested in a Hybrid_CoreXY IDEX printer (Voron Double Dragon). Hybrid_CoreXZ has identical changes and is similar enough that I am confident it will work as intended. Changes to cartesion seem simple enough, but would benefit from someone running a couple of tests. Signed-off-by: Frans-Willem Hardijzer <fw@hardijzer.nl>
* klippy: remove a few unused variable assignments (#6504)Kamil Domański2024-04-051-1/+0
| | | Signed-off-by: Kamil Domański <kamil@domanski.co>
* idex_modes: COPY and MIRROR mode implementation (#6297)Dmitry Butyugin2023-08-011-19/+11
| | | | | | | | | | | COPY and MIRROR mode implementation Correctly apply input shaper params to new dual_carriage Added SAVE_/RESTORE_IDEX_STATE commands Documentation updates for the new IDEX modes Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
* hybrid_corexy: Fix changing dual-carriage carriage will inadvertently set ↵Frans-Willem Hardijzer2023-05-251-1/+5
| | | | | | | | | axis to homed, even if it wasn't. (#6183) In hybrid_corexy and hybrid_corexz, the update_limits function is (only) called by the DualCarriage implementation, whenever the carriage changes. Unfortunately, these limits also keep track of homing status, when they're unhomed they are set to 1 to -1 (invalid range). As a fix, if the limit was set to "unhomed", we keep it that way, and only update it with the new rail limits if it was already properly homed before. Signed-off-by: Frans-willem Hardijzer <fw@hardijzer.nl>
* kinematics: Convert to Python3 string encodingKevin O'Connor2021-10-011-8/+8
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* hybrid_corexy: Improve Python3 compatibilityKevin O'Connor2021-09-301-1/+2
| | | | Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
* kinematics: Add dual_carriage to hybrid-corexyz (#4296)Tircown2021-06-271-5/+40
| | | | | | | - Add dual_carriage abilities for hybrid-corexy and hybrid-corexz - Introduce the module idex_mode - Fix add_stepper to the correct rail in hybrid-corexy Signed-off-by: Fabrice GALLET <tircown@gmail.com>
* 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>
* kinematics: Add hybrid-corexy and hybrid-corexz (#4229)Tircown2021-05-031-0/+100
Signed-off-by: Fabrice GALLET <tircown@gmail.com>