Rotatable Cartesian is a variant of the standard Cartesian arm solution that allows you to rotate the entire coordinate system by a specified angle.
This is useful when your machine’s physical frame is not aligned with the desired working coordinate system, or when you want to work at an angle without physically rotating your workpiece or machine.
In a standard Cartesian system, the X, Y, and Z axes are fixed relative to the machine’s frame. The Rotatable Cartesian solution applies a rotation transformation to the X-Y plane, effectively rotating your coordinate system by a specified angle.
Key characteristics:
The rotatable cartesian solution applies a 2D rotation matrix to the X and Y coordinates:
Alpha position = cos(angle) × X - sin(angle) × Y
Beta position = sin(angle) × X + cos(angle) × Y
Gamma position = Z (unchanged)
Where angle is the rotation angle specified in the configuration (converted from degrees to radians).
Rotatable Cartesian is useful in specific scenarios:
To configure your machine to use the Rotatable Cartesian arm solution, add this to your configuration file:
arm_solution rotatable_cartesian
The rotation angle is specified using the alpha_angle parameter:
alpha_angle 45.0 # Rotation angle in degrees (default: 0.0)
Important notes:
# Rotatable Cartesian arm solution
arm_solution rotatable_cartesian
alpha_angle 30.0 # Rotate coordinate system 30° counter-clockwise
# Alpha (X motor)
alpha_step_pin 2.0
alpha_dir_pin 0.5
alpha_en_pin 0.4
alpha_steps_per_mm 80
alpha_max_rate 12000
# Beta (Y motor)
beta_step_pin 2.1
beta_dir_pin 0.11
beta_en_pin 0.10
beta_steps_per_mm 80
beta_max_rate 12000
# Gamma (Z motor)
gamma_step_pin 2.2
gamma_dir_pin 0.20
gamma_en_pin 0.19
gamma_steps_per_mm 400
gamma_max_rate 6000
If you set alpha_angle 45.0:
X10 Y0 would result in the toolhead moving to approximately X7.07 Y7.07 in machine coordinatesX0 Y10 would result in the toolhead moving to approximately X-7.07 Y7.07 in machine coordinatesStandard Cartesian (alpha_angle = 0):
Y
^
|
|
+------> X
Rotated Cartesian (alpha_angle = 45):
Y (rotated)
╱
╱
╱
+------> X (rotated)
Your machine frame was built with the gantry at 15° to your work table:
arm_solution rotatable_cartesian
alpha_angle 15.0 # Compensate for 15° misalignment
Now when you command X100 Y0, the machine will move 100mm along your work table’s X direction, even though the gantry is angled.
Your machine is positioned at 45° to maximize diagonal workspace:
arm_solution rotatable_cartesian
alpha_angle 45.0 # Rotate to diamond orientation
Your machine has a 2° misalignment that’s difficult to correct mechanically:
arm_solution rotatable_cartesian
alpha_angle 2.0 # Small correction angle
Solution: Remember that the rotation is counter-clockwise when viewed from above. If movements seem reversed, try using a negative angle instead of positive (e.g., use -30 instead of 330).
Solution: Check your alpha_steps_per_mm and beta_steps_per_mm settings. The rotation transformation doesn’t change distances, only directions.
Solution: Endstops are still in machine coordinates (not rotated). Make sure your endstop positions match your machine’s physical axes, not the rotated coordinate system.
| Feature | Rotatable Cartesian | Standard Cartesian | CoreXY |
|---|---|---|---|
| Coordinate rotation | Yes | No | No |
| Motors per axis | 1:1 mapping | 1:1 mapping | Coupled X/Y |
| Complexity | Low | Very low | Medium |
| v1 Support | Yes | Yes | Yes |
| v2 Support | No | Yes | Yes |
For developers or those interested in the implementation details, the Rotatable Cartesian solution is implemented in: