What is MORSE?

_images/simu_render_indoors.jpg

MORSE is a generic simulator for academic robotics. It focuses on realistic 3D simulation of small to large environments, indoor or outdoor, with one to tens of autonomous robots.

MORSE can be entirely controlled from the command-line. Simulation scenes are generated from simple Python scripts.

MORSE comes with a set of standard sensors (cameras, laser scanner, GPS, odometers, etc.), actuators (speed controllers, high-level waypoints controllers, generic joint controllers), and robotic bases (quadrotors, ATRV, Pioneer3DX, generic 4 wheel vehicle, PR2, etc.). New ones can easily be added.

MORSE rendering is based on the Blender Game Engine. The OpenGL-based Game Engine supports shaders, provides advanced lightning options, supports multi-texturing, and uses the state-of-the-art Bullet library for physics simulation.

Simulation with MORSE

In MORSE, simulations are small Python scripts that describe the robots and the environment. MORSE provides several command-line tools to create stubs, and it takes virtually no time to get a first simulation up and running.

_images/caylus.jpg

One of the MORSE’s main design choices is to provide the ability to select a simulation’s degree of realism: if you are working on vision, you need accurate camera sensors, but may not care about the realism of your motion controller, and you may find a waypoint controller good enough and easier to use. On the other hand, if you work on robot supervision, you may prefer to skip the perception stack and directly work with object IDs and positions. MORSE lets you define how realistic the different components of you robot need to be, to meet your needs.

MORSE also supports two different strategies for handling time: best effort, that tries to keep a real-time pace, at the cost of dropping frames if necessary, or fixed step that ensures that the simulation is accurate. In this case, MORSE exports its own clock that can be used to synchronize with other time-dependent modules in your system.

Extending MORSE

MORSE is mostly written in Python: except for computationally intensive processing (like 3D rendering or physics simulation), MORSE is a purely Python application. This enables easy and fast modification of the source code.

_images/python-powered.png

In addition, MORSE has been designed to be modular: adding a new sensor, a new actuator, a post-processing function (like applying a noise function), adding new services, or even a completely new communication middleware is reasonably easy and documented.

Integration in your workflow

MORSE does not make any assumptions about your architecture. MORSE currently supports 7 open-source middlewares (ROS, YARP, Pocolibs, MOOS, HLA, Mavlink and PPRZLink). Check here for the exact list of features supported for each middleware.

It also supports a simple socket-based protocol for easy integration with other languages/toolboxes. Complete bindings for Python are provided.

MORSE comes with a set of standard sensors and actuators. To suit your specific needs, MORSE also provides a lightweight overlay mechanism to quickly change the name and types of exchanged data flows.

Also note that MORSE benefits from Blender’s import/export capabilities: existing models in many 3D formats (Collada, DXF, 3DS Max, VRML, etc.) can be used to build robots and environments.

Performance

MORSE is able to handle dozens of robots in a single environment as long as cameras are not simulated (because of bandwidth limitations).

For instance, MORSE running on an Opteron quadcore 2GHz, in headless mode (i.e. without 3D acceleration), can simulate:

  • one robot with a pose sensor at 250Hz
  • 50 robots with pose sensors at ~90Hz
  • 10 robots with a pose sensor at ~40Hz and a laser scanner scanning at ~18Hz

(These were measured with standard ROS tools.)

When cameras do no need to be simulated, MORSE offers a fast mode with greatly improved performance.

MORSE is also suitable for large simulations of complex robots: MORSE can be run as a distributed network of simulation nodes. Each node automatically synchronizes with the others (however, due to network latencies, don’t expect to simulate accurate physical interactions in the distributed mode).

_images/ocean.jpg

MORSE installation

MORSE is packaged in Debian/Ubuntu: sudo apt-get install morse-simulator

MORSE is also easy to compile from source. Its only dependencies are Python, Blender, and the middlewares you want to use. Any Linux distribution should provide all of the required dependencies out of the box.

MORSE installation is based on CMake, and allows you to install support for only those parts relevant to your needs (e.g., you don’t have to install YARP if you are using ROS, and so on).

MORSE is also available as a robotpkg package: robotpkg is a package manager for robotics related software that will automatically take care of all of MORSE’s dependencies.

MORSE as a software project

_images/osi-license.png

MORSE and all the libraries it relies on are open-source projects.

MORSE itself is licensed under a permissive BSD license: you can use it for any purpose, without having to share your modifications back.

This also means that MORSE follows an open development process: you can fork MORSE source code on GitHub and everybody is invited to propose new features, report bugs, and submit patches.

MORSE tries to follow software development good practises, like continuous integration.

Community

According to Ohloh, MORSE is an active and mature project, with well over 20 contributors.

MORSE is used by over 15 robotic labs in the world, and questions on its mailing-lists (morse-users@laas.fr and morse-dev@laas.fr) are usually answered within a few hours.

MORSE is also based on Blender for modelling, 3D rendering with shader support, import/export of 3D models, and Bullet for physics simulation.

These two huge open-source projects are very active and are supported by large communities of users and developers.

This means that there are lots of tutorials, code examples, reusable snippets, etc.

This also ensures that, even if the MORSE core team disappeared, you would still be able to ask for support!

MORSE also integrates with other large open-source projects like ROS, which further anchors it into the open-source robotics community.

Documentation

MORSE has complete and up-to-date online documentation, both for users and developers: MORSE documentation.

Several tutorials are also available, for quickly getting started.

_images/documentation.jpg

Focus on academic requirements

MORSE was created at LAAS-CNRS, a French public laboratory, one of the biggest in robotics.

Many more universities and institutes have joined the effort and collaboratively take part in assuring the future of MORSE.

Our close collaborations with academic research in robotics worldwide ensures that many new innovations are quite quickly added to our roadmap.

Check here MORSE related publications and workshop.

Other Features

Some additional features provided by MORSE are:

  • human-robot interaction simulation, with a controllable human avatar
  • deep integration with unit-testing frameworks: use MORSE to test your own software
_images/hri1.jpg

MORSE limitations

Last but not least, MORSE has some important limitations you must be aware of when assessing simulation solutions:

  • MORSE has (almost) no graphical user interface. While some consider this to be an advantage, others may miss it. An important correlate: MORSE is primarily targeted at experienced computer scientists. While we spend a lot of time designing a convenient and intuitive interface (after all, we use it on a daily basis for our own research!), to use MORSE you need to be comfortable using command-line tools.
  • unlike some other simulators, MORSE does not include any advanced algorithms (like path planning). You are expected to run provide them yourself in your own robot software stack.
  • we do not (yet?) consider MORSE to be a physically accurate simulator: while we rely on a state-of-the-art physics engine (Bullet), do not expect to accurately simulate robot arm dynamics or fine grasping. Other projects are doing this much better (e.g., OpenGrasp for grasping).
  • MORSE is mostly developed and supported on Linux. MORSE is known to run on MacOSX and Microsoft Windows, but only limited support can be provided for these platforms.
  • As a not-for-profit, academic project, we do not offer any professional support beyond the documentation and the public mailing-lists. However, there’s nothing to stop third party companies from providing commercial services based on MORSE.