Implementing a new kinematic
-
Hi!
As said in another thread, I'm working on a 2 axes extension for a CoreXY printer, to be able to print on a sphere.
My first question is: how do I get the center bed coordinates from xxxKinematics.yyy classes? They depends on the bed size, and the X/Y offset of origin…
Thanks,
-
You choose where on the bed you want X0 Y0 to be, and write your kinematics to implement that.
-
Right! This is much more simple… As I will use optical endstops, it will be possible to accurately calibrate the origin, so the (0, 0) position.
Thanks!
-
For Cartesian and CoreXY kinematics, location of the head when the endstop is triggered is given by the min/max axis values specified in the M208 commands. For SCARA kinematics, the arm angle limits are specified in the M669 command and stored in the ScaraKinematics class, and when an endstop is triggered the corresponding arm angle limit is taken to be the angle of that arm.
The mechanism for doing all of this has changed since the beta 11 release, so I suggest you postpone implementing homing until I have released beta 12.
-
Ok! For now, I won't bother with X0 Y0, and consider it to be at the center of the bed, from kinematic point of view. OR, to be more precise, X0 Y0 is the point where the spherical bed is horizontal at U0 V0.
-
David, can you tell me when Kinematics.CartesianToMotorSteps() and Kinematics.MotorStepsToCartesian() methods are called? Is it for each start/stop segments, so after pathplanner (lookahead) has done its job?
-
CartesianToMotorSteps is called to calculate the endpoint of each move before lookahead is done, and also when you execute G92. MotorStepsToCartesian is called less often, for example after every G1 D1 or G1 S2 move.
-
So, when you have to split segments, it is done on steps values, not on distances?
-
No, it's done on distances. If a move has to be segmented, CartesianToMotorSteps will be called for each segment.
-
Ok, thanks.