{"id":13721177,"url":"https://github.com/Phylliade/ikpy","last_synced_at":"2025-05-07T13:32:01.918Z","repository":{"id":2053084,"uuid":"42932894","full_name":"Phylliade/ikpy","owner":"Phylliade","description":"IKPy, an Universal Inverse Kinematics library","archived":false,"fork":false,"pushed_at":"2024-08-12T12:38:36.000Z","size":26309,"stargazers_count":825,"open_issues_count":24,"forks_count":159,"subscribers_count":19,"default_branch":"master","last_synced_at":"2025-04-12T21:46:28.578Z","etag":null,"topics":["inverse-kinematics","poppy","python","robotics","urdf"],"latest_commit_sha":null,"homepage":"http://phylliade.github.io/ikpy","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Phylliade.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2015-09-22T12:41:04.000Z","updated_at":"2025-04-12T08:26:38.000Z","dependencies_parsed_at":"2023-07-11T11:18:04.203Z","dependency_job_id":"7634ac58-eae5-4fab-a8ca-143768d1c13d","html_url":"https://github.com/Phylliade/ikpy","commit_stats":{"total_commits":506,"total_committers":18,"mean_commits":28.11111111111111,"dds":0.4347826086956522,"last_synced_commit":"5cb1e6df7c964632dc9a76387952339532f11054"},"previous_names":["phylliade/poppy-inverse-kinematics"],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Phylliade%2Fikpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Phylliade%2Fikpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Phylliade%2Fikpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Phylliade%2Fikpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Phylliade","download_url":"https://codeload.github.com/Phylliade/ikpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252886466,"owners_count":21819722,"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":["inverse-kinematics","poppy","python","robotics","urdf"],"created_at":"2024-08-03T01:01:13.365Z","updated_at":"2025-05-07T13:31:56.909Z","avatar_url":"https://github.com/Phylliade.png","language":"Python","readme":"# IKPy\n\n[![PyPI](https://img.shields.io/pypi/v/ikpy.svg)](https://pypi.python.org/pypi/ikpy/)\n\n[![DOI](https://zenodo.org/badge/42932894.svg)](https://zenodo.org/doi/10.5281/zenodo.6551105)\n\n\n![demo](two_arms.png)\n\n![IKPy on the baxter robot](baxter.png)\n\n## Demo\n\nLive demos of what IKPy can do \\(click on the image below to see the video\\):\n\n\n[![](http://img.youtube.com/vi/H0ysr5qSbis/0.jpg)](https://www.youtube.com/watch?v=H0ysr5qSbis)\n[![](http://img.youtube.com/vi/Jq0-DkEwwj4/0.jpg)](https://www.youtube.com/watch?v=Jq0-DkEwwj4)\n\nAlso, a presentation of IKPy: [Presentation](https://github.com/Phylliade/ikpy/blob/master/tutorials/IKPy%20speech.pdf).\n\n## Features\n\nWith IKPy, you can:\n\n* Compute the **Inverse Kinematics** of every existing robot.\n* Compute the Inverse Kinematics in **position, [orientation](./tutorials/Orientation.ipynb)**, or both\n* Define your kinematic chain using **arbitrary representations**: DH (Denavit–Hartenberg), URDF, custom...\n* Automatically import a kinematic chain from a **URDF file**.\n* Support for arbitrary joint types: `revolute`, `prismatic` and more to come in the future \n* Use pre-configured robots, such as [**baxter**](./tutorials/Baxter%20kinematics.ipynb) or the **poppy-torso**\n* IKPy is **precise** (up to 7 digits): the only limitation being your underlying model's precision, and **fast**: from 7 ms to 50 ms (depending on your precision) for a complete IK computation.\n* **Plot** your kinematic chain: no need to use a real robot (or a simulator) to test your algorithms!\n* Define your own Inverse Kinematics methods.\n* Utils to parse and analyze URDF files:\n\n![](./tutorials/assets/baxter_tree.png)\n\nMoreover, IKPy is a **pure-Python library**: the install is a matter of seconds, and no compiling is required.\n\n## Installation\n\nYou have three options:\n\n1. From PyPI \\(recommended\\) - simply run:\n\n   ```bash\n   pip install ikpy\n   ```\n\n   If you intend to plot your robot, you can install the plotting dependencies \\(mainly `matplotlib`\\):\n\n   ```bash\n   pip install 'ikpy[plot]'\n   ```\n\n2. From source - first download and extract the archive, then run:\n\n   ```bash\n   pip install ./\n   ```\n\n   NB: You must have the proper rights to execute this command\n\n## Quickstart\n\nFollow this IPython [notebook](https://github.com/Phylliade/ikpy/blob/master/tutorials/Quickstart.ipynb).\n\n## Guides and Tutorials\n\nGo to the [wiki](https://github.com/Phylliade/ikpy/wiki). It should introduce you to the basic concepts of IKPy.\n\n## API Documentation\n\nAn extensive documentation of the API can be found [here](http://ikpy.readthedocs.org).\n\n## Dependencies and compatibility\n\nStarting with IKPy v3.1, only Python 3 is supported. \nFor versions before v3.1, the library can work with both versions of Python \\(2.7 and 3.x\\).\n\nIn terms of dependencies, it requires `numpy` and `scipy`.\n\n\n`sympy` is highly recommended, for fast hybrid computations, that's why it is installed by default.\n\n`matplotlib` is optional: it is used to plot your models \\(in 3D\\).\n\n## Contributing\n\nIKPy is designed to be easily customisable: you can add your own IK methods or robot representations \\(such as DH-Parameters\\) using a dedicated [developer API](https://github.com/Phylliade/ikpy/wiki/Contributing).\n\nContributions are welcome: if you have an awesome patented \\(but also open-source!\\) IK method, don't hesitate to propose adding it to the library!\n\n## Links\n\n* If performance is your main concern, `aversive++` has an inverse kinematics [module](https://github.com/AversivePlusPlus/ik) written in C++, which works the same way IKPy does.\n\n## Citation\n\nIf you use IKPy as part of a publication, please use the Bibtex below as a citation:\n\n```bibtex\n@software{Manceron_IKPy,\nauthor = {Manceron, Pierre},\ndoi = {10.5281/zenodo.6551105},\nlicense = {GPL-2.0},\ntitle = {{IKPy}},\nurl = {https://github.com/Phylliade/ikpy}\n}\n```\n","funding_links":[],"categories":["Sensor Processing"],"sub_categories":["Calibration and Transformation"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPhylliade%2Fikpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPhylliade%2Fikpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPhylliade%2Fikpy/lists"}