VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Object Sensor Concepts

Table of Contents

Sensing and Acquisition

Simulation objects in VR-Forces are configured with sensors to determine what other objects they are able to detect and interact with. Sensing is modeled in several different domains, such as visual, radar, infrared, and sonar. The sensor models simulate not only signal detection in the sensors, but any signal processing and human interpretation that occurs in the man-machine system. The output of a sensor is a contact list with a Combat Identification Level (detected, recognized, identified, etc.) and appropriate identifying data associated with each contact.

Sensing Objects

The DtObjectSensor is the base class for all the sensors in VR-Forces. It detects things purely on whether the object is within its sensor geometry (DtSpatialFilterEvaluator).

The process of detecting other entities begins in the sensor's tick function.

  1. The sensor updates its list of object types to detect. It checks its DtObjectSensor::myObjectsToDetectInputPort to see if the type of objects it should be detecting has changed. Other components use this port to let the sensor know they are interested in detection of particular object types. The target selection controller is one of the components that passes this data to the sensor.
  2. The sensor checks the status of previously detected objects. Once the list of detectable types is updated, it calls processObjects. processObjects calls continueDetectingObject, which checks to see if objects that were detected in the last tick are still detected. If an object is still detected, it updates its information. If it is no longer detected, it is removed from the list.
  3. The sensor checks for new objects. It calls detectObject, which iterates through a list of all the objects in the simulation that meet the sensor's detection criteria to determine if there are any new detections.

    Both continueDetectingObject and detectObject follow a similar process. They check to see if the object is destroyed and whether this sensor detects destroyed objects or not. Then they call objectWithinSensorGeometry, which checks to see if the object falls within the sensor's geometry. If it does, a DtRwSensorContactInfo is created for newly detected objects or updated for previously detected objects.

  4. The contact information is added to DtObjectSensor::myDetectedObjectsListPort.
  5. Once all of the objects that might be detectable have been checked, DtObjectSensor::updateDetectedObjectsListPort is called to pass the detected objects' information to other components that are connected to this output port. This is usually a DtContactFusionController that will merge all the contacts from the various sensor sources into one combined list in the entity's state repository

Sensing Object Signatures

The majority of object sensing in VR-Forces uses a signature model. The signature model is based on the following concepts:

The sensor model is implemented through the following parameter blocks in the object parameter database and configuration files:

Target Signature

Every object type in VR-Forces can be configured with sensor signature values for any of the sensor domains. These are configured in the object parameter database entry for the object type, and apply both to local objects and remote objects. For each domain, an object has a base signature, and a set of modifiers. The base signature is a single value that represents the signature for that domain. The modifiers specify multipliers for that base value based on the current state of the object. For example, a simulation object might have a base value of 5.0 for its visual signature, and a modifier of 1.5 when moving. This means the signature of the simulation object will be 7.5 when moving and 5.0 when not moving. Signature modifier rules can be placed in an external file, and referenced from many different object types.

The absolute signature values configured in the target object have no units. When used with the default propagation model and a default sensor, the absolute signature is the maximum distance (in kilometers) from which the object can be spotted. However, in general, the absolute signature is not necessarily expressed in units of distance. It is a function of the combination of a particular propagation model and sensor models.

Absolute signatures are specified separately for each sensor domain, and are completely independent of each other.

Signature Propagation

The signature propagation portion of the sensor system models the spatial relationship between the sensor and the target and the effects of the environment on detection. This is modeled by converting the absolute signature calculated by the target object into the relative signature given an observer position.

Signature propagators are configured for each of the sensor domains in the physical world parameter file. Each domain can use a different propagation model, or have its models configured differently.

The VR-Forces standard signature propagator, which is used by default for all sensor domains, returns a relative signature equivalent to the absolute signature * 1000 / range between observer and target. Optionally, the standard propagator can be configured to check for terrain or simulation objects blocking the direct line-of-sight between the target and observer, and return a relative signature of 0 when there is an obstruction.

The DtSignatureObjectSensor is the class that computes object detection using target signatures and signature propagators. It is derived from the DtObjectSensor. The signature object sensor takes into account effects from the physical world (how the physical world affects how the sensor sees the object). Both detectObject and continueDetectingObject have been overridden the same way:

  1. They call up to the base class versions for quick sensor geometry exclusion checks described previously.
  2. They modify the sensitivity of the sensor based on battlefield intelligence, using the sensorModificationFactor method of the DtIntelCollectionAreaManager which is accessed through Simulation Services.
  3. Next they call apparentSignature which creates a DtSignaturePropagatorArgs to be passed to the apparentObjectSignature method of the DtSignatureSensorManager. This manager is accessed through the Physical World via simulation services. The DtSensorSignatureManager has a list of DtSignaturePropagator instances. The apparent signature method queries the object for its current absolute signature. It finds the propagator that is appropriate for the sensor domain passed in. It then passes the absolute signature of the object and the propagator arguments into the propagator's calculateApparentSignature method.
  4. The apparent signature is used along with the time that the target has been under observation to determine the Combat Identification Level of the target. This determination uses detection tables in the simulation model set.

Currently there are two types of propagators:

VR-Forces provides a radar sensor, which is a specialized version of the signature object sensor. It has all the same functionality of the signature object sensor, plus it publishes an emitter system and one or more emitter beams, which are configured though the descriptor for the sensor.

sensor-process.png

Adding Sensor Domains

Sensor domains are specified using a string name of the domain, such as "visual." To work, the sensor domain must be listed in all three of the sensor system's components - the target object configuration, the propagator configuration, and the sensor itself. By default, VR-Forces has includes sensor domains for "visual", "radar", "infrared", and "sonar". You can add new sensor domains by choosing a new unique sensor domain name and adding it to the configuration files. For example, to add a new acoustic sensor to a simulation object, so that it could hear nearby simulation objects:

  1. For all simulation object types that would potentially be detected by the acoustic sensor, add a new entry to the "sensor-signatures" block in the object parameter database entry with the name "acoustic" and the base signature value. Modifiers could be added as well.
  2. In the physicalWorldParams.mtl configuration file, add a new entry for an acoustic propagator, using "acoustic" as the signature name.
  3. Add a signature-object-sensor to the sensors list in the object parameter database entry for the simulation object that will detect objects this way. It would specify "acoustic" as its sensor-domain.

If the standard propagator model, or the signature rules defined by VR-Forces are not sufficient, new ones can be defined and added though factories.


Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)