Thursday, June 16, 2011

Recent Developments and a Few Steps Forward

The project is taking a step in a different direction, before I stated that the project would run on several software levels to control various functions of the printer. The multilayered design/architecture will still be utilized but in a different manner.

The printer that is being used for this project is the Rap@Home Cartesian Box (Incorrectly Identified as the Fab@3D Cartesian Box in previous posts), which is part of the RepRap  printer family. The fact that this printer is part of the RepRap family led us at Neuron Robotics to take a look at the open source software that all RepRap printers use written in Java. As it turns out there is a GenericRepRap.java class to be used for adding support to the RepRap software for other printers. This discovery has moved the project forward a few steps, the initial intention was to have a software layer written to control the printer that would interface with the RepRap software but since the RepRap software contains the components (Java Interface structures to be exact)  to add support for other printers I only have to create an implementation of their framework to support all the functions of the Rap@Home printer .

These new developments eliminate the need for a custom software layer to interface the printer's functions to the RepRap software instead the RepRap software will be able to do all of this. After the printer's functions are implemented using the   GenericRepRap.java template the low level C code component needs to be written and interfaced to the implementation of GenericRepRap.java representing the printer. At the time of writing this I do not believe it is necessary for an additional software layer that would sit between the C level and the  GenericRepRap.java implementation I believe that all the C level code will be able to be invoked and addressed from the implementation of  GenericRepRap.java.

Essentially after the implementation is complete the ReRap software can be loaded up and the printer should function entirely as desired and work just like any other printer supported in the RepRap software.

Just some pictures of the printer itself and the hardware controlling it:

The Printer, Rap@Home Cartesian Box, currently in need of a new print hed
The naked DyIO that is being used as the controller of the printer, all this custom software is for this little guy to drive this whole printer and then some.
This is a logic controlled relay power switch, it is plugged into an available port on the DyIO so that the DyIO can turn the power to the printer on and off.
A Shot of the whole set up

What a DyIO looks like in its Casing, this is the one issued to me for testing purposes and development this summer

Wednesday, June 1, 2011

Post two, A bit more about what I am doing and a little update.

The project I am working on here at Neuron Robotics is software that will enable Neuron Robotic's DyIO platform able to control a 3D printer, this is appealing because the DyIO is very affordable compared to conventional methods used for controlling a 3D printer as well as having many more capabilities that the user may want to utilize.  The software for such a project as this will be split into multiple levels as it cannot be handled by one single level software platform (one stand alone application), a multi level design is required.
Image From http://www.solidsmack.com/wp-content/uploads/2010/05/fab@home-3d-printer.jpg

The different levels of this software differ on the style of programming, there will be software written in a low level language (standard C) that will run on the DyIO's hardware and software written in a high level language to run on the computer (Java).
Image from http://hritcu.files.wordpress.com/2006/11/dukewithhelmet.jpg

The high level component (Java) will be divide into the following levels: A level for controlling all linear motion and geometry, as nonlinear motion (curves an arcs) will be implemented in low level software on the DyIO. A level for calibrating the printer to its zero positions for the X, Y, and Z axes using either one limit switch per axis or two switches per axis, the calibration will be run from a simple GUI written in Java swing that the user will be able to operate with ease. The Calibration level will use functions in the linear motion level to drive the axes to their zero positions. The final level will be a software layer that sits between the other levels and the Fab@3D printer software that will allow the standard Fab@3D printer software to use the DyIO and the associated software pieces to control Cartesian Box 3D printer as if you were using one of their standard supported control solutions.

The low level software will be written and C and be part of the DyIO firmware, the low level will be used for all non linear motion of the printer e.g curved and arced motion. This level will be called by the higher level software in java whenever nonlinear motion of the printhead is required, data will be sent to the lower level software using Bowler Packets and Neuron Robotics' Bowler Communication System. This component will live int he DyIO firmware and be universal for all sorts of 3D Printers. The Java source code for this project will be open to promote community support for other Fab@3D printers to be controlled by the DyIO. The software will be written with heavy use of Object Oriented Programming Concepts and have a very modular design, this practice coupled with having the java source open should promote future community support of other printers.

There will be more to come stay tuned!

Friday, May 20, 2011

First post and introduction

Hello,
My name is Adam Vadala Roth I am a robotics engineering student at WPI. On this blog I will discuss various projects I am working on as a way to share what I am doing with the robotics community. A little not the AVR in the title is my initials not a reference to the Atmel AVR microcontroller platform although I will be making extensive use of their chips for most of my projects. Moving onto current events,  this summer I am interning at Neuron Robotics a company founded by WPI alumni who's goal is to provide provide effective robotics education and development hardware to everyday people.



While at Neuron Robotics I will be developing software for their DyIO platform amongst other software and hardware projects. The DyIO stands for "Dynamic Input and Output" the device enables users with a free USB port on their personal computer to control motors, actuators, and collect sensor data without having to do all the dirty work of low level programming, instead users can write programs on their computer in Java using the open source SDK for the DyIO.

The first project I am working on is software that will allow the DyIO to be used as a controller for a Fab@Home Cartesian Box 3D Printer. This project will be a great demonstration of the DyIO's versatility as well as provide an example solution for an affordable highly functional Fab@Home 3D printer. Although the project is dealing with the Cartesian Box the code will be open source and using a different printer will be as easy as a firmware update to the DyIO.