00001
00002 #ifndef INCLUDED_HandEyeZInfo_h
00003 #define INCLUDED_HandEyeZInfo_h
00004
00005 #include <cmath>
00006 #include <stdlib.h>
00007 #include "CommonInfo.h"
00008 using namespace RobotInfo;
00009
00010
00011 #if defined(TGT_HANDEYEZ)
00012 # define TGT_IS_BIOLOID
00013 # define TGT_IS_HANDEYEZ
00014 # define TGT_HAS_CAMERA 1
00015
00016 # define TGT_HAS_LEDS 5
00017 # define TGT_HAS_ARMS 1
00018 # define TGT_HAS_HEAD 1
00019 # define WALKMC_NO_WARN_NOOP
00020 #endif
00021
00022
00023 namespace HandEyeZInfo {
00024
00025
00026
00027
00028
00029 extern const char* const TargetName;
00030
00031 const unsigned int FrameTime=32;
00032 const unsigned int NumFrames=1;
00033 const unsigned int SoundBufferTime=32;
00034
00035
00036 const unsigned NumWheels = 0;
00037
00038 const unsigned FingerJointsPerArm = 2;
00039 const unsigned JointsPerArm = 5;
00040 const unsigned NumArms = 1;
00041 const unsigned NumArmJoints = JointsPerArm*NumArms;
00042
00043 const unsigned JointsPerLeg = 0;
00044 const unsigned NumLegs = 0;
00045 const unsigned NumLegJoints = JointsPerLeg*NumLegs;
00046 const unsigned NumHeadJoints = 2;
00047 const unsigned NumTailJoints = 0;
00048 const unsigned NumMouthJoints = 0;
00049 const unsigned NumEarJoints = 0;
00050 const unsigned NumButtons = 3;
00051 const unsigned NumSensors = 2;
00052 const unsigned NumFacePanelLEDs = 0;
00053
00054
00055 const unsigned NumLEDs = 7;
00056 const unsigned NumPIDJoints = NumWheels + NumArmJoints + NumLegJoints+NumHeadJoints+NumTailJoints+NumMouthJoints;;
00057
00058 const unsigned NumOutputs = NumWheels + NumPIDJoints + NumLEDs;
00059 const unsigned NumReferenceFrames = NumOutputs + 1 + NumArms + 1;
00060
00061 using namespace Camera75DOF;
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073 const unsigned PIDJointOffset = 0;
00074
00075 const unsigned ArmOffset = PIDJointOffset;
00076
00077 const unsigned HeadOffset = ArmOffset+NumArmJoints;
00078
00079 const unsigned LEDOffset = PIDJointOffset + NumPIDJoints;
00080
00081 const unsigned BaseFrameOffset = NumOutputs;
00082 const unsigned GripperFrameOffset = BaseFrameOffset+1;
00083 const unsigned CameraFrameOffset = GripperFrameOffset+NumArms;
00084
00085
00086 enum ArmOffset_t {
00087 ArmShoulderOffset = ArmOffset,
00088 ArmElbowOffset,
00089 WristOffset,
00090 WristYawOffset = WristOffset,
00091 LeftGripperOffset,
00092 RightGripperOffset,
00093
00094
00095 };
00096
00097
00098 enum TPROffset_t {
00099 PanOffset = 0,
00100 TiltOffset,
00101 };
00102
00103
00104 enum HeadOffset_t {
00105 HeadPanOffset = HeadOffset,
00106 HeadTiltOffset,
00107 };
00108
00109
00110
00111 enum LEDOffset_t {
00112 ArmShoulderLEDOffset = LEDOffset,
00113 ArmElbowLEDOffset,
00114 ArmWristLEDOffset,
00115 ArmLeftGripperLEDOffset,
00116 ArmRightGripperLEDOffset,
00117 NeckPanLEDOffset,
00118 NeckTiltLEDOffset
00119 };
00120
00121 typedef unsigned int LEDBitMask_t;
00122 const LEDBitMask_t ArmShoulderLEDMask = 1 << (ArmShoulderLEDOffset-LEDOffset);
00123 const LEDBitMask_t ArmElbowLEDMask = 1 << (ArmElbowLEDOffset-LEDOffset);
00124 const LEDBitMask_t ArmWristLEDMask = 1 << (ArmWristLEDOffset-LEDOffset);
00125 const LEDBitMask_t ArmLeftGripperLEDMask = 1 << (ArmLeftGripperLEDOffset-LEDOffset);
00126 const LEDBitMask_t ArmRightGripperLEDMask = 1 << (ArmRightGripperLEDOffset-LEDOffset);
00127 const LEDBitMask_t NeckPanLEDMask = 1 << (NeckPanLEDOffset-LEDOffset);
00128 const LEDBitMask_t NeckTiltLEDMask = 1 << (NeckTiltLEDOffset-LEDOffset);
00129
00130
00131 const LEDBitMask_t FaceLEDMask = 0;
00132
00133
00134 const LEDBitMask_t AllLEDMask = (LEDBitMask_t)~0;
00135
00136
00137
00138
00139 const fmat::Column<3> AgentBoundingBoxBaseFrameOffset = fmat::pack(0,0,0);
00140
00141
00142 const fmat::Column<3> AgentBoundingBoxHalfDims = fmat::pack(304.8/2, 304.8/2, 0);
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157 enum ButtonOffset_t { GreenButOffset, RedButOffset, YellowButOffset };
00158
00159
00160 const char* const buttonNames[NumButtons+1] = { "GreenBut", "RedBut", "YellowBut", NULL };
00161
00162
00163
00164 enum SensorOffset_t {
00165 PowerThermoOffset,
00166 PowerVoltageOffset,
00167 };
00168
00169
00170 const char* const sensorNames[NumSensors+1] = {
00171 "PowerThermo","PowerVoltage", NULL
00172 };
00173
00174
00175
00176
00177
00178 const char* const outputNames[NumReferenceFrames+1] = {
00179 "ARM:shldr","ARM:elbow","ARM:wristYaw", "Arm:LeftGripper", "ArmRightGripper",
00180 "NECK:pan", "NECK:tilt",
00181
00182 "LED:ARM:shldr",
00183 "LED:ARM:elbow",
00184 "LED:ARM:wrist",
00185 "LED ARM:lgrip",
00186 "LED ARM:rgrip",
00187 "LED:NECK:pan",
00188 "LED:NECK:tilt",
00189
00190
00191
00192 "BaseFrame",
00193 "GripperFrame",
00194 "CameraFrame",
00195 NULL
00196 };
00197
00198
00199 class HandEyeZCapabilities : public Capabilities {
00200 public:
00201
00202 HandEyeZCapabilities()
00203 : Capabilities(TargetName,NumReferenceFrames,outputNames,NumButtons,buttonNames,NumSensors,sensorNames,PIDJointOffset,NumPIDJoints,LEDOffset,NumLEDs,NumOutputs)
00204 {
00205 frameToIndex["ARM:wrist"] = WristYawOffset;
00206 frameToIndex["NECK:nod"] = HeadTiltOffset;
00207 }
00208 };
00209
00210 extern const HandEyeZCapabilities capabilities;
00211
00212
00213
00214
00215 const float DefaultPIDs[NumPIDJoints][5] = {
00216 {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0},
00217 {32,32,0}, {32,32,0},
00218 };
00219
00220
00221
00222
00223
00224
00225
00226 const float MaxOutputSpeed[NumOutputs] = {
00227
00228 0.8f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f,
00229
00230 0,0,0,0,0,0,0,
00231 };
00232
00233 #ifndef RAD
00234
00235 #define RAD(deg) (((deg) * (float)M_PI ) / 180.0f)
00236
00237 #define __RI_RAD_FLAG
00238 #endif
00239
00240
00241 const float outputRanges[NumOutputs][2] = {
00242
00243 {RAD(-130),RAD(130)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {-0.5f,0.5f}, {-0.5f,0.5f},
00244 {RAD(-63),RAD(63)}, {RAD(-95),RAD(68)},
00245
00246
00247 {0,1}, {0,1}, {0,1}, {0,1}, {0,1},
00248 {0,1}, {0,1},
00249 };
00250
00251
00252 const float mechanicalLimits[NumOutputs][2] = {
00253
00254 {RAD(-120),RAD(120)}, {RAD(-120),RAD(120)}, {RAD(-120),RAD(120)}, {-0.5f, 0.5f} ,{-0.5f, 0.5f},
00255 {RAD(-150),RAD(150)}, {RAD(-92),RAD(75)},
00256
00257
00258 {0,1}, {0,1}, {0,1}, {0,1}, {0,1},
00259 {0,1}, {0,1},
00260 };
00261
00262 #ifdef __RI_RAD_FLAG
00263 #undef RAD
00264 #undef __RI_RAD_FLAG
00265 #endif
00266 }
00267
00268
00269
00270
00271
00272
00273 #endif