Skip to content

NeLy-EPFL/quickik

Repository files navigation

QuickIK

QuickIK is a fast inverse kinematics library written in Rust, with Python and C++ bindings.

Documentation

For developers

Toolchain

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

Build

Lint/format

  • Rust: cargo fmt --check (format) and cargo clippy --workspace --all-targets (lint).
  • Python: with devtools-pyenv active, from that directory: ruff check .. (lint) and ruff format .. (format). Config is ruff.toml at the repo root, auto-discovered – covers every .py file (python/tests/, benchmark/, devtools-pyenv/ itself), but not the Python code blocks embedded in the docs site's Markdown pages.

Tests

  • Rust: cargo test --workspace (this also builds, but doesn't test, the python/cpp crates, 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-pyenv active and the bindings built (above), pytest python/tests/.

See .github/workflows/ci.yml for the exact commands CI runs.

Benchmarks

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 site

docs/build.sh serve   # http://localhost:8000

Rebuilds the Rust/Python/C++ API references and benchmark charts from your local checkout, then serves the site locally.

About

QuickIK is a fast inverse kinematics library written in Rust, with Python and C++ bindings.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages