SplineTravel is currently doing two things: smoothing out travel moves (the original goal), and concealment of seams (which I came up with when fighting communication choke when combining smooth travel and retraction)
Smoothing out travel moves
This is done by computing exit velocity after preceding build move, enter velocity of the next build move, and creating a Bezier-curved travel path that matches exit and enter velocities. The Bezier curve is generated so as not to exceed a user-specified acceleration limit.
Retraction and unretraction are injected into the travel g-code, so that the printer doesn't have to stop moving. There is an experimental support for raising Z during the move, but I couldn't get it work on my printer.
This is done similarly to Slic3r's option "Wipe while retracting", but:
- wipe is being done without changing the speed of head moving over the perimeter
- unretraction is also done while tracing the perimeter.
This is only possible for looped perimeters.
This is the video of the first more-or-less successful print.
Is it worth it?
* smooth travel reduces printer wear... probably =p
* smooth travel reduces noise when printing. substantially. (at least on my PrintBox3D)
* retraction blended into travel improves seams toughness
* blows up G-code size insanely (typical figure is three times, on objects with mostly straight lines this can be much worse a factor)
* increases printing time (while in theory, it should be capable of reducing it)
* It is tricky to get it right. Too fine a tessellation = comm choke. Too rough - and the printer will stop at every joint, then the travel takes forever. This is the main reason, why SplineTravel can't improve printing time.
* in some cases (when there is a cusp in bezier, mostly), my printer stops and thinks for a while. It might be caused by cordinates precision limits. So far, I have no idea how to fight this problem.
* on my printer, combining SplineTravel and Z-hopping proved impossible (due to firmware not being capable of processing XYZ curve, I think). Without Z-hopping, there is ooze all over the place.
* SplineTravel is not very compatible with Repetier-Host's Feedrate slider that adjusts the speed in real time. Well, it works, but running at anything other than 100% causes speed mismatches. Retraction/unretraction blended into curved travel is also confusing Repetier-host, causing it to report wrong filament consumption, not counting layers properly, and visualization issues, and in some cases repetier-host even fails to estimate printing time!
So, SplineTravel was a fun hack, but I don't think I'm going to use it a lot.
All that doesn't apply to seam concealment technique, which seems to be fantastic. More to come on this =)