00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00028
00029 #ifndef __R2_ARMA_H_
00030 #define __R2_ARMA_H_
00031
00032
00033 #ifdef FOUND_BOOST_SER
00034 #include <boost/serialization/vector.hpp>
00035 #include <boost/archive/text_iarchive.hpp>
00036 #include <boost/archive/text_oarchive.hpp>
00037 #endif
00038
00039
00041 #include <armadillo>
00042 #include <S1.h>
00043 #include <SE2.h>
00044 #include <Time.h>
00045
00046 using namespace std;
00047 namespace MipBaselib{
00048 typedef enum {
00049 IDENTITY_ARMA_MATRIX,
00050 ZERO_ARMA_MATRIX,
00051 NUM_CANONICAL_ARMA_MATRIX
00052 } CanonicalArmaMatrix;
00053
00054 static const char* CanonicalArmaMatrixName[NUM_CANONICAL_ARMA_MATRIX] ={
00055 "IDENTITY_ARMA_MATRIX",
00056 "ZERO_ARMA_MATRIX"
00057 };
00058
00061 class Roto2DArma : public arma::Mat<Decimal>::fixed<2,2>{
00062 public:
00064 Roto2DArma(CanonicalArmaMatrix init=ZERO_ARMA_MATRIX);
00065
00067 Roto2DArma(const Decimal &a11,const Decimal &a12,const Decimal &a21, const Decimal &a22);
00068
00070 Roto2DArma(const Decimal &yaw);
00071
00073 Roto2DArma(const Roto2DArma &A);
00074
00076 Roto2DArma(const arma::Mat<Decimal>::fixed<2,2>& rhs);
00077
00080 Roto2DArma(const vector<Decimal> &vec);
00081
00083 Roto2DArma& operator=(const Roto2DArma& rhs);
00084
00086 Roto2DArma& operator=(const arma::Mat<Decimal>::fixed<2,2>& rhs);
00087
00089 Roto2DArma& operator+=(const Roto2DArma &pos);
00090
00092 Roto2DArma operator+(Roto2DArma &other) const;
00093
00095 Roto2DArma operator-(Roto2DArma &other) const;
00096
00098 Roto2DArma& operator-=(const Roto2DArma &pos);
00099
00101 Roto2DArma& operator*=(const Roto2DArma &pos);
00102
00104 Roto2DArma& operator*=(const Decimal& scalar);
00105
00107 Roto2DArma operator*(Roto2DArma &other) const;
00108
00110 Roto2DArma& operator/=(const Roto2DArma &pos);
00111
00113 Roto2DArma& operator/=(const Decimal& scalar);
00114
00116 Roto2DArma operator/(Roto2DArma &other) const;
00117
00119 string print();
00120
00123 Roto2DArma invMatrix();
00124
00131 arma::Mat<Decimal> subMat(int r, int c, int R, int C);
00132
00135 arma::Row<Decimal>::fixed<2> getFirstRow() const;
00136
00139 arma::Row<Decimal>::fixed<2> getSecondRow() const;
00140
00143 arma::Col<Decimal>::fixed<2> getFirstCol() const;
00144
00147 arma::Col<Decimal>::fixed<2> getSecondCol() const;
00148
00153 Decimal getElem(int r,int c) const;
00154
00159 void setElem(int r,int c,const Decimal &item);
00160
00163 Decimal getYaw() const;
00164
00167 Angle getYawAngle() const;
00168
00170 arma::Mat<Decimal>::fixed<2,2>* getMat();
00171 };
00172
00173 class Position2DArma: public arma::Col<Decimal>::fixed<2>{
00174
00175 private:
00176 #ifdef FOUND_BOOST_SER
00177 friend class boost::serialization::access;
00178 template<class Archive>
00179 void serialize(Archive & ar, const unsigned int version){
00180 ar & (*this)(0);
00181 ar & (*this)(1);
00182 }
00183 #endif
00184
00185 public:
00188 Position2DArma();
00189
00194 Position2DArma(const Decimal &x,const Decimal &y);
00195
00199 Position2DArma(const Angle& theta);
00200
00205 Position2DArma(const Decimal &d,const Angle& theta);
00206
00209 Position2DArma(const Position2DArma& A);
00210
00213 Position2DArma(const Position &pos);
00214
00220 Position2DArma(const arma::Mat<Decimal>& A);
00221
00225 Position2DArma(stringstream& ss);
00226
00228 Position2DArma& operator=(const Position& pos);
00229
00231 Position2DArma& operator=(const Position2DArma& rhs);
00232
00236 Position2DArma& operator=(const arma::Mat<Decimal>& rhs);
00237
00239 bool operator==(const Position2DArma &other) const;
00240
00242 Position2DArma& operator+=(const Position2DArma &pos);
00243
00245 Position2DArma& operator+=(const Position &pos);
00246
00250 Position2DArma& operator+=(const arma::Col<Decimal>::fixed<2> &pos);
00251
00255 Position2DArma& operator+=(const Decimal& scalar);
00256
00258 Position2DArma operator-(Position2DArma &other) const;
00259
00261 Position2DArma& operator-=(const Position2DArma &pos);
00262
00266 Position2DArma& operator-=(const Decimal& scalar);
00267
00271 Position2DArma& operator-=(const arma::Col<Decimal>::fixed<2> &pos);
00272
00274 Position2DArma operator+(Position2DArma &other) const;
00275
00277 Position2DArma& operator*=(const Position2DArma &pos);
00278
00280 Position2DArma& operator*=(const Decimal& scalar);
00281
00283 Position2DArma& operator*=(const arma::Mat<Decimal>::fixed<2,2> &mat);
00284
00286 Position2DArma& operator*=(const arma::Col<Decimal>::fixed<2> &pos);
00287
00289 Position2DArma& operator*=(const Roto2DArma &mat);
00290
00292 Position2DArma& operator*=(const arma::Mat<Decimal>::fixed<3,3> &mat);
00293
00295 Position2DArma operator*(const arma::Col<Decimal>::fixed<2> &pos) const;
00296
00298 Position2DArma operator*(Position2DArma &other) const;
00299
00301 Position2DArma& operator/=(const Position2DArma &pos);
00302
00304 Position2DArma& operator/=(const Decimal& scalar);
00305
00307 Position2DArma& operator/=(const arma::Col<Decimal>::fixed<2> &pos);
00308
00310 Position2DArma operator/(Position2DArma &other) const;
00311
00313 Position2DArma operator/(const arma::Col<Decimal>::fixed<2> &pos) const;
00314
00318 Position2DArma matrixProd(const arma::Mat<Decimal>::fixed<2,2> &mat);
00319
00323 Position2DArma matrixHomoProd(const arma::Mat<Decimal>::fixed<3,3> &mat);
00324
00328 Position2DArma matrixProd(Roto2DArma &mat);
00329
00334 Position2DArma minimum(const Position2DArma& p) const;
00335
00340 Position2DArma maximum(const Position2DArma& p) const;
00341
00343 Decimal x() const;
00344
00346 Decimal y() const;
00347
00350 void setX(const Decimal &p);
00351
00354 void setY(const Decimal &p);
00355
00357 Angle azimuthAngle() const;
00358
00360 Decimal azimuth() const;
00361
00364 Angle bearing() const;
00365
00368 Decimal bearingInv() const;
00369
00373 Decimal scalar(const Position2DArma& p) const;
00374
00377 vector<Decimal> vectorize() const;
00378
00380 string print(int precision=4) const;
00381
00385 Decimal norm(int p=2) const;
00386
00390 Decimal squareNorm(int p=2) const;
00391
00395 Decimal dist( Position2DArma& other, int p=2) const;
00396
00398 string exportAsString() const;
00399
00400
00401 bool fromString(const string& s);
00402 string toString() const;
00403 };
00404
00408 class Velocity2DArma : public Position2DArma{
00409 public:
00410
00412 Velocity2DArma() : Position2DArma() {}
00413
00415 Velocity2DArma(const Decimal &x_in,const Decimal &y_in) : Position2DArma(x_in,y_in) {}
00416
00418 Velocity2DArma(const Velocity2DArma& p);
00419
00421 Velocity2DArma(Position2DArma p) : Position2DArma(p) {}
00422
00424 Velocity2DArma(const Position &pos) : Position2DArma(pos){};
00425
00427 Velocity2DArma(const arma::Mat<Decimal>& A) : Position2DArma(A){};
00428
00430 Velocity2DArma& operator=(const Velocity2DArma& rhs);
00431
00433 bool operator==(const Velocity2DArma &other) const;
00434
00436 string print(PrintTypes type = PRINT_TYPE_WITH_UNITS) const;
00437 };
00438
00442 class Acceleration2DArma : public Position2DArma{
00443 public:
00444
00446 Acceleration2DArma() : Position2DArma() {}
00447
00449 Acceleration2DArma(const Decimal &x_in,const Decimal &y_in) : Position2DArma(x_in,y_in) {}
00450
00452 Acceleration2DArma(const Acceleration2DArma& p);
00453
00455 Acceleration2DArma(Position2DArma p) : Position2DArma(p) {}
00456
00458 Acceleration2DArma(const Position &pos) : Position2DArma(pos){};
00459
00461 Acceleration2DArma(const arma::Mat<Decimal>& A) : Position2DArma(A){};
00462
00464 Acceleration2DArma& operator=(const Acceleration2DArma& rhs);
00465
00467 bool operator==(const Acceleration2DArma &other) const;
00468
00470 string print(PrintTypes type = PRINT_TYPE_WITH_UNITS) const;
00471 };
00472
00473 class Roto2DHomoArma : public arma::Mat<Decimal>::fixed<3,3>{
00474 public:
00476 Roto2DHomoArma(CanonicalArmaMatrix init=ZERO_ARMA_MATRIX);
00477
00479 Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22);
00480
00482 Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22,const Decimal &x,const Decimal &y);
00483
00485 Roto2DHomoArma(const Decimal &a11,const Decimal &a12, const Decimal &a21, const Decimal &a22, const arma::Col<Decimal>::fixed<2> &trasl);
00486
00488 Roto2DHomoArma(const Decimal &yaw);
00489
00491 Roto2DHomoArma(const Decimal &yaw, const Decimal &x, const Decimal &y);
00492
00494 Roto2DHomoArma(const Roto2DHomoArma &A);
00495
00497 Roto2DHomoArma(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00498
00500 Roto2DHomoArma(const Roto2DArma& other);
00501
00503 Roto2DHomoArma(const Roto2DArma& other, const Decimal &x, const Decimal &y);
00504
00506 Roto2DHomoArma(const Roto2DArma& other, const arma::Col<Decimal>::fixed<2> &trasl);
00507
00509 Roto2DHomoArma& operator=(const Roto2DHomoArma& rhs);
00510
00512 Roto2DHomoArma& operator=(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00513
00515 Roto2DHomoArma& operator+=(const Roto2DHomoArma &pos);
00516
00518 Roto2DHomoArma operator+(Roto2DHomoArma &other) const;
00519
00521 Roto2DHomoArma operator-(Roto2DHomoArma &other) const;
00522
00524 Roto2DHomoArma& operator-=(const Roto2DHomoArma &pos);
00525
00527 Roto2DHomoArma& operator*=(const Roto2DHomoArma &pos);
00528
00530 Roto2DHomoArma& operator*=(const Decimal& scalar);
00531
00533 Roto2DHomoArma operator*(Roto2DHomoArma &other) const;
00534
00536 Roto2DHomoArma& operator/=(const Roto2DHomoArma &pos);
00537
00539 Roto2DHomoArma& operator/=(const Decimal& scalar);
00540
00542 Roto2DHomoArma operator/(Roto2DHomoArma &other) const;
00543
00545 string print();
00546
00549 Roto2DHomoArma invMatrix();
00550
00555 Decimal getElem(int r,int c) const;
00556
00561 void setElem(int r,int c,const Decimal &item);
00562
00564 void setRotation(Roto2DArma &rhs);
00565
00568 Decimal getYaw() const;
00569
00572 Angle getYawAngle() const;
00573
00576 arma::Col<Decimal>::fixed<2> getTraslation();
00577
00580 arma::Mat<Decimal>::fixed<2,2> getRotation();
00581
00584 Position2DArma getTraslation2DArma();
00585
00588 Roto2DArma getRotation2DArma();
00589 };
00590
00591 class Pose2DArma{
00592 private:
00593 Angle _yaw;
00594 Position2DArma _pos;
00595 public:
00596
00598 Pose2DArma();
00599
00601 Pose2DArma(const Decimal &x, const Decimal &y, const Angle &yaw);
00602
00604 Pose2DArma(const Decimal& x, const Decimal &y, const Decimal &yaw);
00605
00607 Pose2DArma(const Position2DArma &pos, const Angle &ori);
00608
00610 Pose2DArma(const Position2DArma &pos, const Decimal &ori);
00611
00613 Pose2DArma(const arma::Mat<Decimal>::fixed<2,1> &pos, const Decimal &ori);
00614
00616 Pose2DArma(const arma::Mat<Decimal>::fixed<2,1> &pos, const Angle &ori);
00617
00619 Pose2DArma(const Pose &pos);
00620
00622 Pose2DArma& operator*=(const arma::Mat<Decimal>::fixed<3,3>& rhs);
00623
00625 Pose2DArma operator*(const arma::Mat<Decimal>::fixed<3,3>& rhs) const;
00626
00628 Pose2DArma& operator*=(const arma::Mat<Decimal>::fixed<4,4>& rhs);
00629
00631 Pose2DArma operator*(const arma::Mat<Decimal>::fixed<4,4>& rhs) const;
00632
00634 Pose2DArma& operator=(const Pose& rhs);
00635
00637 Pose2DArma& operator=(const Pose2DArma& rhs);
00638
00640 Pose2DArma& operator+=(const Pose2DArma& a);
00641
00643 const Pose2DArma operator+(const Pose2DArma &other) const;
00644
00646 Pose2DArma& operator-=(const Pose2DArma& a);
00647
00649 const Pose2DArma operator-(const Pose2DArma &other) const;
00650
00652 bool operator==(const Pose2DArma &other) const;
00653
00655 bool operator!=(const Pose2DArma &other) const;
00656
00659 Position2DArma getPos() const;
00660
00663 Decimal getX() const;
00664
00667 Decimal getY() const;
00668
00671 Angle getOriAngle();
00672
00675 Decimal getOri();
00676
00679 void setPos(const Position2DArma &pos);
00680
00683 void setX(const Decimal &x);
00684
00687 void setY(const Decimal &y);
00688
00691 void setOri(const Angle& ori);
00692
00695 void setOri(const Decimal& ori);
00696
00700 Decimal norm(int p=2) const;
00701
00704 Decimal azimuth() const;
00705
00708 Angle azimuthAngle() const;
00709
00713 Pose2DArma& relativeCoord(const Pose2DArma& other);
00714
00716 void directComposition(Pose2DArma &t);
00717
00719 void inverseComposition(Pose2DArma &t);
00720
00722 string print();
00723 };
00724
00729 class Odometry2DArma : public arma::Col<Decimal>::fixed<3>{
00730 public:
00731
00733 Odometry2DArma();
00734
00736 Odometry2DArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega);
00737
00739 Odometry2DArma(const Position2DArma &A, const Decimal &zOmega);
00740
00742 Odometry2DArma(const Odometry2DArma &A);
00743
00745 Odometry2DArma& operator=(const Odometry2DArma& rhs);
00746
00748 Odometry2DArma& operator=(const arma::Mat<Decimal>& rhs);
00749
00751 Odometry2DArma& operator+=(const Odometry2DArma& A);
00752
00754 Odometry2DArma& operator+=(const Decimal& scalar);
00755
00757 Odometry2DArma operator+(Odometry2DArma &other) const;
00758
00760 Odometry2DArma& operator-=(const Odometry2DArma& A);
00761
00763 Odometry2DArma& operator-=(const Decimal& scalar);
00764
00766 Odometry2DArma operator-(Odometry2DArma &other) const;
00767
00769 Odometry2DArma& operator*=(const Odometry2DArma& A);
00770
00772 Odometry2DArma& operator*=(const Decimal& scalar);
00773
00775 Odometry2DArma operator*(Odometry2DArma &other) const;
00776
00778 Odometry2DArma& operator/=(const Odometry2DArma& A);
00779
00781 Odometry2DArma& operator/=(const Decimal& scalar);
00782
00784 Odometry2DArma operator/(Odometry2DArma &other) const;
00785
00787 bool operator==(const Odometry2DArma &other) const;
00788
00790 bool operator!= ( const Odometry2DArma& other ) const;
00791
00794 Decimal getVelX() const;
00795
00798 Decimal getVelY() const;
00799
00802 Decimal getOmegaZ() const;
00803
00806 Velocity2DArma getVelocity() const;
00807
00810 void setVelX(const Decimal &xVel);
00811
00814 void setVelY(const Decimal &yVel);
00815
00818 void setVelocity(const Velocity2DArma &vel);
00819
00822 void setOmegaZ(const Decimal &zOmega);
00823
00825 string print();
00826 };
00827
00828 class Odometry2DTimeArma{
00829 private:
00830 Odometry2DArma _odo;
00831 Time _time;
00832 public:
00833
00835 Odometry2DTimeArma();
00836
00838 Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const Time &time);
00839
00841 Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const Time &time);
00842
00844 Odometry2DTimeArma(const Odometry2DArma &A, const Time &time);
00845
00847 Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const long int &sec, const long int &usec);
00848
00850 Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const long int &sec, const long int &usec);
00851
00853 Odometry2DTimeArma(const Odometry2DArma &A, const long int &sec, const long int &usec);
00854
00856 Odometry2DTimeArma(const Decimal &xVel, const Decimal &yVel, const Decimal &zOmega, const Decimal &time);
00857
00859 Odometry2DTimeArma(const Position2DArma &A, const Decimal &zOmega, const Decimal &time);
00860
00862 Odometry2DTimeArma(const Odometry2DArma &A, const Decimal &time);
00863
00865 Odometry2DTimeArma& operator=(const Odometry2DTimeArma& rhs);
00866
00869 Odometry2DArma getOdo() const;
00870
00873 Time getTime() const;
00874
00877 Decimal getTimeDCast();
00878
00881 Decimal getOdoVelX() const;
00882
00885 Decimal getOdoVelY() const;
00886
00889 Decimal getOdoOmegaZ() const;
00890
00893 Velocity2DArma getOdoVelocity() const;
00894
00897 void setOdometry(const Odometry2DArma &odo);
00898
00901 void setTime(const Time &time);
00902
00905 void setTime(const Decimal time);
00906
00909 void setTime(const long int &sec,const long int &usec);
00910
00913 void setOdoVelX(const Decimal &xVel);
00914
00917 void setOdoVelY(const Decimal &yVel);
00918
00921 void setOdoVelocity(const Velocity2DArma &vel);
00922
00925 void setOdoOmegaZ(const Decimal &zOmega);
00926
00928 string print();
00929 };
00930
00931 class Position2DTimeArma{
00932 private:
00933 Position2DArma _pos;
00934 Time _time;
00935 public:
00936
00938 Position2DTimeArma();
00939
00941 Position2DTimeArma(const Position2DArma &odo, const Time &time);
00942
00944 Position2DTimeArma(const Decimal &x, const Decimal &y, const Time &time);
00945
00947 Position2DTimeArma(const Decimal &x,const Decimal &y,const long int &sec,const long int &usec);
00948
00950 Position2DTimeArma(const Decimal &x,const Decimal &y,const Decimal &time);
00951
00953 Position2DTimeArma(const Position& A, const Time &time);
00954
00956 Position2DTimeArma(const Position& A, const long int &sec,const long int &usec);
00957
00959 Position2DTimeArma(const Position& A, const Decimal &time);
00960
00962 Position2DTimeArma(const arma::Mat<Decimal>& A, const Time &time);
00963
00965 Position2DTimeArma(const arma::Mat<Decimal>& A, const long int &sec,const long int &usec);
00966
00968 Position2DTimeArma(const arma::Mat<Decimal>& A, const Decimal &time);
00969
00971 Position2DTimeArma& operator=(const Position2DTimeArma& rhs);
00972
00975 Position2DArma getPos() const;
00976
00979 Time getTime() const;
00980
00983 Decimal getTimeDCast();
00984
00987 void setPos(const Position2DArma &pos);
00988
00991 void setTime(const Time &time);
00992
00995 void setTime(const Decimal time);
00996
00999 void setTime(const long int &sec,const long int &usec);
01000
01002 Decimal posX() const;
01003
01005 Decimal posY() const;
01006
01008 void setPosX(const Decimal &p);
01009
01011 void setPosY(const Decimal &p);
01012
01013
01015 string print();
01016 };
01017
01018 class PosiFeatures2DTimeArma{
01019 private:
01020 Time _time;
01021 vector<Position2DArma> _vecPos;
01022 public:
01023
01025 PosiFeatures2DTimeArma();
01026
01028 PosiFeatures2DTimeArma(const Time &time);
01029
01031 PosiFeatures2DTimeArma(const int &sec, const int &usec);
01032
01034 PosiFeatures2DTimeArma(const Decimal &time);
01035
01037 PosiFeatures2DTimeArma(const vector<Position2DArma> &vec, const Time &time);
01038
01040 PosiFeatures2DTimeArma(const vector<Position2DArma> &vec,const int &sec, const int &usec);
01041
01043 PosiFeatures2DTimeArma(const vector<Position2DArma> &vec,const Decimal &time);
01044
01046 PosiFeatures2DTimeArma(const Position2DArma &pos, const Time &time);
01047
01049 PosiFeatures2DTimeArma(const Position2DArma &pos,const int &sec, const int &usec);
01050
01052 PosiFeatures2DTimeArma(const Position2DArma &pos,const Decimal &time);
01053
01055 PosiFeatures2DTimeArma(const PosiFeatures2DTimeArma &pos);
01056
01058 PosiFeatures2DTimeArma& operator=(const PosiFeatures2DTimeArma& rhs);
01059
01062 vector<Position2DArma> getPositionVector() const;
01063
01068 Position2DArma getPositionAt(int index) const;
01069
01072 Time getTime() const;
01073
01076 Decimal getTimeDCast();
01077
01080 void setTime(const Time &time);
01081
01084 void setTime(const Decimal &time);
01085
01089 void setTime(const long int &sec, const long int &usec);
01090
01093 void addPosition(const Position2DArma &pos);
01094
01096 void popLast();
01097
01102 void setPosition(Position2DArma &pos,int index);
01103
01106 Position2DArma getLastPosition();
01107
01110 int getPositionSize() const;
01111
01115 void insertPosition(Position2DArma &pos, int index);
01116
01118 void freeVector();
01119
01121 string print();
01122 };
01123
01124 class Observation2DTimeArma{
01125 private:
01126 PosiFeatures2DTimeArma _vecTimePos;
01127 int _id;
01128 public:
01129
01131 Observation2DTimeArma(int id=-1);
01132
01134 Observation2DTimeArma(const Time &time,int id);
01135
01137 Observation2DTimeArma(const int &sec, const int &usec,int id);
01138
01140 Observation2DTimeArma(const Decimal &time,int id);
01141
01143 Observation2DTimeArma(const vector<Position2DArma> &vec, const Time &time,int id);
01144
01146 Observation2DTimeArma(const vector<Position2DArma> &vec,const int &sec, const int &usec,int id);
01147
01149 Observation2DTimeArma(const vector<Position2DArma> &vec,const Decimal &time,int id);
01150
01152 Observation2DTimeArma(const Position2DArma &pos, const Time &time,int id);
01153
01155 Observation2DTimeArma(const Position2DArma &pos,const int &sec, const int &usec,int id);
01156
01158 Observation2DTimeArma(const Position2DArma &pos,const Decimal &time,int id);
01159
01161 Observation2DTimeArma(const Observation2DTimeArma &pos);
01162
01164 Observation2DTimeArma(const PosiFeatures2DTimeArma &pos,int id);
01165
01167 Observation2DTimeArma& operator=(const Observation2DTimeArma& rhs);
01168
01171 vector<Position2DArma> getPositionVector() const;
01172
01177 Position2DArma getPositionAt(int index) const;
01178
01181 Time getTime() const;
01182
01185 Decimal getTimeDCast();
01186
01189 void setTime(const Time &time);
01190
01193 void setTime(const Decimal &time);
01194
01198 void setTime(const long int &sec, const long int &usec);
01199
01202 void addPosition(const Position2DArma &pos);
01203
01205 void popLast();
01206
01211 void setPosition(Position2DArma &pos,int index);
01212
01215 Position2DArma getLastPosition();
01216
01219 int getPositionSize() const;
01220
01224 void insertPosition(Position2DArma &pos, int index);
01225
01227 void freeVector();
01228
01231 int getId() const;
01232
01235 void setId(int id);
01236
01238 string print();
01239 };
01240 }
01241 #endif