VR-Link API Documentation for DIS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
deadReckoner.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2014 MAK Technologies, Inc
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vlpi/approximator.h>
13 #include <vlpi/disEnums.h>
14 
15 #include <matrix/vlTaitBryan.h>
16 #include <matrix/vlVector.h>
17 #include <matrix/vlDcm.h>
18 
31 {
32 public:
33 
36 
38  DtDeadReckoner( const DtDeadReckoner& orig );
39 
41  virtual ~DtDeadReckoner();
42 
45 
47  bool operator == (const DtDeadReckoner& orig ) const;
48 
51  virtual DtApproximator* clone() const;
52 
55  virtual void setAll(
56  const DtVector& loc,
57  const DtVector32& vel,
58  const DtTaitBryan& ori,
59  const DtVector32& acc,
60  const DtVector32& rotVel,
61  DtTime t);
62 
64  virtual void setLocation( const DtVector& loc, DtTime curTime );
65 
68  virtual const DtVector& approxLocation( DtTime curTime ) const;
69 
71  virtual const DtVector& deadReckonedLocation( DtTime curTime ) const;
72 
74  virtual void setVelocity( const DtVector32& vel, DtTime curTime );
75 
78  virtual const DtVector32& approxVelocity( DtTime curTime ) const;
79 
81  virtual const DtVector32& deadReckonedVelocity( DtTime curTime ) const;
82 
84  virtual void setOrientation( const DtTaitBryan& ori, DtTime curTime );
85 
88  virtual const DtTaitBryan& approxEuler( DtTime curTime ) const;
89 
91  virtual const DtTaitBryan& deadReckonedEuler( DtTime curTime ) const;
92 
94  virtual const DtTime& locationUpdateTime() const;
95 
97  virtual const DtTime& velocityUpdateTime() const;
98 
100  virtual const DtTime& orientationUpdateTime() const;
101 
103  virtual void setAcceleration( const DtVector32& acc, DtTime curTime );
104  virtual const DtVector32& acceleration( DtTime curTime ) const;
105 
107  virtual void setRotationalVelocity( const DtVector32& vel, DtTime curTime );
108  virtual const DtVector32& rotationalVelocity( DtTime curTime ) const;
109 
112  virtual const DtDcm& approxBodyToGeoc( DtTime curTime ) const;
113 
115  virtual const DtDcm& deadReckonedBodyToGeoc( DtTime curTime ) const;
116 
119  virtual void setAlgorithm( DtDeadReckonTypes alg );
120  virtual DtDeadReckonTypes algorithm() const;
121 
124 
127  virtual int isRotational() const;
128 
133  virtual void deadReckonPosition( DtTime dt, const DtVector& oldPos,
134  const DtVector32& oldVel, const DtVector32& oldAccel,
135  DtVector32& newVel, DtVector& newPos ) const;
136 
141  virtual void deadReckonOrientation( DtTime dt, const DtDcm& old_b2w,
142  const DtDirectedRotRate& drr, DtDcm& new_b2w ) const;
143 
145 
148 
151  static int isRotational( DtDeadReckonTypes algorithm );
152 
154  static void deadReckonPosition( DtTime dt, DtDeadReckonTypes algorithm,
155  const DtVector& oldPos, const DtVector32& oldVel, const DtVector32& oldAccel,
156  DtVector32& newVel, DtVector& newPos );
157 
159  static void deadReckonOrientation( DtTime dt, DtDeadReckonTypes algorithm,
160  const DtDcm& old_b2w, const DtDirectedRotRate& drr, DtDcm& new_b2w );
162 
163 protected:
164 
168  virtual void deadReckonLoc( DtTime curTime ) const;
169 
173  virtual void deadReckonBodyToGeoc( DtTime curTime ) const;
174 
178  virtual void deadReckonEuler( DtTime curTime ) const;
179 
180 protected:
181 
187 
188  mutable DtVector myDRLoc;
195 
200 
201 };
202 
204 {
205  deadReckonLoc( curTime );
206  return myDRLoc;
207 }
208 
209 inline const DtVector& DtDeadReckoner::approxLocation( DtTime curTime ) const
210 {
211  return deadReckonedLocation( curTime );
212 }
213 
215 {
216  deadReckonLoc( curTime );
217  return myDRVel;
218 }
219 
220 inline const DtVector32& DtDeadReckoner::approxVelocity( DtTime curTime ) const
221 {
222  return deadReckonedVelocity( curTime );
223 }
224 
226 {
227  deadReckonBodyToGeoc( curTime );
228  return myDRBodyToGeoc;
229 }
230 
231 inline const DtDcm& DtDeadReckoner::approxBodyToGeoc( DtTime curTime ) const
232 {
233  return deadReckonedBodyToGeoc( curTime );
234 }
235 
237 {
238  deadReckonEuler( curTime );
239  return myDREuler;
240 }
241 
242 inline const DtTaitBryan& DtDeadReckoner::approxEuler( DtTime curTime ) const
243 {
244  return deadReckonedEuler( curTime );
245 }
246 
248 {
249  return mySimTimePosDataValid;
250 }
251 
253 {
254  // This is the same as Position, because velocity is recalculated
255  // jointly in this implementation of deadreckoning.
256  return mySimTimePosDataValid;
257 }
258 
260 {
262 }
263 
265 {
266  myAlgorithm = alg;
267 }
268 
270 {
271  return myAlgorithm;
272 }
273 
274 inline const DtVector32& DtDeadReckoner::acceleration( DtTime curTime ) const
275 {
276  return myAccel;
277 }
278 
280 {
281  return myRotVel;
282 }
DtDcm myDRBodyToGeoc
Definition: deadReckoner.h:191
virtual const DtVector32 & approxVelocity(DtTime t) const =0
Get the approximated velocity at the specified time.
virtual const DtVector32 & approxVelocity(DtTime curTime) const
Get the approximated (i.e.
Definition: deadReckoner.h:220
const bool operator==(const DtU128 &lhs, const DtU128 &rhs)
DtTime mySimTimePosDataValid
Definition: deadReckoner.h:184
virtual const DtDcm & approxBodyToGeoc(DtTime t) const =0
Get the approximated data body to geocentric coordinate matrix.
virtual void setOrientation(const DtTaitBryan &ori, DtTime t)=0
Set absolute orientation.
DtApproximator & operator=(const DtApproximator &orig)
Assignment operator.
virtual const DtTime & locationUpdateTime() const
Get the last update time of the absolute location.
Definition: deadReckoner.h:247
virtual const DtTaitBryan & approxEuler(DtTime curTime) const
Get the approximated (i.e.
Definition: deadReckoner.h:242
virtual const DtTime & orientationUpdateTime() const
Get the last update time of the absolute orientation.
Definition: deadReckoner.h:259
virtual const DtTime & velocityUpdateTime() const
Get the last update time of the absolute velocity.
Definition: deadReckoner.h:252
DtVector myDRLoc
Definition: deadReckoner.h:188
virtual const DtVector32 & acceleration(DtTime curTime) const
Definition: deadReckoner.h:274
This file declares DtDcm and several helper classes and functions.
DtTime myDREulerTime
Definition: deadReckoner.h:194
virtual const DtVector32 & acceleration(DtTime t) const =0
DtTaitBryans are used to represent orientation of an object, using a set of three Euler angles...
Definition: vlTaitBryan.h:43
virtual const DtTime & orientationUpdateTime() const =0
Get the last update time of the absolute Orientation.
DtVector32 myVelAtTimeOfValidity
Definition: deadReckoner.h:183
virtual void setLocation(const DtVector &loc, DtTime t)=0
Set absolute location.
virtual void setRotationalVelocity(const DtVector32 &vel, DtTime t)=0
Set/Get absolute rotational velocity.
Rotation rate given by single rate and axis of rotation.
Definition: directedRotRate.h:23
Contains the DtApproximator class declaration.
virtual const DtTime & velocityUpdateTime() const =0
Get the last update time of the absolute velocity.
This file declares DtVector and DtVector32.
Definition: vlVector.h:224
DtTime myDRBodyToGeocTime
Definition: deadReckoner.h:192
virtual void deadReckonBodyToGeoc(DtTime curTime) const
If the last dead reckoned body to geocentric coordinate matrix is not valid for the specified time...
virtual const DtTaitBryan & deadReckonedEuler(DtTime curTime) const
Get dead-reckoned orientation (Euler angles) at the specified time.
Definition: deadReckoner.h:236
This file declares DtTaitBryan.
DtTime mySimTimeOrientDataValid
Definition: deadReckoner.h:186
virtual void deadReckonLoc(DtTime curTime) const
If the last dead reckoned position is not valid for the specified time, recalculate it and update the...
DtBodyRates myRotVel
Definition: deadReckoner.h:199
virtual DtApproximator * clone() const =0
Create a copy of this object.
DtApproximator is an abstract base class.
Definition: approximator.h:24
Definition: vlVector.h:162
virtual void setVelocity(const DtVector32 &vel, DtTime t)=0
Set absolute velocity.
virtual const DtVector32 & rotationalVelocity(DtTime curTime) const
Definition: deadReckoner.h:279
DtVector32 myAccel
Definition: deadReckoner.h:198
virtual const DtDcm & deadReckonedBodyToGeoc(DtTime curTime) const
Get the dead-reckoned body to geocentric coordinate matrix.
Definition: deadReckoner.h:225
virtual const DtTaitBryan & approxEuler(DtTime t) const =0
Get approximated orientation (euler angles) at the specified time.
virtual void setAcceleration(const DtVector32 &acc, DtTime t)=0
Set/Get absolute acceleration.
virtual const DtVector & approxLocation(DtTime t) const =0
Get the approximated location at the specified time.
#define DT_DLL_VLPROTIND
Definition: vlMachineTypes.h:110
virtual const DtVector & approxLocation(DtTime curTime) const
Get the approximated (i.e.
Definition: deadReckoner.h:209
virtual const DtTime & locationUpdateTime() const =0
Get the last update time of the absolute location.
virtual const DtVector32 & rotationalVelocity(DtTime t) const =0
virtual void setAlgorithm(DtDeadReckonTypes alg)
Set/Get the dead reckoning algorithm used for generating the approximated values from the absolute va...
Definition: deadReckoner.h:264
virtual DtDeadReckonTypes algorithm() const
Definition: deadReckoner.h:269
DtDcms are used to represent orientation for an object.
Definition: vlDcm.h:39
DtVector myLocAtTimeOfValidity
Definition: deadReckoner.h:182
virtual void deadReckonEuler(DtTime curTime) const
If the last dead reckoned orientation (Euler angles) is not valid for the specified time...
Contains the standard DIS enumerations.
DtTime myDRPosTime
Definition: deadReckoner.h:190
DtTaitBryan myDREuler
Definition: deadReckoner.h:193
virtual void setAll(const DtVector &loc, const DtVector32 &vel, const DtTaitBryan &ori, const DtVector32 &acc, const DtVector32 &rotVel, DtTime t)=0
Coherently set all DR parameters, thus avoiding DR computations associated with a partial set...
DtDeadReckonTypes myAlgorithm
Definition: deadReckoner.h:197
DtDeadReckonTypes
Definition: disEnums.h:997
DtDcm myBodyToGeocAtTimeOfValidity
Definition: deadReckoner.h:185
virtual const DtDcm & approxBodyToGeoc(DtTime curTime) const
Get the approximated (i.e.
Definition: deadReckoner.h:231
DtVector32 myDRVel
Definition: deadReckoner.h:189
virtual const DtVector32 & deadReckonedVelocity(DtTime curTime) const
Get the dead-reckoned velocity at the specified time.
Definition: deadReckoner.h:214
virtual const DtVector & deadReckonedLocation(DtTime curTime) const
Get the dead-reckoned location at the specified time.
Definition: deadReckoner.h:203
DtDirectedRotRate myDirectedRotRate
Definition: deadReckoner.h:196
Instances of DtDeadReckoner are used to provide approximated position and orientation information for...
Definition: deadReckoner.h:30

Document ID: Generated on Wed Mar 27 02:04:30 EDT 2024 from SVN revision 264570
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)