The main idea behind this project is that it should be easy to build, and quite forgiving in the actual placement of components. Most of the complexity will be in the software to compensate for the less than ideal physical construction.
I am planning to leverage on some publications where optical mice were used to provide odometry, which was used mainly in robots, but this 3D printer is basically a robot turned upside down. :-)
The holonomic drive has an extra degree of freedom (i.e. rotation) that might be interesting to explore, if it proves to be an advantage.
For the first prototype at least, my idea is to use an Arduino Due to parse the G-Code directly, and translate it to the physical movements of the 3D printer, handling all the real time stuff. The Due was chosen as I expect to be doing a lot of trigonometry, and I believe that using an 8 biter would pose an extra challenge since my time is heavily constrained (I can always try to optimize things later if time allows).
Then to make it standalone I plan to use an Raspberry Pi to host a web server through Wi-Fi so we can submit prints or otherwise control the printer using a tablet or smartphone for instance.
The following system diagram tries to better illustrate what was just described.
Truth be told I am not a software guy and I like to program mostly low level stuff (e.g. driving the hardware), so I'll try to offload the GUI portion to some already created open source project if possible. The OctoPrint project (http://octoprint.org/) seems to be a great candidate so I'll try to have my interface compatible with it (if I just keep it RepRap compatible, I believe it should be enough).
As the complete project will be fully open source anyone can improve on my shortcomings as they see fit. I am releasing all the code that I am developing under the MIT license.
Independently of the end result of this sort of experiment I hope to have at the end a few libraries that could be useful to other projects as well, namely for creating (3D printing) robots using holonomic drive systems, and optical mice as feedback... ;-)
A short video explanation of this project can be found at: