Morgan SCARA is an arm solution implementation for SCARA (Selective Compliance Assembly Robot Arm or Selective Compliance Articulated Robot Arm) type robots.
SCARA robots use two parallel rotary joints to provide compliance in a plane while maintaining rigidity in the vertical direction. This makes them ideal for pick-and-place operations, assembly tasks, and other applications where vertical rigidity is important but horizontal compliance is beneficial.
A SCARA robot’s workspace is typically:
The “Morgan” variant is a specific SCARA implementation that was designed and contributed to the Smoothieware project. It may have specific geometric or kinematic characteristics that differ from standard SCARA implementations.
To configure your machine to use the Morgan SCARA arm solution, add this to your configuration file:
arm_solution morgan
[general]
arm_solution = morgan
Based on the source code, Morgan SCARA likely requires the following parameters (exact names may vary - refer to the source code for definitive information):
arm_solution morgan
# Arm geometry (example values - adjust for your machine)
# These parameters define the physical dimensions of your SCARA arm
arm1_length 150.0 # Length of proximal arm segment (mm)
arm2_length 150.0 # Length of distal arm segment (mm)
# Alpha motor (proximal joint - rotary)
alpha_step_pin 2.0
alpha_dir_pin 0.5
alpha_en_pin 0.4
alpha_steps_per_mm # Steps per degree of rotation
alpha_max_rate # Maximum rotation speed
# Beta motor (distal joint - rotary)
beta_step_pin 2.1
beta_dir_pin 0.11
beta_en_pin 0.10
beta_steps_per_mm # Steps per degree of rotation
beta_max_rate # Maximum rotation speed
# Gamma motor (Z axis - linear)
gamma_step_pin 2.2
gamma_dir_pin 0.20
gamma_en_pin 0.19
gamma_steps_per_mm 400 # Linear steps per mm
gamma_max_rate 300 # Linear speed in mm/min
[motion control]
arm_solution = morgan
# Arm geometry
[arm_solution]
arm1_length = 150.0 # Length of proximal arm segment (mm)
arm2_length = 150.0 # Length of distal arm segment (mm)
# Alpha motor (proximal joint - rotary)
[actuator.alpha]
step_pin = 2.0
dir_pin = 0.5
en_pin = 0.4
steps_per_mm = xxx # Steps per degree of rotation
max_rate = xxx # Maximum rotation speed
# Beta motor (distal joint - rotary)
[actuator.beta]
step_pin = 2.1
dir_pin = 0.11
en_pin = 0.10
steps_per_mm = xxx
max_rate = xxx
# Gamma motor (Z axis - linear)
[actuator.gamma]
step_pin = 2.2
dir_pin = 0.20
en_pin = 0.19
steps_per_mm = 400
max_rate = 300
SCARA robots are ideal for:
SCARA robots require careful calibration:
| Feature | Morgan SCARA | Cartesian | Linear Delta |
|---|---|---|---|
| Setup complexity | Very high | Low | High |
| Calibration difficulty | Very hard | Easy | Hard |
| Speed (horizontal) | Very high | Medium | High |
| Speed (vertical) | Medium | Low | Very high |
| Workspace shape | Semicircular | Rectangular | Cylindrical |
| Best for | Pick & place | General purpose | 3D printing |
| Repeatability | Excellent | Good | Good |
| Mechanical precision | Very high | Medium | High |
Solution: You may be trying to reach a position outside the robot’s workspace or at a singularity. Check that your target positions are within the reachable annular region.
Solution: SCARA kinematics can produce non-linear joint movements for linear Cartesian movements. This is normal but may require tuning of acceleration and jerk settings.
Solution: Verify your arm length parameters are accurate. Even small errors in arm lengths can cause significant position errors at maximum reach.
For developers or those interested in the implementation details:
Reading the source code is highly recommended if you’re implementing a Morgan SCARA system, as it contains the exact kinematic equations and parameter names.
There is a SCARA calibration tool available in the Smoothieware repository:
This tool can help with the calibration process for SCARA robots.
For other arm solutions and robot configurations, see:
If you have experience with Morgan SCARA robots and would like to contribute to this documentation, please:
Your contributions would be valuable in improving this documentation for the community!