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) 1998-2000 Iowa State University and Steve 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 // Iowa State University 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 <LEDA/file.h>
00023 #include <LEDA/list.h>
00024 #include <LEDA/matrix.h>
00025 #include <LEDA/point.h>
00026 #include <LEDA/polygon.h>
00027 #include <LEDA/random.h>
00028 #include <LEDA/stream.h>
00029 #include <LEDA/string.h>
00030 #include <LEDA/vector.h>
00031 
00032 #include "model.h"
00033 
00034 #include <LEDA/REDEFINE_NAMES.h>
00035 
00037 class Model2D: public Model {
00038  public:
00039   Model2D(string path);
00040   virtual ~Model2D() {};
00041   virtual vector StateToConfiguration(const vector &x);
00042 };
00043 
00044 
00046 class Model2DPoint: public Model2D {
00047  public:
00048   Model2DPoint(string path);
00049   virtual ~Model2DPoint() {};
00050   virtual vector Integrate(const vector &x, const vector &u, const double &h);
00051   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00052   virtual double Metric(const vector &x1, const vector &x2);
00053 };
00054 
00055 
00057 class Model2DPointCar: public Model2DPoint {
00058  public:
00059   double MaxSteeringAngle;
00060   double CarLength;
00061   Model2DPointCar(string path);
00062   virtual ~Model2DPointCar() {};
00063   virtual vector Integrate(const vector &x, const vector &u, const double &h);
00064   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00065   virtual double Metric(const vector &x1, const vector &x2);
00066 };
00067 
00068 
00070 class Model2DRigid: public Model2D {
00071  public:
00072   Model2DRigid(string path);
00073   virtual ~Model2DRigid() {};
00074   virtual vector Integrate(const vector &x, const vector &u, const double &h);
00075   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00076   vector LinearInterpolate(const vector &x1, const vector &x2, 
00077                            const double &a);
00078   virtual double Metric(const vector &x1, const vector &x2);
00079   virtual vector StateToConfiguration(const vector &x);
00080 };
00081 
00082 
00084 class Model2DRigidCar: public Model2DRigid {
00085  public:
00086   double MaxSteeringAngle;
00087   double CarLength;
00088   Model2DRigidCar(string path);
00089   virtual ~Model2DRigidCar() {};
00090   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00091 };
00092 
00093 
00095 class Model2DRigidCarForward: public Model2DRigidCar {
00096  public:
00097   Model2DRigidCarForward(string path);
00098   virtual ~Model2DRigidCarForward() {};
00099 };
00100 
00101 
00104 class Model2DRigidCarSmooth: public Model2DRigidCar {
00105  public:
00106   double SteeringSpeed;
00107   Model2DRigidCarSmooth(string path);
00108   virtual ~Model2DRigidCarSmooth() {};
00109   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00110   vector Integrate(const vector &x, const vector &u, const double &h);
00111   virtual double Metric(const vector &x1, const vector &x2);
00112   virtual vector StateToConfiguration(const vector &x);
00113   virtual bool Satisfied(const vector &x);
00114 };
00115 
00119 class Model2DRigidCarSmoothTrailer: public Model2DRigidCarSmooth {
00120  public:
00121   double HitchLength;
00122   double HitchMaxAngle;
00123   Model2DRigidCarSmoothTrailer(string path);
00124   virtual ~Model2DRigidCarSmoothTrailer() {};
00125   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00126   virtual double Metric(const vector &x1, const vector &x2);
00127   virtual vector StateToConfiguration(const vector &x);
00128   virtual bool Satisfied(const vector &x);
00129 };
00130 
00131 
00133 class Model2DRigidCarSmooth2Trailers: public Model2DRigidCarSmoothTrailer {
00134  public:
00135   double Hitch2Length;
00136   double Hitch2MaxAngle;
00137   Model2DRigidCarSmooth2Trailers(string path);
00138   virtual ~Model2DRigidCarSmooth2Trailers() {};
00139   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00140   virtual double Metric(const vector &x1, const vector &x2);
00141   virtual vector StateToConfiguration(const vector &x);
00142   virtual bool Satisfied(const vector &x);
00143 };
00144 
00145 
00147 class Model2DRigidCarSmooth3Trailers: public Model2DRigidCarSmooth2Trailers {
00148  public:
00149   double Hitch3Length;
00150   double Hitch3MaxAngle;
00151   Model2DRigidCarSmooth3Trailers(string path);
00152   virtual ~Model2DRigidCarSmooth3Trailers() {};
00153   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00154   virtual double Metric(const vector &x1, const vector &x2);
00155   virtual vector StateToConfiguration(const vector &x);
00156   virtual bool Satisfied(const vector &x);
00157 };
00158 
00159 
00160 
00164 class Model2DRigidDyncar: public Model2DRigid {
00165  public:
00167   double Mass;
00168 
00170   double CAF;
00171 
00173   double CAR;
00174 
00176   double Adist;
00177 
00179   double Bdist;
00180 
00182   double Izz;
00183 
00185   double WorldScale;
00186 
00188   double MaxSteeringAngle;
00189 
00191   double Speed;
00192 
00193   Model2DRigidDyncar(string path);
00194   virtual ~Model2DRigidDyncar() {};
00195   vector Integrate(const vector &x, const vector &u, const double &h);
00196   virtual point StateToLedaPoint(const vector &x);
00197   virtual vector StateToConfiguration(const vector &x);
00198   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00199   virtual double Metric(const vector &x1, const vector &x2);
00200   virtual vector LinearInterpolate(const vector &x1, const vector &x2, 
00201                                    const double &a);
00202 };
00203 
00204 
00207 class Model2DRigidDyncarNtire: public Model2DRigidDyncar {
00208  public:
00209 
00211   double Mu;
00212 
00214   double Nf;
00215 
00217   double Nr;
00218 
00219   Model2DRigidDyncarNtire(string path);
00220   virtual ~Model2DRigidDyncarNtire() {};
00221   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00222 };
00223 
00224 
00228 class Model2DRigidLander: public Model2DRigid {
00229  public:
00231   double Mass;
00232 
00234   double G;
00235 
00237   double Fs;         
00238 
00240   double Fu;
00241 
00242   Model2DRigidLander(string path);
00243   virtual ~Model2DRigidLander() {};
00244   vector Integrate(const vector &x, const vector &u, const double &h);
00245   virtual vector StateToConfiguration(const vector &x);
00246   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00247   virtual double Metric(const vector &x1, const vector &x2);
00248 };
00249 
00250 
00251 
00253 class Model2DRigidMulti: public Model2DRigid {
00254  public:
00256   int NumBodies;
00257 
00258   Model2DRigidMulti(string path);
00259   virtual ~Model2DRigidMulti() {}
00260   virtual double Metric(const vector &x1, const vector &x2);
00261   virtual vector StateToConfiguration(const vector &x);
00262   virtual vector LinearInterpolate(const vector &x1, const vector &x2, 
00263                                    const double &a);  // Depends on topology
00264 };
00265 
00266 
00268 class Model2DRigidChain: public Model2DRigid {
00269  public:
00271   int NumBodies;
00272 
00274   vector A;
00275 
00277   double StopAngle;  
00278 
00279   Model2DRigidChain(string path);
00280   virtual ~Model2DRigidChain() {};
00281   virtual vector StateToConfiguration(const vector &x);
00282   virtual vector StateTransitionEquation(const vector &x, const vector &u);
00283   virtual vector LinearInterpolate(const vector &x1, const vector &x2, 
00284                                    const double &a);
00285   virtual double Metric(const vector &x1, const vector &x2);
00286   virtual bool Satisfied(const vector &x);
00287 };
00288 
00289 
00290 #include <LEDA/UNDEFINE_NAMES.h>
00291 
00292 #endif
Motion Strategy Library


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