robot clothes About Us Projects News
return to lablog homepage
 
 
 

« April 2005 | Main | June 2005 »

May 24, 2005

Class Diagram

I made a rudimentary class diagram. I checked in with a coworker and he said that my design makes sense. I'm not exactly sure how to get the correct format in ArgoUML.

Basically, actuators make up components like arms and legs.
Arms and legs make up humanoid robots.
Other set pieces will get an appropriate class later.
Each humanoid robot contains the methods necessary to perform the choreography.
There will be a choregraphy interface with subclasses that implement it. Each robot will register with the choreographer. Associated music will also check in (meaning we need the appropriate music classes). The choreographer will keep the movements in synch with the music.
My coworker also made the point that since the robots are performers, I can think of the class design as a theater. If I am missing a class, think of who would do that in the theater and add that class.


see class diagram

Posted by michelle at 09:14 PM | Comments (0)

May 21, 2005

UML Software and Software Design

I am trying to design the robot control software. I have never designed anything this complex before so I am starting simple. I wrote some basic code in Eclipse and then imported it into Argo UML to see the class design better. Obviously, I still have a long way to go:
classes.JPG

Posted by michelle at 03:41 PM | Comments (0)

May 15, 2005

3D Printer Tutorial (Lablog5-12-05)

Ok. So this will be an evolving step-by-step tutorial that will explain, for those of you who own your very own Dimension BST 3D Printer or have access to Eyebeam's 3D Printer how to print out a part in ABS plastic from a 3D model saved as a .STL file.

We will use Michael Frumin, Technical Director of R&D at Eyebeam, as both our comic foil and an inspiring example of how even a computer scientist can become henry ford with this machine.

fruminsm1.jpg

Click here for larger image

What we will not describe how to do in this tutorial:

1. Build a part in 3D software.
2. Set-up a Dimension 3D printer.
3. Install the 3D printing software on a computer.
4. Perform maintenance or anomaly resolution on the 3D printer

I will try to get around to addressing some of these issues eventually, especially common maintenance problems and how to handle them. This tutorial will give you much of the information you need to take a 3D drawing and get it printed, given access to the software and a fully functioning Dimension BST 3D printer

First some general info about the 3D printer.

printersm1.jpg

Click for larger image

The printer works by laying down a thin bead of plastic from the extrusion head. The extrusion head has two degrees of freedom (DOF) that translate to the X and Y dimensions in 3D Cartesian coordinates. The part is built on a platform that translates, or moves up and down, to enable a third or Z dimension. The piece is built from thin beads of ABS plastic model material. The printer also uses ABS plastic support material during the building of the part in order to temporarily create a part base, fill holes and support thin or small protrusions during the printing. The plastic beads build-up horizontally in the X and Y dimensions creating layers in the Z dimension. The layer height has two options and can be set in software. The layer size and bead height translate to the minimum resolution you can achieve in a part given the optimal build orientation.

Layer Height: .010” or 13”
Minimum bead size: 2 times the Layer height (.020” or .026” Z Dimension)
Maximum part size (3D printer build area): 8” Width x 8” Depth x 12” Height

Don’t expect to be able to print small protrusions and details < .020”

Here are some examples of parts we've printed and the printer in action:

printingsmall.jpg

Click for larger image

partssm1.jpg

Click for larger image

skullsm1.jpg

Click for lager image

So Michael has designed a 3D part to upgrade his custom-designed and built computer desk. The part is designed to hold the consumer off the shelf (COTS) computer tray to the desk frame, which is made of industrial plumbing pipe and joints.

FruminDeskFrontsm.jpg

Click to view a larger image of Frumin's Table

FruminDesksm.jpg

Click to view larger image

So lets follow Michael through the process of producing this part.

1. Design the part in your 3D modeling software of Choice and Export the File as a .STL file

Michael designed the part using 3D modeling software and exported the model as a .STL file. Frumin used Rhino. He chose to increase the number of facets during the export process. In terms of the 3D printer, I think facets can be thought of as the smoothness of the plastic finish on the curved or rounded surfaces. Too few facets means curved surfaces fabricated in a horizontal orientation will look under-sampled, low-res, steppy. So, you should increase the number of facets if your export function gives you that option. The downside is the file size increases. And typically that isn’t a problem for most people these days. Once you have your .STL file you can then take it to the computer on which you have loaded Catalyst, Status, CMB viewer and the Dimension BST administrative software. Eyebeam will have a dedicated 3D printing computer in the near term. Ask Jonah or Michael about the machine is you would like to use it.

This is an image of Frumin's part, which he saved in Rhino as an .STL file, in an open source 3D modeling program called Blender.

PartBlendersm.jpg

Click here for larger image

2. Turn on the Dimension BST 3D printer. First, on the back of the machine at the bottom right, find the power relay switch and move it to the up position. Then find the red on/off switch on the side of the printer at the lower right and flip it to the on position. You should see the display light-up and indicate that the machine is warming-up. IT takes ~15-20 minutes for the machine to warm-up. It will indicate it is ready for printing by entering idle mode. This will be indicated on the front display.

The machine runs through many calibration procedures during start-up and this process take a few minutes. Be patient. Do not restart the machine, or cycle the power, during the start-up process. Wait until the machine indicates it is in Idle Mode before you turn the machine off. The printer doors locks occasionally during building and calibration. Do not force the door open.

The power breaker is the switch on the left of the image below. It should be in the up position as pictured.

PowerBreakersm.jpg
Click for larger image

The power switch is red and located on the side of the machine.

PowerSwitchsm.jpg

Click for larger image

IdelDisplaysm.jpg

Click for larger image


3. Open you the Catalyst Program from the Desktop Icon or applications start menu.

If you designed your part using metric dimensions you may get a warning your part is much larger than the printer build area. It will ask if you would like to convert your units to metric. Click Yes.

4. Navigate to File>Open and choose the STL file you wish to print

Opensm.jpg

Click for larger image

5. You should see you part in the in 3D in the main window. Navigate to View>Fit Envelope. You can also choose to zoom in and out from the View menu.

Pre-fitsm.jpg

Click for larger image


6. You should see your part within a constraining box that corresponds to the build area of the printer.

Pre-Orientedsm.jpg

Click for larger image

If you part is larger than the build area you should navigate to STL>Size and Unit and adjust the scale factor. The smallest scale factor is 0.10.

7. Now you need to orient the part. Michael’s part is best built with the XY plane oriented vertically. We can achieve this by navigating to STL>Orient by facet>Top. The cursor will turn to a question mark. Click on the face of the obiect you wish to orient to the front (or whichever direction you choose). In this case it was the front XZ plane that Michael wanted to orient to the normal to the top of the constraining box. You can choose to orient whichever face of the part you choose to be facing either the top, bottom, front, back, left or right. You can also orient your part using the STL>Rotate command. You can also choose to Restore original orientation under the STL menu as well.

Orientedsm.jpg

Click for larger image


Part orientation is as much an art as a science. You can choose the orientation to optimize the surface finish, part strength and build time. Often times choosing one aspect mean sacrificing on another. A few simple suggestions: for smoother curved surfaces orient them vertically. For stronger holes and cylindrical protrusions orient them horizontally. If you orient a part vertically it will take longer to build. It may take experience to determine the best orientation. Or you can talk to me, Jamie, Michael, or someone else with some experience printing parts. You can also look at the Dimension Model Building Techniques presentation that is on top of the printer. I will try to get an electronic copy of this presentation to attach here.

8. Now set you build parameters, which are located in the main window inside the right hand frame. Michael chose:

Modeler: Dimension BST
Layer resolution: 0.010
Part surface: Best vertical quality
Part interior style: Sparse
Support Style: Break-away

Params.jpg

The Modeler Field should read “Dimension BST”.

You can set your Layer Resolution to either 0.010 or 0.013 depending on the desired smoothness, your part tolerances and the desired build time.

The Part Surface field can either be set to “Best vertical quality” or “Best horizontal quality”. The best vertical quality means that each additional layer is created at a 90 degree offset to the previous layer. This results in a better horizontal finish. The best horizontal quality means that each additional layer is created at a 45 degree offset. This results in a better horizontal finish.

The Part interior style can be set to “Solid – normal” or “sparse”. If the part is going to need to react in loads you should choose a solid interior style. The spare interior style builds up a mesh (as opposed to a solid fill), so your part will be more brittle and have less stiffness. Using a sparse interior style will reduce material use and build time. This is good for form and fit testing.

The Support Style field can be set to either “Sparse”, “Basic”, “Surround” or “Break-away”. Basic is the easiest to remove, uses little material and reduces time. When in doubt default to Basic. Sparse uses little material and reduces build time but is not good for small or detailed parts. Surround is used for creating a scaffold-like supports. It uses a good deal of material, increases build time but it very useful for printing long thin parts in a vertical orientation. Break-away is similar to sparse but creates support in pillars. This way you can break-off a larger section of disconnected support material at a time. It isn’t recommended for small or detailed parts.

9. It is time to build you CMB file by clicking on the green flag icon. This will create your part layer by layer and display it in the main window. The red area of the part is model material and the grey area of the part is the support material. This will also open the Pack and Download Window and the Status Window. You can move your part around on the platform in the Pack and Download Window, or use the add icon to add more parts to the current queue.

PackAndDwnnloadsm.jpg

Click for larger image

This creates the file that is downloaded to the printer. You can look at the build time in the Pack and Download window, estimated finish time and change your job name. You can check the operational status of a particular modeler (3D printer) in the status window. The current Modeler at Eyebeam is named “TheMicrolith3”. In the main window you can use the Display Layer Icons above the main window to look at the part slice by slice as the 3D printer will see it. You can click on the Display bottom layer icon and then scroll through the part layer by layer using the Display next layer icon. This may allow you to catch possible mistakes that may occur when 3D model surfaces have gaps of other inconsistencies. This will also give you a sense of how the 3D printer actually produces the part using the model and support material.

10. You can now send the part to the printer. Click on the Build current job icon. This will open a dialog box that indicates the download in ongoing. Once the CMB file has been downloaded to the printer the software will then open the status dialog window (if it wasn’t already open) and indicate that the build is pending. Except for checking the status of your job or building another part, you are now finished with the software.

PendingBuildSmall.jpg

Click for larger image

11. Go to modeler and insert a plastic modeling base. The modeling bases are located in the cabinet beneath the 3D printer. Open the printer door. Insert the trays tabs into the grooves in the Z platform inside the printer. The front of the modeling base should be flush with the front of the Z platform. Rotate the two retainers on the front of the Z platform to the up position to lock the modeling base into place. Close the door. For more information on inserting the modeling bases consult the Dimension BST User Guide located on top of the printer.

The modeling bases are reusable but must be cleaned of model material after each use. After many uses the trays will become damaged. If a base looks badly scratched across most of its usable build area, use a new base. Alert Jonah or Michael if we are running out of modeling bases.

modelbasesmall.jpg

Click for larger image

insertingmodelbaseSmall.jpg

Click for larger image


12. Now check the status display to see if it has received your job and is waiting for the build to be started locally (i.e. on the printer). It should indicate that it is “Ready to Build” and the command display will give you the option of choosing to “Start Model”. Press the button associated with the “Start Model” command display. The display should change to indicate it is building the part.

It may indicate that the machine is warming up. It will run through several calibration procedures like finding the home position for each axis and cleaning material off the extrusion head. Be patient. This will take awhile.

13. Sit back and let the printer go to work. Typical build times are 2-5 hours. You can check to see the status of the build by looking at the Status software from any computer. From the 3D printer locally, you can check the amount of time left or material usage by pressing the buttons associated with the “Show Time” and “Show Material” command displays respectively.

Partbuiltsmall.jpg

Click for larger image

14. When the part is done the status dispaly will indicate “Completed Build” and the door will unlock allowing you to remove the part. The status display will then indicate that the machine has completed the build and it will aks you if the part is removed. Press the button associated with the command display “Yes” if you have removed the part and closed the door.

builtpart2small.jpg

Click for larger image

fruminwithpartsmall.jpg

Click for larger image

15. Remove part from base and remove the grey support material from the part.

To accomplish this task we have a set of exacto knives and dental picks, scrapers and spatulas in the 3D printer cabinet. To remove most parts from the modeling base, you just need to torque the modeling base gently as you would an ice tray to unstick the ice cubes. You can also use the dental spatulas of the paint scraper to pry the part up. Gently. To remove the support material, gently use the dental picks or exacto knives to remove the grey support material from through-holes and crevices. Use the dental spatulas to remove the support material base from the part. Be patient and gentle or you can easily damage you part.

psartwithsupportsmall.jpg

Click for larger image

toolssmall.jpg

Click for larger image

removingsupportsmall.jpg

Click for larger image

finishedpartsmall.jpg

Click for larger image


16. Clean the modeling base, the machine and the work area as needed. You can clean the modeling material off the modeling base with the paint scraper or exacto kives. You can treat the modeling base less gently than your part, but try not to create deep ruts, or gouges in the modeling base. Put the tools back into the 3D printer cabinet.

removingsupportfrombasesmall.jpg

Click for larger image

17. Turn the printer off and on as you would a CPU. If you know the printer will not be used for a few days you can turn the printer of using the on/off switch. The command display will indicate the printer is shutting down and cooling down. Wait for the display screens to go dark and then move the power breaker on the back of the machine to the down position.

Here is a before and after shot to wrap up frumin's mind blowing part building experience:

oldpartsmall.jpg

View image


newpartsmall.jpg

Click for larger image

Posted by powderly at 10:31 PM | Comments (0)

May 11, 2005

The Observer Pattern

Today's chapter in the Design Patterns book is about the observer pattern.

The Observer Pattern defines a one-to-many dependency between object so that when one object changes state, all of its dependents are notified and updated automatically.

This pattern seems a lot more straightforward than the strategy pattern. I think we are likely to use this pattern when we need to report back on the state of an actuator. It will only be helpful if it is a one-to-many relationship otherwise just simple callback functions will suffice. There may be other design patterns that make more sense here.

Posted by michelle at 09:26 PM | Comments (0)

May 09, 2005

Design Patterns

I just read the first chapter of Head First Design Patterns. Since we are writing the program in Java, I might as well learn some Design Patterns to help development. Design Patterns are a set of solutions to problems that developers commonly encounter. They also provide a vocabulary for describing these solutions. The fist chapter explains the strategy pattern.


The Strategy Pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.

For the purpose of our software, I'm not sure if we can use this pattern. A contender for this pattern is motors. Let's suppose that motors have enough in common that they warrant having one motors superclass. We can extend the motor superclass with a servo class and a stepper class. Now if everything about these motors is basically the same except for how they return their position, we could make a Position interface. Then we could make two classes that implement Position with the appropriate behaviors.

I'll have to learn more about the components in the project to make these kinds of decision, but hopefully by describing it here I am absorbing the concept a little bit better.

Head First Design Patterns

Posted by michelle at 01:42 PM | Comments (0)

 
Creative Commons License
This work is licensed under a Creative Commons License.

Powered by Movable Type