130 likes | 471 Views
HLA: RPR-FOM. Real Time Reference Platform FOM and Interoperability with DIS. RPR-FOM. Suppose you have an existing DIS simulation and have a mandate to make it HLA-compliant per DMSO decree (circa 1999) What is the easiest, lowest-cost way to get there?
E N D
HLA: RPR-FOM Real Time Reference Platform FOM and Interoperability with DIS
RPR-FOM • Suppose you have an existing DIS simulation and have a mandate to make it HLA-compliant per DMSO decree (circa 1999) • What is the easiest, lowest-cost way to get there? • • Come up with a FOM that tracks closely to the existing DIS standard. Same attributes, same semantics for enumerated types, etc • • Rewrite your code enough to update via HLA rather than DIS • If you’re lucky you can reuse most of your existing code and get complaint with as little drama as possible
RPR-FOM • It makes sense to agree upon FOMs and to have a few standardized FOMs that are appropriate to specific problem domains • Without this every project tries to create its own FOM, and we are back to the pre-DIS days of no standardized way to communicate between simulations--which was the whole point of the exercise • We want common semantics in addition to common network plumbing.
RPR-FOM • This is the central objective of RPR-FOM. It is a standardized (within SISO) FOM that defines interactions and classes • The FOM tracks what DIS was already doing • • Same velocity, angular acceleration, entity type, world location, etc • • Same enumerated types (country, entity type values, etc) • Same syntax, same semantics already agreed upon by DIS, so this leverages the installed base
Example Class (class BaseEntity (attribute AccelerationVector best_effort receive) (attribute AngularVelocityVector best_effort receive) (attribute DeadReckoningAlgorithm best_effort receive) (attribute EntityType best_effort receive) (attribute EntityIdentifier best_effort receive) (attribute IsFrozen best_effort receive) (attribute Orientation best_effort receive) (attribute WorldLocation best_effort receive) (attribute VelocityVector best_effort receive)
Example Class (class MilitaryEntity (attribute AlternateEntityType best_effort receive) (attribute CamouflageType best_effort receive) (attribute FirePowerDisabled best_effort receive) (attribute ForceIdentifier best_effort receive) (attribute IsConcealed best_effort receive)
Interactions • Interactions are events: (class WeaponFire best_effort receive (parameter EventIdentifier) (parameter FireControlSolutionRange) (parameter FireMissionIndex) … (parameter QuantityFired) (parameter RateOfFire) (parameter TargetObjectIdentifier) (parameter WarheadType) )
RPR-FOM • The classes track the concepts of DIS: Entity type, force ID, coordinate systems, all have the same meaning as DIS • You can also write a DIS-HLA gateway without too much of a problem, since the semantics match so closely
DIS-HLA Gateway Gateway DIS Code HLA RPR-FOM Federate RTI HLA Federate DIS Simulation
DIS-HLA Gateway • The gateway is one piece of code that both listens to an HLA RPR-FOM federate execution and the network for DIS PDUs • Changes in state for HLA classes result in a DIS PDU being issued • Receipt of a DIS PDU can cause the HLA class to be changed • Discovery of a new entity on the DIS network can result in a new HLA object instance being created and announced to the network • The gateway acts as the owner of the object instance in the HLA federate • A gateway is not trivial code, but it can be done