Using the Dead Reckoning OOC as a Smoothing Module

From SIMboxWiki
Jump to navigation Jump to search

The Dead Reckoning OOC (DR) is used for reflecting remote entities in a DMT session. Since the output state of the OOC is smoothed according to defined parameters, it can be used when having discrete state values, and a continuous, smooth motion is required.

The Dead Reckoning OOC, when used in DMT, gets its input as a unified set in the ATT_RAW_DATA_STRING attribute. This attribute contains the position, speed, acceleration, and the orientation and angular velocity in a single string format. It is required so all of the parameters arrive at the same time from the network.

The Dead Reckoning OOC can also get the input data separately, using a different attribute for each member. This operation mode is achieved by setting the property PROP_DR_IS_TO_USE_RAW_DATA_STRING to false. The attributes that are defined for the position, speed, acceleration, orientation and angular velocity are:

  • ATT_RAW_LOCATION
  • ATT_RAW_LONGITUDE
  • ATT_RAW_LATITUDE
  • ATT_RAW_LIN_VELOCITY
  • ATT_RAW_LIN_ACCELERATION
  • ATT_RAW_ANG_VELOCITY
  • ATT_RAW_IS_ON_GROUND

The Dead Reckoning OOC is not active by default, if a DMT session is not currently running. To activate it in a non DMT configuration, it is required to call the action:

ACTION_FORCE_DR_MODE (true)

After the above attributes are set, it is required to change the value of ATT_RAW_IS_DATA_DIRTY (a boolean) to indicate that the new values are ready to be used. The DR OOC will read the attributes values, and calculate the new smooth state (6DOF). The new state will be published in the motion model attributes:

  • ATT_LOCATION
  • ATT_POSITION
  • ATT_ORIENTATION
  • ATT_LONGITUDE
  • ATT_LATITUDE
  • ATT_LIN_VELOCITY
  • ATT_ANG_VELOCITY
  • ATT_LIN_ACCELERATION
  • ATT_ANG_ACCELERATION

When forcing the DR to work as a state reconstructor, it is actually the current motion model of the entity (publishing the 6DOF components, and calling the graphic engine to update). Therefore, it is required that other motion models modules will not be active at the same time. For that reason, it is recommended to configure a base object which is higher in hierarchy than the aircrafts or vehicles, so no other motion models modules exist and can work at the same time:

DeadReckoningSmoothing.png

For base content aircrafts, blocking other motion modules can be done by setting a non-existing maneuver, for example by the action:
ACTION_SET_ACTIVE_MANUEVER_NAME(“Not Exist”)