00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MSL_MODEL3D_H
00020 #define MSL_MODEL3D_H
00021
00022 #include <vector>
00023
00024 #include "model.h"
00025 #include "matrix.h"
00026
00028 class Model3D: public Model {
00029 public:
00030 Model3D(string path);
00031 virtual ~Model3D() {}
00032 };
00033
00034
00035
00037 class Model3DRigid: public Model3D {
00038 public:
00039 Model3DRigid(string path);
00040 virtual ~Model3DRigid() {}
00041 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00042 MSLVector StateTransitionEquation(const MSLVector &x, const MSLVector &u);
00043 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00044 virtual MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00045 const double &a);
00046 virtual MSLVector StateDifference(const MSLVector &x1, const MSLVector &x2);
00047 };
00048
00049
00051 class Model3DRigidMulti: public Model3DRigid {
00052 public:
00053 int NumBodies;
00054 Model3DRigidMulti(string path);
00055 virtual ~Model3DRigidMulti() {}
00056 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00057 virtual MSLVector Integrate(const MSLVector &x, const MSLVector &u, const double &h);
00058 virtual MSLVector LinearInterpolate(const MSLVector &x1, const MSLVector &x2,
00059 const double &a);
00060 virtual MSLVector StateDifference(const MSLVector &x1, const MSLVector &x2);
00061 };
00062
00063
00075
00076 class Model3DRigidChain: public Model3DRigid {
00077 public:
00079 int NumBodies;
00080
00082 MSLVector DH;
00083
00084 vector<int> StateIndices;
00085
00086 Model3DRigidChain(string path);
00087 virtual ~Model3DRigidChain() {};
00088 virtual MSLVector StateTransitionEquation(const MSLVector &x,
00089 const MSLVector &u);
00090 virtual MSLVector StateToConfiguration(const MSLVector &x);
00091 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00092 virtual bool Satisfied(const MSLVector &x);
00093 };
00094
00095
00111
00112 class Model3DRigidTree: public Model3DRigid {
00113 public:
00115 int NumBodies;
00116
00118 MSLVector DH;
00119
00120 vector<int> StateIndices;
00121
00122 vector<int> Parents;
00123
00124 Model3DRigidTree(string path);
00125 virtual ~Model3DRigidTree() {};
00126 virtual MSLVector StateTransitionEquation(const MSLVector &x,
00127 const MSLVector &u);
00128 virtual MSLVector StateToConfiguration(const MSLVector &x);
00129 virtual double Metric(const MSLVector &x1, const MSLVector &x2);
00130 virtual bool Satisfied(const MSLVector &x);
00131 };
00132
00133
00134 #endif