00001
00002
00003
00004
00005
00006
00007 #ifndef __HeadControl_h_
00008 #define __HeadControl_h_
00009
00010 #ifdef _WIN32
00011 #pragma warning(disable:4786)
00012
00013
00014 #endif
00015
00016
00017 #include "Tools/Module/Module.h"
00018
00019 #include "Representations/Perception/SensorDataBuffer.h"
00020 #include "Representations/Perception/BodyPosture.h"
00021 #include "Representations/Perception/CameraMatrix.h"
00022
00023 #include "Representations/Cognition/LandmarksState.h"
00024 #include "Representations/Cognition/RobotPose.h"
00025 #include "Representations/Cognition/RobotState.h"
00026 #include "Representations/Cognition/BallModel.h"
00027 #include "Representations/Cognition/ObstaclesModel.h"
00028
00029 #include "Representations/Motion/OdometryData.h"
00030 #include "Representations/Motion/HeadControlMode.h"
00031 #include "Representations/Motion/HeadMotionRequest.h"
00032 #include "Representations/Motion/PIDData.h"
00033 #include "Representations/Motion/MotionInfo.h"
00034 #include "Representations/RoboCup/GameControlData.h"
00035
00036 #include "Tools/Debugging/DebugDrawings.h"
00037 #include "Tools/RobotConfiguration.h"
00038 #include "Tools/RingBuffer.h"
00039
00040 #ifdef _WIN32
00041 #pragma warning(disable:4786)
00042
00043
00044 #endif
00045
00046
00047
00048
00049
00050
00051 class HeadControlInterfaces
00052 {
00053 public:
00054
00055 HeadControlInterfaces(
00056 const unsigned long& frameNumber,
00057 const SensorDataBuffer& sensorDataBuffer,
00058 const CameraMatrix& cameraMatrix,
00059 const OdometryData& currentOdometryData,
00060 const BodyPosture& bodyPosture,
00061 const LandmarksPercept& landmarksPercept,
00062 const BallModel& ballModel,
00063 const RobotPose& robotPose,
00064 const LandmarksState& landmarksState,
00065 const RobotState& robotState,
00066 const MotionRequest& mR,
00067 const MotionInfo& motionInfo,
00068 const HeadControlMode& headControlMode,
00069 const ObstaclesModel& obstaclesModel,
00070 const bool headIsBlockedBySpecialActionOrWalk,
00071 const GameControlData& gameControlData,
00072 HeadMotionRequest& headMotionRequest,
00073 PIDData& pidData)
00074 :
00075 frameNumber(frameNumber),
00076 headControlMode(headControlMode),
00077 obstaclesModel(obstaclesModel),
00078 robotPose(robotPose),
00079 cameraMatrix(cameraMatrix),
00080 currentOdometryData(currentOdometryData),
00081 landmarksPercept(landmarksPercept),
00082 ballModel(ballModel),
00083 robotState(robotState),
00084 sensorDataBuffer(sensorDataBuffer),
00085 bodyPosture(bodyPosture),
00086 motionRequest(mR),
00087 motionInfo(motionInfo),
00088 landmarksState(landmarksState),
00089 headIsBlockedBySpecialActionOrWalk(headIsBlockedBySpecialActionOrWalk),
00090 headMotionRequest(headMotionRequest),
00091 pidData(pidData),
00092 gameControlData(gameControlData)
00093 {}
00094
00095 protected:
00096
00097 const unsigned long& frameNumber;
00098
00099
00100 const HeadControlMode& headControlMode;
00101
00102
00103 const RobotPose& robotPose;
00104
00105
00106 const CameraMatrix& cameraMatrix;
00107
00108
00109 const OdometryData& currentOdometryData;
00110
00111
00112 const LandmarksPercept& landmarksPercept;
00113
00114
00115 const BallModel& ballModel;
00116
00117
00118 const SensorDataBuffer& sensorDataBuffer;
00119
00120
00121 const BodyPosture& bodyPosture;
00122
00123
00124 const MotionRequest& motionRequest;
00125
00126
00127 const MotionInfo& motionInfo;
00128
00129
00130 const LandmarksState& landmarksState;
00131
00132
00133 const RobotState& robotState;
00134
00135
00136 const bool headIsBlockedBySpecialActionOrWalk;
00137
00138
00139 const GameControlData& gameControlData;
00140
00141
00142 HeadMotionRequest& headMotionRequest;
00143
00144
00145 const ObstaclesModel& obstaclesModel;
00146
00147
00148 PIDData& pidData;
00149 };
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159 class HeadControl : public Module, public HeadControlInterfaces, public RobotDimensions
00160 {
00161 public:
00162
00163
00164
00165
00166 HeadControl(const HeadControlInterfaces& interfaces)
00167 : HeadControlInterfaces(interfaces),
00168 RobotDimensions(getRobotConfiguration().getRobotDimensions())
00169 {}
00170
00171
00172 virtual ~HeadControl() {}
00173 };
00174
00175 #endif //__HeadControl_h_