• Stars
    star
    560
  • Rank 79,541 (Top 2 %)
  • Language
    Python
  • License
    GNU Lesser Genera...
  • Created over 8 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Optimal Motion Generation-tools: motion planning made easy

oh my god!

Build Status PyPI version

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.

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.

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.

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.

More Repositories

1

fatrop

Fatrop is a nonlinear optimal control problem solver that aims to be fast, support a broad class of optimal control problems and achieve a high numerical robustness.
C++
132
star
2

rockit

Github Mirror of https://gitlab.mech.kuleuven.be/meco-software/rockit
Python
39
star
3

nlgreyfast

Toolbox for system identification of nonlinear state space grey-box models using CasADi
MATLAB
22
star
4

dynamic_optimization_inventory

A curated list of solvers/software/frameworksrelevant for dynamic optimiation
22
star
5

lc_toolbox

An open-source linear control toolbox for MATLAB.
MATLAB
22
star
6

gilc

gILC - An Open Source Tool for Model Based Iterative Learning Control
Python
13
star
7

rockit_demo

Dockerfile
11
star
8

rtPGM

real-time Proximal Gradient Method for linear MPC
Python
8
star
9

optispline

User friendly toolbox for robust optimization with spline relaxations.
C++
6
star
10

mit-impact-2024

Learning material and website source code for the workshop on optimal control problems and model predictive control for autonomous systems to be held at MIT CSAIL, July 2024
Jupyter Notebook
6
star
11

impact

Github mirror of https://gitlab.kuleuven.be/meco-software/impact
Python
5
star
12

resmile

LPV system identification using B-splines with the Regularized State-space Model Interpolation of Local Estimates (ReSMILE) method
MATLAB
5
star
13

mecotron

Educational setup for control theory: hardware and software description
C++
4
star
14

ourbot

Mobile robotic platform
C++
3
star
15

async_kalman

Asynchronous Kalman filter
C++
2
star
16

AdaptiveNLP

C++
2
star
17

demos

A collection of demonstrations of MECO technology
1
star
18

casadi2ampl

Python
1
star
19

QRoboticsCenter

A standalone repository of QRoboticsCenter
C++
1
star
20

mockups

mockup headers/libraries for third-party software
C
1
star
21

sshinfcd

State-space H-infinity control design for LTI systems
MATLAB
1
star
22

ProjectEagle

Robot detection with topview camera
C++
1
star