Close

Inverse Kinematics

A project log for 8BitRobots Module

A common hardware, software and 3D printed module to enable fun, educational robots anyone can print and program.

tim-wilkinsonTim Wilkinson 06/12/2018 at 17:110 Comments

One of the pieces I tried to build for my first ROV was a manipulator arm. This was based around a kit I bought on eBay and adapted to use some Hitec underwater servos (which are *slightly* larger than their non-underwater equivalent for some reason). I still have the arm somewhere, but I never got it to work well because I never worked out its kinematics. At the time I imagined a little high-school euclidian geometry was all I needed. Apparently not. It turned out to be much more difficult.

Thankfully, people far clever than me have created algorithms and written code to solve these problems. One conceptually easy to understand algorithm can be found here (http://www.andreasaristidou.com/FABRIK.html) and is the basis for this javascript library (https://github.com/lo-th/fullik) which I've based my work on.

I've added a new category of components to my Blockly interface which allow the programmer to define the Inverse Kinematics of a system. In the above example, a simple robot limb consists of three bones, each hinged in a straight line. The bones are given length, initial direction (when the hinge angle is zero), and the hinges given an axis and limits. The application can then define the location of the end of the limb, and the system will solve the inverse kinetics and provide the angle of each hinge. For a real robot these angles would then be fed into the relevant servos with little, if any, more work.

All the heavy lifting is done by the FullIK library but hopefully this visual interface makes inverse kinematics more accessible. For the rolling robot this isn't terribly useful, but it'll come in handy for the robot arm (https://hackaday.io/project/158798-3d-printed-robot-arm-8bitrobots) and walking bot (https://hackaday.io/project/158800-nabi-a-sideways-walking-robot-8bitrobots).

Discussions