Fast inverse kinematics library aimed for both high throughput and low latency.
QuickIK provides high-level APIs for processing consecutive frames (i.e. with warm starts) and multi-threaded batch processing, as well as low-level APIs for more specific use cases (e.g. real-time application). QuickIK is written in Rust but comes with Python and C++ bindings.
See the docs site for installation, usage examples, and benchmarks against KDL, Pinocchio, and RBDL.
Not yet published to crates.io or PyPI – see docs/installation.md for building from a local clone.
A series of Python tools are used for development (Python bindings build tools, linting, benchmark plotting, unit testing, etc.). These are provided in a uv-managed environment under devtools-pyenv/. This environment is unrelated to the QuickIK Python bindings, which lives under python/. The rest of the section assumes you have activated this environment:
cd devtools-pyenv && uv sync && source .venv/bin/activate- Rust core:
cargo build(add--workspaceto also build thepython/cppbindings crates and thebenchmark/crates). - Python bindings:
cd python && maturin develop --release– seedocs/installation.mdfor prerequisites. - C++ bindings: CMake, from
cpp/– seedocs/installation.md.
- Rust:
cargo fmt --check(format) andcargo clippy --workspace --all-targets(lint). - Python: with
devtools-pyenvactive, from that directory:ruff check ..(lint) andruff format ..(format). Config isruff.tomlat the repo root, auto-discovered – covers every.pyfile (python/tests/,benchmark/,devtools-pyenv/itself), but not the Python code blocks embedded in the docs site's Markdown pages.
- Rust:
cargo test --workspace(this also builds, but doesn't test, thepython/cppcrates, since neither has its own#[test]s). - C++:
./cpp/build/quickik_cpp_tests, built as part of the C++ bindings step above. - Python: with
devtools-pyenvactive and the bindings built (above),pytest python/tests/.
See .github/workflows/ci.yml for the exact commands CI runs.
See benchmark/README.md for running QuickIK's own (Rust/Python/C++) and the external libraries' (KDL, Pinocchio, RBDL) benchmarks, and aggregating results into the comparison charts shown on the docs site.
docs/build.sh serve # http://localhost:8000Rebuilds the Rust/Python/C++ API references and benchmark charts from your local checkout, then serves the site locally.