Parallel Scara printer improvements
-
I start working on improving the current five bar parallel scara kinematics this and next week, mainly on the following topics:
- verify the existing code for any arm angles for all work modes
- support the missing work mode 3
- detailed object model
- report detailed reason when a G1 move is not allowed, e.g. telling that the reason is an angle restriction. Finding out the reason today is often not easy
- there was a bug in the current version with a workaround. Find reason and fix
- M669 without parameters: report current settings
- autoadjustment and get precise angles at homing (proposals o_lampe, see below)
If you have ideas for improvement of the current version, please place here, I'll implement if possible. I'll try to finish development and testing the next 2 weeks, please add only feature requests which I can fulfill in the time. A backlog for extended requests is possible of course.
Status: I'll finish soon with implementing and making a pull request to 3.4-dev:
- bug fix, object model, M669 reports parameter and last angle errors of last move
- next release: working mode 3, autoadjustment, verify all possible angles
-
@joergs5
An autoadjustment routine, like for Delta printers, which corrects homing angles and bar-length?
I thought of a temporary mounted vertical plane, where the effector can probe against. -
@o_lampe it would be useful for me if you have a description or link to an existing thread which describes your wish. Sounds to be an interesting request and I think I know what you want, but to be sure... If you have a scientific article pdf, this would be fine as well.
-
@joergs5
there is no thread, but from what I read in rutkus thread, I thought it was useful. In Bondus thread, he made a few adjustment prints, because there was no plane to probe against. ( Deltas just probe the bed to adjust everything)
What you'd need to do is mounting a XY-plane parallel to the fixed bar. Could be an angled extrusion mounted on the bed. You don't need much height, only width. -
@o_lampe if you use a parallel xy plane, you need to adjust this first, so this is not complete autoadjust. The idea I discussed with @bondus in 2019 was to calculate back from a print result to the kinematics and adjust the parameters until the print result is ok, but we agreed that the task is difficult.
I'll think about your request and if you have additional idea, please post here. This is probably a request for a later release, but maybe I can implement a simple first version. -
The bug was probably for the reason that some kinematics result in a position where the inverse kinematics results in a wrong angle. E.g. negative angle results in big angle (negative + 360 degree) for inverse kinematics. The fix is an insertion of the following code into getInverse before the line cachedX0 = x_0;
with the code:// bugfix 2021-06-04: a negative kinematics angle was calculated back by inverse kinematics // to a big angle. It is corrected now to be calculated back to an angle inside the C parameters limits. if(thetaL > actuatorAngleLMax) { thetaL -= 360; } if(thetaL < actuatorAngleLMin) { thetaL += 360; } if(thetaR > actuatorAngleRMax) { thetaR -= 360; } if(thetaR < actuatorAngleRMin) { thetaR += 360; }
For modes L1, L2 and L4 the fix is tested successfully. Changed documentation that C parameter angles shall not overlap for inverse kinematics not to be ambiguous.
-
@joergs5 said in Parallel Scara printer improvements:
maybe I can implement a simple first version.
It seems to be crucial to have the homing angle perfect. Maybe there's a way to simplify that?
If I have to square a frame, I adjust diagonals until they are equal length.
Is it possible to home both arms at a parallel position? (both at 90°)|/| == |\|
Then it would be easy to adjust the home switches with the above mentioned method.
-
@o_lampe you can home at any angle you wish. Before you run G1 commands, you have to G1 H2 the steppers into a position compatible with the working mode. 90/90 is working mode 2, so if you wish to run L1 mode, you should rotate angles to e.g. 50/90 after homing and before proceeding.
I thought about using 2 endstops each, e.g. at 90 and 0 degree position, to check (or to get and set) the M92 setting. But I'm not sure whether it's supported by firmware. For wire based solutions this may be interesting, because you may not know the gear ratio exactly. For my teethless aluminium plates (robot prototype) it's the same problem.
Another idea I once had is:
Having an exact long electric conducting shaft (black line), then turn actuator 1 until the green line touches the black one. Then turning green back enough, then turn actuator 2 until blue touches the black. This should result in precise 180/0 defintion. Instead of electricity, optical measurement is also possible (laser?). -
@joergs5 said in Parallel Scara printer improvements:
I thought about using 2 endstops each
The long conductive bar could be shorter, if you extend the 'rear end' of the arm and use it to trigger an endstop. And you could use the same endstop twice (with 180° 'known' difference). The trigger points could also be integrated as dent on the circumfence of the big wheels. In CAD it's easy to place dents at 90 or 180 degree. Then the endstops could sit on the fixed bar.
Unfortunately Gcode has many ways to adjust 'Z', but G30 in all it's flavours doesn't work for X,Y. You'd have to use G1 Hx to figure out exact M92-angles. But it's a step in the right way.
-
@o_lampe said in Parallel Scara printer improvements:
And you could use the same endstop twice (with 180° 'known' difference)
that's a good idea!