Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Support for up to LINEAR_AXES 9 #22822

Closed
wants to merge 25 commits into from

Conversation

DerAndere1
Copy link
Contributor

@DerAndere1 DerAndere1 commented Sep 23, 2021

Description

This is early work in progress towards support for up to ten (EDIT: 9) non-extruder axes. No inverse kinematics are included. Like my previous 6-axis-support, the new code is Mostly framed by ´#if LINEAR_AXES >= ... #endif` preprocessor directives.

Contributors: Paloky, HendrikJan-5D, DerAndere, thinkyhead

TODO:

  • Review and clean-up
  • Test compilation
  • Add sanity checks
  • quick hardware test with LINEAR_AXES 9
  • Thorough hardware test with LINEAR_AXES >= 7
  • documentation for users

Requirements

LINEAR_AXES 9

Benefits

Extends multi-axis support to up to 10 (EDIT: 9) axes that benefit from endstops and auto homing. Axis names can be configured (Internal axis names are X,Y,Z,I,J,K,U,V,W). The extra axes are not so useful out of the box because inverse kinematics are missing, but this work can be used as the basis to develop multi axis machines. So far, the extra axes were used to control additional steppers that are not involved in positioning of the main tool.

Configurations

7axis_configs.zip

9axis_configs.zip

Related Issues

#22488

DerAndere1 and others added 2 commits September 23, 2021 03:45
Co-authored-by: DerAndere <26200979+DerAndere1@users.noreply.github.com>
Co-authored-by: Paloky <paloky@gmail.com>
@ellensp
Copy link
Contributor

ellensp commented Sep 23, 2021

this is getting absurd....

Copy link
Contributor Author

@DerAndere1 DerAndere1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TODO: LINEAR_AXIS >=7 with SAFE_HOMING, IMPROVED_HOMING_RELIABILITY, SENSORLESS_HOMING, QUICK_HOMING

@DerAndere1
Copy link
Contributor Author

I know, @ellensp :D But I I obtained the code and wanted to present it here. I do not recommend to merge this, as the maintainability suffers, even with the latest refactorings.

LSTR MSG_AUTO_HOME_M = _UxGT("Home ") LCD_STR_M;
LSTR MSG_AUTO_HOME_O = _UxGT("Home ") LCD_STR_O;
LSTR MSG_AUTO_HOME_P = _UxGT("Home ") LCD_STR_P;
LSTR MSG_AUTO_HOME_Q = _UxGT("Home ") LCD_STR_Q;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think strings that contain axis names will need to get the lcd_put_u8str_ind_P treatment, so the @ character will stand in for the axis name, similar to how =, ~, and * are now used as placeholders for 1-based index, 0-based index, and indexed-E. That will reduce each set of 10 strings down to just one string.

@thinkyhead thinkyhead force-pushed the 10axis_PR1 branch 9 times, most recently from d2091fb to 4403138 Compare September 23, 2021 13:42
@thinkyhead thinkyhead force-pushed the 10axis_PR1 branch 3 times, most recently from e46ed76 to 719654d Compare September 28, 2021 08:30
@DerAndere1 DerAndere1 force-pushed the 10axis_PR1 branch 5 times, most recently from d7781d4 to 6f9a076 Compare October 15, 2021 13:10
@DerAndere1
Copy link
Contributor Author

DerAndere1 commented Oct 15, 2021

Axis renaming to UVW is done. Also, SENSORLESS_HOMING, M217 and M907 now support LINEAR_AXES 9.

Now, there is a request to add a new option like `#define SAFE_BED_LEVELING_START_[XYZIJKUVW]...

EDIT: I added the requested feature to this PR because it is necessary for some machines with LINEAR_AXES >= 4. Now we have in Configuration_adv,h:

/**
 * Safe bed leveling start coordinates. If enabled, the respective axis is moved to the specified position at the beginning of the bed leveling procedure.
 * Required e.g. with LINEAR_AXES >= 4, to position the Z probe perpendicular to the bed.
 * Values must be chosen so that the bed is oriented horizontally and so that the Z-probe is oriented vertically.
 */
//#define SAFE_BED_LEVELING_START_X 0.0
//#define SAFE_BED_LEVELING_START_Y 0.0
//#define SAFE_BED_LEVELING_START_Z 0.0
//#define SAFE_BED_LEVELING_START_I 0.0
//#define SAFE_BED_LEVELING_START_J 0.0
//#define SAFE_BED_LEVELING_START_K 0.0
//#define SAFE_BED_LEVELING_START_U 0.0
//#define SAFE_BED_LEVELING_START_V 0.0
//#define SAFE_BED_LEVELING_START_W 0.0

@DerAndere1
Copy link
Contributor Author

DerAndere1 commented Nov 11, 2021

This was sucessfully tested by HendrikJan-5D in hardware, including a full 7-axis print using a handwritten gcode script. I opened a new PR that superseeds this PR: #23112 (no new features, just a fresh rebase)

@DerAndere1 DerAndere1 closed this Nov 11, 2021
@DerAndere1 DerAndere1 deleted the 10axis_PR1 branch March 3, 2022 15:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants