00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MSL_MODELCAR_H
00020 #define MSL_MODELCAR_H
00021
00022 #include <list>
00023 #include <string>
00024
00025 #include "model2d.h"
00026 #include "vector.h"
00027 #include "matrix.h"
00028
00029
00031 class ModelCar: public Model2DRigidCar {
00032 public:
00033 double Speed;
00034
00035 ModelCar(string path);
00036 virtual ~ModelCar() {};
00037 virtual MSLVector StateToConfiguration(const MSLVector &x);
00038 virtual bool Satisfied(const MSLVector &state);
00039 };
00040
00041
00043 class ModelCarSmooth: public Model2DRigidCarSmooth {
00044 public:
00045 ModelCarSmooth(string path);
00046 virtual ~ModelCarSmooth() {};
00047 virtual MSLVector StateToConfiguration(const MSLVector &x);
00048 };
00049
00050
00052 class ModelCarDyn: public Model2DRigidDyncar {
00053 public:
00054 ModelCarDyn(string path);
00055 virtual ~ModelCarDyn() {};
00056 virtual MSLVector StateToConfiguration(const MSLVector &x);
00057 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00058 };
00059
00061 class ModelCarDynNtire: public Model2DRigidDyncarNtire {
00062 public:
00063 ModelCarDynNtire(string path);
00064 virtual ~ModelCarDynNtire() {};
00065 virtual MSLVector StateToConfiguration(const MSLVector &x);
00066 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00067 };
00068
00069
00078 class ModelCarDynRollover: public ModelCarDynNtire{
00079 public:
00080 double K, c, Ixx;
00081 double T;
00082 double H, H2;
00083 double Ms;
00084 double Wn;
00085 double Fai;
00086 double x;
00087
00088 bool IsRollOver;
00089
00090 ModelCarDynRollover(string path);
00091 virtual ~ModelCarDynRollover() {};
00092
00093 int sgn(double x);
00094
00095 virtual MSLVector StateTransitionEquation(const MSLVector &x1, const MSLVector &u);
00096
00097 virtual MSLVector StateToConfiguration(const MSLVector &x);
00098
00099 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00100
00101 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00102
00103 bool RollOverFree(const MSLVector &x);
00104
00105 bool Satisfied(const MSLVector &x);
00106 };
00107
00108
00111 class ModelCarDynSmoothRollover: public ModelCarDynRollover {
00112 public:
00113
00114 ModelCarDynSmoothRollover(string path);
00115 virtual ~ModelCarDynSmoothRollover() {};
00116
00117 virtual MSLVector StateTransitionEquation(const MSLVector &x1, const MSLVector &u);
00118
00119 virtual MSLVector StateToConfiguration(const MSLVector &x);
00120
00121 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00122
00123 virtual MSLVector LinearInterpolate(const MSLVector &x1,
00124 const MSLVector &x2,
00125 const double &a);
00126
00127 };
00128
00129 #endif
00130
00131
00132
00133
00134
00135
00136
00137