Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef FOOTSTEP_PLANNER_FOOTSTEP_H_
00028 #define FOOTSTEP_PLANNER_FOOTSTEP_H_
00029 
00030 #include <footstep_planner/PlanningState.h>
00031 
00032 
00033 namespace footstep_planner
00034 {
00043 class Footstep
00044 {
00045 public:
00060   Footstep(double x, double y, double theta,
00061            double cell_size, int num_angle_bins, int max_hash_size);
00062   ~Footstep();
00063 
00072   PlanningState performMeOnThisState(const PlanningState& current) const;
00073 
00082   PlanningState reverseMeOnThisState(const PlanningState& current) const;
00083 
00084 private:
00086   typedef std::pair<int, int> footstep_xy;
00087 
00089   void init(double x, double y);
00090 
00108   int calculateForwardStep(Leg leg, int global_theta,
00109                            double x, double y,
00110                            int* footstep_x, int* footstep_y) const;
00111 
00113   int ivTheta;
00114 
00116   double ivCellSize;
00118   int ivNumAngleBins;
00119 
00121   int ivMaxHashSize;
00122 
00124   std::vector<footstep_xy> ivDiscSuccessorLeft;
00126   std::vector<footstep_xy> ivDiscSuccessorRight;
00128   std::vector<footstep_xy> ivDiscPredecessorLeft;
00130   std::vector<footstep_xy> ivDiscPredecessorRight;
00131 };
00132 } 
00133 
00134 #endif  // FOOTSTEP_PLANNER_FOOTSTEP_H_