![install_and_test](https://github.com/trajectory-invariants/invariants_py/actions/workflows/install_and_test.yml/badge.svg)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/trajectory-invariants/invariants_py)
![GitHub issues](https://img.shields.io/github/issues/trajectory-invariants/invariants_py)
Python library for the invariant shape descriptors.
# Getting started
## Installation
### Prerequisites
Prerequisites: Python >3.6 and pip
### Installation of invariants-py
Clone (or download) this repository:
git clone https://gitlab.kuleuven.be/robotgenskill/public_code/invariants_py.git
Install package in your Python environment:
cd invariants_py
pip install --upgrade pip
pip install -e .
### (Optional) Installation of Fatrop
To speed-up calculation times, you can choose to additionally install the [fatrop solver](https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop). Currently this solver is only available in Linux.
Clone the Fatrop repository:
cd ..
git clone https://github.com/meco-group/fatrop.git --recursive
cd fatrop
Set the CMake flags, change the BLASFEO target to your system architecture (see table of https://github.com/giaf/blasfeo)
sudo apt-get install cmake
export CMAKE_ARGS="-DBLASFEO_TARGET=X64_AUTOMATIC -DENABLE_MULTITHREADING=OFF"
Build and install the Fatropy project
cd fatropy
pip install --upgrade pip setuptools
pip install .
Install rockit with Fatropy interface
git clone https://gitlab.kuleuven.be/meco-software/rockit.git
git clone https://gitlab.kuleuven.be/u0110259/rockit_fatrop_plugin.git ./rockit/rockit/external/fatrop
cd rockit
pip install .
## Examples
Example scripts are found in the `examples` folder.
# Features
The main features are:
- Calculation of invariant descriptors for trajectories.
- Fast trajectory adaptation starting from the invariant descriptors.
Status of current functionality:
| Frenet-Serret Invariants | Screw Axis Invariants |
| ------------------------------------------- | ------------------------------------------------- |
| {+ global calculation invariants +} | global calculation invariants |
| {+ moving horizon calculation invariants +} | moving horizon calculation invariants |
| {+ global trajectory generation +} | global trajectory generation |
| {+ moving horizon trajectory generation +} | moving horizon trajectory generation |
# History of this repository
- 2018-2019 [Handover thesis of Zeno/Victor](https://gitlab.kuleuven.be/robotgenskill/master_thesis_code/thesis_zenogillis_victorvanwymeersch): The original start of this repository. Functionality was ported from invariants-matlab to Python, mainly focusing on the OCPs for calculating Frenet-Serret invariants and generating trajectories with invariants. Embedded in ROS and tested using data from HTC Vive. The OCPs were implemented in pure Casadi (nlpsol).
- 2019-2021 [etasl invariants integration](https://gitlab.kuleuven.be/robotgenskill/python_projects/etasl_invariants_integration): Extended the trajectory generation code by integrating it with reactive trajectory tracking in eTaSL. The OCPs were reimplemented using optistack. Splines were first used to represent the generated trajectories.
- 2021-2024: [invariants_py](https://gitlab.kuleuven.be/robotgenskill/python_projects/invariants_py/): Split off everything related to ROS and eTaSL to other repositories, so that this repository is pure Python. Focus was on developing online optimization problems for calculating invariants and trajectory generation. The OCPs were reimplemented in rockit and integrated with fatrop for speeding up the execution.
# Contributors
Main developers: Maxim Vochten, Riccardo Burlizzi, Arno Verduyn
This package has also received contributions by Victor van Wymeersch, Zeno Gillis, Toon Daemen, Glenn Maes, Ali Mousavi, Lander Vanroye
Raw data
{
"_id": null,
"home_page": null,
"name": "invariants-py",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "casadi, coordinate-invariant, differential geometry, dynamics, geometric optimal control, invariant, kinematics, optimal control, optimization, python, robotics, screw theory, trajectory analysis, trajectory generation, trajectory optimization, trajectory planning, trajectory representation",
"author": "Riccardo Burlizzi, Arno Verduyn",
"author_email": "Maxim Vochten <maxim.vochten@kuleuven.be>",
"download_url": "https://files.pythonhosted.org/packages/fe/00/6c01936ae5a696a941afd847f8ea2289e3053af7b611d4edfb226dbe528f/invariants_py-0.3.6.tar.gz",
"platform": null,
"description": "![install_and_test](https://github.com/trajectory-invariants/invariants_py/actions/workflows/install_and_test.yml/badge.svg)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/trajectory-invariants/invariants_py)\n![GitHub issues](https://img.shields.io/github/issues/trajectory-invariants/invariants_py)\n\n\n\nPython library for the invariant shape descriptors.\n\n\n\n# Getting started\n\n## Installation\n\n### Prerequisites\n\nPrerequisites: Python >3.6 and pip\n\n\n\n### Installation of invariants-py\n\nClone (or download) this repository:\n\n git clone https://gitlab.kuleuven.be/robotgenskill/public_code/invariants_py.git\n\nInstall package in your Python environment:\n\n cd invariants_py\n\n pip install --upgrade pip \n \n pip install -e .\n\n### (Optional) Installation of Fatrop\n\nTo speed-up calculation times, you can choose to additionally install the [fatrop solver](https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop). Currently this solver is only available in Linux.\n\nClone the Fatrop repository: \n\n cd ..\n\n git clone https://github.com/meco-group/fatrop.git --recursive\n\n cd fatrop\n\nSet the CMake flags, change the BLASFEO target to your system architecture (see table of https://github.com/giaf/blasfeo)\n\n sudo apt-get install cmake\n\n export CMAKE_ARGS=\"-DBLASFEO_TARGET=X64_AUTOMATIC -DENABLE_MULTITHREADING=OFF\"\n\nBuild and install the Fatropy project\n\n cd fatropy\n pip install --upgrade pip setuptools\n pip install .\n\nInstall rockit with Fatropy interface\n\n git clone https://gitlab.kuleuven.be/meco-software/rockit.git\n git clone https://gitlab.kuleuven.be/u0110259/rockit_fatrop_plugin.git ./rockit/rockit/external/fatrop\n cd rockit\n pip install .\n\n## Examples\n\nExample scripts are found in the `examples` folder.\n\n# Features\n\nThe main features are:\n- Calculation of invariant descriptors for trajectories.\n- Fast trajectory adaptation starting from the invariant descriptors.\n\nStatus of current functionality:\n\n| Frenet-Serret Invariants | Screw Axis Invariants |\n| ------------------------------------------- | ------------------------------------------------- |\n| {+ global calculation invariants +} | global calculation invariants |\n| {+ moving horizon calculation invariants +} | moving horizon calculation invariants |\n| {+ global trajectory generation +} | global trajectory generation |\n| {+ moving horizon trajectory generation +} | moving horizon trajectory generation |\n\n\n\n# History of this repository\n\n- 2018-2019 [Handover thesis of Zeno/Victor](https://gitlab.kuleuven.be/robotgenskill/master_thesis_code/thesis_zenogillis_victorvanwymeersch): The original start of this repository. Functionality was ported from invariants-matlab to Python, mainly focusing on the OCPs for calculating Frenet-Serret invariants and generating trajectories with invariants. Embedded in ROS and tested using data from HTC Vive. The OCPs were implemented in pure Casadi (nlpsol).\n- 2019-2021 [etasl invariants integration](https://gitlab.kuleuven.be/robotgenskill/python_projects/etasl_invariants_integration): Extended the trajectory generation code by integrating it with reactive trajectory tracking in eTaSL. The OCPs were reimplemented using optistack. Splines were first used to represent the generated trajectories. \n- 2021-2024: [invariants_py](https://gitlab.kuleuven.be/robotgenskill/python_projects/invariants_py/): Split off everything related to ROS and eTaSL to other repositories, so that this repository is pure Python. Focus was on developing online optimization problems for calculating invariants and trajectory generation. The OCPs were reimplemented in rockit and integrated with fatrop for speeding up the execution.\n\n# Contributors\n\nMain developers: Maxim Vochten, Riccardo Burlizzi, Arno Verduyn\n\nThis package has also received contributions by Victor van Wymeersch, Zeno Gillis, Toon Daemen, Glenn Maes, Ali Mousavi, Lander Vanroye\n\n\n\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Calculate invariant trajectory representations from trajectory data and generate new trajectories from invariant representations",
"version": "0.3.6",
"project_urls": {
"Documentation": "https://trajectory-invariants.github.io/docs/python/",
"Home-page": "https://trajectory-invariants.github.io/",
"Issues": "https://github.com/trajectory-invariants/invariants_py/issues",
"Repository": "https://github.com/trajectory-invariants/invariants_py"
},
"split_keywords": [
"casadi",
" coordinate-invariant",
" differential geometry",
" dynamics",
" geometric optimal control",
" invariant",
" kinematics",
" optimal control",
" optimization",
" python",
" robotics",
" screw theory",
" trajectory analysis",
" trajectory generation",
" trajectory optimization",
" trajectory planning",
" trajectory representation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "43ee0ae112eccb77f3fbf454ef2be5b51935a8ee7b35de7d683ac86b6822acf7",
"md5": "a4339e864dc3cfeb1bcdab9edb62c24f",
"sha256": "cb4ed3c7be61518f24d5109b42e604a3452d12691690612a4b9196258533f682"
},
"downloads": -1,
"filename": "invariants_py-0.3.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a4339e864dc3cfeb1bcdab9edb62c24f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 173401,
"upload_time": "2024-06-08T10:16:32",
"upload_time_iso_8601": "2024-06-08T10:16:32.926433Z",
"url": "https://files.pythonhosted.org/packages/43/ee/0ae112eccb77f3fbf454ef2be5b51935a8ee7b35de7d683ac86b6822acf7/invariants_py-0.3.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fe006c01936ae5a696a941afd847f8ea2289e3053af7b611d4edfb226dbe528f",
"md5": "5d6f97406b6ef2038403c70854e72a41",
"sha256": "eb41f5c5cc983782523e401403a3f6ec090693db1a184b3a4aad99db8d21a714"
},
"downloads": -1,
"filename": "invariants_py-0.3.6.tar.gz",
"has_sig": false,
"md5_digest": "5d6f97406b6ef2038403c70854e72a41",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 602498,
"upload_time": "2024-06-08T10:16:34",
"upload_time_iso_8601": "2024-06-08T10:16:34.649384Z",
"url": "https://files.pythonhosted.org/packages/fe/00/6c01936ae5a696a941afd847f8ea2289e3053af7b611d4edfb226dbe528f/invariants_py-0.3.6.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-08 10:16:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "trajectory-invariants",
"github_project": "invariants_py",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "invariants-py"
}