I ended up rolling my own Linux distribution (PrintNanny OS) to roll out over-the-air updates and share files/jobs/profiles across a mixed fleet of printer controller softwares (Moonraker API/Mainsail UI, Repetier, OctoPrint).
I ended up rolling my own Linux distribution (PrintNanny OS) to roll out over-the-air updates and share files/jobs/profiles across a mixed fleet of printer controller softwares (Moonraker API/Mainsail UI, Repetier, OctoPrint).
It looks like this runs entirely on a Raspberry Pi 4? That's pretty neat. As far as I know, Obico needs a significantly meatier computer.
The good: It's possible to apply a segmentation model and "mask" expected real-world shape based on a mask extracted from the 3D source files.
The bad: 3D segmentation proposals are expensive to calculate/reduce (imagine rendering a point cloud). The 2D masking experiments I ran were low signal / high noise compared to 2D bounding boxes.
The ugly: Your camera, printer, and slicer object rotation must all be very carefully calibrated and anchored.
I have ideas about how to use stereoscopic cameras to run an automatic calibration routine, but haven't had time to roll out experiments. If you're curious, I gave a talk about PrintNanny's print quality model [1].
Also yep, I run a TensorFlow Lite model and post-processing directly on the Pi. I'm actually working on a blog post about this now! [2]
Besides TensorFlow Lite, the key pieces of technology in the computer vision stack are gstreamer [3], gstreamer's Rust bindings [4], and nnstreamer [5].
[1] https://bit.ly/tf-everywhere-2021-print-nanny [2] https://twitter.com/grepLeigh/status/1553777548378587136 [3] https://gstreamer.freedesktop.org/ [4] https://crates.io/crates/gstreamer [5] https://github.com/nnstreamer/nnstreamer
Keep in mind that PrintNanny's video encoding and neural network pipelines are running on-device, so real-world results favor models that perform well when u8 quantized at 320p resolution. The constraints are part of the fun, but there is a bias towards techniques that retain signal when the model is compressed. Segmentation and depth models naturally lose fidelity in that scenario compared to a dead-simple CNN/SSD pumping out bounding box proposals.
Microphone input is on my experiment list, but I don't think I'll execute on this idea any time soon. I think the mechanical failure detection is "good enough" at the moment, so I'm now focused on stream-lining the experience of managing lots of printers.
Workflow automation (like printing shipping labels or batch QR code labels) and fleet management are at the top of my priority list. The AI is fun and flashy, but it turns out people just need a CRM for 3D printing.
When I was assessing options for over-the-air updates, I evaluated everything between Mender.io (completely managed update service) to building a Coreos distro with OsTree-based patch system. So far Swupdate has felt like the right trade-off between customization and ease-of-use - plus the trail I've walked down feels well-traversed.
[1] https://sbabic.github.io/swupdate/overview.html#double-copy [2] https://twitter.com/grepLeigh/status/1545564418502668289