Skip to content

Simple-Robotics/LoIK

Repository files navigation

LoIK

LoIK is a simple yet efficient (constrained) differential inverse kinematics solver for robotics

It is designed to function as an inner solver for various downstream applications, including global inverse kinematics and sampling-based motion planning.

Features

LoIK is a C++ template library, which provides

  • a set of efficient solvers for constrained differential inverse kinematics problems
  • support for the pinocchio rigid-body dynamics library
  • an interface to the IKBench inverse kinematics benchmark library which can be used to compare different IK solver performances
  • Python bindings leveraging eigenpy {Next release}

To cite LoIK in your publications, software, and research articles. Please refer to the Citation section for further details.

Installation

Build from source

git clone https://github.com/Simple-Robotics/LoIK --recursive
cd LoIK
mkdir build && cd build 
cmake .. -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=your_install_folder -DCMAKE_CXX_FLAGS="-march=native"
make -jNCPUS
make install

Dependencies

Notes

  • For developers, add the -D CMAKE_EXPORT_COMPILE_COMMANDS=1 when working with language servers e.g. clangd.
  • To check for runtime Eigen memory allocation, add -D CHECK_RUNTIME_MALLOC=ON
  • By default, building the library will instantiate the templates for the double scalar type.
  • To build against a Conda environment, activate the environment and run export CMAKE_PREFIX_PATH=$CONDA_PREFIX before running CMake and use $CONDA_PREFIX as your install folder, i.e. add flag -D CMAKE_INSTALL_PREFIX=$CONDA_PREFIX.

Build/install from source with Pixi

To build LoIK from source the easiest way is to use Pixi.

Pixi is a cross-platform package management tool for developers that will install all required dependencies in .pixi directory. It's used by our CI agent so you have the guarantee to get the right dependencies.

Run the following command to install dependencies, configure, build and test the project:

pixi run test

The project will be built in the build directory. You can now run pixi shell and build the project with cmake and ninja manually.

Benchmarking

We recommend Flame Graphs for performance analysis. Please refer to this code analysis tutorial for installation and usage of flame graph.

Citing LoIK

To cite LoIK, please use the following bibtex entry:

@misc{loikapi,
  author = {Wingo, Bruce and Vaillant, Joris and Sathya, Ajay and Caron, Stéphane and Carpentier, Justin},
  title = {LoIK},
  url = {https://github.com/Simple-Robotics/LoIK}
}

Please also consider citing the reference paper for the LoIK algorithm:

@inproceedings{wingoLoIK2024,
  title = {{Linear-time Differential Inverse Kinematics: an Augmented Lagrangian Perspective}},
  author = {Wingo, Bruce and Sathya, Ajay and Caron, Stéphane and Hutchinson, Seth and Carpentier, Justin},
  year = {2024},
  booktitle={Robotics: Science and Systems},
  note = {https://inria.hal.science/hal-04607809v1}
}

Contributors

Acknowledgments

The development of LoIK is actively supported by the Willow team at @INRIA Paris.