Skip to main content

A fast kinematics library for robotics

Project description

Fast Kinematics

This is a cuda enabled library for calculating forward kinematics and Jacobian of a kinematics chain. It can be used with numpy arrays or pytorch tensors. Compared to pytorch_kinematics, this is about 1000 times faster at Jacobian calculation with 4096 parallel 7dof robot arms.

Installation

From PyPi

pip install fast_kinematics

From Source

  1. Get the docker image
    docker pull lexseal/fast_kinematics:latest
    
  2. Run the docker image
    docker run -it lexseal/fast_kinematics:latest
    
  3. Update the repo
    cd /workspace/fast_kinematics && git pull
    
  4. Run build.sh to build all wheels. The built wheels will showup in the wheelhouse dir
    ./build.sh
    
  5. Take the wheel out of the docker container. From your host machine, run
    docker cp <container_id>:/workspace/fast_kinematics/wheelhouse .
    

Usage

[!WARNING] Please use dtype np.float32 or torch.float32 for the joint configuration. The library is optimized for float32 and will not work with float64.

[!NOTE] You might need to import torch before using this library as torch will load the shared libraries. Your mileage may vary.

Minimal numpy example:

import numpy as np
from fast_kinematics import FastKinematics

N = 1024  # number of parallel calculations

# need the urdf file, number of parallel calculations and end effector link
model = FastKinematics("kuka_iiwa.urdf", N, "lbr_iiwa_link_7")

# this robot has 7 joints, so the joint configuration has size (N*7,) (1d array)
# the first 7 values are for the first robot... Note we need to use float32!
joint_config = np.random.rand(N*7).astype(np.float32)

# get the forward kinematics size (N*7,) (1d array)
# the first 7 values are the first robot's pose [x,y,z,qw,qx,qy,qz]
ee_pose = model.forward_kinematics(joint_config)

# get the jacobian size (N*6*7,) (1d array) The 7 here is the number of joints
jac = model.jacobian_mixed_frame(joint_config)
# we can reshape the jacobian to (N,7,6) and then transpose to (N,6,7)
jac = jac.reshape(-1, 6, 7).transpose(0, 2, 1)

Minimal pytorch example:

import torch
from fast_kinematics import FastKinematics

N = 1024
model = FastKinematics("kuka_iiwa.urdf", N, "lbr_iiwa_link_7")

joint_config = torch.rand(N*7, dtype=torch.float32, device="cuda")

ee_pose = model.forward_kinematics_pytorch(joint_config)
ee_pose = ee_pose.view(-1,7,6).permute(0,2,1)

There is also a jupyter notebook in the tests folder that contains usage as well as some benchmarks against pytorch_kinematics.

APIs

The docs are embedded in the library itself, you can either print out the doc string or use the code suggestions in your IDE to see the API documentation. Alternatively, please see pybind11/pybind_fast_kinematics.cpp for the API documentation.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

fast_kinematics-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

fast_kinematics-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

fast_kinematics-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (623.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

fast_kinematics-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

fast_kinematics-0.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (623.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

File details

Details for the file fast_kinematics-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_kinematics-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0500a63494e69d1e51d9770f4fa429e1d50dbbe27e5c448f8daca32bc4e03bb6
MD5 d05cedd62fb455443a0159585fbb5310
BLAKE2b-256 1b036d52d961d47d0a3847967e477abfd41f4ac4b4b6001a0172359a4981491b

See more details on using hashes here.

File details

Details for the file fast_kinematics-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_kinematics-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d2e24e736944aa7723f7445c8630d421eb61a6fcd2c23822e9bf4c6bc2d5bf69
MD5 17ffdc11623f48dbf12b047c119c0dfd
BLAKE2b-256 5a6e9f9d89f2c135d33b3c2568962415e9210b7f7e74a9d7646c638cbb5121e6

See more details on using hashes here.

File details

Details for the file fast_kinematics-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_kinematics-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 908f7ec94dfd947028170c0a37b326b3dde1b8c0a14417646e874f3e81b2cd71
MD5 98c40fb2e9ab1a25882e20bfd8133789
BLAKE2b-256 49c7c11523db2e63fd50f87276128bf26f758ffae8fcc997cdbc437029409047

See more details on using hashes here.

File details

Details for the file fast_kinematics-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_kinematics-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c01274f03fda3660c45816a86a5db820ec3d2ebc19abfac66a49451701a308f4
MD5 f23b16d06605c10a2aabecc0e969cf96
BLAKE2b-256 5701fe14947878e7cc05ed8beebbbf9e92955eb4d462e7a5be6540505835ef35

See more details on using hashes here.

File details

Details for the file fast_kinematics-0.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fast_kinematics-0.2.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c31be181899b0ad2600f00899810496a829b54819cc59d012c32ad0d0b32854
MD5 7b774ddce891441c91f269b172fd695c
BLAKE2b-256 0ae455a1aa4f5dc5126d1ddc566f6aaa37b031dc4292331eecb9bd6ea9c1bbc6

See more details on using hashes here.

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