{"id":21601485,"url":"https://github.com/simple-robotics/loik","last_synced_at":"2025-04-09T16:17:56.031Z","repository":{"id":248903055,"uuid":"816191597","full_name":"Simple-Robotics/LoIK","owner":"Simple-Robotics","description":"Low-Complexity Inverse Kinematics","archived":false,"fork":false,"pushed_at":"2025-04-07T21:26:50.000Z","size":208,"stargazers_count":75,"open_issues_count":5,"forks_count":5,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-09T16:17:52.167Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Simple-Robotics.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-17T08:19:02.000Z","updated_at":"2025-03-12T03:45:29.000Z","dependencies_parsed_at":"2025-02-24T08:11:37.737Z","dependency_job_id":"c26353cf-2470-4cda-8b8d-d08fea8d5d56","html_url":"https://github.com/Simple-Robotics/LoIK","commit_stats":null,"previous_names":["simple-robotics/loik"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Robotics%2FLoIK","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Robotics%2FLoIK/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Robotics%2FLoIK/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Simple-Robotics%2FLoIK/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Simple-Robotics","download_url":"https://codeload.github.com/Simple-Robotics/LoIK/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065281,"owners_count":21041872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T19:09:38.889Z","updated_at":"2025-04-09T16:17:55.999Z","avatar_url":"https://github.com/Simple-Robotics.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LoIK\n\n**LoIK** is a simple yet efficient (constrained) differential inverse kinematics solver for robotics \n\nIt is designed to function as an inner solver for various downstream applications, including global inverse kinematics and sampling-based motion planning.\n\n## Features\n\n**LoIK** is a C++ template library, which provides\n\n* a set of efficient solvers for constrained differential inverse kinematics problems\n* support for the [pinocchio](https://github.com/stack-of-tasks/pinocchio) rigid-body dynamics library \n* an interface to the [IKBench](https://github.com/Simple-Robotics/IKBench) inverse kinematics benchmark library which can be used to compare different IK solver performances\n* Python bindings leveraging [eigenpy](https://github.com/stack-of-tasks/eigenpy) {Next release}\n\nTo cite **LoIK** in your publications, software, and research articles.\nPlease refer to the [Citation section](#citing-loik) for further details.\n\n## Installation\n\n\u003c!-- ### From Conda\n\nFrom either conda-forge or [our channel](https://anaconda.org/simple-robotics/loik).\n\n```bash\nconda install -c conda-forge loik  # or -c conda-forge\n``` --\u003e\n\n\n### Build from source\n\n```bash\ngit clone https://github.com/Simple-Robotics/LoIK --recursive\ncd LoIK\nmkdir build \u0026\u0026 cd build \ncmake .. -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=your_install_folder -DCMAKE_CXX_FLAGS=\"-march=native\"\nmake -jNCPUS\nmake install\n```\n\n#### Dependencies\n* [Eigen3](https://eigen.tuxfamily.org) \u003e= 3.4.0\n* [Boost](https://www.boost.org) \u003e= 1.84.0\n* [Pinocchio](https://github.com/stack-of-tasks/pinocchio)\u003e=3.0.0 | [conda](https://anaconda.org/conda-forge/pinocchio)\n* (optional) [eigenpy](https://github.com/stack-of-tasks/eigenpy)\u003e=3.4.0 | [conda](https://anaconda.org/conda-forge/eigenpy) (Python bindings)\n* (optional) [example-robot-data](https://github.com/Gepetto/example-robot-data)\u003e=4.1.0 | [conda](https://anaconda.org/conda-forge/example-robot-data) (required for examples and benchmarks)\n* a C++17 compliant compiler\n\n#### Notes\n\n* For developers, add the `-D CMAKE_EXPORT_COMPILE_COMMANDS=1` when working with language servers e.g. clangd.\n* To check for runtime Eigen memory allocation, add `-D CHECK_RUNTIME_MALLOC=ON`\n* By default, building the library will instantiate the templates for the `double` scalar type.\n* 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`.\n\n### Build/install from source with Pixi\n\nTo build **LoIK** from source the easiest way is to use [Pixi](https://pixi.sh/latest/#installation).\n\n[Pixi](https://pixi.sh/latest/) is a cross-platform package management tool for developers that\nwill install all required dependencies in `.pixi` directory.\nIt's used by our CI agent so you have the guarantee to get the right dependencies.\n\nRun the following command to install dependencies, configure, build and test the project:\n\n```bash\npixi run test\n```\n\nThe project will be built in the `build` directory.\nYou can now run `pixi shell` and build the project with `cmake` and `ninja` manually.\n\n\n## Benchmarking\n\nWe recommend [Flame Graphs](https://github.com/brendangregg/FlameGraph) for performance analysis.\nPlease refer to this code analysis [tutorial](https://github.com/Simple-Robotics/code-analysis-tools?tab=readme-ov-file#install-1) for installation and usage of flame graph.\n\n## Citing LoIK\n\nTo cite **LoIK**, please use the following bibtex entry:\n\n```bibtex\n@misc{loikapi,\n  author = {Wingo, Bruce and Vaillant, Joris and Sathya, Ajay and Caron, Stéphane and Carpentier, Justin},\n  title = {LoIK},\n  url = {https://github.com/Simple-Robotics/LoIK}\n}\n```\nPlease also consider citing the reference paper for the **LoIK** algorithm:\n\n```bibtex\n@inproceedings{wingoLoIK2024,\n  title = {{Linear-time Differential Inverse Kinematics: an Augmented Lagrangian Perspective}},\n  author = {Wingo, Bruce and Sathya, Ajay and Caron, Stéphane and Hutchinson, Seth and Carpentier, Justin},\n  year = {2024},\n  booktitle={Robotics: Science and Systems},\n  note = {https://inria.hal.science/hal-04607809v1}\n}\n```\n\n## Contributors\n\n* [Bruce Wingo](https://bwingo47.github.io/) (Inria, Georgia Tech): main developer and manager of the project\n* [Ajay Sathya](https://scholar.google.com/citations?user=A00LDswAAAAJ\u0026hl=en) (Inria): mathematics and algorithms developer\n* [Joris Vaillant](https://github.com/jorisv) (Inria): core developer\n* [Stéphane Caron](https://scaron.info/) (Inria): core developer\n* [Seth Hutchinson](https://faculty.cc.gatech.edu/~seth/) (Georgia Tech): project instructor\n* [Justin Carpentier](https://jcarpent.github.io/) (Inria): project instructor\n\n## Acknowledgments\n\nThe development of **LoIK** is actively supported by the [Willow team](https://www.di.ens.fr/willow/) at [@INRIA](http://www.inria.fr) Paris.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimple-robotics%2Floik","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimple-robotics%2Floik","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimple-robotics%2Floik/lists"}