-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Up! Box printing at a 3-5 degree angle. #31
Comments
Hi, thanks for the report and the files. This means that there is still some rounding error in the firmware which we need to find. |
Hi @orthoa, |
Hi @orthoa, Actually don't worry about it. I just reproduced the issue with a Calibration ruler. Adrian |
Same problem here: drifting to right with every layer. The higher the objects gets the fewer the drift gets. My first concern was about the slicer Software but I got the same drifting with Slic3r and with Simplify3d regardless of older or newest version of up3dtools. Anything we could do about this topic? |
Hi @MaikStohn , If this is the case would it be feasible to first run an absolute position conversion over the gcode so you know exactly where the extruder should be before the layer change. Or do I have no idea what I am talking about? Thanks |
Sorry forgot to post more info, I've been busy. It was also set to 100% infill and as you can see from the picture this isn't the case. From memory when I was watching it print the first 10-15 layers did have 100% infill. I can upload the FFF and Factory file if needed for some reason github isn't allowing me to upload ZIP files at the minute. |
Hi @MaikStohn , |
Hi, the rounding is inside of the MCU. The UP does NOT take GCODE or absolute coordinates. It just wants periods of speeds for every motor. Just a small example: The GCode instructs to go from step position X:0 Y:0 to X:10 Y: 3 with a speed of 2. This results in 5 segments for X: X+2, X+2, X+2, X+2, X+2 You can see that X always is running 2 steps, while Y is going 0.6 steps per period. Means: In total we instructed the machine to do 100 steps but in fact the machine did 99 only. Even the machine internal calculation is convinced it did 100 steps and that's why the error is not compensated when the layer change occurs which indeed uses the absolute coordinates. The original UP software is doing a lot of crazy calculation to minimize this effect. It cuts precision prior calculation of the moves and also tries to limit segment size in order to minimize this kind of failures. ==> We must find out how to limit the fractional part to be less precise in order to avoid the rounding error from up machine software. Maik |
I just had problems with these rounding errors too I think. Just came home to a Box full of spaghetti. |
@MaikStohn with the smallest possible step being known, shouldn't it be possible to calculate the path at that precision with something like the Bresenham algorithm and then aggregate multiple of those micro-segments into larger segments? That should be possible without any rounding errors. As for errors accumulating over multiple commands, that shouldn't be an issue either, as long as you do all calculations (including the variable that keeps the current position) in "micro-steps". TL;DR: do everything with fixed point arithmetics with the same precision the machine uses internally. |
The main issue is that both x and y axis needs to move simultaneous at a certain speed in order to deposit the material at the correct position. Talking about Bresenham adresses not the problem, since we already reach the right endpoint, but with a certain fractional rest error. This fractional rest accumulates differently in the UP Firmware and in UP3D software. The goal is to keep this rest at a minimum, optimally below 1 micro step. The issue Maik is fighting is to find a way to a) firmly understanding how the error accumulates in the Firmware and b) find a way to keep it under control (e.g. correction steps). As Maik commented one way is to break a path in smaller segments, so that the segments can be chooses to reach the end point with a smaller factional error. In earlier versions I analyzed and plotted the resulting error. Here I found that the error inside up3d calculation has a tendency to grow in a single direction ( but we don't know if the firmware sees it similarly). So another idea would be to distribute the error evenly so that the resulting error doesn't result in a drift. This means to take care of all rounding in the calculation. Next we wound need to understand if the error distributes differently by different geometries (eg Circles vs. Cubes in different angles) or different placements. -Kai
|
Okay, either I misunderstood the problem that Maik described or I'm just not very good at explaining my idea. In the example above we would go from (0,0) to (10,3) which would be 10_2^9 = 5120 micro-steps in the x-direction and 3_2^9 = 1536 micro-steps in the y-direction. Dividing that into 5 equal segments would give us an error of 1 micro-step in the y-direction. In this case the solution is pretty easy, we can just add that one micro-step to any of the segments. (given that the transfer format allows us that kind of precision which I assume it does as the UP3D software can produce the right output) It gets a little harder when we are off by more than one step. In that case, we can't just add all missing micro-steps to one of the segments as that could result in a slight but visible curve. Instead we need to distribute those corrections among the segments as equally as possible. Of course Bresenham is only one option to do that, a simpler one might also work. Example: |
Hi, to confuse you a bit more here a real world example for UP internal machine MCU: If you accelerate, travel and decelerate in one direction and then do exactly the same in opposite direction you will have a difference of 1-5 steps depending on the fractional part of the step Bresenham. But this is not the problem. The problem is that you sometimes do NOT have a missed step in your own and in MCU calculation (UP MCU reports the current position to be same as calculated). However it missed 1 step to execute. This is the problem. Maik |
@dfyx |
Same problem with the Mini :( But i am not sure if this happened with older versions of up3dtranscode also... Too bad no one was yet capable of hacking/cracking the machine to be open to 3rd-party software :( |
This smells like a float data type precision issue to me. Thanks |
I compared the models I mentioned earlier, so two models printed at once also drift. The more movements/models the more it drifts obviously.. But I think the previous transcode versions had less of this problem, I did not notice any drifting before 0.7.0. I do hope this can be fixed, I want to leave the Up software and focus on Simplify3D because of the freedom :-) |
As far as I understand the issue is related to the error summing up inside the UP firmware. So one of your previous comments says Can’t we use this mechanism to figure out how the error sums up, I mean that generating some patterns and analyzing the results (e.g. in an spread sheet) I think along the line to generate programmatically a series of fine straight back-and forth movements in x direction with different speeds and length. Then I also remember you said that the firmware reports a different location then the actual head position, here comes the question if the report might be wrong or the -Kai
|
the error which is reported back I mentioned can be fixed easily (is already compensated). The problem is the error the machine is having when you instruct to drive 100 steps but is is doing 99 only but reporting back 100 been done. You can see that the position is wrong... just look at the prints. I did some test runs (just x/y moves) and checked reported positions with instructed positions. All is 100% fine. The only problem is that the head is not where it is expected to be. Maik |
OK, then we can focus on this behavior by generating some test pattern like: Generate a pattern of x lines which consists of many segments with the same fractional error. Next we increase the y position by e.g 0.5 mm and start the next sequence. some pseudo code like this: y = 0 Could we see than where the step on the line end in x direction occurs? -Kai
|
1 step on UP mini is 1/854.0 mm = 0.00117 mm. So not sure how to measure a single missed step... Another idea I have in mind is to solder some wires to the step output pins and make a small electronics to count the real step pulses. Since the frequency can be very high (up to 1 MHz) it must be something powerful like a ARM mcu (e.g. STM32). Maik |
Indeed that missed step is a tiny fraction, but somehow in the prints it is summing up to a recognizable amount. As the 1MHz steps counting goes, it is difficult to catch these with a simple TTL uC input on the motor since these have quite some inductance. You -Kai
|
Is there absolutely no way to extract the firmware and disassemble it? Also if the UP software works around this issue we should be able to analyse the native UP code output to search for their pattern to work around the issue. Can you compare a 3 or 4 layer circle output from up against the same from gcode transcoder. I'm willing to bet they simply reduce precision in the values they could send. I.e. 10.456 likely gets reduced to 10.450 I am still working on the assumption that this is not intentional by UP and there must be a simple programming reason for it. Adrian |
Adrian, I have already looked into these idea. So far we can see the following: The UP slicer breaks up a straight line in many smaller segments. Especially the corners are kind of "rounded" with very tiny segments. Next the maximum repeat count in each segment (I think it was the value p1) is limited to 500. Maik prefers here to use longer runs, since the planner doesn't split each segment into smaller pieces. I also thought how to implement this break ups, but I came to the conclusion that this would need to know the geometry of the figure, so the small segment can follow a path. Reconstructing these from gcode is a bit of a pain, since this would require some kind of look ahead to identify the corner angle. Next these small segments must be puzzled together in a way that x/y factional parts are minimized. -Kai
|
@MaikStohn |
No solution to this issue and the project died? |
@Riffer I just got a prototype Cetus3D which is based on the same control concept than the other Tiertime printers. The steppers of this printer run with 160 steps/mm, compared to 854 on the UP mini. So the resulting error is more prevalent on the prints see #39 for more details. So I am back to square one to identify the rounding issue. |
My guess is that @MaikStohn has abandoned this repository for now (I haven't seen any public activity from him on GitHub or his blog). I think the best course of action would be to open an "UP3D" GitHub organization, fork this repository over there and invite him. This way, @kscheff can merge any features and bugfixes himself. |
@dfyx @MaikStohn seems to be absent for a while now... creating a new organization and forking would mean we loose the continues integration features of travis, at least until this is established for a new repository. Myself I use mainly OS X, so no testing on Win or Linux systems. |
I can do some testing if needed for win system. I've actually been testing a custom MCU for the UP! Machines that is On Saturday, 24 September 2016, kscheff [email protected] wrote:
Thomas Leahy Unit 3 / 121 Newmarket Rd 1800 730 552 |
@kscheff https://github.com/kscheff Do you already have a Cetus then? How On Saturday, 24 September 2016, Thomas Leahy [email protected]
Thomas Leahy Unit 3 / 121 Newmarket Rd 1800 730 552 |
@orthoa I am just working on getting a fork working on the Travis CI, so the builds for Linux, OS X, Windows run automatically and should be available later for testing here https://github.com/UP3D-gcode/UP3D I am just fighting to setup the api key access token... Yes, I have an Cetus prototype on my desk, so I can play around with some software. I can't comment further on it. |
Sounds good I will give it a test when can. Also if you could send me a message when you are allowed to talk about it On Saturday, 24 September 2016, kscheff [email protected] wrote:
Thomas Leahy Unit 3 / 121 Newmarket Rd 1800 730 552 |
So I managed to get the binary files automatically build with the #40 fix included. Please visit this page https://github.com/UP3D-gcode/UP3D/releases |
Are these issues fixed now? |
@Gitty-Hub this should have been fixed with the #40. So far there is no feedback from the original owners. So we might just close the this issue here (Maik?). |
It isn't fix and we are still having the same problems.
…On Mon, Dec 5, 2016 at 6:06 AM, kscheff ***@***.***> wrote:
@Gitty-Hub <https://github.com/Gitty-Hub> this should have been fixed
with the #40 <#40>. So far there is
no feedback from the original owners. So we might just close the this issue
here (Maik?).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#31 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ASp3Jhl7ap8Y4A20xP20v8avUMlQHKRTks5rEvMjgaJpZM4ImKCm>
.
--
Thomas Leahy
Unit 3 / 121 Newmarket Rd
Windsor QLD 4030
1800 730 552
|
Hm, I don't see this issue on the UP mini nor the Cetus printer, I don't have a UP Box to test with. Trying to catch up here: @orthoa are you using UP Box or do you have access to UP mini as well? Next I try to understand if the 3-5 degree angle depend on the X/Y content or only at the height (number of layers) of the object: e.g. does a cylinder or cube with the same base width and height(and layer height) result in the same lean angle? Another option to identify the issue would be to play with different infill % on the same object. Some more questions: What I try to differentiate with this is: if it is still a rounding issue not being able to track the position correctly, then this must be content dependent (so how many rounding issues are summed up in a single layer). If it is not content depended, it can't be a rounding issue based on the XY layer movements. When it is a static fixed lean angle, it should solely depended on the number of layers printed (height / layer height) and we might consider a fixed offset per layer to compensate (if we can't find any other source of trouble). -Kai |
I tried a cylinder and that does not look so bad. But now I'm printing the calibration ruler from this thread and I can see already the structures are printed with an angle to the left. So I don't know why sometimes this happens and sometimes not, the ruler is straight and doesn't have too much round areas like the cylinder. I measurd the cylinder and the outer diameter is about 24.75 mm where it should be 25 mm. |
Cylinders and Cubes are fine but as soon as you print anything slightly
complex it starts getting the 3-5deg tilt. (Note that it use to also print
on a angle with cubes but the newer version has fixed it)
Number of layers isn't a factor it starts to print on a angle almost strait
away.
…On Sun, Dec 11, 2016 at 3:57 AM, Gitty-Hub ***@***.***> wrote:
I tried a cylinder and that does not look so bad. But now I'm printing the
calibration ruler from this thread and I can see already the structures are
printed with an angle to the left. So I don't know why sometimes this
happens and sometimes not, the ruler is straight and doesn't have too much
round areas like the cylinder. I measurd the cylinder and the outer
diameter is about 24.75 mm where it should be 25 mm.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#31 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ASp3JuKt5GaenzdGrF14_FlfytFQgSrJks5rGr3ugaJpZM4ImKCm>
.
--
Thomas Leahy
Unit 3 / 121 Newmarket Rd
Windsor QLD 4030
1800 730 552
|
Hm, I am printing with the same transcoder on an UP Mini and on an Cetus3D fairly complex things and I cannot see any of the reported issues. So this seems to be UP Box specific, but the only difference in the code are some defaults for e.g. steps per mm in X,Y,Z ... so I wonder how to further debug this issue. |
Shit! I have to agree, now I printed an object with this issue on an UP mini sliced with S3D... So at least I can reproduce the issue. |
I see the project has been forked by somebody from Tiertime.. And at Cetus kickstarter there's a comment that Cetus Studio will have gcode (can't find it in the software yet). I hope that the issues can be fixed :-) |
@Gitty-Hub I am not aware that Tiertime uses this for their GC transcoder. I doubt it since they have other professional printers with such support for quite some time. The idea behind open source projects is also about contribution. The authors are not paid for this work, it is our enthusiasm driving this. So far we are stuck with this issue, so some help would be greatly appreciated - hoping alone won't fix it. If you can take a look yourself or you know others with high interest, may help to move forward with this. |
Well, they now seem to have some issues with it in Cetus software - errors in size and direction that sounds a bit like the last rounding errors in this project. And they also call it a transcoder which is a coincidense. I think it would be quite funny if they use this work to offer gcode to their printers. |
This issue seems not to be related to the rounding issue. Rounding issues on the movement would be highly dependent on the content printed. So far this seems not to be related in such a way.
It would be helpful to analyse the error in more detail, e.g. at which point it exactly deviates. This may be visualized by capturing the position data during print and comparing to the original.
Helping is not necessarily a coding issue, since the program is doing what we want, but the printer is somehow not understanding exactly what we believe to tell it...
…-Kai
|
But how can they be having problems with the Cetus g-code software surely
they know how their printers are working.
…On Wed, Jan 18, 2017 at 12:26 AM, kscheff ***@***.***> wrote:
This issue seems not to be related to the rounding issue. Rounding issues
on the movement would be highly dependent on the content printed. So far
this seems not to be related in such a way.
It would be helpful to analyse the error in more detail, e.g. at which
point it exactly deviates. This may be visualized by capturing the position
data during print and comparing to the original.
Helping is not necessarily a coding issue, since the program is doing what
we want, but the printer is somehow not understanding exactly what we
believe to tell it...
-Kai
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#31 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ASp3Jus3VLgO2AfTVS1FPC_k3JB0-EReks5rTM-mgaJpZM4ImKCm>
.
--
Thomas Leahy
Unit 3 / 121 Newmarket Rd
Windsor QLD 4030
1800 730 552
|
Seems the Cetus Studio has gcode working.. Is there any progress and hope for this tool here? I would love to print gcode well on my Up Box too. Last thing I read was there were some new developments and discoveries by Maik.. |
Hi, I just began using this utility today with my Up Plus 2 and this X-axis tilt issue is immediately apparent. Did anyone ever find the underlying cause? |
I started messing around with this and made a USB capture of the Up Studio software's output. After converting this from umc to gcode with |
I spent some hours today looking at a comparison between an original gcode file generated by Cura and the Example:
This corresponds to a movement of exactly 19.5mm on X (or Y as it's called in the convg'd output), which is 12,558 physical steps (6,429,696 512th-steps) on my Up Plus 2 which is 644 steps per mm. The
When using the cmd4 math from the codebase, this comes to 6,325,727 512th-steps (that's ignoring the acceleration), plus acceleration adjustments on the first and last command:
This is 6429696 - 6361337 = 68359 = 0.20731mm short of the true distance. When rendered back into gcode by
which is I am wondering whether these math errors are contributing to the error in the layer starting positions. Both X and Y axes are affected by the tilting issue, although it seems X is more substantially affected than Y for some reason. I would like to know where these formulae came from if anyone knows. |
Another question is why does Up render |
Was testing out the new release v0.7.0 and it is printing at a slight angle 3-5 degrees. Raft was solid and I don't get this issue through the UP! Software.
gcode and umc file are in the zip tensile-specimen.zip
The text was updated successfully, but these errors were encountered: