# Pybotics

The Python Toolbox for Robotics
- [Explore the docs](https://pybotics.readthedocs.io)
- [View demos and examples](https://github.com/nnadeau/pybotics/tree/master/examples)
- [Report a bug](https://github.com/nnadeau/pybotics/issues)
- [Request a feature](https://github.com/nnadeau/pybotics/issues)
| Item | Badges |
| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Repo | [](https://github.com/nnadeau/pybotics/issues) [](https://github.com/nnadeau/pybotics/network) [](https://github.com/nnadeau/pybotics/stargazers)  |
| Releases | [](https://github.com/nnadeau/pybotics/releases) [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) [](https://github.com/semantic-release/semantic-release) [](https://github.com/semantic-release/semantic-release)  |
| Compatibility | [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) |
| Workflows | [](https://github.com/nnadeau/pybotics/actions) [](https://github.com/nnadeau/pybotics/actions) [](https://github.com/nnadeau/pybotics/actions) |
| Documentation | [](https://pybotics.readthedocs.io/en/latest/?badge=latest) |
| Citations | [](https://doi.org/10.21105/joss.01738) [](https://zenodo.org/badge/latestdoi/66797360) |
| License | [](https://pypi.python.org/pypi/pybotics) |
| Social |  [](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Fnnadeau%2Fpybotics) |
## Contents
- [Pybotics](#pybotics)
- [Contents](#contents)
- [Overview](#overview)
- [Usage](#usage)
- [Documentation](#documentation)
- [Installation](#installation)
- [Applications & Examples](#applications--examples)
- [Featured In](#featured-in)
- [Citing](#citing)
- [Development and Community Guidelines](#development-and-community-guidelines)
- [Local Development](#local-development)
- [Docker Development](#docker-development)
- [Commits](#commits)
- [Dependency Management](#dependency-management)
- [Submit an Issue](#submit-an-issue)
- [Contributing](#contributing)
- [Testing](#testing)
- [GitHub Actions](#github-actions)
## Overview
`Pybotics` is an open-source Python toolbox for robot kinematics and calibration.
It 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.
The toolbox is specifically designed for use with the [Modified Denavit–Hartenberg parameters convention](https://en.wikipedia.org/wiki/Denavit%E2%80%93Hartenberg_parameters#Modified_DH_parameters).
## Usage
### Documentation
Please visit https://pybotics.readthedocs.io/
### Installation
```bash
# python3 is mapped to pip or inside a venv
pip install pybotics
# python3-pip
pip3 install pybotics
# https://github.com/pypa/pipenv
pipenv install pybotics
# https://github.com/sdispater/poetry
poetry add pybotics
```
### Applications & Examples
- [Basic Usage](examples/basic_usage.py)
- [Kinematics](examples/kinematics.ipynb)
- [Calibration](examples/calibration.ipynb)
- [Trajectory and Path Planning](examples/trajectory_generation.ipynb)
- [Machine Learning](examples/machine_learning.ipynb)
- [Dynamics](examples/dynamics.ipynb)
## Featured In
- [Impedance Control Self-Calibration of a Collaborative Robot Using Kinematic Coupling](https://www.mdpi.com/2218-6581/8/2/33/htm)
- [PyCon Canada 2017](https://2017.pycon.ca/schedule/53/)
- [Talk Photos](https://500px.com/nicholasnadeau/galleries/pycon-canada-2017)
- [Slides](https://github.com/nnadeau/pycon-canada-2017)
- [Montreal-Python 2017](https://www.youtube.com/watch?v=wgKoGA69YXQ)
## Citing
Please cite the following articles if you use `pybotics` in your research:
> Nadeau, (2019). Pybotics: Python Toolbox for Robotics. Journal of Open Source Software, 4(41), 1738, https://doi.org/10.21105/joss.01738
```
@article{nadeau2019pybotics,
doi = {10.21105/joss.01738},
url = {https://doi.org/10.21105/joss.01738},
year = {2019},
month = sep,
publisher = {The Open Journal},
volume = {4},
number = {41},
pages = {1738},
author = {Nicholas Nadeau},
title = {Pybotics: Python Toolbox for Robotics},
journal = {Journal of Open Source Software}
}
```
> 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.
```
@article{nadeau2019impedance,
title={Impedance Control Self-Calibration of a Collaborative Robot Using Kinematic Coupling},
volume={8},
ISSN={2218-6581},
url={http://dx.doi.org/10.3390/robotics8020033},
DOI={10.3390/robotics8020033},
number={2},
journal={Robotics},
publisher={MDPI AG},
author={Nadeau, Nicholas A. and Bonev, Ilian A. and Joubair, Ahmed},
year={2019},
month={Apr},
pages={33}
}
```
## Development and Community Guidelines
### Local Development
- Use [poetry](https://python-poetry.org/) to install the dev virtual environment:
```bash
poetry install
```
### Docker Development
- Docker is a great tool to test the package in an isolated environment
- It is especially useful for debugging issues between python versions
```bash
# launch container attached to current directory
docker run -v $(pwd):/$(basename $(pwd)) -w /$(basename $(pwd)) -it python:3 bash
# install deps
pip install poetry
poetry install
# run tests
make test
```
### Commits
- The repo abides by [SemVer](https://semver.org/), [`semantic-release`](https://github.com/semantic-release/semantic-release), and [Angular commit message syntax](https://github.com/angular/angular/blob/main/CONTRIBUTING.md)
- It is highly recommended to use the [`commitizen` CLI](https://github.com/commitizen/cz-cli)
- See commit examples below:
| Change | Commit Type |
| ------------------------- | ----------- |
| Bumped dependency version | `build` |
| Bumped Python requirement | `feat` |
### Dependency Management
```bash
# refresh lock file
poetry lock --no-update
```
### Submit an Issue
- Navigate to the repository's [issue tab](https://github.com/nnadeau/pybotics/issues)
- Search for related existing issues
- If necessary, create a new issue using the provided templates
### Contributing
- Please see [`CONTRIBUTING.md`](.github/CONTRIBUTING.md) and the [Code of Conduct](CODE_OF_CONDUCT.md) for how to contribute to the project
### Testing
- Please review the [`Makefile`](Makefile) for an overview of all available tests
- The most important tests and `make` commands are highlighted below:
```bash
# auto-format code
make format
# perform all static tests
make lint
# run all python tests
make test
```
### GitHub Actions
- This repo uses [`semantic-releases`](https://github.com/semantic-release/) to generate releases and release notes automatically from commits
- A [`PERSONAL_TOKEN` Actions secret](https://github.com/nnadeau/pybotics/settings/secrets/actions) from a [Personal Token](https://github.com/settings/tokens) with a [`public_repo` scope](https://github.com/semantic-release/github#github-authentication) is needed for CI releases
---
Icons made by <a href="https://icon54.com/" title="Pixel perfect">Pixel perfect</a> from <a href="https://www.flaticon.com/" title="Flaticon"> www.flaticon.com</a>
Raw data
{
"_id": null,
"home_page": "https://github.com/engnadeau/pybotics",
"name": "pybotics",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8,<4.0",
"maintainer_email": "",
"keywords": "robot,research,automation,kinematics,geometry",
"author": "Nicholas Nadeau",
"author_email": "nicholas.nadeau@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/91/31/f0cb29f879091e7a341ac449601c1cd0f39e248058cfdd5b06da80e2bba1/pybotics-3.1.2.tar.gz",
"platform": null,
"description": "# Pybotics\n\n\n\nThe Python Toolbox for Robotics\n\n- [Explore the docs](https://pybotics.readthedocs.io)\n- [View demos and examples](https://github.com/nnadeau/pybotics/tree/master/examples)\n- [Report a bug](https://github.com/nnadeau/pybotics/issues)\n- [Request a feature](https://github.com/nnadeau/pybotics/issues)\n\n| Item | Badges |\n| ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Repo | [](https://github.com/nnadeau/pybotics/issues) [](https://github.com/nnadeau/pybotics/network) [](https://github.com/nnadeau/pybotics/stargazers)  |\n| Releases | [](https://github.com/nnadeau/pybotics/releases) [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) [](https://github.com/semantic-release/semantic-release) [](https://github.com/semantic-release/semantic-release)  |\n| Compatibility | [](https://pypi.python.org/pypi/pybotics) [](https://pypi.python.org/pypi/pybotics) |\n| Workflows | [](https://github.com/nnadeau/pybotics/actions) [](https://github.com/nnadeau/pybotics/actions) [](https://github.com/nnadeau/pybotics/actions) |\n| Documentation | [](https://pybotics.readthedocs.io/en/latest/?badge=latest) |\n| Citations | [](https://doi.org/10.21105/joss.01738) [](https://zenodo.org/badge/latestdoi/66797360) |\n| License | [](https://pypi.python.org/pypi/pybotics) |\n| Social |  [](https://twitter.com/intent/tweet?text=Wow:&url=https%3A%2F%2Fgithub.com%2Fnnadeau%2Fpybotics) |\n\n## Contents\n\n- [Pybotics](#pybotics)\n - [Contents](#contents)\n - [Overview](#overview)\n - [Usage](#usage)\n - [Documentation](#documentation)\n - [Installation](#installation)\n - [Applications & Examples](#applications--examples)\n - [Featured In](#featured-in)\n - [Citing](#citing)\n - [Development and Community Guidelines](#development-and-community-guidelines)\n - [Local Development](#local-development)\n - [Docker Development](#docker-development)\n - [Commits](#commits)\n - [Dependency Management](#dependency-management)\n - [Submit an Issue](#submit-an-issue)\n - [Contributing](#contributing)\n - [Testing](#testing)\n - [GitHub Actions](#github-actions)\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\nPlease 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\nPlease cite the following articles if you use `pybotics` in your research:\n\n> Nadeau, (2019). Pybotics: Python Toolbox for Robotics. Journal of Open Source Software, 4(41), 1738, https://doi.org/10.21105/joss.01738\n\n```\n@article{nadeau2019pybotics,\n doi = {10.21105/joss.01738},\n url = {https://doi.org/10.21105/joss.01738},\n year = {2019},\n month = sep,\n publisher = {The Open Journal},\n volume = {4},\n number = {41},\n pages = {1738},\n author = {Nicholas Nadeau},\n title = {Pybotics: Python Toolbox for Robotics},\n journal = {Journal of Open Source Software}\n}\n```\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 volume={8},\n ISSN={2218-6581},\n url={http://dx.doi.org/10.3390/robotics8020033},\n DOI={10.3390/robotics8020033},\n number={2},\n journal={Robotics},\n publisher={MDPI AG},\n author={Nadeau, Nicholas A. and Bonev, Ilian A. and Joubair, Ahmed},\n year={2019},\n month={Apr},\n pages={33}\n}\n```\n\n## Development and Community Guidelines\n\n### Local Development\n\n- Use [poetry](https://python-poetry.org/) to install the dev virtual environment:\n\n```bash\npoetry install\n```\n\n### Docker Development\n\n- Docker is a great tool to test the package in an isolated environment\n- It is especially useful for debugging issues between python versions\n\n```bash\n# launch container attached to current directory\ndocker run -v $(pwd):/$(basename $(pwd)) -w /$(basename $(pwd)) -it python:3 bash\n\n# install deps\npip install poetry\npoetry install\n\n# run tests\nmake test\n```\n\n### Commits\n\n- The repo abides by [SemVer](https://semver.org/), [`semantic-release`](https://github.com/semantic-release/semantic-release), and [Angular commit message syntax](https://github.com/angular/angular/blob/main/CONTRIBUTING.md)\n- It is highly recommended to use the [`commitizen` CLI](https://github.com/commitizen/cz-cli)\n- See commit examples below:\n\n| Change | Commit Type |\n| ------------------------- | ----------- |\n| Bumped dependency version | `build` |\n| Bumped Python requirement | `feat` |\n\n### Dependency Management\n\n```bash\n# refresh lock file\npoetry lock --no-update\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 lint\n\n# run all python tests\nmake test\n```\n\n### GitHub Actions\n\n- This repo uses [`semantic-releases`](https://github.com/semantic-release/) to generate releases and release notes automatically from commits\n - A [`PERSONAL_TOKEN` Actions secret](https://github.com/nnadeau/pybotics/settings/secrets/actions) from a [Personal Token](https://github.com/settings/tokens) with a [`public_repo` scope](https://github.com/semantic-release/github#github-authentication) is needed for CI releases\n\n---\n\nIcons made by <a href=\"https://icon54.com/\" title=\"Pixel perfect\">Pixel perfect</a> from <a href=\"https://www.flaticon.com/\" title=\"Flaticon\"> www.flaticon.com</a>\n",
"bugtrack_url": null,
"license": "",
"summary": "Python Toolbox for Robotics",
"version": "3.1.2",
"split_keywords": [
"robot",
"research",
"automation",
"kinematics",
"geometry"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e70c0f16c51f20aecf392127346ac4a93616a341da091bfcc16f106196de6044",
"md5": "39c843788a71a873024c0f95e278fce0",
"sha256": "fa1c9977062ed47e6d28bfe94ed5a311587f3de07f9675f9d0aa4a02f2a1e97e"
},
"downloads": -1,
"filename": "pybotics-3.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "39c843788a71a873024c0f95e278fce0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8,<4.0",
"size": 16564,
"upload_time": "2023-04-24T14:16:51",
"upload_time_iso_8601": "2023-04-24T14:16:51.803119Z",
"url": "https://files.pythonhosted.org/packages/e7/0c/0f16c51f20aecf392127346ac4a93616a341da091bfcc16f106196de6044/pybotics-3.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9131f0cb29f879091e7a341ac449601c1cd0f39e248058cfdd5b06da80e2bba1",
"md5": "6684b8339ccf57827ac6f744fff4c9f2",
"sha256": "d8ff4b949caa9a6b8cc8db7cb385ec1aee1075b237c76a51b06b127dde1d8559"
},
"downloads": -1,
"filename": "pybotics-3.1.2.tar.gz",
"has_sig": false,
"md5_digest": "6684b8339ccf57827ac6f744fff4c9f2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8,<4.0",
"size": 16719,
"upload_time": "2023-04-24T14:16:52",
"upload_time_iso_8601": "2023-04-24T14:16:52.891140Z",
"url": "https://files.pythonhosted.org/packages/91/31/f0cb29f879091e7a341ac449601c1cd0f39e248058cfdd5b06da80e2bba1/pybotics-3.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-24 14:16:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "engnadeau",
"github_project": "pybotics",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "pybotics"
}