00001 #ifndef INCLUDE_NAVLIB_CONTROLLER_FSDWCONTROLLER
00002 #define INCLUDE_NAVLIB_CONTROLLER_FSDWCONTROLLER
00003 
00004 #include "controller.h"
00005 #include "geometry.h"
00006 #include "path.h"
00007 
00008 namespace navlib
00009 {
00013         class FSDWController : public Controller
00014         {
00015         public:
00016                 FSDWController(Shape* body, double minFwdVel, double maxFwdVel, 
00017                         double maxTTC, double k1=1.0, double kd=1.0, double alpha=1.0, 
00018                         double beta=0.1, double gamma=1.0, double delta=0.01, 
00019                         size_t numCurves=51);
00020                 virtual ~FSDWController() {};
00021                 Velocity getAction(Pose pose, Path* path, double dt, 
00022                          std::vector<Point> obstacles);
00023 
00024         private:
00025                 Shape* _body; 
00026                 Path* _path; 
00027                 Velocity _prevAction; 
00028                 double _k1; 
00029                 double _kd; 
00030                 double _alpha; 
00031                 double _beta; 
00032                 double _gamma; 
00033                 double _delta; 
00034                 double _minFwdVel; 
00035                 double _maxFwdVel; 
00036                 double _maxTTC; 
00037                 size_t _nc; 
00038                 double _s; 
00039         };
00040 }
00041 
00042 #endif
00043