Arm Solutions

Board

On a typical “Cartesian” machine, each actuator (a motor and a linear rail, named alpha, beta, gamma) corresponds to an axis (like X, Y, and Z).

However, on other machines, the position in Cartesian space (X, Y, Z) must be converted, using math, into a more complex position for the actuators.

This is the case, for example, of linear delta (often just called “delta”) machines.

Supported Arm Solutions

Smoothieware supports multiple arm/motion solutions to accommodate different machine architectures. The table below shows which solutions are available in each firmware version:

Setting v1 v2 Description Documentation
cartesian Standard X/Y/Z configuration where each motor directly controls one axis Cartesian
linear_delta Three vertical linear rails in triangular configuration (Rostock, Kossel) Delta
corexy or hbot Crossed-belt system where both motors contribute to X and Y movement HBot/CoreXY
corexz Crossed-belt variant where both motors contribute to X and Z movement CoreXZ
morgan SCARA-style robotic arm with two parallel rotary joints Morgan SCARA
rotary_delta Delta variant using rotating joints instead of linear slides (experimental) Rotary Delta
rotatable_cartesian Cartesian system rotated by a specified angle (v1 only) Rotatable Cartesian
Configuration Aliases: Some arm solutions can be specified using multiple names:
  • linear_delta, delta, rostock, or kossel all select Linear Delta
  • hbot or corexy both select HBot (they use the same implementation)
  • morgan selects Morgan SCARA

Configuration

To configure your machine for the right type, see its specific page linked in the table above.

Each arm solution has its own configuration parameters and requirements. The setting determines the kinematics system used by your machine.

V1 Configuration (flat namespace):

arm_solution cartesian

For example, to configure a linear delta printer:

arm_solution linear_delta

V2 Configuration (INI sections):

[motion control]
arm_solution = cartesian

For example, to configure a linear delta printer:

[motion control]
arm_solution = linear_delta

If no arm solution is specified, cartesian is used by default.

This is a wiki! If you'd like to improve this page, you can edit it on GitHub.