Integrating MORSE into your software architecture¶
MORSE’s core is independent of any specific robotic implementation. To make it possible to easily integrate with your particular robotic architecture, MORSE provides middleware layers which bridge the gap, both for services with the concept of Component overlays and for datastreams with the concept of datastream handlers (this page).
Features compatibility matrix¶
The table below summarizes the level of support of MORSE features for each middleware. Further information can be found by clicking on the relevant component.
When a component is supported (✔), we specify the middleware-specific format
MORSE uses (e.g., Viam
or YarpImage
).
If no format is specified, MORSE uses a generic serialization mechanism, e.g., a straight serialization of the JSON representation of the component data.
Configuring Morse to handle data in a specified way¶
To configure a component to export or import data using a specific method, you
need to call
morse.builder.abstractcomponent.AbstractComponent.add_stream()
method for your component. This is explained in detail and with examples
in the following tutorials:
Extending MORSE’s middleware support¶
The following documentation explains how to add a specific datastream handler for one existing middleware. If you want to add a completely new middleware, you can refer to these instructions.
Bindings¶
We provide some bindings to access the different components using the
socket
interface and to control the simulation. At the moment, we only
have bindings for the Python language but contributions are welcome! These
bindings are documented here.
For other middlewares, you can, of course, rely on standard tools provided by these middlewares (that’s the main purpose of the middleware layer after all!).