I am working on a multi gantry project (multiple print heads that move/print individually on the same model),that I would like to implement and would like to get some community feedback on my thoughts. The title already indicates that the project kind of spans across 2 areas, using OctoPrint with multiple printers and also using OctoPrint to manage a multi gantry printer. Sorry if this post gets a bit long, but I hope it explains the concept well enough.
I have come across project Escher from Autodesk to manage a multi gantry printer but the licence of Netfabb comes at a steep price... so I would like to create a fully open source project which uses the normal software that we all already use (Modeling, splicing, firmware). While delving into the topic of multi gantry printers, I have come to the conclusion that OctoPrint could offer the basic needs when combined with plugins and a "conductor" (Autodesk definition of a communication link between each print gantry). The conductor would be the "OctoKraken" that manages each OctoPrint instance (Kraken being the mythological far bigger relative of an Octopus).From a function perspective, a multi gantry printer has a lot of similarities with running multiple printers, thus I believe the OctoKraken project could be ideal for that too.
Ill try to explain the basic idea of the project, starting with 2 "diagrams" of the 2 scenarios, multiple Printers and multi gantry printers. I will then go into more detail after the basic diagrams.
1) Basic printer/software setup
1.1) Multiple Printers
This is a familiar setup where multiple instances of OctoPrint are installed on 1 device e.g. raspberry pi. Currently one needs to setup each instance via the Terminal and manage the plug-ins and connections in each instance separately. OktoKraken would be used to centrally install each instance of OctoPrint and offers links to the webinterface of each OctoPrint without the need of remembering all those port numbers.
Network + +-OctoKraken 1 (eg RaspberryPI 1) + + + +- OctoPrint 1 -> Printer 1 + +- OctoPrint 2 -> Printer 2 + +- Octoprint 3 -> Printer 3 + +-OctoKraken 2 (eg RaspberryPI 2) + +- OctoPrint 1 -> Printer 4 +- OctoPrint 2 -> Printer 5
1.2) Multi gantry Printer
In a multi gantry printer the print bed is stationary while each gantry individually moves on the XYZ axis. Each gantry is setup with its own hardware & firmware (Marlin) just like a normal printer would be. Just as in the multiple Printer scenario in 1.1 each gantry is managed by its own OctoPrint but they communicate via OctoKraken with each other. OctoKraken also manages the gcode files and splits them up for each gantry via plugins.
A multi gantry printer is a bit more complex compared to normal printer setup (shared heated print bed, filament management, tool changers etc.), but with appropriate OktoKraken plugins one could solve this in a way that the entire concept of OctoKraken can be used for multiple Printers and multi gantry printer.
A multi gantry printer will probably also be printing far larger objects with huge gcode file sizes. It would be good if OctoKraken can also asign OctoPrint to specific CPU cores if installed on a server.
Network + +-OctoKraken 1 (Server of multi gantry printer 1) + + + +- OctoPrint 1 -> Gantry 1a + +- OctoPrint 2 -> Gantry 2a + +- Octoprint 3 -> Gantry 3a + +-OctoKraken 2(Server of multi gantry printer 2) + +- OctoPrint 1 -> Gantry 1b +- OctoPrint 2 -> Gantry 2b
OctoKraken is basically a stripped out version of OctoPrint with added functions. On initial installation of OktoKraken one can specify how many OctoPrints will be installed and OctoKraken will do the installation for you. There will be plugins which are specific to Octokraken or OctoPrint and others could be used both on OctoPrint and OctoKraken. The following functions would be built into OctoKraken.
- Setup wizard to manage multiple OctoPrint (installation of multiple OctoPrints instances)
- Central communication handler to OctoPrint
2.1) OctoKraken specific plugins
plugins which only OctoKraken would use
- Central OctoPrint plugin manager - with this plugin one could install any OctoPrint plugin on all the OctoPrint instances managed by OctoKraken.
- Print status plugin - a plugin that shows all connected OctaPrint statuses & printer head positions.
2.2) General plugins for both OctoPrint & OctoKraken
These plugins can be used 1:1 in both OctoPrint and OctoKraken without code change
- Central file management - Uploading & removing files can be managed centrally via OctoKraken and/or OctoPrint using a central file management system. This allows the files to be accessible to any OctoPrint. instance
- Gcode post script editing plugin - This plugin can load various plugins that edit the uploaded gcode. Post script editing could be used to add a purge tower on tool changes, split gcode for a multi gantry setup, add printer specific start & end code...
- Database framework - Due to the complexity of some post editing scripts and further centralization of multiple OctoKraken networks a database system would be useful. Gcode and printer setup can be saved in a database and could be edited from there on. In a multi gantry system there is no need to save multiple gcode files as one could easily communicate which parts of the database get printed by which gantry. OctoPrint, OctoKraken and plugins should share the same database commands independently from what database preferences the end-user has, thus framework(MySQL, sqlite, PostgreSQL ...)
- Conductor plugin- The conductor plugin is used on multi gantry printers and keeps track of gantry movements and send commands to each OctoPrint and manages common hardware e.g. heated print bed etc.
2.3) OctoPrint specific plugins
plugins which only OctoPrint requires in a setup with OctoKraken
- Communication handler for OctoKraken - plugin to enable OctoKraken to communicate commands to OctoPrint. This could be anything from start printing file to getting print status, print head position etc.
I think a project like this could add value to anyone connecting multiple Printers to OctoPrint. I have tested splitting gcode into multiple parts as a PoC for a multi gantry printer and it can be done with a post script editing process. I like the idea of combining that with OctoPrint to make it an even more powerful tool, especially considering all the plugin options that already exist
Any thoughts? Questions?