Team:Alberta/Project/Automation
From 2009.igem.org
Line 33: | Line 33: | ||
<font size="2"> | <font size="2"> | ||
- | + | <center> | |
- | <img | + | <img src="https://static.igem.org/mediawiki/2009/6/6d/UofA09_diyAuto_Photo1.png"> |
- | + | </center> | |
<p> | <p> | ||
- | One of the main themes of this project, as well as iGEM in general, is | + | One of the main themes of this project, as well as iGEM in general, is the simplification of both the parts and the processes of molecular biology. This allows synthetic biology to bring relatively advanced biological techniques 'to the masses'. |
</p> | </p> | ||
<p> | <p> | ||
- | + | The Biobytes Assembly is very rigid and reliable; however, it is also very repetitive and tedious. This has triggered us to develop an automated mechanical system (ie. a robot) capable of speeding up and simplifying our methods. The overall goal is that our robot would be simple enough to be used by high school students. This would provide a valuable tool in biological education. It is also our goal to create a system that is versatile enough to be used in more advanced research labs, thereby decreasing the time needed for plasmid construction.</p> | |
- | </p> | + | |
</font></div> | </font></div> | ||
Line 73: | Line 72: | ||
<p> | <p> | ||
- | + | Our robot is built entirely from a single <b>Lego Mindstorms</b> kit, using only the standard pieces and hardware sold with the kit. | |
+ | |||
+ | |||
</p> | </p> | ||
Line 80: | Line 81: | ||
<li> | <li> | ||
- | < | + | <h2>Why use a "toy"?</h2> |
- | + | You may be wondering why we chose to use a mechanics kit made for adolescents to build our robot when there are much more sophisticated resources available? The inherent reality is that not everybody has access to a machine shop, PCB manufacturing equipment, and a micro-controller programmer. This equipment is rather expensive and not readily available to the general public. We hope that by using relatively inexpensive and readily available parts, places like high-schools and undergraduate research labs are be able to make use of our techniques. | |
</li> | </li> | ||
Line 118: | Line 119: | ||
- | < | + | <h1>Hardware and Software</h1> |
<!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | <!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | ||
Line 130: | Line 131: | ||
<li> | <li> | ||
- | < | + | <h2>Hardware</h2> |
<p> | <p> | ||
- | + | ||
+ | As mentioned before, the majority of parts are from a standard Lego Mindstorm kit. In addition, rare earth magnets, a pipette tip, and electrical tape were needed to make the Lego Mindstorm kit compatible with the BioByte Assembly System. | ||
</p> | </p> | ||
- | < | + | <h3>Inspiration</h3> |
- | + | <P> | |
- | < | + | The current physical design of the robot owes its inspiration to Hans Andersons sudoku solving robot (http://tiltedtwister.com/sudokusolver.html). Adaptation of the Anderson design allowed for the necessary amount of precision required for the 'pen' to be positioned over the well. This design has the added advantage of not possessing a large number of points where play in the gears and joints may become a problem. |
- | + | ||
- | The | + | |
- | + | ||
</p> | </p> | ||
- | < | + | <center> |
+ | <img style="padding : 20px;" src="http://tiltedtwister.com/img/sudoku/sudoku1.jpg" width="400" height="250" align="center"> | ||
+ | </center> | ||
- | |||
- | |||
<center> | <center> | ||
Line 153: | Line 152: | ||
</center> | </center> | ||
- | |||
- | <li> | + | <h3>Structural Design</h3> |
+ | <p> | ||
+ | |||
+ | <img style="padding : 20px;" src="https://static.igem.org/mediawiki/2009/7/7d/UofA_diyAuto_dipPen.png" align="right" width ="35%"> | ||
+ | |||
+ | <P> | ||
+ | |||
+ | The easiest and most feasible method for automating the BioByte Assembly Method involves the movement of beads from one well to the next on a 96 well plate, with each well containing a different solution, such as wash buffer or an individual byte. Therefore, as the magnet is dragged from well to well, bytes are continually added until a full length construct is generated. Another option would be to suspend the beads in one place and continually exchange the solutions surrounding the beads. However, due to the limitations of the Lego Mindstorm kit this option was not chosen. In the end, a 'dip pen' method was selected. A small rare earth magnet is secured to the end of a pipette tip, thus producing a 'pen'. The pen is then lowered into the well, whereby the beads are attracted to the magnet. The pen is then lifted up and placed in another well dragging the beads with it. The beads are then shaken off and allowed to sit in the solution whereby individual bytes may bind or the intermediate constructs are washed. This process is repeated until the full length linear construct is produced.</p> | ||
+ | |||
+ | <h3>Structural Obstacles</h3> | ||
+ | <P> | ||
+ | An number of challenges had to be addressed in designing the robot.</P> | ||
+ | |||
+ | <ul> | ||
+ | <li>The pieces come in standard lengths and sizes making it difficult to accomodate the kit to the very precise structural considerations needed for the BioBytes assembly process.</li> | ||
+ | <li>There is a large degree of flex to the individual pieces decreasing the rigidity and consistency of the robot.</li> | ||
+ | </ul> | ||
+ | |||
+ | <h2>Software</h2> | ||
- | |||
- | |||
<p> | <p> | ||
- | + | We used free open source software (FOSS) courtesy of nxtOSEK (http://lejos-osek.sourceforge.net/) to provide the 'brains' for our robot. Installation instructions are located at: http://lejos-osek.sourceforge.net/installation.</p> | |
- | </ | + | <center> |
+ | <img style="padding : 20px;" src="https://static.igem.org/mediawiki/2009/1/12/UofA09_diyAuto_SampleFuncs.png" align="center"> | ||
+ | </center> | ||
<p> | <p> | ||
- | In | + | In the event that the robot would be used for something different later, John Hansen's Enhanced NXT firmware was loaded into the robot's brain in order to preserve its originial functionality (http://bricxcc.sourceforge.net/). While this did limit the size of the program that could be loaded, it was felt that it would be unlikely that the program would be large enough to strike this upper limit. |
</p> | </p> | ||
<p> | <p> | ||
- | The programming | + | The programming language used for this implementation was C++. The nxtOSEK package provides various classes for the pieces of the NXT system (Motor, Clock, Button, etc). These classes are comprised of mainly protected data members (in the form of simple data types, mostly integers) and the methods to retrieve and set them. These data members must be protected as their values are supposed to be modified based on the robot's interaction with the physical world, and you don't really want to accidentally switch the values. This programming model allows for a high level of abstraction, thus allowing for more time for gig-taxing operations like calibrating the robot's movements. |
</p> | </p> | ||
<p> | <p> | ||
- | Software design was | + | Software design was relatively straightforward. Examples of the syntax necessary for interacting with the motor classes required was provided by nxtOSEK. However, difficulty arose in working out the program so that the robot was able to position the dip-pen overtop of the desired well as precisely as possible within the constraints of the system. |
</p> | </p> | ||
Line 180: | Line 196: | ||
</ul> | </ul> | ||
+ | |||
+ | |||
+ | |||
Line 200: | Line 219: | ||
- | < | + | <h1>Calibration</h1> |
<!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | <!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | ||
Line 206: | Line 225: | ||
<font size="2"> | <font size="2"> | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
<p> | <p> | ||
- | + | No sensors were used in the final design of the robot, therefore the calibration of the robot's movement proved rather time consuming. Due to the fact that the program required all movement calculations to be 'reckoned,' and could not intuitively adjust each consecutive step in the program if preliminary movements had to be changed, many time and distance calculations had to be made and remade to produce to final version of the robot's program.</P> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | </ | + | |
- | + | ||
+ | <P> | ||
+ | Issues of odometry arose in the calibration of the robot. There appeared to be a problem in either the motors themselves or a firmware/software issue that does not relay any information on the distance travelled by the robot. Due to the 'reckoning' methods involved in programming, it is vital that the robot be able to know how far it has travelled, so that it is capable of returning to previous locations. This is also important so that it can accurately strike the wells and staying within the boundaries of the plate.</p> | ||
</font></div> | </font></div> | ||
Line 290: | Line 285: | ||
<p> | <p> | ||
- | The lower photograph shows the three wells after the robot has wreaked havoc. We can see that the center well is indeed a lighter brown, indicating that there is a lower concentration of magnetic beads here. The well on the right now has a brown colour, indicating that beads did make it into this well. The well on the left also has a slight brown tint, showing that some beads made it to this well too. This occurred when the robot did something I like to call, 'going terminator,' where it missed a well and started stabbing its tip into the surrounding plastic. This causes small splashes which can cross contaminate nearby wells. | + | The lower photograph shows the three wells after the robot has wreaked havoc. We can see that the center well is indeed a lighter brown, indicating that there is a lower concentration of magnetic beads here. The well on the right now has a brown colour, indicating that beads did make it into this well. The well on the left also has a slight brown tint, showing that some beads made it to this well too. This occurred when the robot did something I like to call, 'going terminator,' where it missed a well and started stabbing its tip into the surrounding plastic. This causes small splashes which can cross contaminate nearby wells. |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
</p> | </p> | ||
Line 301: | Line 292: | ||
<li> | <li> | ||
- | <h4> | + | <h4>Complications</h4> |
<ul> | <ul> | ||
<li><b>Sensitivity to initial conditions</b> | <li><b>Sensitivity to initial conditions</b> | ||
Line 344: | Line 335: | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
Line 423: | Line 406: | ||
<p> | <p> | ||
- | Despite all of the good things about using a construction set, it does introduce some serious limitations. To introduce more features and reliability, there are a few options. The first, and perhaps easiest, is to just get another robotic brain and set of motors. This way you can run six motors rather than the usual three, allowing you to control more things. The robotic brains are capable of communicating with each other wirelessly, so it would not be | + | Despite all of the good things about using a construction set, it does introduce some serious limitations. To introduce more features and reliability, there are a few options. The first, and perhaps easiest, is to just get another robotic brain and set of motors. This way you can run six motors rather than the usual three, allowing you to control more things. The robotic brains are capable of communicating with each other wirelessly, so it would not be difficult to create one robotic platform that performs the desired tasks. |
</p> | </p> | ||
Line 437: | Line 420: | ||
<p> | <p> | ||
- | The original plan for this automation project was to first use only the pieces present in the construction set to perform the 'dip-pen' method of bead movement that | + | The original plan for this automation project was to first use only the pieces present in the construction set to perform the 'dip-pen' method of bead movement that is presented here. The second part was use third party parts to give the robot the power to be able to dispense its own liquids, thereby allowing the beads to stay in one tube, and the liquids to be moved around. Due to time and budget constraints, the more complex robot that would be capable of moving its own liquids remains a pen and paper design. |
</p> | </p> | ||
Revision as of 23:26, 21 October 2009
|
DIY AutomationOne of the main themes of this project, as well as iGEM in general, is the simplification of both the parts and the processes of molecular biology. This allows synthetic biology to bring relatively advanced biological techniques 'to the masses'. The Biobytes Assembly is very rigid and reliable; however, it is also very repetitive and tedious. This has triggered us to develop an automated mechanical system (ie. a robot) capable of speeding up and simplifying our methods. The overall goal is that our robot would be simple enough to be used by high school students. This would provide a valuable tool in biological education. It is also our goal to create a system that is versatile enough to be used in more advanced research labs, thereby decreasing the time needed for plasmid construction. |
The Robotic DeviceOur robot is built entirely from a single Lego Mindstorms kit, using only the standard pieces and hardware sold with the kit.
|
Hardware and Software
|
CalibrationNo sensors were used in the final design of the robot, therefore the calibration of the robot's movement proved rather time consuming. Due to the fact that the program required all movement calculations to be 'reckoned,' and could not intuitively adjust each consecutive step in the program if preliminary movements had to be changed, many time and distance calculations had to be made and remade to produce to final version of the robot's program. Issues of odometry arose in the calibration of the robot. There appeared to be a problem in either the motors themselves or a firmware/software issue that does not relay any information on the distance travelled by the robot. Due to the 'reckoning' methods involved in programming, it is vital that the robot be able to know how far it has travelled, so that it is capable of returning to previous locations. This is also important so that it can accurately strike the wells and staying within the boundaries of the plate. |
Results
|
Future Work
|
In the event that you want to build it yourself...
|