omg-tools

0.1.4last stable release 6 years ago
Complexity Score
Medium
Open Issues
N/A
Dependent Projects
0
Weekly Downloadsglobal
84

Downloads

Readme

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)
  • 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)
  • 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)
  • 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)
  • 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)
  • 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)

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.

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.

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 and installed using pip:

sudo pip install omg-tools

This also installs CasADi, 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. 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.

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

Dependencies

No runtime dependency information found for this package.

CVE IssuesActive
0
Scorecards Score
3.00
Test Coverage
No Data
Follows Semver
Yes
Github Stars
542
Dependenciestotal
0
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No Data
Repo Audits
No Data

Learn how to distribute omg-tools in your own private PyPI registry

pip install omg-tools
Processing...
Done

4 Releases

PyPI on Cloudsmith

Getting started with PyPI on Cloudsmith is fast and easy.