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.