Team:Washington-Software/Project
From 2009.igem.org
(→Overall project) |
(→Module BETA) |
||
(71 intermediate revisions not shown) | |||
Line 1: | Line 1: | ||
{{:Team:Washington-Software/Header|out|out|in}} | {{:Team:Washington-Software/Header|out|out|in}} | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
{|align="justify" | {|align="justify" | ||
==Overall project== | ==Overall project== | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
<html> | <html> | ||
<body> | <body> | ||
+ | <font color="purple" size=6>Proof of Principle Demo</font><br><br> | ||
+ | </html>'''LegoRoboBricks for Automated Biobrick DNA Assembly'''<html><br> | ||
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/FRijFX0BpGI&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FRijFX0BpGI&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/FRijFX0BpGI&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/FRijFX0BpGI&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | ||
</html> | </html> | ||
+ | |||
+ | |||
+ | BioBrick-A-Bot Model C is the prototype of an extensible Genomic Lab Liquid Handling System. We build it using Lego bricks, and it can be easily replicated by other iGEM teams and by researchers in Molecular Biology who cannot afford a typical, $10,000, commercial system. The design is modular plug-and-play, so that we can easily collaborate with future iGEM teams to modify or improve on its design and to add new functionalities. | ||
+ | |||
+ | BioBrick-A-Bot comprised of 2 LegoRoboBrick modules (ALPHA and PHI), mounted on a frame (BETA). Here’s what the acronyms means: | ||
+ | |||
+ | *ALPHA – Automated Lego Pipette Head Assembly | ||
+ | *PHI – Pneumatic Handling Interface | ||
+ | *BETA – BioBrick Environment Testing Apparatus | ||
+ | |||
+ | |||
+ | This project needs great precision to position the pipette head accurately in 3-D space, and to transfer a few microliter of fluids. In order to achieve the much needed precision, we have replaced the Lego NXT firmware with [http://www.robotc.net/ RobotC firmware] which provide floating point representations. RobotC also gives us the flexibility to develop sophisticated C programs needed to drive this project. The computations to reverse-triangulate any point in 3-D space is also non-trivial. We use 3x3 rotational matrix to simplify our [[Team:Washington-Software/Modeling | mathematical modeling ]]. | ||
+ | |||
+ | |||
+ | Due to a hardware limitation of Lego Minsdstorm, each NXT brick can only be connected to a maximum of 3 motors. We need 6 motors for this project, and use 2 NXT bricks. We designed and implemented a Master Slave Synchronization System using blue-tooth wireless technology. ALPHA is the master and when it is properly positioned at the right location, it will transmit wireless messages to PHI to request the type of pipette operations that it needs (either aspirate, dispense or clean). | ||
+ | |||
+ | |||
+ | We provide a proof of concept of this project by demonstrating the transfer of blue dyes, 4 at a time, from 1 side of the 96-well plate to the other. | ||
==Project Summary== | ==Project Summary== | ||
===Hardware=== | ===Hardware=== | ||
- | *Lego Bricks | + | *Lego Bricks (Lego Mindstorms NXT 2.0) |
**Commonly accessible industry standard | **Commonly accessible industry standard | ||
+ | |||
===Firmware=== | ===Firmware=== | ||
- | *RobotC | + | *RobotC (version 1.40) |
**Made in CMU Robotics Academy | **Made in CMU Robotics Academy | ||
**Enables floating point precision | **Enables floating point precision | ||
===Software=== | ===Software=== | ||
- | *ALPHA module | + | *ALPHA module (version 1.0) |
**Precise reverse triangulation using Rotational Matrix | **Precise reverse triangulation using Rotational Matrix | ||
**Controller of Master-Slave Synchronization | **Controller of Master-Slave Synchronization | ||
**Accurately positions pipette head | **Accurately positions pipette head | ||
- | *PHI module | + | *PHI module (version 1.0) |
- | **Pneumatic control to | + | **Pneumatic control to aspirate and dispense fluid |
**Compression pump to "air-clean" system | **Compression pump to "air-clean" system | ||
- | |||
==LegoRoboBrick Modules== | ==LegoRoboBrick Modules== | ||
- | This is BioBrick-A-Bot from a side view. | + | This is BioBrick-A-Bot from a side and a front view. |
- | [[Image:Robot Side View.jpg| | + | [[Image:Robot Side View.jpg|left|475px]] |
- | + | [[Image:Robot Front View.jpg|right|475px]] | |
+ | <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><hr> | ||
===Module ALPHA=== | ===Module ALPHA=== | ||
- | ALPHA was created in August 21, 2009. It consists of three | + | ALPHA was created in August 21, 2009. It consists of three robot arms. Each arm consist of two arm segments as shown in the picture. One arm segment is referred as the control arm and is connected to the motor which controls entirely the joint. The other arm segment, referred as a linkage is loosely attached and moves in a sphere. The end of this attaches to the platform which holds the four pipette tips. |
- | [[Image:alpha.jpg|thumb|right]] | + | [[Image:alpha.jpg|thumb|right|'''ALPHA''']] |
- | |||
<html> | <html> | ||
<body> | <body> | ||
- | + | <font color="purple" size=6>Two different ALPHA modules in action</font><br><br> | |
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/w3gM0UWEjjQ&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/w3gM0UWEjjQ&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/w3gM0UWEjjQ&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/w3gM0UWEjjQ&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | ||
</html> | </html> | ||
- | *This video shows that the same code can be used for | + | *This video shows that the same code can be used for different physical instances of ALPHA. All instances of ALPHA are the same, except for 6 physical constants: |
*#Top Offset | *#Top Offset | ||
*#Bottom Offset | *#Bottom Offset | ||
Line 83: | Line 74: | ||
===Module BETA=== | ===Module BETA=== | ||
- | [[Image:beta.jpg|thumb|right]] | + | [[Image:beta.jpg|thumb|right|'''BETA''']] |
+ | Technically, this is not a LegoRoboBrick. We call this a LegoEnviroBrick. In layman terms, this is just the chassis of the robot. | ||
+ | |||
BETA provides the environment where the robot can move and | BETA provides the environment where the robot can move and | ||
conduct its task. It consists of a telescoping frame and a big lego plate under the stand. | conduct its task. It consists of a telescoping frame and a big lego plate under the stand. | ||
- | The telescoping | + | The telescoping frame is used for holding ALPHAs and PHIs, and the lego plate is where the 96-well plates and petri dishes are placed. |
+ | |||
+ | V1.0 uses two separate petri dishes. The first dish contains ethanol and is used for cleaning the pipette tip. The second dish contains water to clean the pipette tip before transferring DNA, enzymes, etc. between wells in the 96-well plate. | ||
===Module PHI=== | ===Module PHI=== | ||
- | [[Image:phi.jpg|thumb|right]] | + | [[Image:phi.jpg|thumb|right|'''PHI''']] |
- | PHI is basically the pipette. It consists of three motors as | + | PHI is basically the pipette. PHI controls 3 pipette actions, Aspirate, Dispense and Clean. It consists of three motors whose functions are as follow |
- | *Motor | + | *Motor 1 (3-way Toggle switch) |
**This motor controls the flow of the air. If you look at it from the side when the switch is visible: | **This motor controls the flow of the air. If you look at it from the side when the switch is visible: | ||
- | ***When the switch is to the left, there is a direct flow from the pipet head to the air. This makes it possible to use the second motor (motor B) to | + | ***When the switch is to the left, there is a direct flow from the pipet head to the air. This makes it possible to use the second motor (motor B) to attempt to aspirate without aspirating any liquid, and enabling it to blow extra air out. |
***When the switch is in the middle, there is no connection. | ***When the switch is in the middle, there is no connection. | ||
***When the switch is to the right, the pressure built up in the air tank is released into the pipette head. | ***When the switch is to the right, the pressure built up in the air tank is released into the pipette head. | ||
- | *Motor | + | *Motor 2 (Aspirate or Dispense Liquid) |
- | **This motor is connected to a piston, so it can | + | **This motor is connected to a piston, so it can aspirate and dispense liquid. |
- | *Motor | + | *Motor 3 (Clean Pipette) |
- | **This motor is connected | + | **This motor is connected to compressors compressing air in the air tank. It runs for seven seconds once the air is released. |
- | + | ||
<html> | <html> | ||
- | + | <font color="purple" size=6>PHI module in action</font><br><br> | |
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/WCM2kRFt-w4&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WCM2kRFt-w4&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | <object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/WCM2kRFt-w4&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WCM2kRFt-w4&hl=en&fs=1&color1=0xd4a017&color2=0xfdd017" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object> | ||
Line 108: | Line 102: | ||
*This video shows Phi running by itself. | *This video shows Phi running by itself. | ||
+ | |||
+ | ==Current Functionality and Limitations== | ||
+ | BioBrick-A-Bot V1.0 is only a proof-of-principle prototype. In its current implementation, it is not user-friendly enough to be used by a standard molecular biologist directly. In our current program, both ALPHA and PHI provides a set of primitive functions that can be called by a driver program. ALPHA has a command that allows the pipette head to move to any location and tell PHI to do an action. PHI has primitive functions for ASPIRATING, DISPENSING and CLEANING. In Version 1.0, we still need a programmer to write a driver program and hence it is not usable by a molecular biologist. | ||
+ | |||
+ | In the planned version 2.0, we will build a nice GUI where a molecular biologist can specify what they want to do, without the need of having a programmer to write the driver program. The cost of a typical commercial liquid handling system is about $10,000. The hardware cost of this project is only about $700. We have developed the primitive functions to show that the robot works. The rest of the work is software based, and will not increase the cost of the robot, if we provide it to the user community in the form of open-sourced programs. This project also provides an open framework, where other iGEMers can extend our current functionality and collaborate with us to further develop the user interface too. Hence, in subsequent years, the cost of the project will remain almost constant at $700, but it will have better and better software support. |
Latest revision as of 01:33, 22 October 2009
Home | Team | Project | Modeling | Notebook | Challenges | Miscellaneous |
---|
Contents |
Overall project
Proof of Principle Demo
LegoRoboBricks for Automated Biobrick DNA Assembly
BioBrick-A-Bot Model C is the prototype of an extensible Genomic Lab Liquid Handling System. We build it using Lego bricks, and it can be easily replicated by other iGEM teams and by researchers in Molecular Biology who cannot afford a typical, $10,000, commercial system. The design is modular plug-and-play, so that we can easily collaborate with future iGEM teams to modify or improve on its design and to add new functionalities.
BioBrick-A-Bot comprised of 2 LegoRoboBrick modules (ALPHA and PHI), mounted on a frame (BETA). Here’s what the acronyms means:
- ALPHA – Automated Lego Pipette Head Assembly
- PHI – Pneumatic Handling Interface
- BETA – BioBrick Environment Testing Apparatus
This project needs great precision to position the pipette head accurately in 3-D space, and to transfer a few microliter of fluids. In order to achieve the much needed precision, we have replaced the Lego NXT firmware with [http://www.robotc.net/ RobotC firmware] which provide floating point representations. RobotC also gives us the flexibility to develop sophisticated C programs needed to drive this project. The computations to reverse-triangulate any point in 3-D space is also non-trivial. We use 3x3 rotational matrix to simplify our mathematical modeling .
Due to a hardware limitation of Lego Minsdstorm, each NXT brick can only be connected to a maximum of 3 motors. We need 6 motors for this project, and use 2 NXT bricks. We designed and implemented a Master Slave Synchronization System using blue-tooth wireless technology. ALPHA is the master and when it is properly positioned at the right location, it will transmit wireless messages to PHI to request the type of pipette operations that it needs (either aspirate, dispense or clean).
We provide a proof of concept of this project by demonstrating the transfer of blue dyes, 4 at a time, from 1 side of the 96-well plate to the other.
Project Summary
Hardware
- Lego Bricks (Lego Mindstorms NXT 2.0)
- Commonly accessible industry standard
Firmware
- RobotC (version 1.40)
- Made in CMU Robotics Academy
- Enables floating point precision
Software
- ALPHA module (version 1.0)
- Precise reverse triangulation using Rotational Matrix
- Controller of Master-Slave Synchronization
- Accurately positions pipette head
- PHI module (version 1.0)
- Pneumatic control to aspirate and dispense fluid
- Compression pump to "air-clean" system
LegoRoboBrick Modules
This is BioBrick-A-Bot from a side and a front view.
Module ALPHA
ALPHA was created in August 21, 2009. It consists of three robot arms. Each arm consist of two arm segments as shown in the picture. One arm segment is referred as the control arm and is connected to the motor which controls entirely the joint. The other arm segment, referred as a linkage is loosely attached and moves in a sphere. The end of this attaches to the platform which holds the four pipette tips.
- This video shows that the same code can be used for different physical instances of ALPHA. All instances of ALPHA are the same, except for 6 physical constants:
- Top Offset
- Bottom Offset
- Control Arm Length
- Linkage Arm Length
- Inter-arm Angle
- Gear Ratio
Module BETA
Technically, this is not a LegoRoboBrick. We call this a LegoEnviroBrick. In layman terms, this is just the chassis of the robot.
BETA provides the environment where the robot can move and conduct its task. It consists of a telescoping frame and a big lego plate under the stand. The telescoping frame is used for holding ALPHAs and PHIs, and the lego plate is where the 96-well plates and petri dishes are placed.
V1.0 uses two separate petri dishes. The first dish contains ethanol and is used for cleaning the pipette tip. The second dish contains water to clean the pipette tip before transferring DNA, enzymes, etc. between wells in the 96-well plate.
Module PHI
PHI is basically the pipette. PHI controls 3 pipette actions, Aspirate, Dispense and Clean. It consists of three motors whose functions are as follow
- Motor 1 (3-way Toggle switch)
- This motor controls the flow of the air. If you look at it from the side when the switch is visible:
- When the switch is to the left, there is a direct flow from the pipet head to the air. This makes it possible to use the second motor (motor B) to attempt to aspirate without aspirating any liquid, and enabling it to blow extra air out.
- When the switch is in the middle, there is no connection.
- When the switch is to the right, the pressure built up in the air tank is released into the pipette head.
- This motor controls the flow of the air. If you look at it from the side when the switch is visible:
- Motor 2 (Aspirate or Dispense Liquid)
- This motor is connected to a piston, so it can aspirate and dispense liquid.
- Motor 3 (Clean Pipette)
- This motor is connected to compressors compressing air in the air tank. It runs for seven seconds once the air is released.
PHI module in action
- This video shows Phi running by itself.
Current Functionality and Limitations
BioBrick-A-Bot V1.0 is only a proof-of-principle prototype. In its current implementation, it is not user-friendly enough to be used by a standard molecular biologist directly. In our current program, both ALPHA and PHI provides a set of primitive functions that can be called by a driver program. ALPHA has a command that allows the pipette head to move to any location and tell PHI to do an action. PHI has primitive functions for ASPIRATING, DISPENSING and CLEANING. In Version 1.0, we still need a programmer to write a driver program and hence it is not usable by a molecular biologist.
In the planned version 2.0, we will build a nice GUI where a molecular biologist can specify what they want to do, without the need of having a programmer to write the driver program. The cost of a typical commercial liquid handling system is about $10,000. The hardware cost of this project is only about $700. We have developed the primitive functions to show that the robot works. The rest of the work is software based, and will not increase the cost of the robot, if we provide it to the user community in the form of open-sourced programs. This project also provides an open framework, where other iGEMers can extend our current functionality and collaborate with us to further develop the user interface too. Hence, in subsequent years, the cost of the project will remain almost constant at $700, but it will have better and better software support.