Git Product home page Git Product logo

pybotics's Introduction

Pybotics

Robot arm logo

The Python Toolbox for Robotics

Item Badges
Repo GitHub issues GitHub forks GitHub stars GitHub repo size
Releases GitHub tag PyPI Version PyPI Wheel PyPI Format semantic-release semantic-release: angular PyPI - Downloads
Compatibility PyPI Pythons PyPI Implementation
Workflows Test Release Publish
Documentation Documentation Status
Citations DOI DOI
License PyPI License
Social Twitter Follow Twitter

Contents

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.

Usage

Documentation

Please visit https://pybotics.readthedocs.io/

Installation

# 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

Featured In

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 to install the dev virtual environment:
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
# 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

Change Commit Type
Bumped dependency version build
Bumped Python requirement feat

Dependency Management

# refresh lock file
poetry lock --no-update

Submit an Issue

  • Navigate to the repository's issue tab
  • Search for related existing issues
  • If necessary, create a new issue using the provided templates

Contributing

Testing

  • Please review the Makefile for an overview of all available tests
  • The most important tests and make commands are highlighted below:
# auto-format code
make format

# perform all static tests
make lint

# run all python tests
make test

GitHub Actions


Icons made by Pixel perfect from www.flaticon.com

pybotics's People

Contributors

dependabot[bot] avatar engnadeau avatar nnadeau avatar pangoro24 avatar pyup-bot avatar renovate[bot] avatar requires avatar seanalford avatar sj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pybotics's Issues

Update examples

Examples are now out of sync with current codebase. Potential use for iPython?

Test example code

jupyter nbconvert --to script --execute --stdout example_calibration.ipynb | python3

IK should have both iterative and symbolic approaches

  • Iterative solutions:
    • do not depend on the existence of an analytical solution
    • are not guaranteed to return a solution (even though one may exist)
  • Analytical/symbolic solutions:
    • fastest
    • return solution(s) if one/many exist

Follow PEP8 line length

Expected Behavior

  • Line length limited to 80

Actual Behavior

  • In pybotics/setup.cfg:
[flake8]
max-line-length = 120

Remove scipy dependency

  • scipy is only used in pybotics/pybotics/robot.py for a numerical IK
  • This is a pretty big dependency for one feature

Split requirements

Expected Behavior

  • requirements folder with several requirements files

Actual Behavior

  • Only two requirements files
  • ci-requirements.txt is becoming quite large and causing dependecy checking issues

Add more angle conventions and conversions

  • There are many angle conventions in robotics
  • As many conventions and conversions as possible should be supported
  • An Angle class could act as a neutral container
    • Angle(vector, enum) constructs the class from a given vector convention
    • Angle(transform) constructs the class from a given transform
    • Angle.to(enum) -> vector or transform converts to given convention

Bandit error: no attribute 'NameConstant'

Expected Behavior

  • bandit linting works without error

Actual Behavior

ERROR	Bandit internal error running: start_process_with_partial_path on file pybotics/robot.py at line 385: 'module' object has no attribute 'NameConstant'Traceback (most recent call last):

Steps to Reproduce the Problem

Specifications

  • Pybotics Version: 0.3.2
  • Python Version: 3.3
  • Other Package Versions: bandit-1.4.0

Improve Typing

Expected Behavior

  • Typing is simple and clean
  • Require only Numpy types in certain locations

Actual Behavior

  • Typing is currently using some odd typedefs
  • Mixture of standard Python types and Numpy types

Use analytical inverse kinematics where possible

  • Add flag to Robot that triggers use of analytical solution if certain conditions are met
  • When setting the robot_model, property method should check if the model is compatible with analytical solution
  • Pieper's Solution is one approach

Initial Update

Hi 👊

This is my first visit to this fine repo, but it seems you have been working hard to keep all dependencies updated so far.

Once you have closed this issue, I'll create seperate pull requests for every update as soon as I find one.

That's it for now!

Happy merging! 🤖

Fix failing builds

Expected Behavior

  • Support as many version of Python as possible

Actual Behavior

  • Python 3.3 and 3.7+ builds are failing

Specifications

  • Pybotics Version: 0.3.2
  • Python Version: 3.3, 3.7+
  • Other Package Versions: Trusty CI
  • Platform: Linux

Implement Travis CI stages

Expected Behavior

  • Testing is separate from linting and deployment
  • pip requirements for testing are separate from runtime requirements

Actual Behavior

  • Testing, deployment, and linting are all performed together
  • Only Python versions are separate

Test on OSX

Expected Behavior

  • CI tests package on OSX in addition to Linux

Actual Behavior

  • No OSX testing

Specifications

  • Pybotics Version: 0.3.2

Test on Windows

Expected Behavior

  • CI tests package on Windows in addition to Linux

Actual Behavior

  • No Windows testing

Specifications

  • Pybotics Version: 0.3.2

pybotics\robot.py:32: Unused attribute 'name'

Expected Behavior

  • vulture passes

Actual Behavior

  • vulture fails

Steps to Reproduce the Problem

  1. vulture .

Specifications

Platform: Windows-10-10.0.15063-SP0
Machine: AMD64
Python: 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
module 'pybotics' has no attribute '__version__'
NumPy: 1.13.0
SciPy: 0.19.1

Poses from List of Joints

Given a list of joint configs, compute the FK of all these configs and return an equal length list.

Add __version__ attribute to `pybotics` package

Expected Behavior

  • pybotics.__version__ works

Actual Behavior

  • module 'pybotics' has no attribute '__version__'

Specifications

Platform: Windows-10-10.0.15063-SP0
Machine: AMD64
Python: 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)]
module 'pybotics' has no attribute '__version__'
NumPy: 1.13.0
SciPy: 0.19.1

Robot Model-Specific Parameters Should be in External Files

Robot Model-Specific Parameters (e.g., MDH, joint limits, etc) Should be in External Files (e.g., csv, json, etc). This way, new models and modifications to models are not tied to the codebase. robot_model.py should be deprecated and example models should be saved in a separate example folder in the repo.

Add more CI testing

Expected Behavior

  • More CI builders, example below:

image

Actual Behavior

  • Only Travis

Add doctests

Expected Behavior

  • All public methods should have informative docstrings with sample usage presented as doctests when appropriate.

Actual Behavior

Steps to Reproduce the Problem

Specifications


Create requirements file for CI pip installs

  • Currently in pybotics/.travis.yml, there is a long list of pip installs for testing
  • This can be put into a test_requirements.txt
  • Maybe even more modular? E.g., coverage_requirements.txt, etc

Implement `FABRIK`

Expected Behavior

@article{AristidouFABRIK,
	author    = {Aristidou, Andreas and Lasenby, Joan },
	title     = {\textsc{FABRIK}: \textsc{A} fast, iterative solver for the Inverse Kinematics problem},
	issn 	  = {1524-0703},
	doi 	  = {DOI: 10.1016/j.gmod.2011.05.003},
	journal   = {Graphical Models},
	number    = {5},
	pages     = {243-260},
	publisher = {Elsevier},
	volume    = {73},
	year      = {2011}
}

Follow `sklearn` style

Expected Behavior

  • fit, score, etc functions

Actual Behavior

  • Non-standardized function names

Simplify calibration functions

Expected Behavior

  • Simple wrapper classes or namedtuples for calibration inputs
  • Not having to call both generate_optimization_mask and generate_optimization_vector, these should be wrapped into a optimization-type class

Actual Behavior

  • Functions with several inputs, such as joints, positions, torques, etc
  • Calling several functions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.