Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

model2d.h

Go to the documentation of this file.
00001 //----------------------------------------------------------------------
00002 //               The Motion Strategy Library (MSL)
00003 //----------------------------------------------------------------------
00004 //
00005 // Copyright (c) University of Illinois and Steven M. LaValle.     
00006 // All Rights Reserved.
00007 // 
00008 // Permission to use, copy, and distribute this software and its 
00009 // documentation is hereby granted free of charge, provided that 
00010 // (1) it is not a component of a commercial product, and 
00011 // (2) this notice appears in all copies of the software and
00012 //     related documentation. 
00013 // 
00014 // The University of Illinois and the author make no representations
00015 // about the suitability or fitness of this software for any purpose.  
00016 // It is provided "as is" without express or implied warranty.
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);  // Depends on topology
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 
Motion Strategy Library


Web page maintained by Steve LaValle
Partial support provided by NSF CAREER Award IRI-970228 (LaValle), Honda Research.
Contributors: Anna Atramentov, Peng Cheng, James Kuffner, Steve LaValle, and Libo Yang.