RMLOutputParameters.h
Go to the documentation of this file.
1 // ---------------------- Doxygen info ----------------------
43 // ----------------------------------------------------------
44 // For a convenient reading of this file's source code,
45 // please use a tab width of four characters.
46 // ----------------------------------------------------------
47 
48 
49 #ifndef __RMLOutputParameters__
50 #define __RMLOutputParameters__
51 
52 
53 #include "RMLVector.h"
54 #include <string.h>
55 
56 
57 // ---------------------- Doxygen info ----------------------
74 // ----------------------------------------------------------
76 {
77 public:
78 
79 
80 // ---------------------- Doxygen info ----------------------
85 // ----------------------------------------------------------
87  {
90  };
91 
92 
93 protected:
94 
95 // ---------------------- Doxygen info ----------------------
115 // ----------------------------------------------------------
116  RMLOutputParameters(const unsigned int DegreesOfFreedom)
117  {
118  unsigned int i = 0 ;
119 
120  this->TrajectoryIsPhaseSynchronized = false ;
121 
122  this->NumberOfDOFs = DegreesOfFreedom ;
123 
124  this->SynchronizationTime = 0.0 ;
125 
126  this->ANewCalculationWasPerformed = false ;
127 
129 
130  this->NewPositionVector = new RMLDoubleVector(DegreesOfFreedom) ;
131  this->NewVelocityVector = new RMLDoubleVector(DegreesOfFreedom) ;
132  this->NewAccelerationVector = new RMLDoubleVector(DegreesOfFreedom) ;
133  this->MinExtremaTimesVector = new RMLDoubleVector(DegreesOfFreedom) ;
134  this->MaxExtremaTimesVector = new RMLDoubleVector(DegreesOfFreedom) ;
135  this->MinPosExtremaPositionVectorOnly = new RMLDoubleVector(DegreesOfFreedom) ;
136  this->MaxPosExtremaPositionVectorOnly = new RMLDoubleVector(DegreesOfFreedom) ;
137  this->ExecutionTimes = new RMLDoubleVector(DegreesOfFreedom) ;
138 
139  memset(this->NewPositionVector->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
140  memset(this->NewVelocityVector->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
141  memset(this->NewAccelerationVector->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
142  memset(this->MinExtremaTimesVector->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
143  memset(this->MaxExtremaTimesVector->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
144  memset(this->MinPosExtremaPositionVectorOnly->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
145  memset(this->MaxPosExtremaPositionVectorOnly->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
146  memset(this->ExecutionTimes->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
147 
148  this->MinPosExtremaPositionVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
149  this->MinPosExtremaVelocityVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
150  this->MinPosExtremaAccelerationVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
151  this->MaxPosExtremaPositionVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
152  this->MaxPosExtremaVelocityVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
153  this->MaxPosExtremaAccelerationVectorArray = new RMLDoubleVector*[DegreesOfFreedom] ;
154 
155  for (i = 0; i < DegreesOfFreedom; i++)
156  {
157  (this->MinPosExtremaPositionVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
158  (this->MinPosExtremaVelocityVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
159  (this->MinPosExtremaAccelerationVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
160  (this->MaxPosExtremaPositionVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
161  (this->MaxPosExtremaVelocityVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
162  (this->MaxPosExtremaAccelerationVectorArray) [i] = new RMLDoubleVector(DegreesOfFreedom);
163 
164  memset(((this->MinPosExtremaPositionVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
165  memset(((this->MinPosExtremaVelocityVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
166  memset(((this->MinPosExtremaAccelerationVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
167  memset(((this->MaxPosExtremaPositionVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
168  memset(((this->MaxPosExtremaVelocityVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
169  memset(((this->MaxPosExtremaAccelerationVectorArray) [i])->VecData , 0x0 , DegreesOfFreedom * sizeof(double)) ;
170  }
171 
172  }
173 
174 
175 // ---------------------- Doxygen info ----------------------
195 // ----------------------------------------------------------
197  {
198  unsigned int i = 0 ;
199 
201 
202  this->NumberOfDOFs = OP.GetNumberOfDOFs() ;
203 
205 
207 
209 
210  this->NewPositionVector = new RMLDoubleVector(this->NumberOfDOFs) ;
211  this->NewVelocityVector = new RMLDoubleVector(this->NumberOfDOFs) ;
217  this->ExecutionTimes = new RMLDoubleVector(this->NumberOfDOFs) ;
218 
225 
226  for (i = 0; i < this->NumberOfDOFs; i++)
227  {
228  (this->MinPosExtremaPositionVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
229  (this->MinPosExtremaVelocityVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
230  (this->MinPosExtremaAccelerationVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
231  (this->MaxPosExtremaPositionVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
232  (this->MaxPosExtremaVelocityVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
233  (this->MaxPosExtremaAccelerationVectorArray) [i] = new RMLDoubleVector(this->NumberOfDOFs) ;
234  }
235 
236  *this = OP ;
237  }
238 
239 
240 // ---------------------- Doxygen info ----------------------
251 // ----------------------------------------------------------
252  void Echo(FILE* FileHandler = stdout) const
253  {
254  unsigned int i = 0;
255 
256  if (FileHandler == NULL)
257  {
258  return;
259  }
260 
261  fprintf(FileHandler, "New position vector : ");
262  for (i = 0; i < this->NumberOfDOFs; i++)
263  {
264  fprintf(FileHandler, " %.20le ", this->NewPositionVector->VecData[i]);
265  }
266  fprintf(FileHandler, "\nNew velocity vector : ");
267  for (i = 0; i < this->NumberOfDOFs; i++)
268  {
269  fprintf(FileHandler, " %.20le ", this->NewVelocityVector->VecData[i]);
270  }
271  fprintf(FileHandler, "\nNew acceleration vector : ");
272  for (i = 0; i < this->NumberOfDOFs; i++)
273  {
274  fprintf(FileHandler, " %.20le ", this->NewAccelerationVector->VecData[i]);
275  }
276  fprintf(FileHandler, "\n");
277  return;
278  }
279 
280 
281 public:
282 
283 // ---------------------- Doxygen info ----------------------
288 // ----------------------------------------------------------
290  {
291  unsigned int i = 0;
292 
293  for (i = 0; i < this->NumberOfDOFs; i++)
294  {
295  delete ((this->MinPosExtremaPositionVectorArray) [i]) ;
296  delete ((this->MinPosExtremaVelocityVectorArray) [i]) ;
297  delete ((this->MinPosExtremaAccelerationVectorArray) [i]) ;
298  delete ((this->MaxPosExtremaPositionVectorArray) [i]) ;
299  delete ((this->MaxPosExtremaVelocityVectorArray) [i]) ;
300  delete ((this->MaxPosExtremaAccelerationVectorArray) [i]) ;
301  }
302 
303  delete this->NewPositionVector ;
304  delete this->NewVelocityVector ;
305  delete this->NewAccelerationVector ;
306  delete this->MinPosExtremaPositionVectorArray ;
307  delete this->MinPosExtremaVelocityVectorArray ;
309  delete this->MaxPosExtremaPositionVectorArray ;
310  delete this->MaxPosExtremaVelocityVectorArray ;
312  delete this->MinExtremaTimesVector ;
313  delete this->MaxExtremaTimesVector ;
314  delete this->MinPosExtremaPositionVectorOnly ;
315  delete this->MaxPosExtremaPositionVectorOnly ;
316  delete this->ExecutionTimes ;
317 
318  this->NewPositionVector = NULL ;
319  this->NewVelocityVector = NULL ;
320  this->NewAccelerationVector = NULL ;
321  this->MinPosExtremaPositionVectorArray = NULL ;
322  this->MinPosExtremaVelocityVectorArray = NULL ;
324  this->MaxPosExtremaPositionVectorArray = NULL ;
325  this->MaxPosExtremaVelocityVectorArray = NULL ;
327  this->MinExtremaTimesVector = NULL ;
328  this->MaxExtremaTimesVector = NULL ;
329  this->MinPosExtremaPositionVectorOnly = NULL ;
330  this->MaxPosExtremaPositionVectorOnly = NULL ;
331  this->ExecutionTimes = NULL ;
332 
333  this->NumberOfDOFs = 0 ;
334  }
335 
336 
337 // ---------------------- Doxygen info ----------------------
345 // ----------------------------------------------------------
347  {
348  unsigned int i = 0 ;
349 
350  this->NumberOfDOFs = OP.NumberOfDOFs ;
355 
361  OP.GetExecutionTimes (this->ExecutionTimes ) ;
362 
365 
366  for (i = 0; i < this->NumberOfDOFs; i++)
367  {
372 
377  }
378 
379  return(*this);
380  }
381 
382 
383 // ---------------------- Doxygen info ----------------------
397 // ----------------------------------------------------------
398  inline void GetNewPositionVector(RMLDoubleVector *OutputVector) const
399  {
400  *OutputVector = *(this->NewPositionVector);
401  }
402 
403 
404 // ---------------------- Doxygen info ----------------------
426 // ----------------------------------------------------------
427  inline void GetNewPositionVector( double *OutputVector
428  , const unsigned int &SizeInBytes) const
429  {
430  memcpy( (void*)OutputVector
431  , (void*)this->NewPositionVector->VecData
432  , SizeInBytes );
433  }
434 
435 
436 // ---------------------- Doxygen info ----------------------
456 // ----------------------------------------------------------
457  inline void GetNewPositionVectorElement( double *OutputValue
458  , const unsigned int &Index) const
459  {
460  if ( ( Index + 1 ) > ((unsigned int) this->NewPositionVector->GetVecDim() ) )
461  {
462  *OutputValue = 0.0;
463  }
464  else
465  {
466  *OutputValue = (*this->NewPositionVector)[Index];
467  }
468  }
469 
470 
471 // ---------------------- Doxygen info ----------------------
485 // ----------------------------------------------------------
486  inline double GetNewPositionVectorElement(const unsigned int &Index) const
487  {
488  if ( ( Index + 1 ) > ((unsigned int) this->NewPositionVector->GetVecDim() ) )
489  {
490  return(0.0);
491  }
492  else
493  {
494  return( (*this->NewPositionVector)[Index] );
495  }
496  }
497 
498 
499 // #############################################################################
500 
501 
502 // ---------------------- Doxygen info ----------------------
516 // ----------------------------------------------------------
517  inline void GetNewVelocityVector(RMLDoubleVector *OutputVector) const
518  {
519  *OutputVector = *(this->NewVelocityVector);
520  }
521 
522 
523 // ---------------------- Doxygen info ----------------------
545 // ----------------------------------------------------------
546  inline void GetNewVelocityVector( double *OutputVector
547  , const unsigned int &SizeInBytes) const
548  {
549  memcpy( (void*)OutputVector
550  , (void*)this->NewVelocityVector->VecData
551  , SizeInBytes );
552  }
553 
554 
555 // ---------------------- Doxygen info ----------------------
575 // ----------------------------------------------------------
576  inline void GetNewVelocityVectorElement( double *OutputValue
577  , const unsigned int &Index) const
578  {
579  if ( ( Index + 1 ) > ((unsigned int) this->NewVelocityVector->GetVecDim() ) )
580  {
581  *OutputValue = 0.0;
582  }
583  else
584  {
585  *OutputValue = (*this->NewVelocityVector)[Index];
586  }
587  }
588 
589 
590 // ---------------------- Doxygen info ----------------------
604 // ----------------------------------------------------------
605  inline double GetNewVelocityVectorElement(const unsigned int &Index) const
606  {
607  if ( ( Index + 1 ) > ((unsigned int) this->NewVelocityVector->GetVecDim() ) )
608  {
609  return(0.0);
610  }
611  else
612  {
613  return( (*this->NewVelocityVector)[Index] );
614  }
615  }
616 
617 
618 // #############################################################################
619 
620 
621 // ---------------------- Doxygen info ----------------------
635 // ----------------------------------------------------------
636  inline void GetNewAccelerationVector(RMLDoubleVector *OutputVector) const
637  {
638  *OutputVector = *(this->NewAccelerationVector);
639  }
640 
641 
642 // ---------------------- Doxygen info ----------------------
664 // ----------------------------------------------------------
665  inline void GetNewAccelerationVector( double *OutputVector
666  , const unsigned int &SizeInBytes) const
667  {
668  memcpy( (void*)OutputVector
669  , (void*)this->NewAccelerationVector->VecData
670  , SizeInBytes );
671  }
672 
673 
674 // ---------------------- Doxygen info ----------------------
694 // ----------------------------------------------------------
695  inline void GetNewAccelerationVectorElement( double *OutputValue
696  , const unsigned int &Index) const
697  {
698  if ( ( Index + 1 ) > ((unsigned int) this->NewAccelerationVector->GetVecDim() ) )
699  {
700  *OutputValue = 0.0;
701  }
702  else
703  {
704  *OutputValue = (*this->NewAccelerationVector)[Index];
705  }
706  }
707 
708 
709 // ---------------------- Doxygen info ----------------------
723 // ----------------------------------------------------------
724  inline double GetNewAccelerationVectorElement(const unsigned int &Index) const
725  {
726  if ( ( Index + 1 ) > ((unsigned int) this->NewAccelerationVector->GetVecDim() ) )
727  {
728  return(0.0);
729  }
730  else
731  {
732  return( (*this->NewAccelerationVector)[Index] );
733  }
734  }
735 
736 
737 // ---------------------- Doxygen info ----------------------
756 // ----------------------------------------------------------
757  inline void GetPositionalExtrema( RMLDoubleVector *MinimumPositionVector
758  , RMLDoubleVector *MaximumPositionVector) const
759  {
760  *MinimumPositionVector = *(this->MinPosExtremaPositionVectorOnly);
761  *MaximumPositionVector = *(this->MaxPosExtremaPositionVectorOnly);
762  }
763 
764 
765 // ---------------------- Doxygen info ----------------------
791 // ----------------------------------------------------------
792  inline void GetPositionalExtrema( double *MinimumPositionVector
793  , double *MaximumPositionVector
794  , const unsigned int &SizeInBytes) const
795  {
796  memcpy( (void*)MinimumPositionVector
797  , (void*)(this->MinPosExtremaPositionVectorOnly->VecData)
798  , SizeInBytes );
799 
800  memcpy( (void*)MaximumPositionVector
801  , (void*)(this->MaxPosExtremaPositionVectorOnly->VecData)
802  , SizeInBytes );
803  }
804 
805 
806 // ---------------------- Doxygen info ----------------------
822 // ----------------------------------------------------------
823  inline void GetTimesAtMinPosition(RMLDoubleVector *ExtremaTimes) const
824  {
825  *ExtremaTimes = *(this->MinExtremaTimesVector);
826  }
827 
828 
829 // ---------------------- Doxygen info ----------------------
845 // ----------------------------------------------------------
846  inline void GetTimesAtMaxPosition(RMLDoubleVector *ExtremaTimes) const
847  {
848  *ExtremaTimes = *(this->MaxExtremaTimesVector);
849  }
850 
851 
852 // ---------------------- Doxygen info ----------------------
874 // ----------------------------------------------------------
875  inline void GetTimesAtMinPosition( double *ExtremaTimes
876  , const unsigned int &SizeInBytes) const
877  {
878  memcpy( (void*)ExtremaTimes
879  , (void*)(this->MinExtremaTimesVector->VecData)
880  , SizeInBytes );
881  }
882 
883 
884 // ---------------------- Doxygen info ----------------------
906 // ----------------------------------------------------------
907  inline void GetTimesAtMaxPosition( double *ExtremaTimes
908  , const unsigned int &SizeInBytes) const
909  {
910  memcpy( (void*)ExtremaTimes
911  , (void*)(this->MaxExtremaTimesVector->VecData)
912  , SizeInBytes );
913  }
914 
915 
916 // ---------------------- Doxygen info ----------------------
955 // ----------------------------------------------------------
956  inline int GetMotionStateAtMinPosForOneDOF( const unsigned int &DOF
957  , RMLDoubleVector *PositionVector
958  , RMLDoubleVector *VelocityVector
959  , RMLDoubleVector *AccelerationVector) const
960  {
961  if (DOF >= this->NumberOfDOFs)
962  {
964  }
965 
966  *PositionVector = *((this->MinPosExtremaPositionVectorArray )[DOF]) ;
967  *VelocityVector = *((this->MinPosExtremaVelocityVectorArray )[DOF]) ;
968  *AccelerationVector = *((this->MinPosExtremaAccelerationVectorArray )[DOF]) ;
969 
971  }
972 
973 
974 // ---------------------- Doxygen info ----------------------
1022 // ----------------------------------------------------------
1023  inline int GetMotionStateAtMinPosForOneDOF( const unsigned int &DOF
1024  , double *PositionVector
1025  , double *VelocityVector
1026  , double *AccelerationVector
1027  , const unsigned int &SizeInBytes) const
1028  {
1029  if (DOF >= this->NumberOfDOFs)
1030  {
1032  }
1033 
1034  memcpy( (void*)PositionVector
1035  , (void*)(((this->MinPosExtremaPositionVectorArray)[DOF])->VecData)
1036  , SizeInBytes );
1037 
1038  memcpy( (void*)VelocityVector
1039  , (void*)(((this->MinPosExtremaVelocityVectorArray)[DOF])->VecData)
1040  , SizeInBytes );
1041 
1042  memcpy( (void*)AccelerationVector
1043  , (void*)(((this->MinPosExtremaAccelerationVectorArray)[DOF])->VecData)
1044  , SizeInBytes );
1045 
1047  }
1048 
1049 
1050 // ---------------------- Doxygen info ----------------------
1089 // ----------------------------------------------------------
1090  inline int GetMotionStateAtMaxPosForOneDOF( const unsigned int &DOF
1091  , RMLDoubleVector *PositionVector
1092  , RMLDoubleVector *VelocityVector
1093  , RMLDoubleVector *AccelerationVector) const
1094  {
1095  if (DOF >= this->NumberOfDOFs)
1096  {
1098  }
1099 
1100  *PositionVector = *((this->MaxPosExtremaPositionVectorArray )[DOF]) ;
1101  *VelocityVector = *((this->MaxPosExtremaVelocityVectorArray )[DOF]) ;
1102  *AccelerationVector = *((this->MaxPosExtremaAccelerationVectorArray )[DOF]) ;
1103 
1105  }
1106 
1107 
1108 // ---------------------- Doxygen info ----------------------
1156 // ----------------------------------------------------------
1157  inline int GetMotionStateAtMaxPosForOneDOF( const unsigned int &DOF
1158  , double *PositionVector
1159  , double *VelocityVector
1160  , double *AccelerationVector
1161  , const unsigned int &SizeInBytes) const
1162  {
1163  if (DOF >= this->NumberOfDOFs)
1164  {
1166  }
1167 
1168  memcpy( (void*)PositionVector
1169  , (void*)(((this->MaxPosExtremaPositionVectorArray)[DOF])->VecData)
1170  , SizeInBytes );
1171 
1172  memcpy( (void*)VelocityVector
1173  , (void*)(((this->MaxPosExtremaVelocityVectorArray)[DOF])->VecData)
1174  , SizeInBytes );
1175 
1176  memcpy( (void*)AccelerationVector
1177  , (void*)(((this->MaxPosExtremaAccelerationVectorArray)[DOF])->VecData)
1178  , SizeInBytes );
1179 
1181  }
1182 
1183 
1184 // ---------------------- Doxygen info ----------------------
1192 // ----------------------------------------------------------
1193  inline unsigned int GetNumberOfDOFs(void) const
1194  {
1195  return(this->NumberOfDOFs);
1196  }
1197 
1198 
1199 // ---------------------- Doxygen info ----------------------
1212 // ----------------------------------------------------------
1214  {
1215  return(this->ANewCalculationWasPerformed);
1216  }
1217 
1218 
1219 // ---------------------- Doxygen info ----------------------
1229 // ----------------------------------------------------------
1230  inline bool IsTrajectoryPhaseSynchronized(void) const
1231  {
1232  return(this->TrajectoryIsPhaseSynchronized);
1233  }
1234 
1235 // ---------------------- Doxygen info ----------------------
1255 // ----------------------------------------------------------
1256  inline double GetSynchronizationTime(void) const
1257  {
1258  return(this->SynchronizationTime);
1259  }
1260 
1261 
1262 // ---------------------- Doxygen info ----------------------
1270 // ----------------------------------------------------------
1271  inline unsigned int GetDOFWithTheGreatestExecutionTime(void) const
1272  {
1273  return(this->DOFWithTheGreatestExecutionTime);
1274  }
1275 
1276 
1277 // ---------------------- Doxygen info ----------------------
1293 // ----------------------------------------------------------
1294  inline void GetExecutionTimes(RMLDoubleVector *OutputVector) const
1295  {
1296  *OutputVector = *(this->ExecutionTimes);
1297  }
1298 
1299 
1300 // ---------------------- Doxygen info ----------------------
1324 // ----------------------------------------------------------
1325  inline void GetExecutionTimes( double *OutputVector
1326  , const unsigned int &SizeInBytes) const
1327  {
1328  memcpy( (void*)OutputVector
1329  , (void*)this->ExecutionTimes->VecData
1330  , SizeInBytes );
1331  }
1332 
1333 
1334 // ---------------------- Doxygen info ----------------------
1356 // ----------------------------------------------------------
1357  inline void GetExecutionTimesElement( double *OutputValue
1358  , const unsigned int &Index) const
1359  {
1360  if ( ( Index + 1 ) > ((unsigned int) this->ExecutionTimes->GetVecDim() ) )
1361  {
1362  *OutputValue = 0.0;
1363  }
1364  else
1365  {
1366  *OutputValue = (*this->ExecutionTimes)[Index];
1367  }
1368  }
1369 
1370 
1371 // ---------------------- Doxygen info ----------------------
1387 // ----------------------------------------------------------
1388  inline double GetExecutionTimesElement(const unsigned int &Index) const
1389  {
1390  if ( ( Index + 1 ) > ((unsigned int) this->ExecutionTimes->GetVecDim() ) )
1391  {
1392  return(0.0);
1393  }
1394  else
1395  {
1396  return( (*this->ExecutionTimes)[Index] );
1397  }
1398  }
1399 
1400 
1401 // ---------------------- Doxygen info ----------------------
1409 // ----------------------------------------------------------
1410  inline double GetGreatestExecutionTime(void) const
1411  {
1412  return((this->ExecutionTimes->VecData)[this->DOFWithTheGreatestExecutionTime]);
1413  }
1414 
1415 
1416 // ---------------------- Doxygen info ----------------------
1434 // ----------------------------------------------------------
1436 
1437 
1438 // ---------------------- Doxygen info ----------------------
1448 // ----------------------------------------------------------
1450 
1451 
1452 // ---------------------- Doxygen info ----------------------
1462 // ----------------------------------------------------------
1463  unsigned int NumberOfDOFs;
1464 
1465 
1466 // ---------------------- Doxygen info ----------------------
1490 // ----------------------------------------------------------
1492 
1493 
1494 // ---------------------- Doxygen info ----------------------
1506 // ----------------------------------------------------------
1508 
1509 
1510 // ---------------------- Doxygen info ----------------------
1522 // ----------------------------------------------------------
1524 
1525 
1526 // ---------------------- Doxygen info ----------------------
1538 // ----------------------------------------------------------
1540 
1541 
1542 // ---------------------- Doxygen info ----------------------
1554 // ----------------------------------------------------------
1556 
1557 
1558 // ---------------------- Doxygen info ----------------------
1570 // ----------------------------------------------------------
1572 
1573 
1574 // ---------------------- Doxygen info ----------------------
1586 // ----------------------------------------------------------
1588 
1589 
1590 // ---------------------- Doxygen info ----------------------
1602 // ----------------------------------------------------------
1604 
1605 
1606 // ---------------------- Doxygen info ----------------------
1618 // ----------------------------------------------------------
1620 
1621 
1622 // ---------------------- Doxygen info ----------------------
1645 // ----------------------------------------------------------
1647 
1648 
1649 // ---------------------- Doxygen info ----------------------
1665 // ----------------------------------------------------------
1667 
1668 
1669 // ---------------------- Doxygen info ----------------------
1685 // ----------------------------------------------------------
1687 
1688 
1689 // ---------------------- Doxygen info ----------------------
1705 // ----------------------------------------------------------
1707 
1708 
1709 // ---------------------- Doxygen info ----------------------
1725 // ----------------------------------------------------------
1727 
1728 
1729 // ---------------------- Doxygen info ----------------------
1745 // ----------------------------------------------------------
1747 
1748 
1749 // ---------------------- Doxygen info ----------------------
1765 // ----------------------------------------------------------
1767 
1768 };// class RMLOutputParameters
1769 
1770 
1771 
1772 #endif
1773 
1774 
Header file for the dynamic vector class used for the Reflexxes Motion Libraries. ...
RMLVector< double > RMLDoubleVector
Type definition for vectors of double elements.
Definition: RMLVector.h:548
void GetTimesAtMinPosition(double *ExtremaTimes, const unsigned int &SizeInBytes) const
Copies the array of double values that contain the time values (in seconds) at which the minimum posi...
void GetNewAccelerationVector(double *OutputVector, const unsigned int &SizeInBytes) const
Copies the array of double values representing the new acceleration vector to the memory pointed to ...
int GetMotionStateAtMaxPosForOneDOF(const unsigned int &DOF, double *PositionVector, double *VelocityVector, double *AccelerationVector, const unsigned int &SizeInBytes) const
Copies the motion state, at which the position of the degree of freedom with the index DOF has reache...
double SynchronizationTime
The synchronization time in seconds.
unsigned int GetDOFWithTheGreatestExecutionTime(void) const
Returns the index of the degree of freedom with the greatest trajectory execution time...
RMLDoubleVector * NewAccelerationVector
A pointer to the new acceleration vector .
void GetNewPositionVectorElement(double *OutputValue, const unsigned int &Index) const
Copies one element of the new selection vector to the memory pointed to by OutputValue.
int GetMotionStateAtMinPosForOneDOF(const unsigned int &DOF, RMLDoubleVector *PositionVector, RMLDoubleVector *VelocityVector, RMLDoubleVector *AccelerationVector) const
Copies the motion state, at which the position of the degree of freedom with the index DOF has reache...
double GetSynchronizationTime(void) const
Returns the synchronization time.
RMLDoubleVector ** MaxPosExtremaAccelerationVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...
void GetExecutionTimes(double *OutputVector, const unsigned int &SizeInBytes) const
Copies the array of double values representing the execution times for each degree of freedom...
ReturnValue
Return values for the methods of the class RMLOutputParameters.
double GetExecutionTimesElement(const unsigned int &Index) const
Returns one single element of the execution times for each degree of freedom, at which the desired ta...
RMLDoubleVector * ExecutionTimes
A pointer to an RMLDoubleVector object that contains the execution times of all selected degrees of f...
T * VecData
Pointer to the actual vector data, that is, an array of type T objects.
Definition: RMLVector.h:524
void GetExecutionTimesElement(double *OutputValue, const unsigned int &Index) const
Copies one element of the execution times for each degree of freedom, at which the desired target vel...
unsigned int NumberOfDOFs
The number of degrees of freedom .
void GetPositionalExtrema(double *MinimumPositionVector, double *MaximumPositionVector, const unsigned int &SizeInBytes) const
Copies two RMLDoubleVector objects that contain the minimum and maximum positions, which are reached until the target state of motion is reached.
RMLDoubleVector * NewPositionVector
A pointer to the new position vector .
RMLDoubleVector ** MaxPosExtremaVelocityVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...
RMLDoubleVector ** MinPosExtremaVelocityVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...
unsigned int GetNumberOfDOFs(void) const
Returns the number of degrees of freedom.
void GetNewAccelerationVector(RMLDoubleVector *OutputVector) const
Copies the contents of the RMLDoubleVector object containing the new acceleration vector to the RMLD...
RMLDoubleVector * MaxExtremaTimesVector
A pointer to an RMLDoubleVector object that contains the times at which each degree of freedom reache...
void GetNewVelocityVector(double *OutputVector, const unsigned int &SizeInBytes) const
Copies the array of double values representing the new velocity vector to the memory pointed to by O...
void GetTimesAtMaxPosition(RMLDoubleVector *ExtremaTimes) const
Copies the contents of a RMLDoubleVector object that contains the times (in seconds) at which the max...
RMLDoubleVector * MinExtremaTimesVector
A pointer to an RMLDoubleVector object that contains the times at which each degree of freedom reache...
bool IsTrajectoryPhaseSynchronized(void) const
Indicates whether the currently calculated trajectory is phase- synchronized or only time-synchronize...
RMLOutputParameters(const RMLOutputParameters &OP)
Copy constructor of class RMLPositionOutputParameters.
double GetNewVelocityVectorElement(const unsigned int &Index) const
Returns one single element of the new selection vector .
unsigned int DOFWithTheGreatestExecutionTime
Index of the degree of freedom that requires the greatest execution time to reach its desired target ...
void GetNewVelocityVector(RMLDoubleVector *OutputVector) const
Copies the contents of the RMLDoubleVector object containing the new velocity vector to the RMLDoubl...
int GetMotionStateAtMaxPosForOneDOF(const unsigned int &DOF, RMLDoubleVector *PositionVector, RMLDoubleVector *VelocityVector, RMLDoubleVector *AccelerationVector) const
Copies the motion state, at which the position of the degree of freedom with the index DOF has reache...
void GetTimesAtMinPosition(RMLDoubleVector *ExtremaTimes) const
Copies the contents of a RMLDoubleVector object that contains the times (in seconds) at which the min...
bool ANewCalculationWasPerformed
Indicates, whether a new computation was performed in the last cycle.
RMLOutputParameters(const unsigned int DegreesOfFreedom)
Constructor of class RMLOutputParameters.
bool WasACompleteComputationPerformedDuringTheLastCycle(void) const
Indicates, whether a new computation was performed in the last cycle.
void Echo(FILE *FileHandler=stdout) const
Prints the new state of motion of the output parameters to *FileHandler.
void GetNewPositionVector(RMLDoubleVector *OutputVector) const
Copies the contents of the RMLDoubleVector object containing the new position vector to the RMLDoubl...
void GetNewAccelerationVectorElement(double *OutputValue, const unsigned int &Index) const
Copies one element of the new selection vector to the memory pointed to by OutputValue.
double GetNewPositionVectorElement(const unsigned int &Index) const
Returns one single element of the new selection vector .
~RMLOutputParameters(void)
Destructor of class RMLOutputParameters.
void GetExecutionTimes(RMLDoubleVector *OutputVector) const
Copies the contents of the RMLDoubleVector object containing the execution times for each degree of f...
void GetPositionalExtrema(RMLDoubleVector *MinimumPositionVector, RMLDoubleVector *MaximumPositionVector) const
Copies two RMLDoubleVector objects that contain the minimum and maximum positions, which are reached until the target state of motion is reached.
void GetNewPositionVector(double *OutputVector, const unsigned int &SizeInBytes) const
Copies the array of double values representing the new position vector to the memory pointed to by O...
RMLDoubleVector * NewVelocityVector
A pointer to the new velocity vector .
void GetNewVelocityVectorElement(double *OutputValue, const unsigned int &Index) const
Copies one element of the new selection vector to the memory pointed to by OutputValue.
bool TrajectoryIsPhaseSynchronized
Boolean flag that indicates whether the current trajectory is phase-synchronized. ...
RMLDoubleVector * MinPosExtremaPositionVectorOnly
A pointer to an RMLDoubleVector object that contains the maximum positions for all degrees of freedom...
RMLDoubleVector * MaxPosExtremaPositionVectorOnly
A pointer to an RMLDoubleVector object that contains the maximum positions for all degrees of freedom...
int GetMotionStateAtMinPosForOneDOF(const unsigned int &DOF, double *PositionVector, double *VelocityVector, double *AccelerationVector, const unsigned int &SizeInBytes) const
Copies the motion state, at which the position of the degree of freedom with the index DOF has reache...
RMLDoubleVector ** MinPosExtremaAccelerationVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...
double GetNewAccelerationVectorElement(const unsigned int &Index) const
Returns one single element of the new selection vector .
RMLOutputParameters & operator=(const RMLOutputParameters &OP)
Copy operator.
unsigned int GetVecDim(void) const
Returns the dimension of the vector.
Definition: RMLVector.h:497
void GetTimesAtMaxPosition(double *ExtremaTimes, const unsigned int &SizeInBytes) const
Copies the array of double values that contain the time values (in seconds) at which the maximum posi...
Class for the output parameters of the On-Line Trajectory Generation algorithm.
This is a minimalistic dynamic vector class implementation used for the Reflexxes Motion Libraries...
Definition: RMLVector.h:77
RMLDoubleVector ** MinPosExtremaPositionVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...
double GetGreatestExecutionTime(void) const
Returns the time value in seconds which is required by the degree with the greatest execution to reac...
RMLDoubleVector ** MaxPosExtremaPositionVectorArray
A pointer to an array of pointers to RMLDoubleVector objects. The number of array elements equals the...


libreflexxestype2
Author(s):
autogenerated on Sat Nov 21 2020 03:17:34