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)


  1. hi, i'm ali. now i'm still build a hexapod robot using AX-12, can i ask inverse kinematics for AX-12, can i ask the source code to control AX-12 with Inverse Kinematics?? here my email

  2. I need to do some tidying up on source code first or it may not be understandable. But yes, I will be releasing source code.

  3. hi, but i need now the source code.. i will learn your code..

    very thank you