Team:Washington-Software/Project

From 2009.igem.org

(Difference between revisions)
(Overall project)
(Module BETA)
 
(45 intermediate revisions not shown)
Line 1: Line 1:
{{:Team:Washington-Software/Header|out|out|in}}
{{:Team:Washington-Software/Header|out|out|in}}
-
<html>
 
-
<head>
 
-
<style>
 
-
#globalWrapper {
 
-
margin: 0px;
 
-
padding: 0px;
 
-
background-color:#500050;
 
-
}
 
-
#content{
 
-
background:#FFdd00;
 
-
border-left-color:#FFdd00;
 
-
border-right-color:#FFdd00;
 
-
}
 
-
#footer-box {
 
-
border-top-color:#FFdd00;
 
-
border-right-color:#FFdd00;
 
-
border-bottom-color:#FFdd00;
 
-
border-left-color:#FFdd00;
 
-
background:#FFdd00;
 
-
                }
 
-
        </style>
 
-
</head>
 
-
</html>
 
{|align="justify"
{|align="justify"
==Overall project==
==Overall project==
 +
<html>
 +
<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>
 +
</html>
-
BioBrick-A-Bot Model C is the prototype of an extensible Genomic Lab Liquid Handling System. We build it using Lego bricks, so that the system 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 improved on its design and add new functionalities.
 
-
This project looks deceptively simple superficially, because it uses Lego bricks, and is being developed by a 11-years old. However, looks is extremely deceiving as explained in the [[Team:Washington-Software/Challenges| challenges section]]. The external [[Team:Washington-Software/Team|industry experts and advisors]] on this team can also testify to that.
 
 +
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 robotic modules (ALPHA and PHI), mounted on a frame (BETA). Here’s what the acronyms means:
+
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
*ALPHA – Automated Lego Pipette Head Assembly
Line 40: Line 22:
-
In order to achieve the precision needed in this project, we have replaced the Lego NXT firmware with (RobotC = link to RobotC) which provide floating point representation.  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 ]].  
+
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 design 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)
+
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 by transferring blue dyes, 4 at a time, from 1 side of the 96-well plate to the other.
+
-
<html>
+
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.
-
<body>
+
-
<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>
+
==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 aspirate and dispense fluid
**Pneumatic control to aspirate and dispense fluid
**Compression pump to "air-clean" system
**Compression pump to "air-clean" system
Line 74: Line 53:
[[Image:Robot Side View.jpg|left|475px]]
[[Image:Robot Side View.jpg|left|475px]]
[[Image:Robot Front View.jpg|right|475px]]
[[Image:Robot Front View.jpg|right|475px]]
-
<br><br><br><br><br><br><br><br><br><br><br><br><hr><br><br><br><br><br><br><br><hr>
+
<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 double-jointed arms as shown in the picture. One joint is referred as the control arm and is connected to the motor which controls entirely the joint. The other joint, 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.  
+
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''']]
-
*Videos
 
<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 other versions of ALPHA. The only difference is 6 physical constants:
+
*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 96: 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 fram is used for holding ALPHAs and PHIs, and the lego plate is where the 96-well plates and petri dishes are placed.
+
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 following:
+
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 A.
+
*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 attempt to aspirate without aspirating any liquid, and enabling it to blow extra air out.
***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 B.
+
*Motor 2 (Aspirate or Dispense Liquid)
**This motor is connected to a piston, so it can aspirate and dispense liquid.
**This motor is connected to a piston, so it can aspirate and dispense liquid.
-
*Motor C.
+
*Motor 3 (Clean Pipette)
-
**This motor is connected to to compressors compressing air in the air tank. It runs for 7 seconds once the air is released.
+
**This motor is connected to compressors compressing air in the air tank. It runs for seven seconds once the air is released.
-
*Videos
+
<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 121: 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

WashingtonColorSeal-21-clip.gif 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.

Robot Side View.jpg
Robot Front View.jpg





















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.

ALPHA


Two different ALPHA modules in action

  • 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:
    1. Top Offset
    2. Bottom Offset
    3. Control Arm Length
    4. Linkage Arm Length
    5. Inter-arm Angle
    6. Gear Ratio

Module BETA

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

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.
  • 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.