Editing User:Mitchdraft/GSoC15/Proposal
From BRL-CAD
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | |||
− | |||
− | =Personal Information= | + | ==Personal Information== |
*'''Name''': Mitch Kelley | *'''Name''': Mitch Kelley | ||
Line 9: | Line 7: | ||
*'''IRC username''': mitch | *'''IRC username''': mitch | ||
*'''Contact Number''': 508-838-1960 | *'''Contact Number''': 508-838-1960 | ||
− | *''' | + | *'''Blog''': https://github.com/mitchdraft/scaddergories/wiki |
*'''Background Information''' | *'''Background Information''' | ||
**Candidate for Master's of Science in Mechanical Engineering at Georgia Tech, currently conducting thesis in improving CAD interfaces | **Candidate for Master's of Science in Mechanical Engineering at Georgia Tech, currently conducting thesis in improving CAD interfaces | ||
**Bachelors of Science in Mechanical Engineering from MIT, 2011 | **Bachelors of Science in Mechanical Engineering from MIT, 2011 | ||
− | **4 Years ( | + | **4 Years (and counting) of mechanical engineering experience as a product development engineer (practicing user of Solidworks and other CAD tools in the engineering field) |
**Budding software developer - the tools in a software developer's toolbox are extremely valuable in all aspects of life, I am eagerly integrating these tools into my workflow. I have extensive experience in Matlab/Scilab, Processing/OpenFrameworks, and arduino. I have a good understanding of programming principles and am not intimidated by new languages or development environments. | **Budding software developer - the tools in a software developer's toolbox are extremely valuable in all aspects of life, I am eagerly integrating these tools into my workflow. I have extensive experience in Matlab/Scilab, Processing/OpenFrameworks, and arduino. I have a good understanding of programming principles and am not intimidated by new languages or development environments. | ||
− | |||
− | =Project Information | + | ==Project Information== |
'''Title:''' OpenSCAD Standard Library | '''Title:''' OpenSCAD Standard Library | ||
− | '''Introduction''' | + | ==OpenSCAD Standard Library== |
+ | |||
+ | '''Introduction:''' | ||
+ | |||
+ | |||
The OpenSCAD Standard Library requires three main things: | The OpenSCAD Standard Library requires three main things: | ||
Line 28: | Line 29: | ||
#*Cataloging these items in an easily searchable form | #*Cataloging these items in an easily searchable form | ||
#*Defining these items in the most expressive way. | #*Defining these items in the most expressive way. | ||
− | #Production of new orthogonal content. | + | #Production of new orthogonal content. |
− | |||
− | === | + | ==Project Description:== |
− | + | ===From OpenSCAD=== | |
OpenSCAD comes with a number of basic built-in primitives and operators. When creating 3D designs it would be useful to have access to a library of commonly used parts and techniques. One way of improving the current situation would be to define an OpenSCAD Standard Library. This would include well-defined, orthogonal, well-tested and well-documented components. All components would be user-space OpenSCAD code. | OpenSCAD comes with a number of basic built-in primitives and operators. When creating 3D designs it would be useful to have access to a library of commonly used parts and techniques. One way of improving the current situation would be to define an OpenSCAD Standard Library. This would include well-defined, orthogonal, well-tested and well-documented components. All components would be user-space OpenSCAD code. | ||
Line 41: | Line 41: | ||
Difficulty: Medium. The main challenge is to have good enough structure, documentation and testing in order to have trustworthy and useful components. | Difficulty: Medium. The main challenge is to have good enough structure, documentation and testing in order to have trustworthy and useful components. | ||
+ | ===Customized and augmented by student:=== | ||
− | + | This would include: identifying a base set of mechanical components, identifying variants in an organized hierarchy/network, establishing a module format and documentation style, seeding the framework with detailed representative modules, generating several instances of parts and assemblies to serve as usage examples, documenting how to contribute and soliciting/coaching community involvement. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Documentation will be very important. At minimum, I would have a photo of a rendered part for each module, these photos linked to source code and "neighboring" parts. A key challenge will be making a framework for sorting and finding parts. | |
− | |||
− | ==Why I am interested in this project and why I am the best person to do it== | + | ===Why I am interested in this project and why I am the best person to do it:=== |
− | ===I have a professional interest in this project=== | + | ====I have a professional interest in this project:==== |
In my work as a product development engineer at a consulting company we often start projects by doing an orthogonal technology review. It's often one of the most important parts of the project, setting up a framework for analysis. I have gone through the process many times, mentored by industry experts. I thoroughly enjoy and have become adept at features identification, analysis, and implementation. I would like to apply this process to creating an OpenSCAD parts library. I have seen the way good frameworks can enhance productivity and creativity. I know a library like this will be useful to my colleagues and the growing maker community. | In my work as a product development engineer at a consulting company we often start projects by doing an orthogonal technology review. It's often one of the most important parts of the project, setting up a framework for analysis. I have gone through the process many times, mentored by industry experts. I thoroughly enjoy and have become adept at features identification, analysis, and implementation. I would like to apply this process to creating an OpenSCAD parts library. I have seen the way good frameworks can enhance productivity and creativity. I know a library like this will be useful to my colleagues and the growing maker community. | ||
− | ===I have an academic interest in this project=== | + | ====I have an academic interest in this project:==== |
In my research as a master's candidate under Professor Rosen at Georgia Tech I am working to improve CAD funcationality and useability. My specific thesis topic is establishing a framework for and evaluating the utility of Human-Computer Interface (HCI) devices for CAD and other technical, creative work. This work involves developing a CAD environment to represent common practice user interactions and test new interactions and features enabled by the integration of software and existing and new interface devices. Professor Rosen is an authority on the topic of modern CAD systems. He has been a great mentor, identifying the state of the art and avenues towards the improvement of CAD systems, focusing the work towards areas of maximum benefit. In this project I have the opportunity to integrate insights of experts, community members, and an analytical framework into a fully functional open source platform. | In my research as a master's candidate under Professor Rosen at Georgia Tech I am working to improve CAD funcationality and useability. My specific thesis topic is establishing a framework for and evaluating the utility of Human-Computer Interface (HCI) devices for CAD and other technical, creative work. This work involves developing a CAD environment to represent common practice user interactions and test new interactions and features enabled by the integration of software and existing and new interface devices. Professor Rosen is an authority on the topic of modern CAD systems. He has been a great mentor, identifying the state of the art and avenues towards the improvement of CAD systems, focusing the work towards areas of maximum benefit. In this project I have the opportunity to integrate insights of experts, community members, and an analytical framework into a fully functional open source platform. | ||
− | ===I have a personal interest in this project=== | + | ====I have a personal interest in this project:==== |
My personal objective is to help people identify and achieve their goals. I believe that Computer Aided Design (including 3D geometry modeling and many other computer-facilitated organization and evaluation systems) is the best tool for expressing the imagination. I enthusiastically believe that it is true that "if you can dream it you can do it." And since dreaming is difficult and important I want to do whatever I can to help people realize their personal simple and fantastic dreams. | My personal objective is to help people identify and achieve their goals. I believe that Computer Aided Design (including 3D geometry modeling and many other computer-facilitated organization and evaluation systems) is the best tool for expressing the imagination. I enthusiastically believe that it is true that "if you can dream it you can do it." And since dreaming is difficult and important I want to do whatever I can to help people realize their personal simple and fantastic dreams. | ||
+ | =Specifics= | ||
==Tasks== | ==Tasks== | ||
− | + | There are three main tasks in this project: | |
+ | #Integrate Existing Libraries | ||
+ | #Include complete fastener kit | ||
+ | #Abstract the library framework | ||
=== Integrate Existing Libraries=== | === Integrate Existing Libraries=== | ||
+ | *''Develop an interactive tool for rapidly navigating and selecting customized parts from the parts library'' | ||
+ | *''Add support for all parts in the current MCAD library'' | ||
Hyperair has done a good job streamlining the existing MCAD library. The [[contents of the updated MCAD library]] feature 25 directories. There are many parts in these libraries, and many more on [http://www.thingiverse.com Thingiverse]. It is difficult for the average user to find and deploy parts from this library. I will make an interactive catalog that will make it easy for users to scan through the available parts and manipulate their parameters in real time. | Hyperair has done a good job streamlining the existing MCAD library. The [[contents of the updated MCAD library]] feature 25 directories. There are many parts in these libraries, and many more on [http://www.thingiverse.com Thingiverse]. It is difficult for the average user to find and deploy parts from this library. I will make an interactive catalog that will make it easy for users to scan through the available parts and manipulate their parameters in real time. | ||
Line 76: | Line 76: | ||
I will be able to move quickly in this task because Hyperair has done a good job collecting the various parts in the existing library and I have already identified the key features of the catalog tool and proven the concept. By the time I finish this task (~1 month) I will have an intimate knowledge of the current library. I will have gained insights into how to wrap it into a more holistic framework and identified areas for improvement. | I will be able to move quickly in this task because Hyperair has done a good job collecting the various parts in the existing library and I have already identified the key features of the catalog tool and proven the concept. By the time I finish this task (~1 month) I will have an intimate knowledge of the current library. I will have gained insights into how to wrap it into a more holistic framework and identified areas for improvement. | ||
− | |||
− | |||
− | |||
− | |||
*Languages used: | *Languages used: | ||
**Processing - to make the library interface which will output a text file for rendering by OpenSCAD. | **Processing - to make the library interface which will output a text file for rendering by OpenSCAD. | ||
**OpenSCAD - for modifying existing MCAD code | **OpenSCAD - for modifying existing MCAD code | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Expected time: | *Expected time: | ||
Line 97: | Line 86: | ||
===Include complete fastener kit=== | ===Include complete fastener kit=== | ||
+ | *''Create a simple hardware selection tool (build into the interactive library tool)'' | ||
+ | *''Create .scad representations for all nuts, bolts, and washers in a leading hardware supplier's catalog'' | ||
Fasteners are a key part to most mechanical designs. Mechanical engineers spend a considerable amount of time selecting and integrating fasteners into designs. This can significantly impede the prototyping process. Fortunately, fasteners are well standardized and cataloged, so OpenSCAD is a perfect platform for automated fastener selection and integration. | Fasteners are a key part to most mechanical designs. Mechanical engineers spend a considerable amount of time selecting and integrating fasteners into designs. This can significantly impede the prototyping process. Fortunately, fasteners are well standardized and cataloged, so OpenSCAD is a perfect platform for automated fastener selection and integration. | ||
Line 107: | Line 98: | ||
Additionally, I would like to develop a function for specifying a fastener assembly (nut, bolt, washers) by position and fastener name. The function would make the necessary clearance holes in the existing assembly and add the fastener assembly geometry to the model. | Additionally, I would like to develop a function for specifying a fastener assembly (nut, bolt, washers) by position and fastener name. The function would make the necessary clearance holes in the existing assembly and add the fastener assembly geometry to the model. | ||
− | |||
− | |||
− | |||
− | |||
*Languages used: | *Languages used: | ||
Line 118: | Line 105: | ||
**Data mining (TBD) - for collecting hardware parameters | **Data mining (TBD) - for collecting hardware parameters | ||
**TBD - for converting available, verbose, CAD files to .scad hardware representations | **TBD - for converting available, verbose, CAD files to .scad hardware representations | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Expected time: | *Expected time: | ||
Line 133: | Line 110: | ||
===Abstract the library framework=== | ===Abstract the library framework=== | ||
+ | *''Integrate and abstract lessons learned to a larger library framework.'' | ||
There is a good amount of design work to be done to generate an effective standard library. A good way to approach this type of project is with iterative prototypes. I view the current MCAD library as a strong initial prototype. I hope to improve MCAD with my contribution but I would be naive to believe that the best library can be produced in a three month project and I would be negligent to discard lessons learned. I intend to sketch-out/mock-up a larger framework for the standard library based on my experience developing the features of Tasks 1 and 2. | There is a good amount of design work to be done to generate an effective standard library. A good way to approach this type of project is with iterative prototypes. I view the current MCAD library as a strong initial prototype. I hope to improve MCAD with my contribution but I would be naive to believe that the best library can be produced in a three month project and I would be negligent to discard lessons learned. I intend to sketch-out/mock-up a larger framework for the standard library based on my experience developing the features of Tasks 1 and 2. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Languages used: | *Languages used: | ||
**Processing - for extending the Task 1 & 2 library interface. | **Processing - for extending the Task 1 & 2 library interface. | ||
**OpenSCAD - for generating seed models for the abstracted library framework. | **OpenSCAD - for generating seed models for the abstracted library framework. | ||
− | |||
− | |||
− | |||
*Expected time: | *Expected time: | ||
**2 weeks | **2 weeks | ||
− | == | + | ====Demonstration of competency and preparedness==== |
− | + | ||
− | + | I have been conducting research in alternative and improved CAD interfaces. [https://www.youtube.com/watch?v=CiY9SCviUyg This video] shows a brief demo of a prototype flexible CAD interface which I am exploring. I think CAD interfaces and standard libraries will work best when integrated, or at least designed with both in mind. This video shows I have a good understanding of the OpenSCAD platform and the ways it can be enhanced. | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | *Personal Information | |
− | * | + | **Name |
− | * | + | **E-mail address |
− | * | + | **IRC username |
+ | **Brief background info | ||
+ | **(optional) Link to resumé | ||
+ | *Project Information | ||
+ | **Project Title | ||
+ | **Brief project summary (<500 words) | ||
+ | **Detailed project description (>500 words) | ||
+ | **Links to any code or algorithms you intend to use | ||
+ | **Deliverables (specific, measurable goals) | ||
+ | **Development schedule | ||
+ | ***List at least three milestones | ||
+ | **Describe time availability (40+ hours/week assumed) | ||
+ | ***List all commitments (e.g., exams, vacations) | ||
+ | **(optional) Why us? | ||
+ | **(optional) Why you? | ||
+ | **(optional) Anything else? |