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

Lists

README

        

oh my god!

[![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.

Formation attacked by cannonballs

Holonomic vehicle moving through a maze

Holonomic vehicle passing through a revolving door

Formation through narrow passage

Dubins vehicles moving in relative formation

Dubins vehicle with trailer

Big warehouse with rectangular bouncing obstacles

Quadrotors avoiding a UFO

3D quadrotor in obstructed environment

Rear-wheel steered AGV parking

Holonomic vehicle moving while suddenly blocked

Differential drive moving through a revolving door

Big warehouse with circular bouncing obstacles

Holonomic vehicle finding its way in a warehouse

Quadrotors landing on platform

Trajectory generation for GCode of 2D anchor

Formation of quadrotor with rotating wall

Differential drive vehicle moving through environment using multiple frames

Holonomic vehicle moving through big warehouse using multiple shifted frames

Holonomic vehicle moving through big warehouse using multiple frames without stationary obstacles

Holonomic vehicle moving through vast warehouse using multiple frames without stationary obstacles

Trajectory generation for a racetrack

### Experimental validation
OMG-tools implemented on real-life motion systems. Click on a picture to watch the Youtube video.


Online motion planning


Online distributed motion planning


Online motion planning


Plate transportation


Spline-based motion planning


Spline-based motion planning


Spline-based motion planning


Spline-based motion planning in a vast environment


Spline-based motion planning in a vast environment


Spline-based motion planning in a vast environment


Spline-based CNC trajectory generation


Spline-based CNC trajectory generation

### 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')
```


Point-to-point motion of holonomic vehicle

### 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.