Sunday, 15 April 2012

Friday, 13 April 2012

The Belly of the Beast

The first photos of the underneath of the finished (I hope) body. A high capacity 4500mAh lithium ion (Li-On) battery is slung underneath, providing 4.5 times the battery life of the Robotis Bioloid Premium 1000mAh battery. Black elastic cord is used to secure the battery but allow for quick change.

Tuesday, 13 March 2012

Octopod, not Hexapod!

The scorpion has the 8 legs it deserves now. My early experiments show it's easier to carry greater weight without straining the front and back legs if there are 8 legs and not 6.

So that's now 16 of AX-12A and 8 of AX-18A servos for the legs. The arms and tail use a further 7 servos (mixed AX-18A and AX-12A).

The main 'chassis' is made from 4 black 'CM5 adapter' parts from Trossen Robotics

The Comms and Display board

The ATMega2561-based CM-510 has the limitation of only two serial ports. One is used for the Dynamixel bus, leaving only one other for Zigbee or PC comms. The Scorpion needs several serial ports:
  1. Spektrum DX7s remote control
  2. ĀµOLED-160-G1(GFX) OLED display
  3. PC logging
A separate Arduino Mega clone board is used to merge data from these three sources and route it to/from the CM-510's Zigbee/PC comms port. The Arduino board is connected to a home made (and slightly messy underneath) board with OLED display, superflux RGB LEDs and so on. More details to follow, but here are some early photos.

Broken legs - the work around

Even the weedier AX-12A Dynamixel servos used in the knee and hip joints have enough power to snap the weaker Bioloid frame parts - especially the F10 bracket.

The hexpod robot snapped two of these in early attempts at walking. I can blame my bad software, but it's not good when a software bug can cause a hardware failure...

So I've doubled up the F10 bracket, which should make it somewhere between 2 and 8 times stronger (the 8 times if the two layers are firmly clamped together and can't slide relative to each other). This seems to have done the trick. No more broken legs.

Sunday, 4 March 2012

Controlling the legs: Inverse Kinematics

For my robot I'm developing an Inverse Kinematics (IK) engine from scratch. The purpose of the IK engine is to convert actions and positions from coordinate systems which makes sense for the complete robot (and the operator) into angular movements of the leg servos (see Wikipedia)

Although this is long since a 'solved' problem, it is nonetheless difficult to get right on an embedded platform because the equations are tough to solve symbolically or numerically. I'll be developing an approach where a workstation precomputes a number of tables which are downloaded with the robot firmware and then used by the robot in real time.

The first step is to get accurate positioning of a single leg. We wish to compute the three servo angles...
  • theta S - Swing angle
  • theta H - Hip angle
  • theta K - Knee angle
 ... in terms of our input parameters:
  • X - leg displacement forwards (horizontal)
  • Y - leg displacement perpendicular to body (horizontal)
  • Z - distance from hip to tip of foot (vertical)

Bioloid, Embedded-C and AVR Studio

Robotis generally includes pretty good instructions on how to use what they call 'Embedded C' - running compiled C code natively on the CM-510 or other controller. However no matter how many times I followed their instructions, AVR Studio (the GUI / build environment) could not find the compiler and make utility (provided in WinAVR).
The solution is to manually configure the path to WinAVR executables in the 'Custom Options' tab of the Project -> Configuration Options menu dialog. The image shows my example, where WinAVR was installed to e:\bioloid.

Saturday, 25 February 2012

Weight and balance

A hexapod scorprion with large pincers and tail walks less well that I had hoped. It seems very difficult to walk with any significant weight forward or backward of the legs. So although I like the look of this model and spent a load of time getting the chassis right, it's back to the drawing board... I'm going to investigate 8 legs (octopod) and less weight out beyond the legs.

Saturday, 18 February 2012

Buying S2 bolts in bulk

The Bioloid kits ship with a vast number (200?) of 'S1' bolts (machine screws). S1 are used to join brackets to servos, and some brackets to brackets. S2, S3 and S4 are really useful when two brackets need joining. But Robotis only include 20 of each! This isn't enough for 4 per leg on a hexapod. You can buy a complete set of additional bolts, but you still only get 20xS2, 20xS3 and so on.

Fortunately the bolts are standard sizes:

S1 = M2 x 6mm
S2 = M2 x 8mm
S3 = M2 x 10mm
S4 = M2 x 12mm

So a quick eBay search for "M2 X 8 PAN HEAD POZI" turns up packs of S2. The ones I bought from jf_tools have a slightly larger head than the Robotis ones, but in many places this is a benefit (they sink into the plastic less when done up tight)

Leg design

I've chosen a 3 DOF (degrees of freedom) leg because this is sufficient to place the tip of the leg (i.e. foot) anywhere in a bounded 3D space. I will be able to control how far forward, out from the body, and up in the air the leg is. 4 DOF would be cool but the servo count (and therefore the weight) would be high as would the complexity of the control algorithms. The three degrees of freedom are:

* Swing (leg backwards/forwards), driven by AX-18A servo

* Hip (lifting of the entire leg up and down), driven by AX-12A servo

* Knee (lifting of the lower half of the leg), driven by AX-12A servo

Choosing the feet

The Bioloid kits don't include good feet for multi-legged robots. The Robotis multi-legged designs tend just to use pointy plastic parts which have no grip on the floor. They also make a loud tapping sound on hard surfaces. I therefore decided to search for softer, more grippy alternative. Two evenings of web searching later I found these anti vibration mountings for industrial equipment. They are mainly a dense rubber, but with a threaded (M8) male insert. By chance the M8 insert passes easily (but snugly) through the large hole in the Bioloid F9 bracket. The pointy end to the foot means that it can make contact with the floor at various angles which will be important for smooth walking with 3 servos per leg.

Thursday, 16 February 2012

The inspiration

This project is heavily based around the Bioloid robotic system from Robotis in Seoul, South Korea. I got my Bioloid Premium kit from RoboSavvy in the UK (excellent service by the way). Amongst other models, the Premium Kit can build a robot scorpion - video here. It looks like this:

It's a fun model and for a 18 servo limit (what the kit is supplied with) it's not too bad. However it could be so much better. My main gripes are:
  • Only 2 degrees of freedom per leg. This means the feet skid badly when it walks
  • Poor walking gait - just an inefficient tripod gait run at a frantic rate
  • The pincers are fixed into place - no moving arms
  • No remote control except for responding to clapping
The Pointless Robot will expand on this in many ways.

The beginning...

First post of a project blog


If all goes well, this blog will track the design and building of a robot scorpion with:
  • Over 30 Robotis Dynamixel networked servos
  • Inverse kinematic walking (probably just 6 legs)
  • Arms, pincers and a stinging tail
  • Robust 2.4GHz remote control with over 10 channels (hacked)
  • Multiple microprocessors including an Arduino Mega
  • Attitude and guidance system
  • Autonomous and user-controlled behaviours
  • Large Li-Po power cells
  • ...more stuff I haven't thought of yet!