00001 #ifndef _PL_Neural_ 00002 #define _PL_Neural_ 00003 00004 #include "Planners/PL_Boolean_Output.h" 00005 #include "Planners/PL_OpenGL.h" 00006 #include <vector> 00007 00008 #pragma warning( disable : 4250 ) 00009 00010 class CD_Bool; 00011 00012 00013 class PL_Neural 00014 : public PL_Boolean_Output, 00015 virtual public PL_OpenGL 00016 { 00017 public: 00018 PL_Neural(); 00019 virtual ~PL_Neural(); 00020 virtual bool DrawExplicit () const; 00021 virtual void DrawUniversePortion() const; 00022 bool Plan (); 00023 void PlanMultiThread (void* data); 00024 00025 protected: 00026 void AddObstaclePoint( const Configuration& c ) const; 00027 void ClampAllPointsToJointLimits(); 00028 Configuration ClampToJointLimits( const Configuration& c ) const; 00029 bool CheckPathForObstacles(); 00030 int ClosestObstacleToEdge ( const unsigned int edgeNum ) const; 00031 int ClosestObstacleToPoint( const Configuration& c ) const; 00032 int EdgeInCollision() const; 00033 Configuration EdgeRepulsion( const unsigned int edgeNum ) const; 00034 Configuration GenerateRandomConfig () const; 00035 int NodesInCollision() const; 00036 void Perturb( const unsigned int pointNum ); 00037 void Relax( const unsigned int pointNum ); 00038 void RelaxUntilSettled(); 00039 Configuration RepulsiveVector( const Configuration& c ) const; 00040 private: 00041 PA_Points m_Path; 00042 mutable std::vector< Configuration > m_ObstacleLocations; 00043 }; 00044 00045 #endif //_PL_PrmIjg_ 00046