Skip to Content


Monthly Archives: April 2013


First to File? Nah, First to Blog!

As much as I dislike patents and the culture of intellectual property, the cold hard fact is that patents are real and they are here to stay. Now, there are a few ways to handle this – one is to completely ignore them and do what you want anyway. Another way is to use the system to defeat itself. Now, the patent system has the concept of prior art built into it. I’m not a lawyer but my understanding is that the minimum requirement for creating prior art is to publicly publish it. There is probably more beyond that to make it more visible, and if anyone has suggestions on an easy way of accomplishing that, please let me know!

Like most people out there, I sometimes have more ideas than time to implement them. So instead of keeping those ideas locked in a notebook somewhere unaccessible and not serving a purpose, I’m going to release them into the world as public domain in the hope that they might inspire, or at a very minimum keep an idea from being patented. I’m not claiming that these ideas are good, or that they are even new. Heck, some of them might even be patented already. They are just ideas in my head that it’s about damn time I put down on (digital) paper. Feel free to discuss, critique, or offer suggestions that expand on these ideas in the comments.

You can do whatever you like with these ideas, except for attempting to patent them yourself. It is my sincere hope that by releasing these ideas, more awesomeness and excellence will be brought into being. Furthermore, I hope that I might inspire others to similarly share their ideas to build a body of ‘protected’ ideas that are protected not by ownership, but by virtue of specifically being released into the public domain for use by anyone. The internet has shown us that the cost of sharing ideas is close to zero, whereas the benefits of collaboration are immense and very tangible. Why hoard your ideas like a jealous miser when it is impossible for a single human, or even a single corporation to act on every interesting idea that it generates?

Idea 1: 3 Point Planar Bed Leveling for 3D Printer or Other Digital Fabrication Device.

One of the biggest problems with 3D printing is keeping the build surface plane aligned with respect to the XY axes plane. Most printers implement this with a bed on adjustable springs. My idea is to add 3 buttons to the edges of the build platform. After the printer has homed to a known position, it moves to trigger each button with the extruder nozzle. The z-height of each triggered button is recorded, and the plane of the build surface can be calculated. During printing, the Z axis position is automatically adjusted to compensate for the build surface. Since most build surfaces use a PCB based heater, it should be trivial to add buttons in the appropriate places.

Idea 2: Adaptive Digital Fabrication with Camera Feedback

3D printing, CNC, lasercutting, and many other digital fabrication techniques are based on a 2D or 3D file format. Most machines simply follow the instructions and produce an object based on a static toolpath. It is possible to add a camera for visual feedback of the process and adapt the parameters of the 3D print dynamically. For example, one could detect if a print is failed, or measure if the initial height of a layer is too high or too low. One could even measure in realtime the extrusion width of a current layer and compensate by increasing or decreasing the amount of plastic extruded. With subtractive processes, one could even scan the base material and automatically determine where to cut the next parts from, freeing the user from panelizing / combining multiple jobs into a single sheet.

Idea 3: Combined CNC + 3D Printing for High Precision Layers

Extrusion based 3D printing is an excellent technology for its ability to create arbitrary geometric shapes of a high complexity. Unfortunately its resolution is not the best, and there are frequently defects on the outside of parts from layer misalignment, warping of the plastic, or other problems. CNC machining on the other hand is a very precise method of fabrication but the type of geometry that can be produced is much more limited. It is possible to combine them into a hybrid process where each layer is extruded, and then a very fine CNC end mill is run along the outside of the layer to trim the material to the exact dimensions desired. This might result in a nicer surface finish, as well as giving higher precision to the part.

Idea 4: Encoder Wheel on Filament Input to Detect Jamming or Stripping

Jamming and stripping of filament is probably the most common failure mode for a 3D printer. Adding an encoder wheel to the filament input will allow the software to check the expected movement of the filament to the actual movement of the filament. If they do not match, then there is likely an error and the machine can pause or go into an error mode. Furthermore, the machine can easily keep track of the amount of filament consumed and pause the job when the end of the filament spool has been reached.

Idea 5: Ultrasonic Welding of Microfilaments

Ultrasonic welding is a technology widely used in the manufacturing industry to weld plastic (and sometimes metals) together. It might be possible to adapt this technology to weld microfilaments together. If so, a printer could be designed that uses a miniaturized ultrasonic welder and a microfilament dispenser to build a 3D printer. Such a printer would have resolution based on the microfilament diameter. If welding of a metal like aluminum wire is possible, layer heights of less than 100 microns might be possible. Furthermore, a metallic microfilament combined with a plastic/non-conductive filament and a pick and place machine could be used to print housings, place parts, and directly wire electronics in the same job.

Idea 6: Pick and Place with Built-In Heated Build Platform

A pick and place machine with an integrated heated bed would allow a PCB to have components placed and then reflowed in a single operation. Such a system would not be good for high volume manufacturing, but could potentially be nice for low-volume prototyping operation.

Idea 7: Flexible Manufacturing Cell with Robot Arm + 3D Printer, CNC, Laser Cutter, Pick and Place Machine or other Digital Fabrication Devices

Digital fabrication machines are great, but it takes human intervention to clear finished jobs, assemble the parts together, and load new material. For 100% automation, a robot arm could be added to handle these tasks. It would require some sort of vision system and communication between each of the devices. The advantage would be having a higher level of automation that could allow higher level parts or even assemblies to be produced without human intervention. This is basically a prerequisite for high level fully automated manufacturing, and it seems obvious that combining purpose built equipment such as 3D printers or pick and place machines with a generic piece of hardware like a robot arm can allow products to be automatically produced using parts from each different machine.

Idea 8: CNC or Laser Cutter with Automated Sheet Loading

A very common method of production with a CNC machine or laser cutter is to cut flat sheets of material such as Acrylic, ABS, or POM. Adding an automated sheet feeder to the machine could allow a machine to operate nearly continuously by ejecting a finished sheet and then immediately loading the next sheet for processing. Software would likely be required to add tabs to hold the cut pieces in place during the unloading process that would be removed by the operator afterwards to break the piece out of the sheet.

Idea 9: EDM Cutting of Nozzles into Special Shapes

This idea is credited to Nicholas Starno. Using Electro Discharge Milling, it might be possible to create nozzles for a 3D printer with custom shapes such as a square. The benefit of a square nozzle would be that the extruded filament would have a square profile. When stacked up layer on layer, square filament would have a smoother surface than a stackup of rounded filament. Nozzles made via EDM milling might also have a better surface finish, as well as giving a much greater freedom in design choices for the geometry of the nozzle body itself.

Idea 10: Flippers to Eject Parts From a 3D Printer

The majority of 3D printers are incapable of continuous operation because they do not have a way to eject the part after a build has been completed. One potential option is to add one or more arms attached to a motor that would eject the part from the machine after it has been completed. Modern build platform surfaces such as polyimide, glass, and carbon fiber allow a print to stick to the platform when it is hot, but after it is cooled down the part can be detached very easily. The mechanical requirements for a system like this could be very low. It is likely that a simple DC servo gearmotor such as those used in RC cars or small robots would be a suitable, cheap, and simple to implement method to achieve this.


BotQueue v0.3 = Webcams, Pausing, and More!

DevQueue - Internets + Digital Fabrication = Win-2

Update: there were a couple bugs with the client. I’ve released a new version you can download here.

Coming quickly on the heels of the last release, the latest v0.3 release of BotQueue adds some really exciting new features that make it much nicer to use. I hope you enjoy this new version as much as I do. Be careful though, the new webcam feature is addictive – you can watch your machine from anywhere you have an internet connection and a display.

If you want to take advantages of the new BotQueue, you’ll need to upgrade the BotQueue client, bumblebee. See instructions at the end of the article for how to do that.

Webcam Support

This is the biggest new feature for BotQueue, and the one that I’m most excited about. The BotQueue client, Bumblebee, can now grab webcam images and upload them to the BotQueue site. This allows you to be able to see whats happening on your bot through the website. That’s right, you can see how your bot is printing from any device (computer, phone, tablet, etc) from anywhere in the world.

I’ve also modified the dashboard and various pages throughout the website to support showing the webcams. The default dashboard view is now large thumbnail images, although you can switch to medium, small, and the old list-style view of your bots. BotQueue will also save the final image of each job so you can have a historical view of how each print turned out. In the future, we’ll even be able to automatically create timelapse videos of each job.

In order to add webcam support, please see the help page with information on how to configure bumblebee to start capturing and uploading webcam images.

DevQueue - Internets + Digital Fabrication = Win-4

Job Pausing

It happens fairly rarely, but sometimes you need to pause a job mid-print to do something. Maybe a nut fell into your print, or maybe you need to reach your hand in to clear out some debris. Well now you can pause and unpause a job from the website. Due to the magic of the internet, the request will filter down to your bot whether you are in the same room or on the other side of the planet. Due to the way this is currently done (polling HTTP requests) the lag is pretty bad (~30 seconds). Future versions of BotQueue will be implementing Websockets and should be MUCH faster.

DevQueue - Internets + Digital Fabrication = Win-1

Bot and User Leaderboard

I’m a huge fan of stats, and once you have stats you can start doing what every primate has done ever – compare him/herself to others! Well, the BotQueue stats page now has a leaderboard for both bots and users. How does your bot stack up? Are you logging the most hour and producing tons of stuff with your machines? Head on over to the stats page and see how you stack up!

Overall Stats - DevQueue-1

Job Commenting

This is a pretty straightforward feature that allows you to make a comment on any job. Use it for making notes on output quality, or just helping you keep track of what is what. If you add a comment, the job detail page will show a badge next to the comments tab to let you know that there are comments when looking at the job.

View Job - material-180x190x8.gcode - DevQueue-1

Upgrading Bumblebee

Since BotQueue v0.3 adds webcam support, and this requires some new software to make it all happen. For Linux, we’ll need to install fswebcam. If you’re on OSX, you don’t need to do anything – the webcam support is bundled in the new version of bumblebee directly.

You’ll also need the new version of bumblebee which can be downloaded here. Simply unzip the folder and run the bumblebee program like normal. You will need to copy your config.json file over and modify it with your webcam information as described in the help area.

If you’re on Raspberry Pi, your bumblebee software has been downloaded using git. For you, upgrading is really easy. Open a terminal to your Pi and enter these commands to upgrade, modify your config file, and then reboot:

sudo apt-get install fswebcam
cd ~/BotQueue
git pull
git checkout 0.3
nano bumblebee/config.json
sudo reboot


* WEB – add ability to make comments on individual jobs
* WEB – fixed a major security flaw that allowed people to see your jobs
* WEB – add organization to job view page – tabs?
* WEB – add canceled status to jobs & remove all calls to delete()
* WEB – Allow pausing / resuming through website
* WEB – create job time logging table to better track time spent in jobs (and be able to handle errors, dropped jobs, and canceled jobs)
* WEB – create script to populate job_clock with times from existing jobs.
* WEB – create job_clock entry on start of job.
* WEB – close job clock entry on job drop
* WEB – close job clock entry on job finish
* WEB – update main stats page to reflect job_clock times
* WEB – update bot stats page to reflect job_clock times
* WEB – update queue stats page to reflect job_clock times
* WEB – added leaderboard to stats page.
* WEB – update time displays to include more digits (eg: 1.2 hours vs 1 hour)
* WEB – add source info for jobs added by url.
* WEB – added webcam display to dashboard, bot, and job.
* WEB – modify dashboard ajax to preload images and then fade-in new content
* WEB – add ajax selector for 4 different views: details, big thumbs, med thumbs, small thumbs
* WEB – add ajax checkbox for turning on/off auto-update.
* WEB – add ajax call to save dashboard style stuff
* WEB – fix top navigation to show what page/area you are at
* WEB – update help instructions to add webcam config info
* WEB – get real default image for bots w/o webcam

* BUMBLEBEE – allow pausing and unpausing based on api status change.
* BUMBLEBEE – added webcam uploading during idle and printing periods
* BUMBLEBEE – fix race condition when workerbee is changing the status of the bot
* BUMBLEBEE – add watermark to each image
* BUMBLEBEE – resize each image to 640×480
* BUMBLEBEE – save each image at 60% quality (jpeg)
* BUMBLEBEE – compile slic3r and update install script


BotQueue Update – Raspberry Pi + Temperature + Dashboard

I’ve been logging quite a few hours lately with BotQueue, and as a result of that I’ve been tweaking and modifying lots of things. I’ve hit a few major goals, so its time for a new release! The new features and reliability stuff make this release extremely usable, and it shows – I’ve logged about 100 hours in the last 2 weeks and plan on adding 2 more printers to my queue to really get some printing capacity going. On a related note, over 1000 hours of printing and CNC cutting have been logged through

More Robust Bumblebee

I’ve done a ton of work to Bumblebee, the client that runs your 3D printer. I live in China, so internet can be spotty at times haha. As a result, I’ve encountered just about every error imaginable – and made Bumblebee tolerant of it. The result is that it is MUCH more reliable. You can either run from github or download the v0.2 release. No new configuration required – just download the new files, copy over your config.json and run the new Bumblebee. Voila, upgraded!

Cancel Jobs From the Web

This was a huge gap in functionality for BotQueue that has been closed. You can now cancel a job from the website and it will notify Bumblebee which will then stop the job. You can take the bot offline, or just clear the printer of a failed job and it will start it again. I’ll be adding pause/play functionality soon as well for even more interactive control of a Bot.

Drop Job - DaYin - butterfly.stl __

New Dashboard

The dashboard has been overhauled with an eye towards the common tasks you encounter when using Botqueue on a daily basis. You can create new jobs/bots/queues, see all the critical information on running jobs (like temperature) as well as upcoming and finished jobs. You can re-arrange upcoming jobs, and you can re-run old jobs. Life is good.

Temperature Logging

This is a feature I’ve been wanting for a while now. Using the awesome Flot library and by pulling the temperature data from the machine we can now log and display temperature data for all jobs going forward. Super helpful if you want to see how a machine is doing, or a job fails mysteriously and you want to see if the temperature was the culprit. It will also now show the temperature data on the dashboard which is very helpful during warmup when the percentage sticks at 0.01% for the first 10 minutes – you can now see the bot heating up from the web.

View Job - butterfly.stl __

Slic3r 0.9.9

In a fortuitous timing coincidence, the new Slic3r has been released. This new version adds some cool features, and if you use BotQueue you can easily upgrade. Just remember to re-export your config from the new Slic3r in order to pick up any new settings in the new version. You’ll need to select the new slice engine and slice config in as well.

Slic3r - About-1

Raspberry Pi Support

I was a bit skeptical at first, but at the prodding of Jnesselr I took the plunge and got a Raspberry Pi. Holy crap, this thing is AWESOME as a machine controller. It’s pretty easy to setup, and once you have it running, it is amazing. I have put one of these babys on each of my machines and it is so awesome to just have Botqueue built in with no computers or extra stuff. Each machine just has a ethernet cable and a power cable. WiFi works, but I couldn’t find a decent dongle so I’m sticking with wired for now. Slicing is a bit slow, but there are plans to address that in the future. The Pi is a great platform, so expect lots more support for it in BotQueue in the future.


More to come

We’ve got a big, long list of awesome stuff to add to BotQueue. In particular, I’m really excited about webcam support, web-based configuration of bots, and an on-deck system to anticipate and pre-slice models to make the whole BotQueue slicing system more seamless and faster. As always, please submit bug reports to the Github issue tracker and remember to Keep it Locked!