Richard
Irons March
17, 2002
91.548
Robotics I
Project I, Block Builder Detailed Project Proposal
This project idea has undergone some additional refinement. This refinement is a product of both discussing ideas with Professor Martin and the ideas presented in the paper "MachineShop: Steps Toward Exploring Novel I/O Devices for Computational Craftwork" (Glenn Blauvelt and Mike Eisenberg). I am still planning to create the software design tool that I described in my previous proposal, but this tool will be used for designing Lego style blocks. This tool will consist of a 2D interface that will allow shapes to be sketched. 3D Lego style blocks with notches will be generated by these sketches. Export capabilities will also be provided so that the sketches can be saved to a file with the intent of sending the file to the Roland machine to actually create the block.
The goal of this project is to create a simple to use tool that allows the creation of building blocks. There are two motivating factors behind this single goal. First, having a tool as this could be useful for people in the robotics lab who want to design and fabricate their own custom building blocks. Second, I would like to use this project as a mechanism for investigating some of the ideas presented by Blauvelt and Eisenberg in their paper. One idea that I am interested in is providing a tool that could possibly be used by children. The second idea that I am interested in is to investigate providing a capability where a child could sketch an object and have all of the blocks that make up that object be automatically generated.
I plan to develop the Block Builder fabrication tool in a number of stages. Please refer to the task list in Table 1 for a summary of the tasks that make up this project.
|
Task |
Description |
Priority 1 - Required 2 - If time permits |
Date of Completion |
|
1 |
Basic sketching tool functionality |
1 |
Wednesday March 19 |
|
2 |
Export of sketch to HPGL format for Roland machine |
1 |
Friday March 21 |
|
3 |
Enhance basic sketching tool functionality to support customer shapes |
1 |
Monday March 25 |
|
4 |
3D preview of sketches |
1 |
Tuesday March 27 |
|
5 |
Generate blocks from model sketch |
2 |
Friday March 28 |
|
6 |
Convert UI from using GLUT to using WIN32 UI |
2 |
Friday March 28 |
Table 1
The first task is to develop
the basic functionality of the sketching tool and saving sketches using my own
file format. I will start development
of the tool using the GLUT toolkit,
which will allow me to concentrate my initial
efforts on the core problems of the project without worrying too much about UI
design. GLUT is an OpenGL based toolkit
that allows rudimentary UI capabilities.
The following diagram illustrates the initial menu that is invoked by
pressing the right mouse button:

The
sketching area will be a 6 inches by 6 inches grid. Blocks will be able to have a maximum size of 5 inches by 5
inches and a minimum size of 0.5 inch by 0.5 inch. The size that the block is displayed on the screen will be the
actual size of the block that will be fabricated. The File/New/Square, Rectangle, and Circle options will create
the corresponding shape in the sketch grid.
The sketch tool will allow the dimensions of these shapes to be modified
as well. The "Custom" option
will allow a custom shape to be constructed, but the shapes must be convex
polygons. The "Save" option
will allow a sketch to be saved using my own format.
The
"Edit" option currently only has a single selection for the thickness
of the material being used, but I envision adding more options to both the
"Edit" and "Insert" selections as I develop the tool. The "Create Notches" selection
will create the notches in the sketch that are needed for the blocks to be
attached. The following diagram
illustrates how the notches will be created in the top and bottom surfaces:
TOP VIEW BOTTOM VIEW 1/8" 1/8" square



![]()
These
dimensions may need some adjusting depending on the size of the drill bit that
I can best support.
The
"3D Preview" option will generate a 3D model of the block that has
been designed. The user will be able to
change the scale and orientation of the model in order to examine the
block. An option to export to HPGL will
be available from the 3D Preview window.
The export option will create two HPGL files. One file will cut the rough block out of the material that the
block is being cut. The second file
will cut the notches into the block's bottom and top surfaces. The drill will make numerous vertical and
horizontal passes along the top and bottom surfaces of the blocks to carve out
the notches. Passes will only be made
if the entire row or column of the surface can be removed.
Task
5 deals with generating blocks for a sketch that the user has entered. The task is somewhat open-ended and is
inspired from reading Blauvelt and Eisenberg's paper. I envision this functionality to be a 2D sketch that allows the
user to design a 2D polygonal shape that could be either convex or
concave. The tool would then generate the
blocks necessary to construct the shape and provide the order in which these
blocks should be laid out.
If time permits at the end of this project, I would like to convert this tool into a Win32 application. Since I am using the GLUT tool kit, I am required to build the program as a console application. Another drawback to using GLUT is that the number of available UI components is very limited. An advantage of using GLUT is that a prototype for an idea can be quickly constructed without having to worry about designing UI. Ultimately, I would like the final tool to be a Win32 application. I will attempt to accomplish this at the end of the project.