00001 #ifndef WALK_INTERFACE_STAMPED_POSITION_HH 00002 # define WALK_INTERFACE_STAMPED_POSITION_HH 00003 # include <iostream> 00004 # include <boost/date_time.hpp> 00005 # include <boost/date_time/posix_time/posix_time_io.hpp> 00006 # include <Eigen/Core> 00007 # include <boost/date_time.hpp> 00008 # include <walk_interfaces/types.hh> 00009 00010 namespace walk 00011 { 00019 template <typename T> 00020 struct StampedPosition 00021 { 00023 TimeDuration duration; 00025 T position; 00026 public: 00027 EIGEN_MAKE_ALIGNED_OPERATOR_NEW; 00028 }; 00029 00031 typedef StampedPosition<HomogeneousMatrix3d> StampedPosition3d; 00033 typedef StampedPosition<HomogeneousMatrix2d> StampedPosition2d; 00035 typedef StampedPosition<Eigen::Vector2d> StampedVector2d; 00037 typedef StampedPosition<Eigen::Vector3d> StampedVector3d; 00039 typedef StampedPosition<Eigen::VectorXd> StampedVectorNd; 00040 00045 template <typename T> 00046 std::ostream& 00047 operator<<(std::ostream& os, const StampedPosition<T>& sp) 00048 { 00049 os << sp.duration << " " << sp.position; 00050 return os; 00051 } 00052 } // end of namespace walk. 00053 00054 #endif //! WALK_INTERFACE_STAMPED_POSITION_HH