00001 #ifndef HALFSTEPS_PATTERN_GENERATOR_HH 00002 # define HALFSTEPS_PATTERN_GENERATOR_HH 00003 # include <utility> 00004 # include <walk_interfaces/pattern-generator.hh> 00005 00006 template <typename T> 00007 struct WithHalfStepsAdditionalData : public T 00008 { 00009 explicit WithHalfStepsAdditionalData() 00010 : T(), 00011 slideUp(0.), 00012 slideDown(0.), 00013 horizontalDistance(0.), 00014 stepHeight(0.) 00015 {} 00016 00017 double slideUp; 00018 double slideDown; 00019 double horizontalDistance; 00020 double stepHeight; 00021 }; 00022 00023 class HalfStepsPatternGenerator; 00024 00025 namespace walk 00026 { 00027 template <> 00028 struct PatternGeneratorTraits<HalfStepsPatternGenerator> 00029 { 00031 typedef WithHalfStepsAdditionalData<walk::StampedFootprint2d> Footprint; 00032 00034 typedef DiscretizedTrajectory<StampedPosition3d> Trajectory3d; 00036 typedef DiscretizedTrajectory<StampedPosition2d> Trajectory2d; 00038 typedef DiscretizedTrajectory<StampedVector2d> TrajectoryV2d; 00040 typedef DiscretizedTrajectory<StampedVector3d> TrajectoryV3d; 00042 typedef DiscretizedTrajectory<StampedVectorNd> TrajectoryNd; 00043 }; 00044 } // end of namespace walk. 00045 00046 class HalfStepsPatternGenerator 00047 : public walk::PatternGenerator<HalfStepsPatternGenerator> 00048 { 00049 public: 00050 explicit HalfStepsPatternGenerator 00051 (const double& timeBeforeZmpShift, 00052 const double& timeAfterZmpShift, 00053 const double& step); 00054 explicit HalfStepsPatternGenerator(const HalfStepsPatternGenerator&); 00055 ~HalfStepsPatternGenerator(); 00056 00057 HalfStepsPatternGenerator& operator= (const HalfStepsPatternGenerator&); 00058 00059 protected: 00060 virtual void computeTrajectories(); 00061 00062 private: 00063 double timeBeforeZmpShift_; 00064 double timeAfterZmpShift_; 00065 double step_; 00066 }; 00067 00068 #endif //! HALFSTEPS_PATTERN_GENERATOR_HH