{ "info": { "author": "Nicholas Nadeau", "author_email": "nicholas.nadeau@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: End Users/Desktop", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3 :: Only", "Topic :: Education", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Artificial Intelligence", "Topic :: Scientific/Engineering :: Human Machine Interfaces", "Topic :: Scientific/Engineering :: Mathematics", "Topic :: Scientific/Engineering :: Physics", "Topic :: Utilities" ], "description": "# ![](https://raw.githubusercontent.com/nnadeau/pybotics/master/media/robotic-arm.png) pybotics\n\nThe Python Toolbox for Robotics\n\n|Component|Badges|\n|---|---|\n| GitHub | [![GitHub issues](https://img.shields.io/github/issues/nnadeau/pybotics.svg)](https://github.com/nnadeau/pybotics/issues) [![GitHub forks](https://img.shields.io/github/forks/nnadeau/pybotics.svg)](https://github.com/nnadeau/pybotics/network) [![GitHub stars](https://img.shields.io/github/stars/nnadeau/pybotics.svg)](https://github.com/nnadeau/pybotics/stargazers) [![GitHub tag](https://img.shields.io/github/tag/nnadeau/pybotics.svg?maxAge=2592000?style=flat-square)](https://github.com/nnadeau/pybotics/releases) |\n| PyPI | [![PyPI Version](https://img.shields.io/pypi/v/pybotics.svg)](https://pypi.python.org/pypi/pybotics) [![PyPI License](https://img.shields.io/pypi/l/pybotics.svg)](https://pypi.python.org/pypi/pybotics) [![PyPI Wheel](https://img.shields.io/pypi/wheel/pybotics.svg)](https://pypi.python.org/pypi/pybotics) [![PyPI Format](https://img.shields.io/pypi/format/pybotics.svg)](https://pypi.python.org/pypi/pybotics) [![PyPI Pythons](https://img.shields.io/pypi/pyversions/pybotics.svg)](https://pypi.python.org/pypi/pybotics) [![PyPI Implementation](https://img.shields.io/pypi/implementation/pybotics.svg)](https://pypi.python.org/pypi/pybotics) |\n| CI | [![Build Status](https://travis-ci.org/nnadeau/pybotics.svg?branch=master)](https://travis-ci.org/nnadeau/pybotics) |\n| Coverage | [![codecov](https://codecov.io/gh/nnadeau/pybotics/branch/master/graph/badge.svg)](https://codecov.io/gh/nnadeau/pybotics) |\n| Docs | [![Documentation Status](https://readthedocs.org/projects/pybotics/badge/?version=latest)](https://pybotics.readthedocs.io/en/latest/?badge=latest) |\n| DOI | [![DOI](https://zenodo.org/badge/66797360.svg)](https://zenodo.org/badge/latestdoi/66797360) |\n\n## Overview\n\n`Pybotics` is an open-source Python toolbox for robot kinematics and calibration.\nIt was designed to provide a simple, clear, and concise interface to quickly simulate and evaluate common robot concepts, such as kinematics, dynamics, trajectory generations, and calibration.\nThe toolbox is specifically designed for use with the [Modified Denavit\u2013Hartenberg parameters convention](https://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters#Modified_DH_parameters).\n\n## Usage\n\n### Documentation\n\n- Please visit https://pybotics.readthedocs.io/\n\n### Installation\n\n```bash\n# python3 is mapped to pip or inside a venv\npip install pybotics\n\n# python3-pip\npip3 install pybotics\n\n# https://github.com/pypa/pipenv\npipenv install pybotics\n\n# https://github.com/sdispater/poetry\npoetry add pybotics\n```\n\n### Applications & Examples\n\n- [Basic Usage](examples/basic_usage.py)\n- [Kinematics](examples/kinematics.ipynb)\n- [Calibration](examples/calibration.ipynb)\n- [Trajectory and Path Planning](examples/trajectory_generation.ipynb)\n- [Machine Learning](examples/machine_learning.ipynb)\n- [Dynamics](examples/dynamics.ipynb)\n\n## Featured In\n\n- [Impedance Control Self-Calibration of a Collaborative Robot Using Kinematic Coupling](https://www.mdpi.com/2218-6581/8/2/33/htm)\n- [PyCon Canada 2017](https://2017.pycon.ca/schedule/53/)\n - [Talk Photos](https://500px.com/nicholasnadeau/galleries/pycon-canada-2017)\n - [Slides](https://github.com/nnadeau/pycon-canada-2017)\n- [Montreal-Python 2017](https://www.youtube.com/watch?v=wgKoGA69YXQ)\n\n## Citing\n\n- Please cite the following articles if you use `pybotics` in your research:\n\n> Nadeau, Nicholas A., Ilian A. Bonev, and Ahmed Joubair. \"Impedance Control Self-Calibration of a Collaborative Robot Using Kinematic Coupling.\" Robotics 8.2 (2019): 33.\n\n```\n@article{nadeau2019impedance,\n title={Impedance Control Self-Calibration of a Collaborative Robot Using Kinematic Coupling},\n author={Nadeau, Nicholas A and Bonev, Ilian A and Joubair, Ahmed},\n journal={Robotics},\n volume={8},\n number={2},\n pages={33},\n year={2019},\n publisher={Multidisciplinary Digital Publishing Institute}\n}\n```\n\n## Development and Community Guidelines\n\n### Local Development\n\n- Install the dev virtual environment:\n\n```bash\npoetry install\n```\n\n### Submit an Issue\n\n- Navigate to the repository's [issue tab](https://github.com/nnadeau/pybotics/issues)\n- Search for related existing issues\n- If necessary, create a new issue using the provided templates\n\n### Contributing\n\n- Please see [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) and the [Code of Conduct](CODE_OF_CONDUCT.md) for how to contribute to the project\n\n### Testing\n\n- Please review the [`Makefile`](Makefile) for an overview of all available tests\n- The most important tests and `make` commands are highlighted below:\n\n```bash\n# auto-format code\nmake format\n\n# perform all static tests\nmake check\n\n# run all python tests\nmake test\n```\n\n---\n\n
Logo made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/nnadeau/pybotics", "keywords": "robot,research,automation,kinematics,geometry", "license": "", "maintainer": "Nicholas Nadeau", "maintainer_email": "nicholas.nadeau@gmail.com", "name": "pybotics", "package_url": "https://pypi.org/project/pybotics/", "platform": "", "project_url": "https://pypi.org/project/pybotics/", "project_urls": { "Documentation": "https://github.com/nnadeau/pybotics", "Homepage": "https://github.com/nnadeau/pybotics", "Repository": "https://github.com/nnadeau/pybotics" }, "release_url": "https://pypi.org/project/pybotics/0.7.3/", "requires_dist": [ "numpy (>=1.9)", "scipy (>=1.0)", "attrs (>=19.0)" ], "requires_python": ">=3.6", "summary": "Python Toolbox for Robotics", "version": "0.7.3" }, "last_serial": 5904539, "releases": { "0.2.0": [ { "comment_text": "", "digests": { "md5": "18a6db6e7aae0ef3429772619f54c826", "sha256": "83a47b7866fb5bc3e592bdecb0629f2ea6a43d6e7f7c2cf2d5f6c79e810c7667" }, "downloads": -1, "filename": "pybotics-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "18a6db6e7aae0ef3429772619f54c826", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12377, "upload_time": "2017-01-22T00:00:37", "url": "https://files.pythonhosted.org/packages/cb/91/a30d80d00402d7ae1f72360a361ee11376d2ea626c440d7fd50fc1132267/pybotics-0.2.0-py3-none-any.whl" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "dd0afc4f75f49c695d7320003721fa5f", "sha256": "5b49d8fe744683fb447a99adaf1e872e27ffa25cb9cf784817ceb1aa34712b3e" }, "downloads": -1, "filename": "pybotics-0.2.1.tar.gz", "has_sig": false, "md5_digest": "dd0afc4f75f49c695d7320003721fa5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10947, "upload_time": "2017-01-22T01:37:46", "url": "https://files.pythonhosted.org/packages/b8/61/facb2274f7ef89d8c7d7d3b0b2b78a5ade79361bfe41a5761bcf11e5755c/pybotics-0.2.1.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "4851d3aa0a175852c06232e4ce8095b9", "sha256": "3b366f9d729d7889528e19cb82febcab6783346af6bd9a997f218e2bc1b8666b" }, "downloads": -1, "filename": "pybotics-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "4851d3aa0a175852c06232e4ce8095b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12580, "upload_time": "2017-01-22T02:26:46", "url": "https://files.pythonhosted.org/packages/68/6f/5d023c4313c621e678d091d8d3521cddafc3a50520f8ef91036ee76c160f/pybotics-0.2.4-py3-none-any.whl" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "cea9e65d84e8ba463d95b036985f12b2", "sha256": "09366b646174a81b827a534102c52d7f7e326ec0556ea0ff31fcdbb5833909ac" }, "downloads": -1, "filename": "pybotics-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "cea9e65d84e8ba463d95b036985f12b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12708, "upload_time": "2017-01-22T02:37:52", "url": "https://files.pythonhosted.org/packages/ce/73/2d4885dd527966205706fb3326dbb3e77d2e352415d0964789497927720c/pybotics-0.2.5-py3-none-any.whl" } ], "0.2.6": [ { "comment_text": "", "digests": { "md5": "009dd9911973ef3f6bec2320456e9d1e", "sha256": "37a3ad2ce7e02c5695ec4ad383076e79a4642326c9aaf0898208bb6cb3588766" }, "downloads": -1, "filename": "pybotics-0.2.6.tar.gz", "has_sig": false, "md5_digest": "009dd9911973ef3f6bec2320456e9d1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11010, "upload_time": "2017-01-22T02:45:47", "url": "https://files.pythonhosted.org/packages/99/e4/6773aa36ade5b03e82765badf15c0fde5f93fda7df7dcbcfb4eef24e8232/pybotics-0.2.6.tar.gz" } ], "0.2.7": [ { "comment_text": "", "digests": { "md5": "d4491f7a2ea298b758990b4579252274", "sha256": "be16b5755eb26d2fdb6704c98db7332cf81899aec4be2b2a3c589e2f0d9f699f" }, "downloads": -1, "filename": "pybotics-0.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "d4491f7a2ea298b758990b4579252274", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12708, "upload_time": "2017-01-22T03:32:20", "url": "https://files.pythonhosted.org/packages/0e/d6/adaa0f2ad04fa474e4ce082862311e82165e3a0f4e84d3973c3a960afde9/pybotics-0.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d1fa95d18fcd4a893ba3414b594e5cd9", "sha256": "04c91f83891752d25ab75753066268c13c8c95f5dfd6843e6a3e74331530f92f" }, "downloads": -1, "filename": "pybotics-0.2.7.tar.gz", "has_sig": false, "md5_digest": "d1fa95d18fcd4a893ba3414b594e5cd9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10935, "upload_time": "2017-01-22T03:30:31", "url": "https://files.pythonhosted.org/packages/c0/3a/953d203b78b4c84bca20bc12d944035d85a357d8aa915a922704a2ec53c4/pybotics-0.2.7.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "ffcbbd1f85266917acee2d03da89997f", "sha256": "38fdb6dee76c3d7957efdb772f3358325a7a559a2960021c60d199f8f0d6adcd" }, "downloads": -1, "filename": "pybotics-0.3.0.tar.gz", "has_sig": false, "md5_digest": "ffcbbd1f85266917acee2d03da89997f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9696, "upload_time": "2017-06-15T02:15:47", "url": "https://files.pythonhosted.org/packages/61/08/aa02455d89c302efd4f8e8c6ffb9cd073868dc146b9eaadf434f80b68cf6/pybotics-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "6d525cd7fbd0dbbf7071c727c72501e9", "sha256": "1593f6e4332fd7b35ee896126afbba5c8825ae528f8858383071f7ef9b820e35" }, "downloads": -1, "filename": "pybotics-0.3.1.tar.gz", "has_sig": false, "md5_digest": "6d525cd7fbd0dbbf7071c727c72501e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9688, "upload_time": "2017-06-16T02:29:52", "url": "https://files.pythonhosted.org/packages/91/cf/8fce8f62e82f0ff139cff962ff09de68687d47c636aeaa852a659b7a8102/pybotics-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "9a809cd63a9df97b75de0a312004f5a1", "sha256": "e32d524702f55e1b76f16a41ceff008914768913d9cb732b36357f4451b19c7c" }, "downloads": -1, "filename": "pybotics-0.3.2.tar.gz", "has_sig": false, "md5_digest": "9a809cd63a9df97b75de0a312004f5a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8524, "upload_time": "2017-06-21T01:39:39", "url": "https://files.pythonhosted.org/packages/1b/4b/188047da09800fea64e9650526d4687563cafffabfd457596b4460a6f6a8/pybotics-0.3.2.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "4a8f499eb3c778dfbbff910abc2a991a", "sha256": "31a1a5b1c6146732d2e0e47b86ab8a4845675c3e219d24dd6fb9c85f3d7b0f15" }, "downloads": -1, "filename": "pybotics-0.4.1.tar.gz", "has_sig": false, "md5_digest": "4a8f499eb3c778dfbbff910abc2a991a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12632, "upload_time": "2017-11-11T04:27:40", "url": "https://files.pythonhosted.org/packages/e5/97/2a6d7c0c2dfb6ff531fc4f1f8d5d55e3c39026dc3d4caafa04efdfc30e86/pybotics-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "17745c8b8a432b3ef8357c88bc6614a2", "sha256": "1241d2e6adf9fd2c2aba421587f02a151a738e47cfce72f3c08b55677f253f6c" }, "downloads": -1, "filename": "pybotics-0.5.0.tar.gz", "has_sig": false, "md5_digest": "17745c8b8a432b3ef8357c88bc6614a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11882, "upload_time": "2017-11-19T03:07:46", "url": "https://files.pythonhosted.org/packages/7a/7a/7e5097c48194bd43881a027550f8df0e55a6c6844f53ef83f09dccab902d/pybotics-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "5d10563ce67f4f07733de5d12e44d366", "sha256": "6806a63ed3c50152dd95ec33f2191665837edcfabaad9e0571f76bab82a9d092" }, "downloads": -1, "filename": "pybotics-0.6.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5d10563ce67f4f07733de5d12e44d366", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 18505, "upload_time": "2018-04-10T19:09:41", "url": "https://files.pythonhosted.org/packages/ee/71/0a5f09f17750fb425238873dbda044a4e48b191155e1495f65936f3b726f/pybotics-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1fcfb55ec5da539b4b4ae705f0c6b95f", "sha256": "7628c6e138002c9b0d76914f98abd62ece544b888ea72283cc4c845c39ccbefa" }, "downloads": -1, "filename": "pybotics-0.6.0.tar.gz", "has_sig": false, "md5_digest": "1fcfb55ec5da539b4b4ae705f0c6b95f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17487, "upload_time": "2018-04-10T19:09:42", "url": "https://files.pythonhosted.org/packages/2a/01/0cd438149000211088007b4d402fad809d1985cb860162d3e3883f3801a6/pybotics-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "70e984a1d6570a68c3755c44033afa2b", "sha256": "4f58412be5e1815c70318117bd4302f0c1c2525d371def9113b472e3d9bad9b8" }, "downloads": -1, "filename": "pybotics-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "70e984a1d6570a68c3755c44033afa2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14159, "upload_time": "2019-09-10T15:24:59", "url": "https://files.pythonhosted.org/packages/d4/7e/dfd2f3fb9e6691027566e5ceb049ad5f67e6ee12cf2b39dba4c2185f2308/pybotics-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a038ca5ac7bb56378e76d27bfc69a9b3", "sha256": "57f29b27de4ff2c3ed0a5b654e8ba80b670622bb062f2efebd87aca900ff68ab" }, "downloads": -1, "filename": "pybotics-0.7.0.tar.gz", "has_sig": false, "md5_digest": "a038ca5ac7bb56378e76d27bfc69a9b3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 12769, "upload_time": "2019-09-10T15:25:00", "url": "https://files.pythonhosted.org/packages/39/9f/2fbf7468934f03ca84920457e0e9fc1a96c1acbd19a43d583c0dfc7e78f8/pybotics-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "353ec99998d026cce86680b93774edde", "sha256": "596a1347b60fea04d0ee90ebf920ab3f69e25966df581ebec0ed111e0f4839e2" }, "downloads": -1, "filename": "pybotics-0.7.1-py3-none-any.whl", "has_sig": false, "md5_digest": "353ec99998d026cce86680b93774edde", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14425, "upload_time": "2019-09-13T13:13:26", "url": "https://files.pythonhosted.org/packages/2f/f2/c6e45528631e230a400aab6c54920699bb69bbf93593b3cad4bef244fbf1/pybotics-0.7.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c55609b30e47107f81bad07c782bf1b2", "sha256": "3620a9ec9db6962e534337bf3f6db3127f2d8ee1ccd87b5e2edd17c8be44671c" }, "downloads": -1, "filename": "pybotics-0.7.1.tar.gz", "has_sig": false, "md5_digest": "c55609b30e47107f81bad07c782bf1b2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13288, "upload_time": "2019-09-13T13:13:27", "url": "https://files.pythonhosted.org/packages/f2/d9/5cd3250517aaa0ac370d530eb5ef0150a5b62689678c60b171da553bc367/pybotics-0.7.1.tar.gz" } ], "0.7.3": [ { "comment_text": "", "digests": { "md5": "b569662e4598db70e594d30ade1fbd04", "sha256": "20889b4795542d4bb52c0f5095c0bd102453df53843ec07d79e90cdc67e2f956" }, "downloads": -1, "filename": "pybotics-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b569662e4598db70e594d30ade1fbd04", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14839, "upload_time": "2019-09-30T02:55:32", "url": "https://files.pythonhosted.org/packages/49/6b/7d8f7020a055fbde1a7348355d39a8880b2244a62313bb87d09a3a75c4b8/pybotics-0.7.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe6a05e0f7926c29cdd7cd6f3c3d3e43", "sha256": "9a8d5865ca69920ff8f43ad45af89c165b15601e42ad926ce4ae94557a2cfdbd" }, "downloads": -1, "filename": "pybotics-0.7.3.tar.gz", "has_sig": false, "md5_digest": "fe6a05e0f7926c29cdd7cd6f3c3d3e43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14210, "upload_time": "2019-09-30T02:55:34", "url": "https://files.pythonhosted.org/packages/be/6e/2bb14d00da956db4d1abc110862590f2b27e47852ec43514d8d72ca3c720/pybotics-0.7.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b569662e4598db70e594d30ade1fbd04", "sha256": "20889b4795542d4bb52c0f5095c0bd102453df53843ec07d79e90cdc67e2f956" }, "downloads": -1, "filename": "pybotics-0.7.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b569662e4598db70e594d30ade1fbd04", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 14839, "upload_time": "2019-09-30T02:55:32", "url": "https://files.pythonhosted.org/packages/49/6b/7d8f7020a055fbde1a7348355d39a8880b2244a62313bb87d09a3a75c4b8/pybotics-0.7.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe6a05e0f7926c29cdd7cd6f3c3d3e43", "sha256": "9a8d5865ca69920ff8f43ad45af89c165b15601e42ad926ce4ae94557a2cfdbd" }, "downloads": -1, "filename": "pybotics-0.7.3.tar.gz", "has_sig": false, "md5_digest": "fe6a05e0f7926c29cdd7cd6f3c3d3e43", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 14210, "upload_time": "2019-09-30T02:55:34", "url": "https://files.pythonhosted.org/packages/be/6e/2bb14d00da956db4d1abc110862590f2b27e47852ec43514d8d72ca3c720/pybotics-0.7.3.tar.gz" } ] }