$search
00001 // SVN $HeadURL: https://alufr-ros-pkg.googlecode.com/svn/trunk/humanoid_navigation/footstep_planner/include/footstep_planner/Dstar.h $ 00002 // SVN $Id: Dstar.h 1168 2011-03-30 03:18:02Z hornunga@informatik.uni-freiburg.de $ 00003 00004 /* 00005 * A footstep planner for humanoid robots 00006 * 00007 * Copyright 2010-2011 Johannes Garimort, Armin Hornung, University of Freiburg 00008 * http://www.ros.org/wiki/footstep_planner 00009 * 00010 * D* Lite (Koenig et al. 2002) partly based on the implementation 00011 * by J. Neufeld (http://code.google.com/p/dstarlite/) 00012 * 00013 * 00014 * This program is free software: you can redistribute it and/or modify 00015 * it under the terms of the GNU General Public License as published by 00016 * the Free Software Foundation, version 3. 00017 * 00018 * This program is distributed in the hope that it will be useful, 00019 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 * GNU General Public License for more details. 00022 * 00023 * You should have received a copy of the GNU General Public License 00024 * along with this program. If not, see <http://www.gnu.org/licenses/>. 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(); 00090 00106 int calculateForwardStep(Leg leg, int global_theta, 00107 int* footstep_x, int* footstep_y) const; 00108 00110 int ivTheta; 00111 00113 double ivContX; 00115 double ivContY; 00116 00118 double ivCellSize; 00120 int ivNumAngleBins; 00121 00123 int ivMaxHashSize; 00124 00126 std::vector<footstep_xy> ivDiscSuccessorLeft; 00128 std::vector<footstep_xy> ivDiscSuccessorRight; 00130 std::vector<footstep_xy> ivDiscPredecessorLeft; 00132 std::vector<footstep_xy> ivDiscPredecessorRight; 00133 }; 00134 } // end of namespace 00135 00136 #endif // FOOTSTEP_PLANNER_FOOTSTEP_H_