VR-Forces 5.0.3 Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
humanCollisionAvoidanceController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 1999 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
15 
16 class DtString;
18 class Dt3dBoundingVolume;
20 class DtInputControlPortGroup;
22 class DtCollision;
26 class DtVectorInputPort;
28 class DtBooleanInputPort;
30 
37 {
38 
39 public:
40 
44  DtLocalObject* owner,
45  DtSimulationServices* simManager,
46  DtComponentDescriptor* desc = 0,
47  DtReaderWriterRegistry* parentRegistry = 0);
48 
52 
56  virtual bool init();
57 
67  virtual void tick();
68 
72  virtual double distanceSquaredToDestination(DtVector offsetVector);
73 
79  virtual void avoidCollision(const DtCollision& potentialCollision);
80 
83  virtual const char* type() const;
84 
88  static DtSimComponent * creator(const DtString& name,
89  DtLocalObject* owner,
90  DtSimulationServices* simManager,
91  DtComponentDescriptor* desc = 0,
92  DtReaderWriterRegistry* parentRegistry = 0);
93 
94 protected:
98 
102 
106 
108  virtual bool shouldRun();
109 
112  virtual void clearCollisionStateData();
113 
118  virtual void clearingCollision();
119 
122  virtual bool isInsideObstruction(const DtCollision* potentialCollision, double& clearingDistance);
123 
124 
126  virtual void registerTaskMsgCallbacks();
127 
130  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
131  virtual void processTaskComplete(DtSimMessage * msg);
132 
137  bool isAppreciablyMoving(DtVector velocity, double velocityTolerance) const;
138 
147  bool setDefaultPortValuesForAvoidance();
148 
155  bool determineObstructionMovementDirection(DtDcm obstructionLocalOrientationMatrix,
156  const DtVector& obstructionVelocity,
157  int& obstructionDirectionSign) const;
158 
171  void avoidMovingObstruction(const DtCollision& potentialCollision);
172 
180  void avoidNonMovingObstruction(const DtCollision& potentialCollision);
181 
184  virtual void calculateAvoidanceByVertices(const DtVector & vertex1,const DtVector & vertex2,double entityBoundingVolumeRadius,
185  DtVector & localVectorToDestination,DtVector & localVectorToObstruciton);
186 
188  virtual void calculateAvoidanceUsingBoundingVolume(const DtCollision& potentialCollision,
189  double entityBoundingVolumeRadius,DtVector & localVectorToDestination,
190  DtVector & localVectorToObstruciton);
191 
201  void startClearingCollision(double clearingDistance);
202 
216  bool calculateMyEntityCollisionBV();
217 
218  bool createPortGroups();
219  bool createPorts();
220 
226  virtual bool createPSR();
227 
228  virtual void computeClearingHeading(const DtVector& localVertex1,
229  const DtVector& localVertex2, const DtVector & localObstaclePos,
230  double& clearingHeading) const;
231 
232  virtual void getObstructionFootprint(const DtCollision& collision,
233  DtLocalVertexList& localObstructionFootprint) const;
234 
235 protected:
236 
239 
241  Dt3dBoundingVolume* myCollisionBV;
242 
244 
246 
250 
253 
260 
268 
275 
279 
282 
288 
296 
303 
309 
315 
318 };
bool myAvoidingCollision
Definition: humanCollisionAvoidanceController.h:240
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
double myLateralClearance
The width (in meters) added to the length of the bounding volume which is checked for potential colli...
Definition: humanCollisionAvoidanceController.h:308
Description: This repository holds all information that is common to all the forms of humans within t...
Definition: humanStateRepository.h:33
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:27
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
DtInputPortGroup * myCollisionAvoidancePortGroup
Input Port Group Name: collision-avoidance-control Input Port Group Description:
Definition: humanCollisionAvoidanceController.h:278
virtual void registerTaskMsgCallbacks()
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
DtCollisionInputPort * myCollisionAvoidancePort
Input Port Name: potential-collision-info Input Port Description: Input Port Range: Input Port Defa...
Definition: humanCollisionAvoidanceController.h:259
DtHumanMovementControlOutputPortGroup * myHumanMovementControlOutputPortGroup
Output Group Name: movement-control .
Definition: humanCollisionAvoidanceController.h:281
DtHumanLocalObjectFacade myHumanLocalObjectFacade
Definition: humanCollisionAvoidanceController.h:317
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
DtBooleanOutputPort * myIsMovingPort
Output Port Name: is-moving Output Port Description: Indicates the entity is being actively moved by ...
Definition: humanCollisionAvoidanceController.h:294
double myTimeToCollide
The minimum time before a collision (in seconds) which the collision avoidance controller compares to...
Definition: humanCollisionAvoidanceController.h:302
Definition: readerWriterRegistry.h:39
virtual const char * type() const =0
Returns a string identifies the class type of component. Type values are defined in compTypes...
Description: This repository is an internal repository accessible only by local objects. It holds all information that is common to all the forms of all entity/aggregate/control objects within VR-Forces.
Definition: vrfObjectStateRepository.h:90
virtual bool init()
Calls setRadio()
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
Dt3dBoundingVolume * myCollisionBV
Definition: humanCollisionAvoidanceController.h:241
bool myHavePortGroup
Definition: humanCollisionAvoidanceController.h:243
File: simMsg.h.
Definition: simMessage.h:35
double myStoppingDistanceFactor
The factor by which the collision avoidance controller multiplies the current stopping distance to de...
Definition: humanCollisionAvoidanceController.h:314
double myClearingDistance
This is only used when clearing.
Definition: humanCollisionAvoidanceController.h:238
DtHumanCollisionAvoidancePSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: humanCollisionAvoidanceController.h:249
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
Contains class declarations for DtBooleanInputPort, DtBooleanOutputPort, and DtBooleanPortData.
Definition: boolIOPort.h:25
class DtHumanCollisionAvoidancePSR:
Definition: humanCollisionAvoidancePSR.h:30
DtBooleanInputPort * myUseCollisionAvoidanceInputPort
Output Port Name: use-collision-avoidance Output Port Description: Indicates whether or not this cont...
Definition: humanCollisionAvoidanceController.h:274
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
Definition: collision.h:25
virtual bool createPortGroups()
Called by init. Derived classes should override this method to create all their input/output port gro...
DtVectorInputPort * myDestinationInputPort
Input Port Name: destination Input Port Description: Specifies the current destination of the entity ...
Definition: humanCollisionAvoidanceController.h:267
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:70
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
DtInputPortGroup is a data port group of a data consumer. It may contain any number of DtInputPorts a...
Definition: inputPortGroup.h:35
Instances of DtCollisionInputPort are input ports through which data consumers can receive informatio...
Definition: collisionIOPort.h:29
DtHumanStateRepository * myLifeformState
Definition: humanCollisionAvoidanceController.h:245
An output port group that contains the ports necessary to control the movement of a human using the D...
Definition: humanMovementControlOutputPortGroup.h:22
class DtLocalVertexList:
Definition: localVertexList.h:20
DtVector myNonMvObstructionLocation
Definition: humanCollisionAvoidanceController.h:316
DtBooleanOutputPort * myCollisionPort
Output Port Name: collision Output Port Description: Specifies if there's a collision occurring Outpu...
Definition: humanCollisionAvoidanceController.h:287
DtHumanCollisionAvoidanceController is a controller that helps entities to avoid running into other e...
Definition: humanCollisionAvoidanceController.h:35
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)