Command Line Parameters
Parameter Usage Example
./middleware --vehicle_ids=1,7,8 --node_id=middleware --wait_for_start=true --dds_domain=1 --simulated_time=false
Important Command Line Parameters
- node_id: Identification string of the middleware instance in the DDS network
- simulated_time: True if the current setup uses simulated time, else false
- wait_for_start: Whether the middleware should wait for the LCC's start signal, should be true (false only for debugging purposes)
- vehicle_id: Single ID of a vehicle the middleware is supposed to be responsible for
- vehicle_ids: IDs of the vehicles the HLC(s) that the middleware 'controls' are responsible for (usually just one ID)
- vehicle_amount: Set amount of vehicles instead of vehicle ID, sets IDs 1 - vehicle_amount (restricted to 256)
- dds_domain: Domain ID of the domain in which the LCC, vehicle etc. participate
- domain_number: Local domain ID of the middleware and the HLC
- dds_initial_peer: Should be explained in Lab Control Center (Usage)
Important ParameterServer Parameters
middleware_period_ms
: Length of each period in which the HLC is triggered, in nanoseconds
Other Command Line parameters
- offset_nanoseconds: Set the offset of the communication w.r.t. ~1970 (real time) or 0 (simulated time); should usually not be changed
Communication between HLC and Middleware
The IDL type for the DDS communication of HLC and middleware is mentioned here and located here: https://git.rwth-aachen.de/CPM/Project/Lab/software/blob/master/hlc/middleware/idl/VehicleStateList.idl
Further communication includes the propagation / exchange of start and stop signals. All relevant data types are e.g. used in the init script for Matlab, which is mentioned in the Matlab section.
What the HLC scripts need to include
- Send a ReadySignal message after initialization - only the ID string matters, which must be of the form "
hlc_" + vehicle_id
, where the latter is the ID of the vehicle the HLC is responsible for - Receive VehicleStateList messages, which include the current states and observations of the vehicle as well as the current time - this signal is supposed to be the start signal for the HLC, so computation should start using this data after the message was received. Make sure to ignore signals received during computation, if that takes longer than a single period
- Send vehicle command messages as a result of the communication including the vehicle ID to the Middleware, which propagates these to the vehicle
- React to stop signals sent by the LCC and propagated to the HLC by the Middleware
TODO: Mention IDL type / what it does / what the middleware expects, refer to Matlab tutorial