Inverse Kinematics

During a research project, I came up with a pretty interesting algorithm for solving Inverse Kinematics problems iteratively. Check out the video!
Alternatives To Inverse Kinematics
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Pinocchio1,073865 days ago5November 16, 202127otherC++
A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives
Rigidbodydynamics.jl254
a day ago30otherJulia
Julia implementation of various rigid body dynamics and kinematics algorithms
Caliko120
3 years ago5mitJava
The Caliko library is an implementation of the FABRIK inverse kinematics algorithm in Java.
Everything Will Be Ik29
2 years ago4mitHTML
A Robust Inverse Kinematics Library
Risc Handbook22
9 days ago2mit
This handbook has been compiled to help beginners in the field of robotics
Urdf2casadi Matlab20
4 months ago4mitMATLAB
Inverse Kinematics10
5 years agomitC#
During a research project, I came up with a pretty interesting algorithm for solving Inverse Kinematics problems iteratively. Check out the video!
Calikocat5
a year agootherCMake
A C++ implementation of the FABRIK inverse kinematics algorithm, based on Caliko.
Zrobotics5
8 months agomitPython
A powerful library for robotics analysis 🤖
Fabrik Single Target4
7 years agoC
A C/SDL Inverse Kinematics demo.
Alternatives To Inverse Kinematics
Select To Compare


Alternative Project Comparisons
Readme

Experimenting with Inverse Kinematics

This was an assignment for one of my courses during my studies; implementing an IK solver. I took it a few steps further and implemented some physics and a Phong-shader.

I implemented a simple 3D environment with some basic physics (a simple symplectic Euler solver with a sphere vs. axis-aligned bounding box a posteriori collision solver) to demonstrate the algorithm. The video below is a recording of the demo (clone this repository to build it yourself).

Inverse Kinematics

Building the demo from source

Prerequisites

  • MonoA software platform designed to allow developers to easily create cross platform applications part of the .NET Foundation.
  • MonoGameAn Open Source implementation of the Microsoft XNA 4 Framework.

Linux/macOS

  1. Clone this repository:
    git clone https://github.com/philiparvidsson/Inverse-Kinematics
    
  2. Compile the game:  
    cd Inverse-Kinematics
    make
    
  3. You should now be able to run it:
    make run
    

Algorithm

I came up with a pretty simple algorithm for the IK system during the assignment:

n ← number of bones
for i from n-1 to 0
    a ← vector from end of segment to beginning of segment
    b ← vector from target to beginning of segment
    
    if length of b  < length of a then
        increase compensating angle for bone i by some amount
        
    relax compensating angle for bone i by some factor
    
    r ← 0
    f ← 1
    for j from i to n-1
        r ← r + f * compensating angle of bone j
        f ← f + 1
        
    rotate bone j around axis (a x b) by some amount minus r

Although it is based on classic IK solutions (rotating each bone towards the target iteratively), the concept of compensating angles helps it "back away" to reach nearby (closer to the root point than the length of the sum of all bones in the chain) targets while displaying relatively stable motor skills.

Popular Kinematics Projects
Popular Algorithms Projects
Popular Mathematics Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C Sharp
Algorithms
Shader
Kinematics
Physics Simulation
Monogame
Collision Detection