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!
The animations below give an overview of typical problems that OMG-tools can handle.
OMG-tools implemented on real-life motion systems. Click on a picture to watch the Youtube video.
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')
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.
OMG-tools is available in a Docker container. The image can be obtained here.
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.
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 .
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.