Team:Alberta/Project/Automation
From 2009.igem.org
Line 33: | Line 33: | ||
<font size="2"> | <font size="2"> | ||
- | + | ||
- | <img src="https://static.igem.org/mediawiki/2009/6/6d/UofA09_diyAuto_Photo1.png"> | + | <img style="padding:20px;" src="https://static.igem.org/mediawiki/2009/6/6d/UofA09_diyAuto_Photo1.png" align = "right" width="67%"> |
- | + | ||
<p> | <p> | ||
- | One of the main themes of this project, as well as iGEM in general, is the simplification of both | + | One of the main themes of this project, as well as iGEM in general, is that the simplification of both parts and processes provided by the synthetic biology movement are capable of bringing fairly advanced biological techniques 'to the masses'. |
</p> | </p> | ||
<p> | <p> | ||
- | + | With one of the DNA assembly techniques that have been developed during the course of the project, the goal was to speed up and simplify a very time consuming process. The hope was that it would be simple enough to be used by high school students. Better yet, a trained monkey. Even better still, a simple inexpensive robotic device, thereby leaving the both the original lab technician, the high school student, and the trained monkey more time for beer, which leads to the situation where a lab technician, high school student and monkey all walk into the bar (cliche, I know). | |
+ | </p> | ||
</font></div> | </font></div> | ||
Line 72: | Line 73: | ||
<p> | <p> | ||
- | + | Since the DNA assembly method consists mainly of a few repeated and simple actions, interspersed with relatively long idle periods, it seemed like a good candidate for a little bit of automation. This little automaton is built entirely out of a popular plastic construction set, using the only the standard pieces and hardware. The firmware has been somewhat customised, however. | |
- | + | ||
- | + | ||
</p> | </p> | ||
Line 81: | Line 80: | ||
<li> | <li> | ||
- | < | + | <h4>Why use a 'toy'?</h4> |
- | + | So why would you want to use something like a toy to build such a device, when there are so many other resources available? The construction set was chosen because of the reality that not everybody has access to a machine shop, PCB manufacturing equipment, and a micro-controller programming device. These things are usually pretty expensive too, which would probably preclude large chunks of people from being able partake in such robotic delight. The hope was that by using things that are relatively inexpensive, and readily available parts, places like high-schools and similar would be able to make use of this. | |
</li> | </li> | ||
Line 119: | Line 118: | ||
- | < | + | <h2>Hardware and Software</h2> |
<!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | <!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | ||
Line 131: | Line 130: | ||
<li> | <li> | ||
- | < | + | <h4>Hardware</h4> |
<p> | <p> | ||
- | + | Since the idea was to only parts that came with the construction kit, the problem was a lot like on the Apollo 13 movie, where the engineer comes into the room with a big box of stuff and says something to the effect of, "We have to solve our problem using nothing but this." So the hardware for the robot consists of pieces from the construction kit. Also used was some electrical tape, some small rare earth magnets, and a pipette tip. Oh, and a thin bolt that I found underneath my desk. Ok, scratch that, I didn't really end up using the bolt, I substituted more tape. | |
- | + | ||
</p> | </p> | ||
- | < | + | <p> |
- | + | ||
- | The | + | <img style="padding : 20px;" src="https://static.igem.org/mediawiki/2009/7/7d/UofA_diyAuto_dipPen.png" align="right" width ="35%"> |
+ | |||
+ | The easiest and perhaps only way of accomplishing the automation of the DNA assembly protocol using only the parts in the kit was to move the beads from one well to another, where the wells had previously been filled with the correct DNA pieces, washes, etc. The other option would have been to hold the beads in one place, and move the liqiud in and out of a single tube, as had been done by the experiments that are currently performing the protocol. Dispensing liquids via a pipette or other means was deemed to be difficult to do using only the 3 motors provided in the kit. A sort of 'dip pen' method was settled on, where the beads would be attracted to a 'pen' placed in one well, the lifted up and placed in another well, where they would be shaken off and allowed to sit in the solution. | ||
+ | |||
</p> | </p> | ||
- | < | + | <p> |
- | + | ||
- | + | ||
+ | The physical design of the robot was probably the most challenging and time consuming parts of the whole process. This was mainly owing to the fact that the plastic construction pieces and only lengths and sizes of the different types of pieces. Also a problem was the amount of 'flex' or 'wiggle' that you could get out of the plastic parts. This led to a few failed implementations that had to be completely disassembled and started again. The current physical implementation owes its inspiration to Hans Andersons sudoku solving robot (http://tiltedtwister.com/sudokusolver.html). This adapted design allowed for the necessary amount of precision for 'pen' to be positioned over the well, along with the advantage of not possessing a large number of points where the play in the gears and joints would become a problem. | ||
+ | </p> | ||
<center> | <center> | ||
Line 152: | Line 153: | ||
</center> | </center> | ||
+ | </li> | ||
- | + | <li> | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
+ | <h4>Software</h4> | ||
+ | <img style="padding : 20px;" src="https://static.igem.org/mediawiki/2009/1/12/UofA09_diyAuto_SampleFuncs.png" align="right" width="45%"> | ||
<p> | <p> | ||
- | + | There was a bit more leeway with the choice of software. For this, nxtOSEK (http://lejos-osek.sourceforge.net/) was used to program the 'brains' of the robot. The instructions for installation are located here: http://lejos-osek.sourceforge.net/installation. This installation requires quite a few different steps, and a few different things to be installed, either on the robot brain, or on the programming computer. Unlike some of the other programming methods available, this one has the advantage of being free of charge. | |
- | < | + | </p> |
- | + | ||
- | + | ||
<p> | <p> | ||
- | In the | + | In order to preserve the original functionality of the robot brain, in the event that it would be used for something different later, the firmware loaded onto the brain was John Hansen's Enhanced NXT firmware (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 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 | + | The programming itself can be done in can be done in a few different languages, but the the 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 automatons 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, allowing for more time doing really gig-taxing things like calibrating the automatons movements. |
</p> | </p> | ||
<p> | <p> | ||
- | Software design was | + | Software design was very straightforward. Using examples provided for nxtOSEK, the syntax necessary for interacting with the motor classes was easy. The difficult part is working out the program such that the robot is able to position the dip-pen overtop of the desired well most of the time. |
</p> | </p> | ||
Line 196: | Line 180: | ||
</ul> | </ul> | ||
- | |||
- | |||
- | |||
Line 219: | Line 200: | ||
- | < | + | <h2>Getting to a Working Prototype</h2> |
<!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | <!-- <div align="justify" style="padding-left:20px; padding-right:20px"> --> | ||
Line 225: | Line 206: | ||
<font size="2"> | <font size="2"> | ||
+ | |||
+ | <ul> | ||
+ | |||
+ | |||
+ | <li> | ||
+ | <h4>Hardware/Software Iteration</h4> | ||
<p> | <p> | ||
- | + | Getting something that even sort of worked was very much just a iterative process (pictured is what one of these failed iterations in progress looks like). The most time consuming was the different physical configurations that had to be tried to come up with the current one. The hardest part was trying to come up with a way that would allow for the tip to descend with or without the magnet using only one motor. | |
+ | </p> | ||
+ | |||
+ | <p> | ||
+ | The script writing was also a very much iterative process (you may be familiar with the 'burn and learn' method of micro-controller programming). This was made worse by the fact that not only did the movements require calibration, but every different physical configuration required a completely (and usually radically) different calibration. | ||
+ | </p> | ||
+ | <img style="padding : 20px;" src="https://static.igem.org/mediawiki/2009/8/8c/UofA09_diyAuto_HardwareInc.jpg" align="right"> | ||
+ | |||
+ | </li> | ||
+ | <li> | ||
+ | <h4>Calibration</h4> | ||
+ | <p> | ||
+ | Due to the fact that no sensors were really used in the final plan for this robot, the calibration of its movement was one of the single most time consuming and aggravating parts of the whole process. Due the the fact that all the distances were 'dead reckoned' rather than sorted out on the fly, many times and distances had to be estimated and ultimately changed in an iterative process that allowed for something that came close to working. | ||
+ | |||
+ | One of the problems that was discovered during this calibration process is the problem the physical set up posed with odometry. There seems to be a problem somewhere in either the motors themselves or some firmware/software issue, and the issue is such that some of the robots travelled distance 'disappears' as far as it is concerned. Due to the dead reckoning, it is vital that the robot be able to know how far it has traveled, so that it will be able to make it back, after it has traveled some distance. This is also important for it being able to accurately strike the wells, and also for staying within the boundaries of the plate. | ||
+ | |||
+ | |||
+ | </li> | ||
+ | |||
+ | </ul> | ||
+ | |||
- | |||
- | |||
</font></div> | </font></div> | ||
Line 285: | Line 290: | ||
<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. The beads where not completely removed from the starting well both because of surface tension interactions with the liquid, which held a small amount of beads in the intial well. The concentration of beads in the inital well was also not helped by the unreliability of the pen lowering mechanism, which would sometimes would drop the magnet when it wasn't supposed to, and move the beads in the opposite direction. |
+ | </p> | ||
+ | |||
+ | <p> | ||
+ | Some of the beads did remain on the tip, even when the tip was removed from the liquid. This is likely due to the method that was used to close off the end of the tip. The tip was melted with a lighter, which left some ridges for the beads to get stuck to. | ||
</p> | </p> | ||
Line 292: | Line 301: | ||
<li> | <li> | ||
- | <h4> | + | <h4>Problems</h4> |
<ul> | <ul> | ||
<li><b>Sensitivity to initial conditions</b> | <li><b>Sensitivity to initial conditions</b> | ||
Line 335: | Line 344: | ||
+ | <li> | ||
+ | <b>Software Datatypes</b> | ||
+ | <p> | ||
+ | More of an annoyance than a problem, but all of the inputs and outputs of the processor are integer datatypes, and not doubles or floats. While this can no doubt be worked around by changing the physical setup, sometimes it just works out that you want 5.5 instead of 5. Since all the numbers are integers, you've got your option between 4 and 6, which usually doesn't work when you're trying to do fine control. | ||
+ | </p> | ||
+ | |||
+ | |||
+ | </li> | ||
Line 406: | Line 423: | ||
<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 impossible to create one robotic platform that performs the desired tasks. |
</p> | </p> | ||
Line 420: | Line 437: | ||
<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 has been 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:30, 21 October 2009
|
DIY AutomationOne of the main themes of this project, as well as iGEM in general, is that the simplification of both parts and processes provided by the synthetic biology movement are capable of bringing fairly advanced biological techniques 'to the masses'. With one of the DNA assembly techniques that have been developed during the course of the project, the goal was to speed up and simplify a very time consuming process. The hope was that it would be simple enough to be used by high school students. Better yet, a trained monkey. Even better still, a simple inexpensive robotic device, thereby leaving the both the original lab technician, the high school student, and the trained monkey more time for beer, which leads to the situation where a lab technician, high school student and monkey all walk into the bar (cliche, I know). |
The Robotic DeviceSince the DNA assembly method consists mainly of a few repeated and simple actions, interspersed with relatively long idle periods, it seemed like a good candidate for a little bit of automation. This little automaton is built entirely out of a popular plastic construction set, using the only the standard pieces and hardware. The firmware has been somewhat customised, however.
|
Hardware and Software
|
Getting to a Working Prototype
|
Results
|
Future Work
|
In the event that you want to build it yourself...
|