Monday, 8 September 2014

Introducing Elvis

Elvis is a 6-axis robotic arm the size of a human arm, built from off the shelf electronics and laser-cut acrylic pieces, and is directly driven from Rhino + Grasshopper. This is the official introduction of Elvis 1.0.

Elvis is open source and shared under a GNU GPL v3.0 licence so you can download everything required to build and use it from its GitHub page. It is very much a work-in-progress, and a lot can be improved. Included in there is a basic template for an end-effector, you can build on top of that to suit whatever it is you want to do with it. You can also modify the basic design of the robot itself to suit your requirement.

Elvis Mission Control in Grasshopper

Why Elvis?

Robotics is an interesting area of design/fabrication research, and recent developments by the likes of ETH ZurichICD Stuttgart, Bot & Dolly, TU Delft and numerous others have created excitement and spurred curiosity around the interesting potential robotics has in design and architecture. But anyone who has ever setup a Kuka/ABB/etc. knows that programming one is no easy task. They're extremely capable, precise and sophisticated in what they can do, but they can take a while to setup making it difficult to test draft ideas and prototype in quick iteration. And that is assuming you are lucky enough to have ready access to a robotic arm -- which most designers don't.

Elvis was conceived to fit this need. It's small, light and portable, and is meant for quick prototyping & iteration -- hence the direct control from within Grasshopper. It is not meant to replace an industrial-grade arm: it is not as precise or as fast, it costs roughly 5% of the cheapest desktop industrial arm available, and it takes a person about 2-3 days to put one together.
Elvis's version of "Hello world" 

Technical Details

DOF/Axis: 6
Motors: 8 x Servos, Dynamixel AX-12A
Range: ~525mm for wrist Centre (diagram below explains in detail)
Cost: £480 (UK). Presumably cheaper in the US/Asia. Detailed breakdown here.
IK Solver: Trigonometric
Wrist Type: Spherical

Future Development

Broadly speaking, the precision of the arm needs to be significantly improved. As of now, there is backlash in the system caused by the servos, and there is also flex in the materials used to built the arm itself. Geometric changes can substantially reduce the material flex leading to improved accuracy. Eventually backlash could be reduced through more appropriate hardware.

Elvis uses servos that are capable of reading their positions, so within a tolerance, the arm already "knows" where it is. This could easily be used as a forward kinematic system to digitally read positions in space and generate gcode for larger arms, similar to the system proposed by Andrew Payne, with the added benefit of a 6th axis. A camera/leap/kinect/other sensory mechanism can be used to setup an enhanced feedback system giving it a more precise idea of where it is, where it should be or what it should do next.

There are some very good robot simulation tools available on Grasshopper such as Daniel Piker's LobsterRobots.IO's Godzilla, etc. Last I checked I was unable to use Lobster as the IK solver for Elvis because of Elvis's asymmetrical axis configuration. I haven't been able to test it with Godzilla as yet, but the intention is to make Elvis easier to use with all these fantastic tools already available.


The directors, tutors and students of AAVS Dubai and AAVS Lyon for being wonderful platforms to further the development of Elvis, and the ZHA_code bunch for the insights and stimulating conversations.

The AA Visiting School Dubai showreel about the process of building and using Elvis

Man vs. Robot: Haider and Elvis in an 'axis-fight' at the AA Visiting School Dubai

The Grasshopper control file can compute IK for given toolpaths and directly move Elvis on those paths.