Welcome! Log In Create A New Profile

Advanced

Skeinforge Powwow

Posted by Enrique 
Re: Skeinforge Powwow
June 14, 2009 01:17PM
Hi Enrique,

Might it be possible to use Adrian's 4 or 5D firmware in conjunction with skeinforge? I think it mostly needs to be able to translate the travel distance times the feed rate into an E value. I personally hope to be able to use best of both world: both the latest firmware and skeinforge.

The newest version of Adrian's firmware seemed appealing because it handles steppers based on interrupts and acceleration so that the machine can run more smoothly (plus buffered moves seems to be implemented fine, as in Zach's and Marius Kintel's branch). Because we've created a new extruder design based on a small stepper (with pinch wheel), but most firmware version expect a DC motor for extrusion. I've been trying over four different extruder designs in the last year and non of them worked satisfactory until this one. Now the software is the problem, since the M101-103 and M108 codes have been removed in the current version of the main firmware. So there's no backwards compatibility there.

I tried to re-introduce the M101-103 and M108 codes into the latest firmware¸ but that's not as easy as it seems. Another approach is a script that post-processes G-Code into easier-to-process G-Code for a RepRap interpreter. It will save the firmware a lot of calculations if we did that by default No pythagoras calculations should be done by the firmware. All positions should be step based instead of milimeter/inch as well. Neither should be handled in the firmware, IMHO.


Regards,

Erik de Bruijn
[Ultimaker.com] - [blog.erikdebruijn.nl]
Re: Skeinforge Powwow
June 15, 2009 01:06AM
While on the subject of RepRap upgrades, has anyone done much on multiple material files with skeinforge? Now RepRap is extruding metal, it'd be nice to give it a try.

Right now though, still plagued by XY reset-to-zero and excessive Z speed problems. Will amuse self by seeing how badly the Java GUI Gcoder generates smoke smiling smiley

Vik :v)
Why such large starting Z values?
June 16, 2009 01:19AM
When I build a motor bracket I get the following at the start of the gcode:

G21
G90
G28
M103
M105
M108 S210.0
G1 X6.19 Y-4.46 Z27.36 F1440.0

Now, correct me if I'm wrong (a fair bet) but moving the Z axis somewhere "up there" as the first thing seems a little unusual. Any ideas what might cause this to happen? Is there something I need to do to ground my object at Z=0 ?

Vik :v)
Re: Why such large starting Z values?
June 16, 2009 02:35AM
The z-values come from the STL file. I don't know if they can be changed in Skeinforge. You may have to move the object before exporting it.

My s/w ignores the absolute value in the g-code and offsets to where I want the object to be built.


[www.hydraraptor.blogspot.com]
Re: Why such large starting Z values?
June 16, 2009 03:40AM
Right, I see. But the viewer only shows the layers so I didn't notice it was orbiting overhead...

Next, I need to figure out why it is driving the Z axis so damn fast. A peek at the gcode suggests there is no special slow movement for the Z axis between layers. Any ideas where to start looking?

Vik :v)
Re: Why such large starting Z values?
June 16, 2009 09:28AM
Vik,

Have you tried to look at the firmware's steps per mm setting for the Z axis?

Also what is in your start.txt file in Skeinforge?

Bruce
Re: Why such large starting Z values?
June 16, 2009 01:55PM
Z axis steps/mm is set to 333.333 - seems to work OK with the Java GUI.

start.txt - hmm... I don't seem to have one of those.

Vik :v)
Re: Why such large starting Z values?
June 16, 2009 07:27PM
The zipped version of Skeinforge now looks for a homing.txt file, assuming that "Activate Home" in home.py is on, which is the default. The zipped version is attached and at:
[members.axion.net]

Vik,

To set the bottom altitude, make sure that "Activate Raft" is on & "Add Raft, Elevate Nozzle, Orbit & Set Altitude" is on. Then the bottom will be moved to the "Bottom Altitude" preference. There is no way to set the maximum z speed, I'll probably add that in a while. All you could do now is set the speed in general really slow, and reduce the extrusion flow rate accordingly.

Enrique
Attachments:
open | download - reprap_python_beanshell.zip (513 KB)
Re: Why such large starting Z values?
June 16, 2009 07:48PM
Awesome. I look forward to giving it a bash tonight (testing some Java GUI fixups too smiling smiley

Once we can set the Z speed I can get "hop" going. My nozzle tends to plough the surface somewhat, and occasionally snags hard enough to go mining...

As an aside, the Java GUI only moves in 2D at a time - Z movements are done separately. Presumably that's a good approach for the Z speed mods?

Vik :v)
Re: Skeinforge Powwow
June 17, 2009 02:47AM
Hi,
I am using Art of Illusion and I think have all the necessary plug-ins. My computer skills are limited so I was wondering if you could tell me how to transport the 3-D shape I am drawing in AoI into Gcode for my Reprap. My attempts so far is to use the Join Objects plug-in and then the Skeinforge or Skeinview plugins, and I keep getting an error message.
Thanks,
Lewis
Re: Skeinforge Powwow
June 17, 2009 11:20AM
Hi Lewis, you can go from AoI to STL file format with a STL export. You can search this forum or look on the RepRap wiki how to do that. You need to install an STL plugin for AoI. It is then added to the menu of export options. When you have the STL file, you can use it in skeinforge, although it seems to prefer GTS (GNU TriSurface) which is technically superior but not as common.


Regards,

Erik de Bruijn
[Ultimaker.com] - [blog.erikdebruijn.nl]
Re: Skeinforge Powwow
June 17, 2009 03:04PM
You really want to use the boolean operations to make a union rather than a Join. The best way to do this is to use the CSG Evaluator plugin. It lets you select a whole bunch of objects and then Union them rather than having to go through individual objects. Plus you can rebuild any changes with a single click.

Instructions [objects.reprap.org]

Doing a plain join creates all sorts of internal walls and may well end up with something that is not a regular solid - one with a separated inside and outside.

Vik :v)
VDX
Re: Skeinforge Powwow
June 17, 2009 03:16PM
Hi all,

... actually i managed to make my first attempts with skeinforge generating path-information for LOM-fabbing (Laminated Objct Modelling) with milling or laser-cutting thin sheets and stacking them to a solid object.

In this blog ( [builders.reprap.org] ) i documented a test with manually drawing the different layers and then laminating and milling them one ontop of the other.

Now some progress: - atached is an output from skeinforge reimported in my CAD/CAM for further processing with a 0.3mm-mill or a laser-cutter-head.

What's more to do is hatching the inner and outer areas for dismantle the object from the surrounding/supporting material.

For a special LOM-fabbing mode, where i cut every sheet separate and laminate it manually on top of the body, i need some changes in the skeinforge output. Here i have to work through the code or have to wait until Enrique finds some time for helping me ...

Viktor
Attachments:
open | download - Becher-LOM1_kl.jpg (108.1 KB)
Re: Why such large starting Z values?
June 17, 2009 10:15PM
Is the same trick going to work with the positioning of the object on the X & Y axes? So if I start the object at Y=-10 will it shift it to start at Y=0 ?

Vik :v)
Re: Why such large starting Z values?
June 17, 2009 10:55PM
Heh, interesting result with homing.txt

The homing.txt file I have holds:

G1 X-250.0
G92 X0 ;set x 0
G1 Y-250.0
G92 Y0 ;set y 0

Which works.

Something changes it in the final Gcode file to:

G1 X-249.84 Y28.32 Z0.95 F4320.0
G1 X-249.88 Y28.21 Z0.95 F1440.0
G92 X0 ;set x 0
G1 X-249.88 Y-249.84 Z0.95 F4320.0
G1 X-249.76 Y-249.89 Z0.95 F1440.0
G92 Y0 ;set y 0

which does not work. For reasons I do not fully understand it sends the carriage on a little trip to Xmax+1 ...

Vik :v)
Re: Why such large starting Z values?
June 17, 2009 11:34PM
I've tested this using a couple of sed scripts. If I fix the final skeinforge gcode up it gets the zero-seeking stuff done in a way that works on a real reprap:

cat your_skfile.gcode |sed "s/G92 X0.*/G1 X-250.0\nG92 X0 ;set x 0/g"|sed "s/G92 Y0.*/G1 Y-250.0\nG92 Y0 ;set y 0/g"> fixed_file.gcode

Maybe the homing code needs to be further down the chain?

Vik :v)
Center x & y
June 18, 2009 02:44AM
The zipped version of Skeinforge now looks for a homing.txt file, at almost the end of the chain, after fillet. The zipped version is attached and at:
[members.axion.net]

Vik,

To set the x & y centers, make sure that "Activate Multiply" is on in multiply.py. Then set the "Center X" millimeters preference and the "Center Y" millimeters preference.

Enrique
Attachments:
open | download - reprap_python_beanshell.zip (513.1 KB)
Re: Center x & y
June 18, 2009 04:44AM
That was quick! I'm being dragged to bed now, but tomorrow is a research day smiling smiley I'll test it when I wake up.

Vik :v)
Re: Center x & y
June 18, 2009 03:17PM
OK, tested. Looks like it works. Now to fix the pesky Z axis speed and I'll be able to print something again smiling smiley

I'm just thinking of a quick hack to keep track fo the Z parameter, and when it changes I'll insert

G1 Z F20

before the actual 3-axis movement command. Call it zstaging or somesuch.

Vik :v)
behold trouble
June 18, 2009 04:53PM
If I modify cool.py to track the Z axis and inset a slow move:

def addHopUp( self, location ):
"Add hop to highest point."
if location.z != self.highestZ:
self.addLine(";G1 F20.0 ;Low speed for Z move")
self.addLine(";G1 Z%s" % (self.highestZ))
locationUp = Vector3( location.x, location.y, self.highestZ )
self.addLine( self.getLinearMoveWithFeedrate( self.travelFeedratePerMinute, locationUp ) )

Then it outputs code that while not perfect does shift the Z axis properly:

G1 X6.55 Y3.93 Z25.01 F480.0
M103
G1 F20.0 ;Low speed for Z move
G1 Z25.352
G1 X6.55 Y3.93 Z25.35 F1200.0

The problem is that trying to display this code in "behold" produces:

File /home/vik/Playground/tamiya_motor_bracket.stl is being chain exported.
The extrusion fill density ratio is 0.646
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1417, in __call__
return self.func(*args)
File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/preferences.py", line 970, in execute
self.displayPreferences.execute()
File "./skeinforge.py", line 312, in execute
writeOutput( fileName )
File "./skeinforge.py", line 283, in writeOutput
pluginModule.writeOutput( fileName )
File "/home/vik/skeinforge/skeinforge_tools/export.py", line 149, in writeOutput
analyze.writeOutput( suffixFilename, gcodeText )
File "/home/vik/skeinforge/skeinforge_tools/analyze.py", line 47, in writeOutput
pluginModule.writeOutput( fileName, gcodeText )
File "/home/vik/skeinforge/skeinforge_tools/analyze_plugins/behold.py", line 176, in writeOutput
displayBeholdFileGivenText( gcodeText, beholdPreferences )
File "/home/vik/skeinforge/skeinforge_tools/analyze_plugins/behold.py", line 127, in displayBeholdFileGivenText
skein.parseGcode( gcodeText, beholdPreferences )
File "/home/vik/skeinforge/skeinforge_tools/analyze_plugins/behold.py", line 443, in parseGcode
self.parseCorner( line )
File "/home/vik/skeinforge/skeinforge_tools/analyze_plugins/behold.py", line 421, in parseCorner
self.linearCorner( splitLine )
File "/home/vik/skeinforge/skeinforge_tools/analyze_plugins/behold.py", line 368, in linearCorner
location = gcodec.getLocationFromSplitLine( self.oldLocation, splitLine )
File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/gcodec.py", line 163, in getLocationFromSplitLine
getDoubleFromCharacterSplitLineValue( 'Z', splitLine, oldLocation.z ) )
File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/gcodec.py", line 69, in getDoubleFromCharacterSplitLineValue
return float( splitLine[ indexOfCharacter ][ 1 : ] )
ValueError: empty string for float()
(reverse-i-search)`less': less corner_bracket.gcode vik@eegret:~/skeinforge$

Wassup?

I'm bodging round this for testing by creating the Z control commands with comments in front of them, then stripping the commenting out with vi smiling smiley

Vik :v)
Re: behold trouble
June 18, 2009 06:22PM
Vik,

The error occurred because in the line:
G1 F20.0 ;Low speed for Z move

skeinforge decoded it, in part, into "Z" and tried to turn the nonexistent part after into a float. It expects lines like:
G1 Z1.23

which it would decode, in part, into "Z1.23" and turn that into "1.23".

Skeinforge now checks to see if after a character the string is empty. The new version is at:
[members.axion.net]

For a safe comment, enclose it brackets. So a line like:
(Low speed for Z move)
G1 F20.0

would be fine.

Enrique

Edited 1 time(s). Last edit at 06/18/2009 06:24PM by Enrique.
Re: behold trouble
June 18, 2009 06:54PM
Thanks! I'll just spread the comment out then.

I just tried out the new Z speed control and managed to successfully print a Tamiya motor bracket for Simon.

Now to do the next bit for him.

Vik :v)
VDX
Re: Skeinforge Powwow
June 19, 2009 05:28AM
Hi Enrique,

when using inset i noticed some errors where skeinforge 'forgot' lines or added some jitter when lines come to close.

This occured with "Extrusion Perimeter Width over Thickness (ratio):" set to 1.5 (default), -1.2 or 1.0 (but then at different layers and in different ways)

I've atached some images with jitter, 'forgotten' areas and the neighbouring layers.

While for fabbing with 0.4mm-layers this is only a slight shift in the outline, for LOM it's catastrophic as i can't dismantle the object sad smiley

Viktor

Edited 1 time(s). Last edit at 06/19/2009 05:30AM by Viktor.
Attachments:
open | download - truss-side.JPG (51.1 KB)
open | download - truss-jitter.JPG (47.6 KB)
open | download - truss-break1a.JPG (46.5 KB)
open | download - truss-break1b.JPG (42.7 KB)
open | download - truss-break1c.JPG (45.4 KB)
open | download - truss-break2a.JPG (39 KB)
open | download - truss-break2b.JPG (37.7 KB)
open | download - truss-break2c.JPG (37.8 KB)
New Skeinforge error - ZeroDivisionError processing STL
June 21, 2009 02:01PM
I'm getting this one:

File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/intercircle.py", line 458, in isWithinCircles
absolutePosition = self.getAbsolutePosition()
File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/intercircle.py", line 424, in getAbsolutePosition
return self.getPositionRelativeToBehind() + self.circleNodeBehind.circle
File "/home/vik/skeinforge/skeinforge_tools/skeinforge_utilities/intercircle.py", line 455, in getPositionRelativeToBehind
return aheadMinusBehind + rotatedClockwiseQuarter * ( halfChordWidth / abs( rotatedClockwiseQuarter ) )
ZeroDivisionError: float division

The output is generated by BRLCAD and repositioned my Meshlab. It still crashes if the object is not repositioned by meshlab.

STL File available on request.

Vik :v)
Re: New Skeinforge error - ZeroDivisionError processing STL
June 21, 2009 02:05PM
The top might be interesting. Looks like output from getPositionRelativeToBehind

if abs( rotatedClockwiseQuarter ) == 0:
print( self.circleNodeAhead.circle )
print( self.circleNodeBehind.circle )


File /home/vik/Playground/angled_extruder_filament_holder.stl is being chain exported.
(45.639+5.518j)
(45.639+5.518j)
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.5/lib-tk/Tkinter.py", line 1417, in __call__
return self.func(*args)
...

Coincident nodes?

Vik :v)
Re: Skeinforge Powwow
June 26, 2009 10:47PM
Enrique Wrote:
-------------------------------------------------------
> Any questions, suggestions or
> comments about skeinforge should be posted here or
> emailed to me at:

Is there, and if there isn't how hard would it be to implement (I do not speak python or I'd try to do it myself) a way to have different speed for different build stages? Same thing for extrusion PWM.

e.g.
- raft (base/interface) speed and pwm number
- object first layer outline speed and pwm number
- object first layer fill speed and pwm number
- object "other" layes outline speed and pwm number
- object "other" layes fill speed and pwm number

As for example I want to build raft slowly, then slightly faster but with higher pressure from extruder (higher pwm) the first layer and then lot faster for other layers.... attm I edit gcode files manually to achieve this but would be nice to have options in skeinforge smiling smiley

Another feature request, skeinforge to load multiple files at once (gts or stl for e.g.) or multiobject stl where each object uses separate settings smiling smiley

Example, the wine glass, I want "base" to be printed using speedX and temperatureX, then the "handle" I want to print slower using much lower temperatureY with slower extrusion rate and with fan on, then the "cup" I want to print with another temperatureZ and speed/extrusion rateZ ... I could easily model this as 3 separate objects ...
Re: Skeinforge Powwow
June 28, 2009 08:46PM
I just want to do a single, 1-layer zig-zag raft. What's the magic for that? Last time I tried it messed up a lot. I think I might have had some parts out of bounds on X & Y though.

Vik :v)
Re: Skeinforge Powwow
June 28, 2009 10:23PM
arhimed,

For skeinforge to execute multiple files at once, in polyfile choose "Execute All Unmodified Files in a Directory". While that is chosen, skeinforge will execute all the unmodified files in a directory which the chosen file is in. An unmodified file just means something like Screw.gts, rather than Screw_fill.gcode or Screw_raft.gcode.

For changing the PWM number, I do not want to do that because I would rather gradually change the feedrate and flowrate together. The PWM setting is related to the flowrate, but is not directly proportional to the flowrate. I will wait to implement slowdown in cool, after more extruders are using rotation speed control rather than PWM voltage control. So I will put that feature at the end of the to do list, which is currently at least seven months long.

In the meantime, in theory when extruding the wineglass, cool.py should not extrude for a while on the small area wine glass stem to give it time to cool. By playing around with the settings in cool, you may get settings that reduce the melting or decrease the time without extruding. If you do find better settings, post them and if there are objections I'll eventually make them the defaults.


Vik,

The setting "Base Layers (integer)" in raft.py sets the number of base layers in the raft. The settings "Interface Layers (integer) sets the number of interface layers. The base is fat and the interface skinny. So if you want one fat layer, set Base Layers to 1 and Interface Layers to 0. If you want one skinny layer, set Base Layers to 0 and Interface Layers to 0.


Enrique
Re: Skeinforge Powwow
June 29, 2009 01:42AM
Enrique Wrote:
> For skeinforge to execute multiple files at once,
> in polyfile choose "Execute All Unmodified Files
> in a Directory". While that is chosen, skeinforge

Already figured that out, but what I'd like to achieve is to have different settings for different stages of build (the PWM and wineglass was only the example).

The cool.py does help a bunch as with "minimum layer time" the layers that are small (e.g. handle of the wine glass) get time to cool ... thing is, just like making break after every layer reducing extrusion rate a bit and increasing speed a bit would also result in good print but the time to print would be much shorter.

So, to summarize, I do manage to get the good print (with PP mostly as I'm out of ABS and I hate HDPE) but I'm trying to increase the print speed keeping the quality hence I'd like to be able to make a full set of parameters for different parts of the print smiling smiley

As for the PWM for extruder control, BfB v3 uses PWM value to set RPM of the extruder stepper (PWM value divided by 10 - [rapmanv3.blogspot.com] - M108 S400 Set Extruder speed to S value/10 = 40rpm )

thanks a bunch for a great product
bogdan
Re: Skeinforge Powwow
July 14, 2009 01:34PM
I'm having the same problem since today on both of my Skeinforge installs that used to work. I'm on OsX and I did a series of OS updates this week, could that be the problem? This is what I get in the terminal:

Exception in Tkinter callback
Traceback (most recent call last):
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/lib-tk/Tkinter.py", line 1403, in __call__
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/skeinforge_utilities/preferences.py", line 985, in execute
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge.py", line 312, in execute
    writeOutput( fileName )
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge.py", line 283, in writeOutput
    pluginModule.writeOutput( fileName )
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/export.py", line 142, in writeOutput
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/unpause.py", line 75, in getUnpauseChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/home.py", line 92, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/fillet.py", line 240, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/oozebane.py", line 112, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/wipe.py", line 100, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/hop.py", line 87, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/stretch.py", line 102, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/cool.py", line 103, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/clip.py", line 91, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/comb.py", line 97, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/tower.py", line 101, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/raft.py", line 224, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/speed.py", line 113, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/multiply.py", line 93, in getMultiplyChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/fill.py", line 365, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/inset.py", line 153, in getChainGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/preface.py", line 91, in getGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/preface.py", line 291, in parseGcode
  File "/Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/preface.py", line 208, in addInitializationToOutput
AttributeError: PrefaceSkein instance has no attribute 'layerThickness'
The file /Users/3s/.skeinforge/profiles/extrude_ABS/analyze.csv does not exist.
The default preferences for analyze.csv will be written in the .skeinforge folder in the home directory.
The file /Applications/SKEINFORGE/skeinforge_tools/profiles/extrude_ABS/analyze.csv does not exist.


The strange thing is that Skeinforge is not located at /Users/3s/Desktop/reprap_python_beanshell-2/skeinforge_tools/ It used to be but not anymore. I tried a newer version, and deliting the .skeinforge folder in my home folder. I dont get whats going wrong here. Used to work. Any ideas, I'm no hero at python.
Sorry, only registered users may post in this forum.

Click here to login