Hi all,

I'm building a polar 3D printer and am currently looking for a platform to control it. I'm new to Smoothie and really like the way it works.

Unfortunately I didn't found an arm solution for the cylindrical coordinate system in the arm_solution folder.

When taking a further look into the source code I found the actuator position is defined in millimetres (*actuator_mm*).

In the MorganSCARA solution however angular actuator positions are used through the variable *actuator_mm*.

MorganSCARAsolution.cpp

actuator_mm[ALPHA_STEPPER] = to_degrees(SCARA_theta); // Multiply by 180/Pi - theta is support arm angle actuator_mm[BETA_STEPPER ] = to_degrees(SCARA_theta + SCARA_psi); // Morgan kinematics (dual arm) //actuator_mm[BETA_STEPPER ] = to_degrees(SCARA_psi); // real scara actuator_mm[GAMMA_STEPPER] = cartesian_mm[Z_AXIS]; // No inverse kinematics on Z - Position to add bed offset?

If I understand correctly it goes wrong in Robot.ccp where the speed of every path segment is clipped to the maximum actuator speed, again defined in mm(/s).

void Robot::append_milestone( float target[], float rate_mm_s )

// find actuator position given cartesian position, use actual adjusted target arm_solution->cartesian_to_actuator( adj_target, actuator_pos ); // check per-actuator speed limits for (int actuator = 0; actuator <= 2; actuator++) { float actuator_rate = fabs(actuator_pos[actuator] - actuators[actuator]->last_milestone_mm) * rate_mm_s / millimeters_of_travel; if (actuator_rate > actuators[actuator]->max_rate) rate_mm_s *= (actuators[actuator]->max_rate / actuator_rate); }

In a cylindrical coordinate system the actuator driving the angle $\alpha$ will be limited to a maximum rotational speed $\frac{\partial\alpha}{\partial t}(r)$, which is a linear function of r, the radius vector length from origin to tool.

Shouldn't the actuator speed clipping in Robot.cpp be solution depended?

Has anyone considered implementing this?

According to the smoothieware front page Smoothie is "Designed to support non-Cartesian machines", is it?