VR-Forces 4.0.4 Class Documentation
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions
DtObjectSensor Class Reference

DtObjectSensor is a base level sensor component. More...

Inheritance diagram for DtObjectSensor:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 DtObjectSensor (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 (const DtString&,DtVrfObject*,DtSimManager*,
virtual ~DtObjectSensor ()
 destructor
virtual bool init ()
 Calls createPSR(), createDetectableObjectList(), createAndInitSensorMonitor() and initSensorGeometry().
virtual DtString type () const
 Returns a string identifies the class type of component.
virtual void tick ()
 Processes only if the simulation is not paused.
virtual bool tickWhileDestroyed () const
virtual int sensorType () const

Static Public Member Functions

static DtSimComponentcreator (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0)
 (const DtString&,DtVrfObject*,DtSimManager*,

Protected Member Functions

virtual bool createPortGroups ()
 Creates and initializes port groups.
virtual bool createPorts ()
 Creates the target list port.
virtual DtObjectSensorPSRcreatePSR ()
 Creates myProcessState data member, and adds it to our process state repository manager.
virtual const char * defaultPSRType () const
virtual void updateDetectableObjectsList ()
 Sets up myDetectableObjectList as a list that contains all entity types/forces specified in both the descriptor and the myObjectsToDetectInputPort input port.
virtual bool initSensorGeometry ()
 Creates the geometry evaluator based on the sensor-geometry entry in the descriptor, and the sensor geometry evaluator factory.
virtual void setupGeometryForDetection ()
 Sets up the current sensor geometry evaluator with the current position and orientation of the sensor.
virtual DtVector localSensorPosition () const
virtual DtTaitBryan localSensorOrientation () const
virtual bool processObjects ()
 Checks detectability of each of the detectable objects.
virtual bool detectObject (DtVrfObject *object, DtRwSensorContactInfo *contactInfo)
virtual bool continueDetectingObject (DtVrfObject *object, DtRwSensorContactInfo *contactInfo, bool &contactInfoModified)
virtual bool objectWithinSensorGeometry (DtVrfObject *object) const
virtual double rangeSquaredToObject (const DtVrfObject *object) const
virtual double rangeToObject (const DtVrfObject *object) const
virtual void clearObjectRangeCache () const
 Invalidates the current object range cache.
virtual void printTargets () const
 Prints the current target list to the console.
virtual void updateDetectedObjectListPort ()
 Clears the list port, then adds all target infos from the previous target list in the PSR, and sends the data.
virtual bool createAndInitSensorMonitor ()
 Creates a DtObjectSensorMonitor, and calls init() on it.
virtual bool objectInDetectableList (DtVrfObject *) const
 Returns true if the object is in the myDetectableObjectList.
virtual void processHostilitiesChanged (DtU8 force)
DtCompositePredicate objectTypeForcePredicate (const DtObjectType &, const DtNLengthIntegerVector &forceTypes)
 Specifies force types as s DtNLenghtIntegerVector.
DtCompositePredicate objectTypeForcePredicate (const DtObjectType &, const std::list< DtU8 > &forceTypes)
 Specifies force types as a std::list.

Static Protected Member Functions

static void hostilitiesChangedCallback (DtU8 force, void *usr)
 If who were hostile towards has changed we will need to update our myDetectableObjectList.

Protected Attributes

DtManagedObjectListConstPtr myDetectableObjectList
const DtObjectSensorDescriptormyObjectSensorDescriptor
DtObjectSensorPSRmyProcessState
 Container for state data associated with this component.
DtObjectSensorMonitormyMonitor
 Sends out sensor contact information to the GUI if the GUI or other application has requested the information.
DtSpatialFilterEvaluatormySensorGeometryEvaluator
const DtVrfObjectmyMutableObjectCached
 The VrfObject whose range is currently cached.
bool myMutableObjectRangeCalculated
 Keeps track of whether the range has been calculated for the current cached object.
double myMutableObjectRangeCache
 The current range to the cached object, if calculated.
bool myMutableObjectRangeSquaredCalculated
 Keeps track of whether the range squared has been calculated for the current cached object.
double myMutableObjectRangeSquaredCache
 The current range squared to the cached object, if calculated.
Ports and Port Groups
DtSensorContactListOutputPortmyDetectedObjectListPort
 Outputs: Output Port Name: detected-objects
Output Port Description: The list of contacts detected by this sensor.
DtObjectTypesListMultiInputPortmyObjectsToDetectInputPort
 Inputs: DtObjectTypesListMultiInputPort : object-types-to-detect Input Port Name: object-types-to-detect
Input Port Description: List of contacts to be considered for target selection.
DtInputPortGroupmySensorOffsetInputPortGroup
 Input Port Group Name: sensor-offset
Input Port Group Description: Allows an external controller to provide position and orientation of the sensor relative to the entity's position.
DtOrientationInputPortmyOrientationInputPort
 Input Port Name: orientation
Input Port Description: Specifies the orientation of the sensor relative to the entity on which it is mounted.
DtVectorInputPortmyPositionInputPort
 Input Port Name: position
Input Port Description: Specifies the position of the sensor in body coordinates relative to the entity which it is mounted on.

Private Member Functions

 DtObjectSensor ()
 default constructor; not implemented
 DtObjectSensor (const DtObjectSensor &orig)
 copy constructor; not implemented
const DtObjectSensoroperator= (const DtObjectSensor &orig)
 assignment operator; not implemented

Detailed Description

DtObjectSensor is a base level sensor component.

End User Description: Manages a filtered list of detectable targets, as specified in the descriptor, and sets up infrastructure for specific sensor types to run their algorithms on the list. Manages sending of sensor data to the GUI though messages. Manages sensor geometry. Configuring a DtObjectSensor on an entity will cause it to detect all entities of types specified in the descriptor within the geometric region specified by the sensor geometry. No tests for terrain obstruction or sensor signatures will be done. For this functionality, use a DtSignatureObjectSensor.

Uses Descriptor Type: DtObjectSensorDescriptor.


Constructor & Destructor Documentation

default constructor; not implemented

DtObjectSensor::DtObjectSensor ( const DtObjectSensor orig) [private]

copy constructor; not implemented

DtObjectSensor::DtObjectSensor ( const DtString name,
DtVrfObject owner,
DtSimManager simManager,
DtComponentDescriptor desc = 0,
DtReaderWriterRegistry parentRegistry = 0 
)

(const DtString&,DtVrfObject*,DtSimManager*,

Parameters:
nameReader writer name of this component.
ownerThe DtVrfObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object).
(const DtString&,DtVrfObject*,DtSimManager*, DtComponentDescriptor*,DtReaderWriterRegistry* parentRegistry)

virtual DtObjectSensor::~DtObjectSensor ( ) [virtual]

destructor


Member Function Documentation

const DtObjectSensor& DtObjectSensor::operator= ( const DtObjectSensor orig) [private]

assignment operator; not implemented

virtual bool DtObjectSensor::init ( ) [virtual]

Calls createPSR(), createDetectableObjectList(), createAndInitSensorMonitor() and initSensorGeometry().

This must be called after construction and before the sensor is used on an entity.

Reimplemented from DtSimComponent.

Reimplemented in DtRadarObjectSensor, and DtSignatureObjectSensor.

virtual DtString DtObjectSensor::type ( ) const [virtual]

Returns a string identifies the class type of component.

Type values are defined in compTypes.h. DtSimComponent creation functions are registered with the DtSimComponentFactory using the type values as the key.

Returns:
DtObjectSensorType

Reimplemented from DtSimComponent.

Reimplemented in DtRadarObjectSensor, and DtSignatureObjectSensor.

virtual void DtObjectSensor::tick ( ) [virtual]

Processes only if the simulation is not paused.

Calls attemptToActivate() on myDetectedObjectListPort. Calls clearObjectRangeCache(). Calls setupGeometryForDetection() Calls processObjects(). When processObjects() returns true, calls notifyTargetsChanged() on the DtObjectSensorModitor. Calls updateDetectedObjectListPort().

Reimplemented from DtSimComponent.

Reimplemented in DtSignatureObjectSensor, and DtRadarObjectSensor.

virtual bool DtObjectSensor::tickWhileDestroyed ( ) const [virtual]
Returns:
true. This sensor ticks when the entity is destroyed so that it can notify any subscribed GUIs that it is no longer detecting objects.

Reimplemented from DtSimComponent.

virtual int DtObjectSensor::sensorType ( ) const [virtual]
Returns:
an enumeration indicating what type of sensor this is. (Visual, radar, etc) Types specified in ifSensorData.h

Reimplemented in DtSignatureObjectSensor, and DtRadarObjectSensor.

static DtSimComponent* DtObjectSensor::creator ( const DtString name,
DtVrfObject owner,
DtSimManager simManager,
DtComponentDescriptor desc = 0,
DtReaderWriterRegistry parentRegistry = 0 
) [static]

(const DtString&,DtVrfObject*,DtSimManager*,

Parameters:
nameReader writer name of this component.
ownerThe DtVrfObject that owns this component
simManagerThe simulation manager (provides access to terrain, message interface, simulation clock).
descThe component descriptor used to initialize this component.
parentRegistryPointer to the parent reader writer registry (the containing object that reads/writes this object).
(const DtString&,DtVrfObject*,DtSimManager*, DtComponentDescriptor*,DtReaderWriterRegistry* parentRegistry)

Returns:
New instance of this class.

Reimplemented in DtSignatureObjectSensor, and DtRadarObjectSensor.

virtual bool DtObjectSensor::createPortGroups ( ) [protected, virtual]

Creates and initializes port groups.

Reimplemented from DtSimComponent.

virtual bool DtObjectSensor::createPorts ( ) [protected, virtual]

Creates the target list port.

Reimplemented from DtSimComponent.

virtual DtObjectSensorPSR* DtObjectSensor::createPSR ( ) [protected, virtual]

Creates myProcessState data member, and adds it to our process state repository manager.

Passes in the name and type specified in the component descriptor (if they exist) to the DtVrfProcessStateRepository::createRepository factory method. If name and/or type is not specified, uses the appropriate default strings defined in procSRTypes.h.

virtual const char* DtObjectSensor::defaultPSRType ( ) const [protected, virtual]
Returns:
DtVrfObjectSensorProcessStateRepositoryType. Derived classes may override this to return their own default PSR type, if a different PSR type is desired.

Reimplemented in DtRadarObjectSensor.

virtual void DtObjectSensor::updateDetectableObjectsList ( ) [protected, virtual]

Sets up myDetectableObjectList as a list that contains all entity types/forces specified in both the descriptor and the myObjectsToDetectInputPort input port.

DtTargetSelectionController and DtSpotReportGeneratorController are examples of controllers that provide lists of types of objects to detect. Uses objectTypeForcePredicate() to create the predicate for each type/force specified.

Specifies force types as s DtNLenghtIntegerVector.

Returns:
A predicate that will match the specified object type and force types. If the force types list is empty, the predicate will not include any check for force types, and will therefore match all force types.
DtCompositePredicate DtObjectSensor::objectTypeForcePredicate ( const DtObjectType ,
const std::list< DtU8 > &  forceTypes 
) [protected]

Specifies force types as a std::list.

virtual bool DtObjectSensor::initSensorGeometry ( ) [protected, virtual]

Creates the geometry evaluator based on the sensor-geometry entry in the descriptor, and the sensor geometry evaluator factory.

virtual void DtObjectSensor::setupGeometryForDetection ( ) [protected, virtual]

Sets up the current sensor geometry evaluator with the current position and orientation of the sensor.

Called once per detection cycle.

virtual DtVector DtObjectSensor::localSensorPosition ( ) const [protected, virtual]
Returns:
The position of the sensor in local coordinates. If myPositionInputPort is active, this offset it used, otherwise it returns the entity's origin position.

Reimplemented in DtSignatureObjectSensor.

virtual DtTaitBryan DtObjectSensor::localSensorOrientation ( ) const [protected, virtual]
Returns:
The orientation of the sensor in local coordinates. If myOrientationInputPort is active, this orientation is used, otherwise it is just the entity's orientation.
virtual bool DtObjectSensor::processObjects ( ) [protected, virtual]

Checks detectability of each of the detectable objects.

This is done by calling continueDetectingObject() for all objects previously detected. For any that return false, they are removed from the list. For all objects that weren't previously detected, detectObject() is called. For any where the return value is true, they are added to the detected objects list in the PSR.

virtual bool DtObjectSensor::detectObject ( DtVrfObject object,
DtRwSensorContactInfo contactInfo 
) [protected, virtual]
Returns:
true if the specified object should be detected by the sensor, when it has not been detected on the previous detection cycle. Deriving classes should override this to implement their own detection constraints. A blank DtRwSensorContactInfo structure is provided, and may be filled in by deriving class code. This implementation returns true if objectWithinSensorGeometry() returns true, and the entity meets the detectDestroyedObjects criteria.

Reimplemented in DtSignatureObjectSensor, and DtRadarObjectSensor.

virtual bool DtObjectSensor::continueDetectingObject ( DtVrfObject object,
DtRwSensorContactInfo contactInfo,
bool contactInfoModified 
) [protected, virtual]
Returns:
true if the specified object should continue to be detected by the sensor, when it was detected on the previous detection cycle. Deriving classes should override this to implement their own detection constraints. The current DtRwSensorContactInfo structure is provided for this contact, and may be modified in deriving class code. If any modifications are made, contactInfoModified should be set to true for notification of the ObjectSensorMonitor. This implementation returns true if objectWithinSensorGeometry() returns true, and the entity meets the detectDestroyedObjects criteria.

Reimplemented in DtSignatureObjectSensor, and DtRadarObjectSensor.

virtual bool DtObjectSensor::objectWithinSensorGeometry ( DtVrfObject object) const [protected, virtual]
Returns:
true only if the specified object is within the defined geometry of the sensor. Uses the sensor geometry evaluator.
virtual double DtObjectSensor::rangeSquaredToObject ( const DtVrfObject object) const [protected, virtual]
Returns:
the square of the range from the host object to the specified object. Uses the objectRangeCache to avoid recalculation when possible.
virtual double DtObjectSensor::rangeToObject ( const DtVrfObject object) const [protected, virtual]
Returns:
the range from the host object to the specified object. Uses the objectRangeCache to avoid recalculation when possible.
virtual void DtObjectSensor::clearObjectRangeCache ( ) const [protected, virtual]

Invalidates the current object range cache.

virtual void DtObjectSensor::printTargets ( ) const [protected, virtual]

Prints the current target list to the console.

virtual void DtObjectSensor::updateDetectedObjectListPort ( ) [protected, virtual]

Clears the list port, then adds all target infos from the previous target list in the PSR, and sends the data.

virtual bool DtObjectSensor::createAndInitSensorMonitor ( ) [protected, virtual]

Creates a DtObjectSensorMonitor, and calls init() on it.

virtual bool DtObjectSensor::objectInDetectableList ( DtVrfObject ) const [protected, virtual]

Returns true if the object is in the myDetectableObjectList.

static void DtObjectSensor::hostilitiesChangedCallback ( DtU8  force,
void *  usr 
) [static, protected]

If who were hostile towards has changed we will need to update our myDetectableObjectList.

virtual void DtObjectSensor::processHostilitiesChanged ( DtU8  force) [protected, virtual]

Member Data Documentation

Outputs: Output Port Name: detected-objects
Output Port Description: The list of contacts detected by this sensor.


Output Port Range:
Output Port Default Value:
Output Group Parent:

Inputs: DtObjectTypesListMultiInputPort : object-types-to-detect Input Port Name: object-types-to-detect
Input Port Description: List of contacts to be considered for target selection.

As many contact lists as desired can be connected and work simultaneously.
Input Port Range:
Input Port Default Value:
Input Group Parent: object-types-to-detect

Input Port Group Name: sensor-offset
Input Port Group Description: Allows an external controller to provide position and orientation of the sensor relative to the entity's position.

Input Port Name: orientation
Input Port Description: Specifies the orientation of the sensor relative to the entity on which it is mounted.


Input Port Range:
Input Port Default Value: 0,0,0
Input Group Parent: sensor-offset

Input Port Name: position
Input Port Description: Specifies the position of the sensor in body coordinates relative to the entity which it is mounted on.

If this port is not connected localSensorPosition() simply returns the local position of the entity.
Input Port Range:
Input Port Default Value: 0,0,0
Input Group Parent: sensor-offset

Container for state data associated with this component.

This state is saved and restored as part of a scenario (or checkpoint).

Sends out sensor contact information to the GUI if the GUI or other application has requested the information.

The VrfObject whose range is currently cached.

Keeps track of whether the range has been calculated for the current cached object.

double DtObjectSensor::myMutableObjectRangeCache [mutable, protected]

The current range to the cached object, if calculated.

Keeps track of whether the range squared has been calculated for the current cached object.

The current range squared to the cached object, if calculated.


The documentation for this class was generated from the following file:

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)