<p align="center" width="100%">
<img width="70%" src="https://user-images.githubusercontent.com/93446869/234020322-1ef75f2b-1900-4b86-a83c-96becd308c8c.svg">
</p>
<p align="center" width="100%">
<img width="80%" src="https://github.com/valentin-burillier/kinepy/assets/93446869/a7faddd1-3816-4345-8965-eea9d503379c">
</p>
[![PyPI Downloads](https://img.shields.io/pypi/dm/kinepy.svg?label=PyPI%20downloads)](https://pypi.org/project/kinepy/)
**KinePy est une librairie python dédiée à la simulation cinématique, dynamique et statique de mécanisme plan.** Elle est utilisée pour :
- `Evaluation des performances` : KinePy permet de simuler rapidement et précisément un mécanisme complexe constituer de plusieurs boucles cinématiques. Il est facile d'évaluer les performances d'un mécanisme que ce soit du point de vue de la position, de la vitesse des différents solides ou encore des efforts que subissent les pièces au niveau des liaisons.
- `Dimensionnement de composants` : En récupérant les informations de vitesse ou d'effort de certaines liaisons, il est possible de connaître les composants adéquates à utiliser. Par exemple, c'est utile dans le choix d'un moteur, d'un ressort, de roulements à bille, de paliers lisses...
- `Optimisation de mécanisme` : KinePy offre la possibilité de modifier les dimensions d'un solide sans recréer un nouveau système. Ainsi, un tel modèle peut être couplé à des algorithme d'optimisation afin de définir un mécanisme répondant à vos attentes. Il existe de nombreux algorithmes d'otimisation fournient par d'autres bibliothèques : [scikit-learn](https://scikit-learn.org/stable/), [scipy](https://scipy.org/)...
- `Cinématique inverse` : KinePy permet de réaliser la cinématique inverse d'un mécanisme. En ajoutant des liaisons pilotés ne faisant pas partie du mécanisme, on peut trouver le pilotage d'actionneurs.
# Documentation et pré-requis
Nous vous invitons à aller voir le fichier [tutoriel](https://github.com/valentin-burillier/kinepy/blob/main/docs/TUTORIEL.md) montrant dans le détail comment simuler un mécanisme. Ce fichier renvoit sur la documentation des éléments utiliser.
La documentation compléte est accessible [ici](https://github.com/valentin-burillier/kinepy/blob/main/docs).
*N.B. Des connaissances en science de l'ingénieur sont nécessaire pour utiliser KinePy notament dans les domaines de la modélisation, la cinématique et la dynamique. La documentation de KinePy seul ne permet pas de comprendre ces domaines.*
# Exemples
Vous pourrez trouver [ici](https://github.com/valentin-burillier/kinepy/tree/main/examples) des exemples d'application de KinePy sur des systèmes réels :
- Cinématique du bras d'une [pelleteuse](https://github.com/valentin-burillier/kinepy/blob/main/examples/pelleteuse.py) :
<p align="center" width="100%">
<img width="70%" src="https://github.com/valentin-burillier/kinepy/assets/93446869/86fb79ad-6ebd-40fd-b010-c2c279667e6f">
</p>
- Cinématique inverse d'une [machine à tracer](https://github.com/valentin-burillier/kinepy/blob/main/examples/plotter_machine.py) :
<p align="center" width="100%">
<img width="70%" src="https://github.com/valentin-burillier/kinepy/assets/93446869/9ba76909-b850-41ba-b97f-ce6decb20e2b">
</p>
- Dynamique d'un [moteur](https://github.com/valentin-burillier/kinepy/blob/main/examples/engine.py) :
<p align="center" width="100%">
<img width="70%" src="https://github.com/valentin-burillier/kinepy/assets/93446869/0959f164-5b58-4f4d-b8b0-86433319ea70">
</p>
- Quasi-statique d'un [camion benne](https://github.com/valentin-burillier/kinepy/blob/main/examples/Camion%20benne.py) :
<p align="center" width="100%">
<img width="70%" src="https://github.com/valentin-burillier/kinepy/assets/93446869/4506a1f9-8d50-4b30-a14c-5c1d1b6a2323">
</p>
# Hypothèses
La bibliothèque suit un certains nombre d'hypothèses. Il est nécessaire que le mécanisme que vous voulez simuler les respecte :
- Le mécanisme est plan
- Le système est isostatique, le schéma cinématique doit être minimal
- Les solides sont indéformables
- Les liaisons sont parfaites
- La masse des solides est constante
- Le référentiel global associé au bâti est galiléen
- Le système est soumis un champ de forces uniformes
Des études plus approfondit peuvent être utile après l'utilisation de KinePy.
# Installation
KinePy est installable avec pip :
```
pip install kinepy
```
*Notez que la version téléchargée avec pip peut être bien antérieur au dépot le plus récent. Des fonctionnalités peuvent manquer.*
# Disclaimer
La bibliothèque est en développement. Il peut donc y avoir des bugs. Merci de les faire remonter aux développeurs afin de les corriger. Actuellement, l'interface graphique permettant de réaliser les schémas cinématiques animés est en train d'être codé. Veuillez signaler si vous rencontrez des problèmes.
De plus, les dévelopeurs seront très attentifs aux demandes d'intégration de nouvelles fonctionnalités.
Nous vous encourageons également à partager les applications que vous faites de KinePy.
# Liens
- https://cdfg.mit.edu/assets/files/CDMC_0.pdf, https://n.ethz.ch/~bthomasz/assets/PDF/Megaro17Compliant.pdf - Ce qui a inspiré ce répertoire
- http://faculty.tamucc.edu/psimionescu/PDFs/ASME%20DETC%202016%20-%2059086.pdf, https://blog.rectorsquid.com/linkage-mechanism-designer-and-simulator/ - Simulateurs cinématiques existants
Raw data
{
"_id": null,
"home_page": "https://github.com/valentin-burillier/kinepy",
"name": "kinepy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "robotics, simulation, dynamics, kinematics, statics, inverse-kinematics, mechanism",
"author": "Lo\u00efc Chevalier - Valentin Burillier",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/28/32/1dd95f14987db374c4d4fe9b3e82934065dd20ead958008e0eb28ac0d6bb/kinepy-0.1.7.tar.gz",
"platform": null,
"description": "<p align=\"center\" width=\"100%\">\n <img width=\"70%\" src=\"https://user-images.githubusercontent.com/93446869/234020322-1ef75f2b-1900-4b86-a83c-96becd308c8c.svg\">\n</p>\n\n<p align=\"center\" width=\"100%\">\n <img width=\"80%\" src=\"https://github.com/valentin-burillier/kinepy/assets/93446869/a7faddd1-3816-4345-8965-eea9d503379c\">\n</p>\n\n[![PyPI Downloads](https://img.shields.io/pypi/dm/kinepy.svg?label=PyPI%20downloads)](https://pypi.org/project/kinepy/)\n\n**KinePy est une librairie python d\u00e9di\u00e9e \u00e0 la simulation cin\u00e9matique, dynamique et statique de m\u00e9canisme plan.** Elle est utilis\u00e9e pour :\n\n- `Evaluation des performances` : KinePy permet de simuler rapidement et pr\u00e9cis\u00e9ment un m\u00e9canisme complexe constituer de plusieurs boucles cin\u00e9matiques. Il est facile d'\u00e9valuer les performances d'un m\u00e9canisme que ce soit du point de vue de la position, de la vitesse des diff\u00e9rents solides ou encore des efforts que subissent les pi\u00e8ces au niveau des liaisons.\n- `Dimensionnement de composants` : En r\u00e9cup\u00e9rant les informations de vitesse ou d'effort de certaines liaisons, il est possible de conna\u00eetre les composants ad\u00e9quates \u00e0 utiliser. Par exemple, c'est utile dans le choix d'un moteur, d'un ressort, de roulements \u00e0 bille, de paliers lisses...\n- `Optimisation de m\u00e9canisme` : KinePy offre la possibilit\u00e9 de modifier les dimensions d'un solide sans recr\u00e9er un nouveau syst\u00e8me. Ainsi, un tel mod\u00e8le peut \u00eatre coupl\u00e9 \u00e0 des algorithme d'optimisation afin de d\u00e9finir un m\u00e9canisme r\u00e9pondant \u00e0 vos attentes. Il existe de nombreux algorithmes d'otimisation fournient par d'autres biblioth\u00e8ques : [scikit-learn](https://scikit-learn.org/stable/), [scipy](https://scipy.org/)...\n- `Cin\u00e9matique inverse` : KinePy permet de r\u00e9aliser la cin\u00e9matique inverse d'un m\u00e9canisme. En ajoutant des liaisons pilot\u00e9s ne faisant pas partie du m\u00e9canisme, on peut trouver le pilotage d'actionneurs. \n\n# Documentation et pr\u00e9-requis\n\nNous vous invitons \u00e0 aller voir le fichier [tutoriel](https://github.com/valentin-burillier/kinepy/blob/main/docs/TUTORIEL.md) montrant dans le d\u00e9tail comment simuler un m\u00e9canisme. Ce fichier renvoit sur la documentation des \u00e9l\u00e9ments utiliser.\n\nLa documentation compl\u00e9te est accessible [ici](https://github.com/valentin-burillier/kinepy/blob/main/docs).\n\n*N.B. Des connaissances en science de l'ing\u00e9nieur sont n\u00e9cessaire pour utiliser KinePy notament dans les domaines de la mod\u00e9lisation, la cin\u00e9matique et la dynamique. La documentation de KinePy seul ne permet pas de comprendre ces domaines.*\n\n# Exemples\n\nVous pourrez trouver [ici](https://github.com/valentin-burillier/kinepy/tree/main/examples) des exemples d'application de KinePy sur des syst\u00e8mes r\u00e9els :\n\n- Cin\u00e9matique du bras d'une [pelleteuse](https://github.com/valentin-burillier/kinepy/blob/main/examples/pelleteuse.py) :\n<p align=\"center\" width=\"100%\">\n <img width=\"70%\" src=\"https://github.com/valentin-burillier/kinepy/assets/93446869/86fb79ad-6ebd-40fd-b010-c2c279667e6f\">\n</p>\n\n- Cin\u00e9matique inverse d'une [machine \u00e0 tracer](https://github.com/valentin-burillier/kinepy/blob/main/examples/plotter_machine.py) :\n<p align=\"center\" width=\"100%\">\n <img width=\"70%\" src=\"https://github.com/valentin-burillier/kinepy/assets/93446869/9ba76909-b850-41ba-b97f-ce6decb20e2b\">\n</p>\n\n- Dynamique d'un [moteur](https://github.com/valentin-burillier/kinepy/blob/main/examples/engine.py) :\n<p align=\"center\" width=\"100%\">\n <img width=\"70%\" src=\"https://github.com/valentin-burillier/kinepy/assets/93446869/0959f164-5b58-4f4d-b8b0-86433319ea70\">\n</p>\n\n- Quasi-statique d'un [camion benne](https://github.com/valentin-burillier/kinepy/blob/main/examples/Camion%20benne.py) :\n<p align=\"center\" width=\"100%\">\n <img width=\"70%\" src=\"https://github.com/valentin-burillier/kinepy/assets/93446869/4506a1f9-8d50-4b30-a14c-5c1d1b6a2323\">\n</p>\n\n# Hypoth\u00e8ses\n\nLa biblioth\u00e8que suit un certains nombre d'hypoth\u00e8ses. Il est n\u00e9cessaire que le m\u00e9canisme que vous voulez simuler les respecte :\n\n- Le m\u00e9canisme est plan\n- Le syst\u00e8me est isostatique, le sch\u00e9ma cin\u00e9matique doit \u00eatre minimal\n- Les solides sont ind\u00e9formables\n- Les liaisons sont parfaites\n- La masse des solides est constante\n- Le r\u00e9f\u00e9rentiel global associ\u00e9 au b\u00e2ti est galil\u00e9en\n- Le syst\u00e8me est soumis un champ de forces uniformes\n\nDes \u00e9tudes plus approfondit peuvent \u00eatre utile apr\u00e8s l'utilisation de KinePy.\n\n# Installation\n\nKinePy est installable avec pip :\n```\npip install kinepy\n```\n\n*Notez que la version t\u00e9l\u00e9charg\u00e9e avec pip peut \u00eatre bien ant\u00e9rieur au d\u00e9pot le plus r\u00e9cent. Des fonctionnalit\u00e9s peuvent manquer.*\n\n# Disclaimer\n\nLa biblioth\u00e8que est en d\u00e9veloppement. Il peut donc y avoir des bugs. Merci de les faire remonter aux d\u00e9veloppeurs afin de les corriger. Actuellement, l'interface graphique permettant de r\u00e9aliser les sch\u00e9mas cin\u00e9matiques anim\u00e9s est en train d'\u00eatre cod\u00e9. Veuillez signaler si vous rencontrez des probl\u00e8mes.\n\nDe plus, les d\u00e9velopeurs seront tr\u00e8s attentifs aux demandes d'int\u00e9gration de nouvelles fonctionnalit\u00e9s.\n\nNous vous encourageons \u00e9galement \u00e0 partager les applications que vous faites de KinePy.\n\n# Liens\n\n- https://cdfg.mit.edu/assets/files/CDMC_0.pdf, https://n.ethz.ch/~bthomasz/assets/PDF/Megaro17Compliant.pdf - Ce qui a inspir\u00e9 ce r\u00e9pertoire\n- http://faculty.tamucc.edu/psimionescu/PDFs/ASME%20DETC%202016%20-%2059086.pdf, https://blog.rectorsquid.com/linkage-mechanism-designer-and-simulator/ - Simulateurs cin\u00e9matiques existants\n",
"bugtrack_url": null,
"license": null,
"summary": "Python library dedicated to plane mechanism simulation",
"version": "0.1.7",
"project_urls": {
"Homepage": "https://github.com/valentin-burillier/kinepy"
},
"split_keywords": [
"robotics",
" simulation",
" dynamics",
" kinematics",
" statics",
" inverse-kinematics",
" mechanism"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "8b8a3b16614acbe76be97cbe1cdb8eacc032a008b1ba381e9b501afaf1fd98e0",
"md5": "c48418fcda4836e63ee6a34a5b9cce0c",
"sha256": "8793fd5b9697fe45c32766fc14db28bd223658f5318ee36bb211d2a5ea5b9a26"
},
"downloads": -1,
"filename": "kinepy-0.1.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c48418fcda4836e63ee6a34a5b9cce0c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 46684,
"upload_time": "2024-11-14T19:05:37",
"upload_time_iso_8601": "2024-11-14T19:05:37.802180Z",
"url": "https://files.pythonhosted.org/packages/8b/8a/3b16614acbe76be97cbe1cdb8eacc032a008b1ba381e9b501afaf1fd98e0/kinepy-0.1.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "28321dd95f14987db374c4d4fe9b3e82934065dd20ead958008e0eb28ac0d6bb",
"md5": "5a8cbb6550492e52466e92ab4bc45bb6",
"sha256": "a7cd710dd13288c9e69e66dc0ca65d05540b2c9e18c80de284889b38316dbaef"
},
"downloads": -1,
"filename": "kinepy-0.1.7.tar.gz",
"has_sig": false,
"md5_digest": "5a8cbb6550492e52466e92ab4bc45bb6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 41896,
"upload_time": "2024-11-14T19:05:39",
"upload_time_iso_8601": "2024-11-14T19:05:39.016890Z",
"url": "https://files.pythonhosted.org/packages/28/32/1dd95f14987db374c4d4fe9b3e82934065dd20ead958008e0eb28ac0d6bb/kinepy-0.1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-14 19:05:39",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "valentin-burillier",
"github_project": "kinepy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "matplotlib",
"specs": [
[
">=",
"3.7.1"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.24.2"
]
]
},
{
"name": "pygame",
"specs": [
[
">=",
"2.2.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"65.5.1"
]
]
}
],
"lcname": "kinepy"
}