00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MSL_MODEL2D_H
00020 #define MSL_MODEL2D_H
00021
00022 #include "model.h"
00023
00025 class Model2D: public Model {
00026 public:
00027 Model2D(string path);
00028 virtual ~Model2D() {};
00029 virtual MSLVector StateToConfiguration(const MSLVector &x);
00030 };
00031
00032
00034 class Model2DPoint: public Model2D {
00035 public:
00036 Model2DPoint(string path);
00037 virtual ~Model2DPoint() {};
00038 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00039 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00040 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00041 };
00042
00043
00045 class Model2DPointCar: public Model2DPoint {
00046 public:
00047 double MaxSteeringAngle;
00048 double CarLength;
00049 Model2DPointCar(string path);
00050 virtual ~Model2DPointCar() {};
00051 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00052 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00053 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00054 };
00055
00056
00058 class Model2DRigid: public Model2D {
00059 public:
00060 Model2DRigid(string path);
00061 virtual ~Model2DRigid() {};
00062 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00063 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00064 MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00065 const double &a);
00066 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00067 virtual MSLVector StateToConfiguration(const MSLVector &x);
00068 };
00069
00070
00072 class Model2DRigidCar: public Model2DRigid {
00073 public:
00074 double MaxSteeringAngle;
00075 double CarLength;
00076 Model2DRigidCar(string path);
00077 virtual ~Model2DRigidCar() {};
00078 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00079 };
00080
00081
00083 class Model2DRigidCarForward: public Model2DRigidCar {
00084 public:
00085 Model2DRigidCarForward(string path);
00086 virtual ~Model2DRigidCarForward() {};
00087 };
00088
00089
00092 class Model2DRigidCarSmooth: public Model2DRigidCar {
00093 public:
00094 double SteeringSpeed;
00095 Model2DRigidCarSmooth(string path);
00096 virtual ~Model2DRigidCarSmooth() {};
00097 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00098 MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00099 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00100 virtual MSLVector StateToConfiguration(const MSLVector &x);
00101 virtual bool Satisfied(const MSLVector &x);
00102 };
00103
00107 class Model2DRigidCarSmoothTrailer: public Model2DRigidCarSmooth {
00108 public:
00109 double HitchLength;
00110 double HitchMaxAngle;
00111 Model2DRigidCarSmoothTrailer(string path);
00112 virtual ~Model2DRigidCarSmoothTrailer() {};
00113 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00114 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00115 virtual MSLVector StateToConfiguration(const MSLVector &x);
00116 virtual bool Satisfied(const MSLVector &x);
00117 };
00118
00119
00121 class Model2DRigidCarSmooth2Trailers: public Model2DRigidCarSmoothTrailer {
00122 public:
00123 double Hitch2Length;
00124 double Hitch2MaxAngle;
00125 Model2DRigidCarSmooth2Trailers(string path);
00126 virtual ~Model2DRigidCarSmooth2Trailers() {};
00127 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00128 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00129 virtual MSLVector StateToConfiguration(const MSLVector &x);
00130 virtual bool Satisfied(const MSLVector &x);
00131 };
00132
00133
00135 class Model2DRigidCarSmooth3Trailers: public Model2DRigidCarSmooth2Trailers {
00136 public:
00137 double Hitch3Length;
00138 double Hitch3MaxAngle;
00139 Model2DRigidCarSmooth3Trailers(string path);
00140 virtual ~Model2DRigidCarSmooth3Trailers() {};
00141 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00142 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00143 virtual MSLVector StateToConfiguration(const MSLVector &x);
00144 virtual bool Satisfied(const MSLVector &x);
00145 };
00146
00147
00148
00152 class Model2DRigidDyncar: public Model2DRigid {
00153 public:
00155 double Mass;
00156
00158 double CAF;
00159
00161 double CAR;
00162
00164 double Adist;
00165
00167 double Bdist;
00168
00170 double Izz;
00171
00173 double WorldScale;
00174
00176 double MaxSteeringAngle;
00177
00179 double Speed;
00180
00181 Model2DRigidDyncar(string path);
00182 virtual ~Model2DRigidDyncar() {};
00183 MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00184 virtual MSLVector StateToConfiguration(const MSLVector &x);
00185 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00186 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00187 virtual MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00188 const double &a);
00189 };
00190
00191
00194 class Model2DRigidDyncarNtire: public Model2DRigidDyncar {
00195 public:
00196
00198 double Mu;
00199
00201 double Nf;
00202
00204 double Nr;
00205
00206 Model2DRigidDyncarNtire(string path);
00207 virtual ~Model2DRigidDyncarNtire() {};
00208 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00209 };
00210
00211
00215 class Model2DRigidLander: public Model2DRigid {
00216 public:
00218 double Mass;
00219
00221 double G;
00222
00224 double Fs;
00225
00227 double Fu;
00228
00229 Model2DRigidLander(string path);
00230 virtual ~Model2DRigidLander() {};
00231 MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00232 virtual MSLVector StateToConfiguration(const MSLVector &x);
00233 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00234 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00235 };
00236
00237
00238
00240 class Model2DRigidMulti: public Model2DRigid {
00241 public:
00243 int NumBodies;
00244
00245 Model2DRigidMulti(string path);
00246 virtual ~Model2DRigidMulti() {}
00247 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00248 virtual MSLVector StateToConfiguration(const MSLVector &x);
00249 virtual MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00250 const double &a);
00251 };
00252
00253
00255 class Model2DRigidChain: public Model2DRigid {
00256 public:
00258 int NumBodies;
00259
00261 MSLVector A;
00262
00264 double StopAngle;
00265
00266 Model2DRigidChain(string path);
00267 virtual ~Model2DRigidChain() {};
00268 virtual MSLVector StateToConfiguration(const MSLVector &x);
00269 virtual MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00270 virtual MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00271 const double &a);
00272 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00273 virtual bool Satisfied(const MSLVector &x);
00274 };
00275
00276
00277 #endif
00278
00279