Control Andrew Robots from Andrew Alliance
Project description
Reverse Engineering the Andrew Robot
Andrew is a robot designed to automatically perform bioscience experiments through pipetting precise quantities of liquids. The original Andrew robots are no longer supported by the manufacturer. Additionally, the existing software is old and based on Adobe AIR, a product similar to Flash, which is no longer supported by Adobe. To revitalize old robots, this repo exists to document the hardware and software of the Andrew robots, along with providing a Python library to interface with the robot.
Software Library
To install the package, run:
$ pip install andrew_robot
For basic usage, the AndrewRobot
class can be used to control both the servos and lights of the robot.
from andrew.robot import AndrewRobot
robot = AndrewRobot('D:\\Resources\\andrew.xml', 'COM3', 250000, 'COM4')
# Set the max speed to something reasonably slow
robot.max_speed = 50
The AndrewRobot constructor takes the path to the andrew.xml config file, the serial port for the servos, the baud rate for the servos (this is presumably 250000 for all Andrew robots), and the serial port for the LED controller.
To control the servos, the move_servos()
fucntion can be used. This method will attempt to move the arm to a safe height before moving the rest of the servos to their desired position, and then changing the arm height to its own desired position.
robot.move_servos(shoulder=1065, elbow=1530, wrist=1300, linear=2035, thumb=1779)
The right servo values for a desired pose can be found using the example find_poses.py
.
Functions to control the LEDs are also provided. Note that these will need a slight delay after creating an AndrewRobot
instance, as the LED controller restarts upon starting serial communication.
# Delay to let the LED controller restart
time.sleep(.1)
robot.led_arm(0)
robot.led_body(0)
Before any code can be run to interface with the servos, you will need to fix the drivers they use.
Documentation
- Communicating with the different parts of the robot
- Deep dive into the hardware of Andrew
- Servo communication and IDs
- Controlling the LEDs
- Software provided by Andrew Alliance
Limitations
Research for this was done largely using the 1000G model of Andrew robot (probably, it's not labeled clearly, but we believe this is one of the first generation of Andrew robots) and briefly double-checked on a 1000R, although not thoroughly. It is very possible that other robots may have issues with this library. Pull requests to improve the information and code here are welcome.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file andrew_robot-0.0.1.tar.gz
.
File metadata
- Download URL: andrew_robot-0.0.1.tar.gz
- Upload date:
- Size: 4.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f6c5c450b0461ce0caf9a445722519077ba5b3e021a921419f8715903306f307 |
|
MD5 | a53ae925fe45768d43071c8c24033f4e |
|
BLAKE2b-256 | 9df7590d86646a7fce91cafb19921012768b598859b9459ddec34760d852c8a9 |
File details
Details for the file andrew_robot-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: andrew_robot-0.0.1-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fbf891823d7cd1055d3ac38bf456c4f21cd6bf9993123e37f909c035685c7ca2 |
|
MD5 | 3118fa886132cbd7196d8247e92aa6a7 |
|
BLAKE2b-256 | b2b4d2f162e9ae426777efe1ed04361d504045a0e653fe57a03b8f6e7fc978a0 |