object-based toolbox for robot dynamic simulation, analysis, control and planning
Project description
The latest version of this code is now hosted here: https://github.com/SherbyRobotics/pyro
Pyro
An object-based toolbox for robot dynamic simulation, analysis, control and planning.
A collection of dynamic systems:
A collection of controller synthesis and planning tools:
Computed torque controller | Sliding mode controller |
---|---|
Dynamic programming | Optimal torque policy |
Rapidly-exploring random tree planning | Direct collocation trajectory optimisation |
A collection of analysis tools:
Simulation (computing trajectories) | Phase plane analysis |
---|---|
Generating animated simulations | Robot arm manipulability ellipsoid |
Bode plot or output/input | Pole zero map of output/input |
Modal analysis (mode 1) | Modal analysis (mode 2) |
Unified by a standardized dynamic system, controller and planner classes hierarchy
The concept of this toolbox is a hierachy of dynamic system objects, from the most generic representation (any non-linear differential equations) to more system specific representations such as mechanical system (second order equations), linear state space, manipulator equations, etc. This structure is then leveraged by analysis tools, from generic tools that work for all sub-class of dynamic systems such as running simulation and phase-plane analysis, to system-specific tools that leverage specific system propreties such as modal analysis for linear sub-class:
The core of the library is a mother dynamic system class defined by a differential equation $\dot{x} = f(x,u,t)$, and optionnaly an output equation $y = h(x,u,t)$ and a foward kinematic equation that is used for generating animations:
How to use
To learn how to use pyro, see the following notebook tutorials hosted on colab:
- The Dynamic System class and basic functionnality
- Creating a custom dynamic class
- Closed-loop system and controllers objects
- The Linear System class (comin soon..)
- The Mechanical System class (coming soon..)
- The Manipulator Robot class
Also see exemples scripts in pyro/examples/
and tutorial video (in french) on youtube: here
Installation
Dependencies
Pyro is built only using core python librairies:
- numpy
- scipy
- matplotlib
Using in Colab
!git clone https://github.com/SherbyRobotics/pyro
import sys
sys.path.append('/content/pyro')
import pyro
Using with Anaconda and Spyder IDE
1. Download anaconda python distribution
Download anaconda (including spyder IDE) available here: https://www.anaconda.com/products/individual
2. Dowload pyro source code.
option a) Using git to clone the repo:
git clone https://github.com/SherbyRobotics/pyro.git
in the folder of your choice.
option b) Download the .zip using the Code/Download Zip link at the top of this page, and then unzip in the folder of your choice.
3. Add the pyro folder to the pythonpath
option a) [Easy spyder IDE only] Add it this the spyder menu at python/PYTHONPATH manager.
In order to run pyro in the terminal directly of in another IDE like VS code, option b) or c) should be used.
option b) [conda]
conda develop /PATH/TO/PYRO
option c) [pip] Go to the root directory of the pyro folder and run:
python -m pip install -e .
Graphical backend debuging
By default pyro will try to use matplotlib Qt5Agg backend and interactive mode. You can modify the default graphical behavior by modifying the headers of the file pyro/analysis/graphical.py In spyder IDE, you cand also change the graphics backend in the menu at python/Preferences/IPython console/Backend. Inline does not allow animations, it is best to use Automatic (for Windows and Ubuntu) or OS X (for Mac).
Pyro tools list
Dynamic objects
- Continuous Dynamic system : $\dot{x} = f(x,u)$
- Linear System : $\dot{x} = A x + B u $
- Transfer function
- Exemples: mass-spring-damper
- Mechanical System : $H(q)\ddot{q} + C(\dot{q},q)\dot{q} = \sum F $
- Manipulator Robot : $\dot{r} = J(q) \dot{q}$
- Exemples: two link plananr robot
- Exemples: five link plannar robot
- Exemples: three link robot
- Exemples: single pendulum
- Exemples: double pendulum
- Exemples: cart-pole
- Exemples: planar drone
- Exemples: rocket
- Manipulator Robot : $\dot{r} = J(q) \dot{q}$
- Exemples: bicycle model (planar vehicle)
Controller objects
- Linear
- PID
- LQR
- Computed-Torque
- Sliding-mode controller
- End-point impedance controller for robot arms
- End-point trajectory controller for robot arms
- Tabular look-up table controller (generated by the value-iteration algorithm)
Planner objects
- RRT tree search
- Direct collocation trajectory optimisation
- Dynamic programming and value-iteration
Analysis tool
- Copmuting simulation
- Phase-plane analysis
- Graphical animated output of the simulations
- Cost function computation
- Linearisation (from any dynamic class to the state-space class)
- Modal analysis
- Pole/zero computation
- Bode plot
- Reachability
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pyro_udes-2.3.dev2.tar.gz
.
File metadata
- Download URL: pyro_udes-2.3.dev2.tar.gz
- Upload date:
- Size: 293.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8568b34424efbb0fd5b6f18275f0730a0334c3ae8972ac083f3e4a2c10f02e |
|
MD5 | 07e5c49b71eaf497cb321ca7fdb50f34 |
|
BLAKE2b-256 | 83aa1902f377e1323e89107f50321e6964799ec4a75045dd8f9b9f2adf520994 |
File details
Details for the file pyro_udes-2.3.dev2-py3-none-any.whl
.
File metadata
- Download URL: pyro_udes-2.3.dev2-py3-none-any.whl
- Upload date:
- Size: 130.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | ebf5b66fe0d7e5138ffbc707def46591ce5330037888c5ce2eecb4d4e7fd31d3 |
|
MD5 | 98f276dc961ed74646e6173042faa79e |
|
BLAKE2b-256 | a7c487eaa01297065c73c5cf3b38fa137cbde1fddd89c15f820fef3032b2f6fc |