The OpenLH is a Liquid handling system based on an available robotic arm platform (uARM swift Pro) which allows for creative exploration by biologists and bio-enthusiasts.
You can find full and detailed step-by-step guide for building one on our Instructables page, including BOM, STL models and precise instructions. Find more info on the project's website. Share with us if you're building one!
Before you continue reading, make sure you have:
Python 3.7 and PyCharm IDE. Then, clone this repository by:
git clone https://github.com/idc-milab/openlh
Open the folder you cloned as a project, through PyCharm.
First, we will create virtual environment for this project (For more information https://www.jetbrains.com/help/pycharm-edu/creating-virtual-environment.html):
This project uses several libraries within it:
After setting up the virtual environment, use pip to install the required packages through the Terminal
in the bottom left:
pip install -r requirements.txt
After setting it all up, run both app.py
and listener.py
modules.
Then, in your web browser enter: http://127.0.0.1:5000/.
Now you can easily create programs for the arm via the blockly interface and run them with the OpenLH!
Move To: Move the arm to a specific location. To use it, just generate a new Move to
block (from 'Robot' section) as well as the relevant coordinates
block (from 'Robot' section). In the coordinates block, X Y Z
stands for the coordinates, E
for extrusion level and S
for movement speed.
Move Wrist: Rotate arm's wrist with the required angle. Useful to drop used tips from the arm to a disposal area.
Bitmap to Bioprint: An interface that would load a png bitmap, select all the pixels of a single color, and
print these pixels with the OpenLH. To use it, just generate a new Image
block (from 'Image' section) as well as the relevant coordinates
blocks (from 'Robot' section).
Manual Position: Puts the arm in disjoint mode, allowing the user to move it around manualy and sample coordinates. After reaching a desired location, a tip to pick up for example, hit set
button to generate the location's coordinates as a new useable block.
The uArm runs on top of an Arduino Mega 2560 with a custom version of Marlin firmware (available under GPL license). The robot operates using G-code definitions sent through UART protocol.
The code flows throughout the project in the following way: The user may generate different programs manipulating the arm using google's Blockly interface. The generated program is then compiled to python code, using the Swift API (which compiles to G-code commands), and sent as an XML Http Request to app.py. The message is then being sent as a UDP message to the listener. Eventually, the listener is executing the code which activates the arm. In addition, it is possible to save programs for later use and upload images for the Bitmap to Bioprint
feature.
app.py
listener.py
coordsplotter.py
/google-blockly
/programs
/pyuf
/templates
index.html
- main software page/uploads