Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meco-group/omg-tools
Optimal Motion Generation-tools: motion planning made easy
https://github.com/meco-group/omg-tools
Last synced: about 2 months ago
JSON representation
Optimal Motion Generation-tools: motion planning made easy
- Host: GitHub
- URL: https://github.com/meco-group/omg-tools
- Owner: meco-group
- License: lgpl-3.0
- Created: 2016-03-21T10:48:33.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2021-04-01T17:42:23.000Z (about 3 years ago)
- Last Synced: 2024-05-04T15:20:45.975Z (about 2 months ago)
- Language: Python
- Homepage:
- Size: 41.8 MB
- Stars: 542
- Watchers: 31
- Forks: 94
- Open Issues: 27
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Lists
- Awesome-Self-Driving - omg-tools - Optimal Motion Generation-tools: motion planning made easy. (2. Planning)
- awesome-cobots - omg_tools
README
[![Build Status](https://travis-ci.org/meco-group/omg-tools.svg?branch=master)](https://travis-ci.org/meco-group/omg-tools)
[![PyPI version](https://badge.fury.io/py/omg-tools.svg)](https://badge.fury.io/py/omg-tools)Optimal Motion Generation-tools is a Python software toolbox facilitating the modeling, simulation and embedding of motion planning problems. Its main goal is to collect research topics concerning (spline-based) motion planning into a user-friendly package in order to enlarge its visibility towards the scientific and industrial world.
This toolbox focuses on receding horizon control for single-agent systems as well as on distributed control for multi-agent systems. The approaches implemented in OMG-tools are described in the following publications:
* Mercy T., Van Loock W., Pipeleers G. (2016). Real-time motion planning in the presence of moving obstacles. Proceedings of the 2016 European Control Conference. European Control Conference. Aalborg, 29 June - 1 July 2016 (pp. 1586-1591). ([pdf](https://lirias.kuleuven.be/bitstream/123456789/538718/1/TimMercy_2016_ECC.pdf))
* Van Parys R., Pipeleers G. (2016). Online distributed motion planning for multi-vehicle systems. Proceedings of the 2016 European Control Conference. European Control Conference. Aalborg, 29 June - 1 July 2016 (pp. 1580-1585). ([pdf](https://lirias.kuleuven.be/bitstream/123456789/526758/3/RubenVanParys_2016_ECC.pdf))
* Van Parys R., Pipeleers G. (2017). Spline-Based Motion Planning in an Obstructed 3D environment. Proceedings of the 20th IFAC World Congress. IFAC World Congress. Toulouse, France, 9-14 July 2017 (pp. 8998-9003). ([pdf](https://lirias.kuleuven.be/bitstream/123456789/575111/3/RubenVanParys_2017_IFAC_lirias.pdf))
* Mercy T., Van Parys R., Pipeleers G. (2017), Spline-based motion planning for autonomous guided
vehicles in a dynamic environment, Transactions on Control systems Technology. ([pdf](https://lirias.kuleuven.be/bitstream/123456789/592031/1/FINAL+VERSION.pdf))
* Van Parys R., Pipeleers G. (2017), Distributed MPC for multi-vehicle systems moving in formation, Robotics and Autonomous Systems, vol. 97C (pp. 144-152). ([pdf](https://lirias2repo.kuleuven.be/bitstream/id/473742/))
* Mercy T., Hostens E., Pipeleers G. (2018). Online motion planning for autonomous vehicles in vast environments. Proceedings of the 2018 International Workshop on Advanced Motion Control. Tokyo, March 9-11 2018 ([pdf](https://lirias2repo.kuleuven.be/rest/bitstreams/484961/retrieve))If these methods help you with your research, please cite us!
## Examples
### Overview
The animations below give an overview of typical problems that OMG-tools can handle.
![]()
### Experimental validation
OMG-tools implemented on real-life motion systems. Click on a picture to watch the Youtube video.### Code example
This elementary code example illustrates the basic functionality of the toolbox for steering a holonomic vehicle from an initial to terminal pose in a dynamic environment.```python
from omgtools import *# make and set-up vehicle
vehicle = Holonomic()
vehicle.set_initial_conditions([-1.5, -1.5])
vehicle.set_terminal_conditions([2., 2.])
vehicle.set_options({'safety_distance': 0.1})# make and set-up environment
environment = Environment(room={'shape': Square(5.)})# add stationary obstacles to environment
rectangle = Rectangle(width=3., height=0.2)
environment.add_obstacle(Obstacle({'position': [-2.1, -0.5]}, shape=rectangle))
environment.add_obstacle(Obstacle({'position': [ 1.7, -0.5]}, shape=rectangle))# generate trajectory for moving obstacle
traj = {'velocity': {'time': [3., 4.],
'values': [[-0.15, 0.0], [0., 0.15]]}}
# add moving obstacle to environment
environment.add_obstacle(Obstacle({'position': [1.5, 0.5]}, shape=Circle(0.4),
simulation={'trajectories': traj}))# give problem settings and create problem
problem = Point2point(vehicle, environment)
problem.init()# simulate, plot some signals and save a movie
simulator = Simulator(problem)
vehicle.plot('input', labels=['v_x (m/s)', 'v_y (m/s)'])
problem.plot('scene')
simulator.run()
problem.save_movie('scene')
```
![]()
### More examples
Check out the examples directory for more code examples. There you can find a simple tutorial example which provides a documented overview of the basic functionality of the toolbox.## Installation
### Docker file
OMG-tools is available in a Docker container. The image can be obtained [here](https://cloud.docker.com/repository/docker/tmercy/omg-tools/general).
### Basic installation
OMG-tools is written in Python and requires the installation of the following packages:`sudo apt-get install python-pip python-numpy python-scipy python-matplotlib`
OMG-tools itself is downloaded from the [PyPI repository](https://pypi.python.org/pypi/omg-tools#downloads) and installed using `pip`:
`sudo pip install omg-tools`
This also installs [CasADi](http://casadi.org/), a powerful open-source tool for nonlinear optimization and algorithmic differentiation.
### Advanced installation
If you want to save simulation results in gif-format, you need [imagemagick](https://imagemagick.org). For Linux Debian users:`sudo add-apt-repository main && apt-get update && install imagemagick `
For faster solving of the motion problems, we recommend to install the [HSL linear solvers](https://github.com/casadi/casadi/wiki/Obtaining-HSL).
If you want to install OMG-tools for development purposes, you can link your installed files to the cloned repository, by invoking the following command in the repository's root folder:
`sudo pip install -e .`
## Authors
OMG-tools is developed by Ruben Van Parys and Tim Mercy as part of their research in spline-based motion planning, under supervision of Goele Pipeleers within the [MECO research team](https://www.mech.kuleuven.be/en/pma/research/meco). Any questions, comments or propositions of collaboration can be addressed to ruben[dot]vanparys[at]kuleuven[dot]be and tim[dot]mercy[at]kuleuven[dot]be.