Reprap Host – Gotcha’s

There are a number of “features” in reprap host that make it confusing to use. So much so that most people seem to have given up on it and now recommend either using Skeinforge or Repsnapper.

  • There are a number of “legacy” preferences, that at first look, you would expect can adjust things like the steps/mm however these settings are really edited by modifying the firmware
  • The MaximumFeedRateX and MaximumFeedRateY parameters do effect the feedrate, but only when using the axis jog dials. When printing, or using the Home button (in the same screen as the jog dials!) The firmware settings are used.
  • The Extruder control tab seems to start off with the extruder set to reverse despite the reverse checkbox being un-checked. You have to check and uncheck it to get it to be correct.
  • The feed-rate of the Extruder is constrained by the  Extruder0_FastXYFeedrate setting which would be expected, however its also constrained by the MaximumFeedRateX and MaximumFeedRateY Global preferences. This is quite annoying for me, because I have such a low feed rate (200mm/min) so if I want to use the XYZ jog dials I have to set the preference to 200mm/min, but then if I want to prepare the extruder by loading it up with filament, I have to remember to go and change all the preferences to 3000mm/min
  • By clicking various combinations of the ramp and switch heat on/off button the text on the button can say anyone of the following:
    • Switch heat on
    • Switch heat off
    • Switch heater off
    • Switch heater on

    Also because the ramp button does not properly change the up/down state of the heat button by playing around you can get various confusing combinations of state compared to the text that tells you what the state will be when you press it!

  • The Ramp button is only really needed for drying cement, (i.e. part of the extruder manufacturing process) Its really confusing to have this button on the tab at-all, especially in combination with the above feature.
  • The Layer height preference must be set the same for all extruder’s. If different settings are used for each extruder the software makes a calculation error and starts the print at Z4.0 i.e 4mm above the bed! This one caused me a lot of pain recently as I had no clue as to why the gcodes being generated would be wrong. it was only by chance that I ran reprap from the command line and noticed an error message saying that they were different, and luckily guessed that this was the cause.
  • The documentation suggests that by changing InterLayerCooling to false and setting Extruder0_CoolingPeriod to -1 that the machine will not return to the home position between each layer, however looking through the source code it is apparent, that it is impossible to disable Homing. The software needs to be fixed to achieve this.
  • Finally Reprap host is incredibly slow, its about 10x slower than Skeinforge, and Skeinforge is about 10x slower than Repsnapper, making Reprap host 100x slower than Repsnapper! I should think the reason for this is probably the use of TeMpOrY gcode files rather than using memory mapped files or something else. When I run reprap host, my system usually grinds to an unusably slow rate for 10 mins or so. Repsnapper generates gcode for the same file in a number of seconds.

Finally here is a screenshot of the wonderful Repsnapper (since I had never seen a screenshot before using it)

Welcome to the future.

23 thoughts on “Reprap Host – Gotcha’s”

  1. Thanks for noticing RepSnapper :o)

    RepSnapper is still in early beta, mostly because the gcode generation is not perfect yet. Mostly, the “fast” mode sometimes makes some errors in the gcode. The “Perfect” mode is almost perfect, but does not allow you do to multiple shells (outlines around the infill) and the perfect mode is too slow. Also the current version uses GPC (general polygon clipper) library, which uses another license then the reprap project.

    I am working on these issuse, but have yet to find/make a reliable “straight skeleton” routine that’s fast. If one of the readers has some code that’ll do this, mail me :o)

    When I get these details fixed, there will be a general release of RepSnapper.

    If you want to try it anyway, you can get a windows executable here : http://svn.kulitorum.com/RepSnapper/MSVC/Release/ Or you can check out the code with Subversion from http://svn.kulitorum.com/RepSnapper/ It compiles on windows and linux. Someone port it to OSX, please 🙂

    Regards,

    Kulitorum

  2. You are very modest, I was very impressed with Repsnapper. I did have a problem compiling the latest SVN version on Linux though, undefined references to DWORD, or something like that. I spoke to Joaz about it and he said he will fix it sometime next week. I rolled back to r208, which compiled no trouble. The only other problem was that Repsnapper segfaults when you try to read binary STL, I use openscad to generate STL’s and its output format is ASCII STL so support for ASCII STL’s in Repsnapper would be nice. It would also be nice if the shield and homing code, could be configured using a GUI, rather than the “Next Layer” tab. Also the extruder temperature, again would be nice in the GUI. Having access to variables within the “Next Layer” code would also be a nice touch, (The three that spring to mind are $LayerIndex $MaxFeedRate and $ExtruderTemp)

  3. Mail me one of your ascii files, and I’ll fix it in a few days.

    What do you want $LayerIndex and that for? – you can’t script the start, next and end layer code anyway (Or we could turn them into LUA, if that’s any good)

  4. Turning the “Next Layer” text box into a scripting language (obviously LUA since that is already in repsnapper) is exactly what I was hoping for. The scripting language would allow access to variables that would be populated by the gcode generation engine i.e. $LayerIndex would just be so that you could beautify the gcode with comments in the form

    ;————— Layer [ $LayerIndex ] of [ $LayerCount ] ————-

    That is obviously the most useless example, $MaxFeedRate would allow you to make your own customized dynamically generated shields and that sort of thing.

  5. ok, I’ll take a look at it.

    I think I’ll make it something like this:
    ————————————–
    G1
    G1
    …..

    base:AddText(“G1 F2600n”)
    z=0
    while(z<47) do
    s=string.format("G1 X%f Y%f Z%f F2600 E%fn", x,y,z,e, base::MaxFeedRateXY() )
    base:AddText(s)
    z=z+1
    end

    G1
    G1
    …..

    ————————————–

    That make sense?

  6. Oh, BTW, your STL file loads fine on windows RepSnapper, but parts of it processes badly (like the lower 5 mm) The root of the problem is that there’s several vertices on the same XYZ coordinate, up to 6 at the very same position, and I don’t merge them at load time. I’ll fix this over the next week.

    //Kulitorum

  7. Your script example certainly looks very powerfull, at the expense of making the text less readable. Its a shame lua dosen’t have a way of embedding code within text, such as like PHP.

  8. @Kulitorum

    | Someone port it to OSX, please

    I gave it a shot, but as Giles pointed out, it appears to only build under Windows at the moment, due to use of some Windows-only constructs and system calls; things like use of the win32 WaitForSingleObject() in RepRapSerial.cpp.

    Once it build cleanly under Linux, I might give it another shot – give me a ping.

  9. I found the following portable thread classes making Repsnapper use these in RepRapSerial.h/cpp instead of windows specific events and threads will ease re-porting to Linux. I started to look at this myself, but it would probably be much easier for Kulitorum or Marius since my C/C++ skills are a bit rusty.

  10. Thanks for the reference, but when I start doing multithreaded code, I’ll use OpenMP which is also cross-platform and becomming the standard in almost every compiler out there.

    But before optimizing the code, I need the shrink to work proberly first, and that’s a contonous cause of headaches 🙂

  11. The motivation was not for multi-threading or optimisation or anything
    fancy like that, it was merely to get rid of the compiler errors that
    have been introduced in the latest SVN when compiling on Linux. You use
    WaitForSingleObject() in ReprapSerial.h/cpp amongst other things which
    are very windows specific, I spoke to Joaz about it and he was finding
    it tricky to fix. OpenMP sounds like a good solution in the long term,
    but is there any chance of a quick fix, or will us Linux users just have
    to make do with r208 (which is the latest revision that does compile on
    linux)

  12. When repsnapper sends the next command, if it doesn’t receive an “ok” then it just waits forever. Kicking it gets it moving again 😀

  13. Thanks for the help
    Is there a method to make the extruder back up a few counts at the end of a line to stop nozzle drool and stringy parts?

    I there a tool to edit the Gcode start middle and end scripts or do you just have to modify the xml file like I have been doing?
    Jeff

  14. I don’t think there is any extruder reversing feature in repsnapper currently although I have heard that its a planned feature. There is however already the ability to edit “Start” “Next layer” and “End” GCode sections within the GUI, so if thats not available for you maybe you have an older version of the software.

  15. I am getting random communications errors that send the machine to destinations unknown. If you let it run until it gets there it will come back and start printing again. It is not in the Gcode and we swapped out the main board. I am running the march release of 5D firmware and Repsnapper from the link listed above. Any ideas?
    Jeff

  16. Well repsnapper and the Java host software send checksums with each line of GCode. When communication errors occour, the firmware on the motherboard will detect that the checksum doesn’t match the corresponding line of GCode and request that the GCode be resent. So I have no idea what could be causing your problem, but I don’t think it can be related to communication errors. Probably the best place to ask these types of questions is in the #repsnapper irc channel on irc.freenode.net

  17. Giles
    Thanks for your help
    I’m still at yahoo groups, I didn’t figure out how to get into the irc repsnapper channel. Could you spell it out for me! We flipped the motherboard ( same march copy of 5d) the laptop and the stl file. It still comes up with random moves that aren’t in the g code. It has happened on the X,Y and E axis so something has to be telling it to go there.
    Thanks again
    Jeff

  18. I can only assume that you have never used IRC before…? If not then you will need to get an IRC client. There is mIRC on windows, but also Pidgin supports IRC. You will have to use google and the internet as a resource to figure out how to setup your IRC client because it would take me too long to explain here. Once you are familiar with your IRC client, just connect it to the irc.freenode.net server, and then join the #repsnapper channel. You will then be able to have a live chat with the developers of repsnapper if they are around, also there is of course the #reprap channel to try. Good luck

Leave a comment