HLA¶
HLA, as a middleware, provides a way to connect Morse to various other simulator engines, using HLA as standard way to communicate between these tools. Since HLA doesn’t provide a Python interface, the Morse implementation works only with the CERTI implementation of HLA. Moreover, currently, Morse only supports a subset of the full HLA standard:
- basic federation management
- declaration management (attribute part only, i.e., datastream in Morse terminology)
- object management (note that, in currently, Morse does not create
new objects when it receives a
Discover Object Instance
but links a pre-existing object with this HLA instance - time management
So, at present, Morse does not support:
- interactions
- data distribution management
- ownership management
Warning
Currently, no SOM (Simulation Object Model) has been specified, so it is up to the specific users to develop it, with the associated Morse bindings.
certi_test_input
and certi_test_output
are provided for example,
and are supposed to work with the billard example provided by CERTI.
Datastreams interface¶
The mapping between the Morse and HLA vocabularies is the following:
publishObjectClass
andUpdateAttributeValues
correspond to an output streamsubscribeObjectClassAttributes
andreflectAttributeValues
correspond to an input stream.
Service interface¶
This is currently unsupported.
Configuration specifics¶
The following options may be used to configure HLA behaviour:
- fom: Mandatory : a string representing the FOM (Federation Object Model) used for this simulation
- name: Mandatory : a string representing the name of this simulation in the federation
- federation: Mandatory : the name of the federation to join
- sync_point: Optional : the name of the initial synchronisation point used for the federation. If it is not present, Morse assumes there is no need to initialise synchronisation
- sync_register: Optional : if a sync_point is defined, and this
variable is true, then this instance of Morse will register the
sync_point to the RTIG, and the user should start the simulation by
pressing
Enter
. The default is False. - time_sync: Optional : a boolean indicating if the simulation is in ‘Best-effort’ mode or synchronised by the HLA. The default value is False.
- timestep: Optional : a float indicating how much logical time elapses for each game loop. Do not set this if you use physics from Blender (or sensors relying on Blender time !.
- lookahead Optional : a flow indicating the lookahead used by the HLA. The default value is timestep.
- stop_time: Optional : a float indicating when the simulation must stop. If not configured, the simulation continues indefinitely. This only works if time_sync is enabled.
You need to pass the options to the configure_stream_manager
method in the
following way:
env = Environment('...')
env.configure_stream_manager(
'hla',
fom = 'Test.fed', name = 'Morse', federation = 'Test',
sync_point = 'Init', time_sync = True)
Files¶
- Python:
$MORSE_ROOT/src/morse/middleware/hla_datastream.py