Skip to main content

Python 3 implementation of FABRIK (Forward And Backward Reaching Inverse Kinematics) algorithm.

Project description

pyfabrik

Badge showing number of total downloads from PyPI.

Badge showing number of monthly downloads from PyPI.

Badge showing that code has been formated with Black formatter.

Python 3 implementation of FABRIK (Forward And Backward Reaching Inverse Kinematics).

Installation

pip install pyfabrik

Usage

NOTE: API is still very unstable (until the 1.0 release). Suggestions are welcome.

import pyfabrik
from vectormath import Vector3

initial_joint_positions = [Vector3(0, 0, 0), Vector3(10, 0, 0), Vector3(20, 0, 0)]
tolerance = 0.01

# Initialize the Fabrik class (Fabrik, Fabrik2D or Fabrik3D)
fab = pyfabrik.Fabrik3D(initial_joint_positions, tolerance)

fab.move_to(Vector3(20, 0, 0))
fab.angles_deg # Holds [0.0, 0.0, 0.0]

fab.move_to(Vector3(60, 60, 0)) # Return 249 as number of iterations executed
fab.angles_deg # Holds [43.187653094161064, 3.622882738369357, 0.0]

Goal

Inverse kinematics example with human skeleton.

Roadmap

  • Basic 2D (flat chain)
  • Basic 3D (flat chain)
  • 3D testing sandbox
  • Basic 2D joint movement restrictions
  • Basic 3D joint movement restrictions
  • Complex chain support 2D
  • Complex chain support 3D

Contributing

All contributions are appreciated.

Read the paper paper.

FABRIKs homepage has links to other implementations.

License

GNU GENERAL PUBLIC LICENSE Version 3

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfabrik-0.3.0.tar.gz (15.5 kB view hashes)

Uploaded Source

Built Distribution

pyfabrik-0.3.0-py3-none-any.whl (15.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page