/******************************************************************************* * Pose.h * * (C) 2006 AG Aktives Sehen <agas@uni-koblenz.de> * Universitaet Koblenz-Landau * * $Id: Pose.h 44313 2011-04-06 22:46:28Z agas $ *******************************************************************************/ #ifndef POSE_H #define POSE_H #include "Point2D.h" //#include "Architecture/Serializer/ExtendedOutStream.h" // TODO kann wahrscheinlich weg //#include "Architecture/Serializer/ExtendedInStream.h" class Transformation2D; /** * @class Pose * * @author Stephan Wirth, Susanne Maur (RX), David Gossow (RX) * @brief Class to describe and hold a pose of the robot (x, y)-Position + Orientation * in world-coordinates */ class Pose : public Point2D { public: /** * Constructor which initializes the members with the given values. * @param x x-position * @param y y-position * @param theta orientation in radiants */ Pose(float x, float y, float theta); /** * Default constructor, initializes members to 0. */ Pose(); /** * The destructor is empty. */ ~Pose(); float theta() const; void setTheta(float theta); Pose operator+ ( const Transformation2D& transformation ) const; Pose operator- ( const Transformation2D& transformation ) const; Transformation2D operator- ( const Pose& pose ) const; /** * Interpolates between two poses and returns a pose which correlates with * current pose + t * (reference pose - current pose) * @param referencePose The second pose to interpolate between. * @param t The factor of interpolation. * @return Interpolated pose */ Pose interpolate(const Pose& referencePose, float t) const; // Pose( ExtendedInStream& extStrm ); // void storer( ExtendedOutStream& extStrm ) const; protected: float m_Theta; }; #endif