From: Fernyqc <fe...@us...> - 2005-12-12 18:28:57
|
Update of /cvsroot/robotflow/RobotFlow/Behaviors/include In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21067/Behaviors/include Added Files: AvoidUtil.h Log Message: Header file use in EllipticalAvoid --- NEW FILE: AvoidUtil.h --- #ifndef AVOID_UTIL_H #define AVOID_UTIL_H #include <vector> #include <exception> // Exception classes class AvoidUtilInvalidConstructorArguments: public std::exception { virtual const char* what() const throw(); }; class AvoidUtilIllegalAvoidingThreshold: public std::exception { virtual const char* what() const throw(); }; class AvoidUtilFindSmallestMarginException: public std::exception { virtual const char* what() const throw(); }; class AvoidUtilBeltPositionOutOfRange: public std::exception { virtual const char* what() const throw(); }; class AvoidUtilMarginException: public std::exception { virtual const char* what() const throw(); }; class AvoidUtil { public: AvoidUtil(unsigned int maxVelocity, unsigned int minEllipseLong, unsigned int ellipseLong, unsigned int ellipseLat, double zeroVelSecurityMargin, double reverseVelSecurityMargin, int reverseVel, double rotVelSecurityMargin, int rotVel); ~AvoidUtil(); unsigned int evalLongAvoidingThres(int velocity) const; unsigned int evalEllipticalAvoidingThres(unsigned int theta, unsigned int distanceThres) const; bool createEllipticalAvoidingThresBelt(unsigned int beltSize, unsigned int distanceThres); const std::vector<int>& getEllipticalAvoidingThresBelt(); bool createProximityMarginBelt(std::vector<int> rangeBelt); const std::vector<double>& getProximityMarginBelt(); void findSmallestProximityMarginAndPosition(unsigned int lPos, unsigned int hPos, double& margin, unsigned int& pos); bool isAvoidanceNeeded(std::vector<int> rangeBelt, int velocity, unsigned int &pos, double &margin); int evalRotationalDirection(int velocity, unsigned int position); //unsigned int evalEllipticalDirectionChangeThres(unsigned int theta) const; // bool createEllipticalDirectionChangeThresBelt(unsigned int beltSize); //const std::vector<unsigned int>& getEllipticalDirectionChangeThresBelt(); //bool isDirectionChangeNeeded(unsigned int position, unsigned int rangeValue); int evalAvoidingLinVel(int velocity, double margin); int evalAvoidingRotVel(int velocity, unsigned int pos, double margin); private: // Function unsigned int evalEllipticalThres(unsigned int theta, unsigned int distanceThres, unsigned int ellipseLong, unsigned int ellipseLat) const; // Constructor arguments unsigned int m_maxVelocity; unsigned int m_minEllipseLong; unsigned int m_ellipseLong; unsigned int m_ellipseLat; double m_zeroVelSecurityMargin; double m_reverseVelSecurityMargin; int m_reverseVel; double m_rotVelSecurityMargin; int m_rotVel; // Variables double m_slope; double m_reverseSlope; double m_reverseB; double m_slopeRot; double m_rotB; std::vector<int> m_ellipseBelt; std::vector<double> m_proximityMarginBelt; //std::vector<int> m_directionChangeBelt; }; #endif |