Self Leveling (3 motor leadscrew) printer = Non-planar printer?
-
I was thinking of redesigning my 3D-printer as I had to disassemble my old printer. Switching to self (true) leveling design allows easier leveling, but does it also allow printing with more than 3 axes with non-planar movement?
Few things I'm not quite sure about:
- Is there any Slicers with capability to print non-planar mode?
- Can Duet (6HC) do required movements? (Duet can do linear combinations of each axis, but can they be used to do non-planar movements?)
- Can unobtainable positions of the bed be configured to Duet or is it better to leave it to Slicer?
- Any other issues this type design has? (I'm aware that Y-gantry will be very close to bed in low positions and that angle of bed is limited to about +/-15-20 Degrees)
-
Interesting design.
I’m not aware of any firmware or slicer that currently supports this. In general, I think the twisting could be useful for overhangs, but you’d want to be real careful about not exceeding the current layer z-height and crashing on areas built up too much.
On the design and calibration side, you’d essentially be combining some of the calibration methods of a delta printer with the linear version. Any errors you have are going to be amplified by the transformation and moment arm swing. A delta printer (because it’s flat) can actually support several localized minima in the calibration solution and still get good prints. With the setup of twisting on the bed the same calibration methods probably won’t work unless you add another few dimensions to the calibration. Something like calibrating the bed, then calibrating it at various tilt angles and using the composite of all data to select the correct calibration.
Could it be done? Probably. Would I want to use my time attempting it - probably not. Might be worth asking is the effort / reward high enough.
-
@visionary said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
Is there any Slicers with capability to print non-planar mode?
Can Duet (6HC) do required movements? (Duet can do linear combinations of each axis, but can they be used to do non-planar movements?)
Can unobtainable positions of the bed be configured to Duet or is it better to leave it to Slicer?
Any other issues this type design has? (I'm aware that Y-gantry will be very close to bed in low positions andThe only examples I am aware of thus far used custom and/or postprocessed gcode.
this would require a new kinematics for RRF if you did not want to address the 3 Z motors directly but instead wanted to use an X Y Z A B axis notation where A and B were rotations around the effector point. -
@tlas said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
I think the twisting could be useful for overhangs,
That is one of the best benefits it would give. BTW it is interesting idea to calibrate both "flat level"- position and positions with different angles. Perhaps this could be used to calculate values that correspond to each motor's steps, which either could be used by Duet or could be input to a custom slicer.
@T3P3Tony said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
this would require a new kinematics for RRF if you did not want to address the 3 Z motors directly but instead wanted to use an X Y Z A B axis notation where A and B were rotations around the effector point.
How hard would it be figure out new kinematic like this (note that I'm "just asking" and not actually asking new feature to be implemented)?
I'm currently in the process of trying to get MSc degree in mechanical engineering and I also have some basic programming skills in C++ and python, which I also would like to increase.
Perhaps self made custom slicer could deal with all the problems mentioned above? Or would it be waste of time trying create a slicer? Anyways, finishing the design and actually building will take a long time. Also it should be noted that it works just as it is as a normal printer even if Non-planar printing or printing at an angle is not possible
-
@visionary There are a number of different projects underway (like @xyzdims rotating tool head and @JoergS5 5 axis robot arm) that provide some sort of 5 axis printing so the most useful split would be:
- A 5 axis tool path generator, i.e a slicer or slicer post processor that produced the XYZ AB gcode (once again have a look at the work @xyzdims has already done here).
- Kinematics in RRF to deal with how to move the effector (& bed in this case) to achieve the XYZ AB. There would be a different kinematics for each
Ideally the kinematics would not allow for co-ordinates that were not achievable with the motion system.
The slicer needs to deal with producing valid toolpaths that avoid collisions between parts already printed and the nozzle.
-
@visionary said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
figure out new kinematic like this (n
There are already some kinematics around, they are gathered in the https://github.com/Duet3D/RepRapFirmware/tree/3.4-dev/src/Movement/Kinematics directory. Some are linear kinematics, some complex ones. The task to create a new one is primarily the effort to calculate kinematics (motor positions => cartesian coordinates) and inverse kinematics (cartesian to motor positions).
trying create a slicer?
Non-planar print is by defintion crossing layers, so a normal slicer (= slicing into layers) is not sufficient *). Developing a new slicer with this capability would make sense imho, supporting complex movements like G2/G3 which are not in the xy plane. For path planning, the different kinematics have different unprintable areas (singularities), so the slicer needs to know the planned kinematic and printer properties. It may be easier to print inside a secure print area which is straight or konvex everywhere. The firmware kinematics check that a planned path is printable the whole planned path and throws an error if not.
*) The https://hackaday.com/2016/07/27/3d-printering-non-planar-layer-fdm/ project e.g. uses G-Code post processing after slicing.
Use cases for non-planar printing imho are
- printing overhangs without support
- strengthen layer adhesion
- fewer or no visible layer lines
- printing structures at the surface
- one could add a print to an existing print at an arbitrary position
- if using different layer heights at multimaterial print, nozzle can reach difficult positions
Another interesting article about increasing strength: https://3dprintingindustry.com/news/researchers-achieve-6-35x-part-strength-increases-with-new-non-planar-fdm-framework-175248/ and the advantage to avoid layer lines in this article: https://3dprinting.com/how-to/no-layer-lines-with-non-planar-fdm-3d-printing/
-
I have tried forming equation for the bed system, but I have few issues:
-
The bed actually rotates around all three axes. Not sure how that is possible with just 3 motors to have "4 axes" (ZABC).
-
For forming one of the equations I need to solve following situation (blue line lengths and angles between the white lines (one angle can be set to 90 degrees) are known). White line lengths are unknown.
I've tried system of three equations (each equation corresponds to each small triangle, law of cosines-equations), but the resulting equation is very big.
-
-
@visionary said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
The bed actually rotates around all three axes. Not sure how that is possible with just 3 motors to have "4 axes" (ZABC).
You're right, this is not possible, because those are 4 degrees of freedom and need 4 actuators. In this case Z and rotation by xyz.
In general, there are 6 degrees of freedom: xyz and rotation by xyz, so total 6.
I don't understand your drawing and cannot help you (it's missing information about the 3 dimensions and where the actuators are located. Is the drawing the bed or something else?). One way to solve it: think about the rotations or linear movements of the actuators and what they rotate or move, the effect of motor positions to cartesian coordinates and then back (inverse kinematics).
-
The main triangle's tip's are ball joints moved up and down in Z-direction.
In CAD I can seemingly tilt the bed with combinations of leadscrew movements, but I can't be sure if there is certain position what it can't reach although it might seem that way. The white background picture has minor error in with d4m2 and d4m1. -
@visionary this looks interesting.
You're using 3 actuators for the bed tilting by changing Z, so according to theory you cannot change 4 degrees of freedom. You can change Z, X rotation and Y rotation by this construction. But you cannot change Z rotation (but you may not need it, because the nozzle direction is not important in most cases).
You should check the sine and cosine rule for non-90 degree angles, whether you can manage to calculate the needed values: https://www.cimt.org.uk/projects/mepres/step-up/sect4/index.htm
If the bed cannot be tilted to every angle (which will be the case), you can restrict those rotations later with parameters and disallowing values outside them.
One point to consider is, that you will probably want the nozze - bed position stay at the same xyz position for printing at an object.
I would do the calculation similar to:
- calculate the blue lines (length and angles change)
- they define a plane (parallel guides and bed being parallel), tilted in 3 dimensions
- calculate change of points*) on the plane by the tilting. This must be corrected by the nozzle xy and z(z by the 3 bed actuators)
*) The plane is in one flat plane (tilted in space, but all 3 edges are in this plane), so the sine/cos functions between blue and white lines are easier to calculate for searching the point.
-
@joergs5 said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
@visionary this looks interesting.
You're using 3 actuators for the bed tilting by changing Z, so according to theory you cannot change 4 degrees of freedom. You can change Z, X rotation and Y rotation by this construction. But you cannot change Z rotation (but you may not need it, because the nozzle direction is not important in most cases).
Should side of the bed in following picture be shown? Also see that midpoint of the bed is no longer in the middle of the bed.
I think you're right. I just realized the kinematics don't allow just rotation round Z, but it must anyways be taken into account in calculations.
-
Should side of the bed in following picture be shown?
sorry, please explain what do you mean by "be shown".
With parameter restrictions I meant that some angles will not work because the linear guides are at their limit.see that midpoint of the bed is no longer in the middle of the bed.
Yes, this is what I meant with you'll have to correct xy of the nozzle and Z by lifting up or down all 3 Z motors by the same value when you tilt the bed.
-
This post is deleted! -
@joergs5 said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
Should side of the bed in following picture be shown?
sorry, please explain what do you mean by "be shown".
Never mind about that (see picture above). The system is 5 axis.
If I can determine an equation for any of the dimensions shown in red in picture:
I can determine all the other dimensions easily. I found one solution, but I can't find a way to simplify it to a form alpha_m13 = ...
-
This post is deleted! -
@arnold_r_clark
Nice!
Does your printer work in 5 axes (can do 5 axis Gcode prints?) or is the bed setup for the purpose of automatic true bed leveling?
-
This post is deleted! -
@visionary said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
I can determine an equation for any of th
I tried to find a formula, but I had no luck. But my idea so far is:
- because of the perpendicularity, the top region defines that the middle point of green lines must be on the circle which has it's center half way of the top line. So it must match a (x – h)^2 + (y – v)^2 = r^2 circle function (x,y being tilted in space).
- right top and right down points are given
- the right green lines have a known angle
So it should be possible (by vector calculation, defining the two right green lines as vectors and a given angle between them, it is some cos function) to calculate the missing angles and green line lengths. The vectors directions are given by the angle between them, starting and end points, and the first vector ends on the circle, and the second starts there.
-
There's no slicers(except a few proprietary ones) that can do anything but basic 2.5d slicing.
Even non-planar slicing hasn't been brought over to slic3r despite it existing for years.The biggest hurdle for any 3d printing in more than 2.5d is the slicer. It's a CS problem that is hard to solve.
-
@roiki11 said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
There's no slicers(except a few proprietary ones) that can do anything but basic 2.5d slicing.
When the non-planar kinematics are ready and implemented in RRF, it's time to develop those needed slicers!! The industrial CNC have shown that it is possible.
I have a lot of ideas what can be done with it, starting with finishing 3D printed objects by routing and painting the surface. -
thats honestly the wrong way to go about it. The slicers would need to be developed first, then the hardware. A normal 3D printer can already do non-planar printing. There’s no modifications required(though you would need a special nozzle for optimal performance). for a true 5 axis printing only a simple trunnion with 2 motors is needed. which is trivial to make with a 3d printed parts .
I get it, im more of a hardware guy myself. But this really is putting the cart before the horse(or climbing a tree ass first as we say). We’d need slicer support before any hardware work is really usable. and i dont see any work being done on that front. If i remember the slic3r maintainers were quite hesitant to bring the non-planar slicing work into the mainline slic3r. which is a shame.
-
@roiki11 we should talk about what we mean by non-planar printing, because I think we have a different understanding. If it's just changing the Z while printing in XY, then you're right, and it covers some of the use cases, and mesh compensation is already a non-planar printing (implemented in the controller, as you proposed in another thread). If it includes rotation of the nozzle (or the print bed) and additional actuators are needed, then there are more complex kinematics needed which don't exist in RRF yet.
I expect that noone will develop a slicer for non-planar printing, if there are no printers who can use it (henn egg problem). That's the reason for my approach for a printer first. But I may be wrong. Most users buy printers, so there may never be relative cheap printers with 5 or 6 axes.
A solution might be to start with small additional improvements to slicer and hardware and iterate higher. E. g. starting with code and hardware to print overhangs without support structure and if this works, implementing other use cases.
-
a non-planar printing is simply anything that uses the 3rd axis while printing to create non-planar layers. techically mesh bed compensation falls in to that. kind of. though its not printing non-planar layers.
there is already a fork of slic3r that does non-planar printing. some guy did it as a masters thesis in germany a few years back. People have made machines for 5 axis printing, or a tlting bed printers. Mostly for university work. They just aren’t usable in the real work because there’s no slicer to run them. i don’t see it as a chicken-or-egg problem because the hardware has never been the problem. Making the 5 axis hardware is quite easy. Even the matrix transformations for a 5 axis 3d printer aren’t that complex if you use the BC trunnion method, which mostly comes down to two matrix transformations since no work offset coordinates are needed.Linuxcnc actually has that, has had for years. It’s just not very usable in a machining context and there’s no slicer to try it with a 3d printer.
3D printing didn’t really kick off until a workable slicer emerged. Its the most complex problem to solve.
-
@roiki11 said in Self Leveling (3 motor leadscrew) printer = Non-planar printer?:
Linuxcnc actually has that, has had for years. It’s just not very usable in a machining context and there’s no slicer to try it with a 3d printer.
I'll think about what you wrote.
But I don't understand the sentence above about LinuxCNC. From my understanding, LinuxCNC has G-Code as input, so it's already behind the slicer. This G-Code should be usable by RRF also (maybe some incompatible commands need to be changed by a postprocessor).
-
Linuxcnc is a machine controller, like duet and RRF. The G-code is largely the same, aside from some codes that might be specific to machining or 3D printing. If you had a slicer that would output a 5 axis G-code with the standard tool vector co-ordinates, you could build a 5 axis printer with linuxcnc. Though it’s missing the more advanced 3D printing focused features.