00001
00002 #ifndef INCLUDED_KHR2Info_h
00003 #define INCLUDED_KHR2Info_h
00004
00005 #include <cmath>
00006 #include <stdlib.h>
00007 #include "CommonInfo.h"
00008 using namespace RobotInfo;
00009
00010
00011 #if defined(TGT_KHR2)
00012 # define TGT_IS_BIPED
00013 # define TGT_IS_HUMANOID
00014 # define TGT_IS_KHR2
00015 # define TGT_HAS_CAMERA 1
00016 # define TGT_HAS_LEGS 2
00017 # define TGT_HAS_ARMS 2
00018 # define TGT_HAS_HEAD 1
00019 #endif
00020
00021
00022 namespace KHR2Info {
00023
00024
00025
00026
00027
00028 extern const char* const TargetName;
00029
00030 const unsigned int FrameTime=32;
00031 const unsigned int NumFrames=1;
00032 const unsigned int SoundBufferTime=32;
00033
00034
00035 const unsigned NumWheels = 0;
00036
00037 const unsigned JointsPerArm = 3;
00038 const unsigned NumArms = 2;
00039 const unsigned NumArmJoints = JointsPerArm*NumArms;
00040
00041 const unsigned JointsPerLeg = 5;
00042 const unsigned NumLegs = 2;
00043 const unsigned NumLegJoints = JointsPerLeg*NumLegs;
00044 const unsigned NumHeadJoints = 1;
00045 const unsigned NumTailJoints = 0;
00046 const unsigned NumMouthJoints = 0;
00047 const unsigned NumEarJoints = 0;
00048 const unsigned NumButtons = 0;
00049 const unsigned SensorsPerFoot = 6;
00050 const unsigned NumIMUAxes = 3;
00051 const unsigned NumFootSensors = SensorsPerFoot*NumLegs;
00052 const unsigned NumSensors = NumArms + NumLegs*6 + 3;
00053 const unsigned NumFacePanelLEDs = 0;
00054
00055 const unsigned NumLEDs = 0;
00056 const unsigned NumPIDJoints = NumArmJoints+NumLegJoints+NumHeadJoints;
00057
00058 const unsigned NumOutputs = NumWheels + NumPIDJoints + NumLEDs;
00059 const unsigned NumReferenceFrames = NumOutputs + NumLegs + NumArms + 1 + 1;
00060
00061 using namespace Camera75DOF;
00062
00063 const float BallOfFootRadius=23.433f / 2;
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074 const unsigned PIDJointOffset = 0;
00075
00076 const unsigned ArmOffset = PIDJointOffset;
00077 const unsigned LegOffset = ArmOffset+NumArmJoints;
00078 const unsigned HeadOffset = LegOffset+NumLegJoints;
00079 const unsigned LEDOffset = PIDJointOffset + NumPIDJoints;
00080 const unsigned BaseFrameOffset = NumOutputs;
00081 const unsigned CameraFrameOffset = BaseFrameOffset+1;
00082 const unsigned GripperFrameOffset = CameraFrameOffset+1;
00083 const unsigned FootFrameOffset = GripperFrameOffset+NumLegs;
00084
00085
00086 enum ArmOrder_t
00087 {
00088 LeftArmOrder = 0,
00089 RightArmOrder
00090 };
00091
00092
00093 enum LegOrder_t
00094 {
00095 LeftLegOrder = 0,
00096 RightLegOrder
00097 };
00098
00099 enum RLEOffset_t
00100 {
00101 ArmShoulderRotateOffset = 0,
00102 ArmShoulderOffset,
00103 ArmElbowOffset
00104 };
00105
00106
00107 enum TPROffset_t
00108 {
00109 PanOffset = 0,
00110 TiltOffset = PanOffset
00111 };
00112
00113 enum AHKALOffset_t
00114 {
00115 LegHipAbduceOffset = 0,
00116 LegHipOffset,
00117 LegKneeOffset,
00118 LegAnkleOffset,
00119 LegAnkleLateralOffset
00120 };
00121
00122 enum ArmOffset_t
00123 {
00124 LeftArmOffset = ArmOffset+LeftArmOrder*JointsPerArm,
00125 RightArmOffset = ArmOffset+RightArmOrder*JointsPerArm
00126 };
00127
00128 enum LegOffset_t
00129 {
00130 LeftLegOffset = LegOffset+LeftLegOrder*JointsPerLeg,
00131 RightLegOffset = LegOffset+RightLegOrder*JointsPerLeg
00132 };
00133
00134 enum HeadOffset_t
00135 {
00136 HeadPanOffset = HeadOffset
00137 };
00138
00139 enum LEDOffset_t {};
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159 enum ButtonOffset_t {};
00160
00161
00162 const char* const buttonNames[NumButtons+1] = {NULL};
00163
00164
00165
00166 enum SensorOffset_t
00167 {
00168 LStressOffset, RStressOffset,
00169
00170 LLToeOffset, LRToeOffset, LLSoleOffset, LRSoleOffset, LLBackOffset, LRBackOffset,
00171
00172
00173 RLToeOffset, RRToeOffset, RLSoleOffset, RRSoleOffset, RLBackOffset, RRBackOffset,
00174
00175
00176
00177
00178
00179 BAccelOffset,
00180
00181
00182
00183 LAccelOffset,
00184
00185
00186
00187 DAccelOffset
00188
00189
00190 };
00191
00192
00193 const char* const sensorNames[NumSensors + 1] = {
00194 "LStress", "RStress",
00195
00196
00197 "LLToe", "LRToe", "LLSole", "LRSole", "LLBack", "LRBack",
00198
00199
00200 "RLToe", "RRToe", "RLSole", "RRSole", "RLBack", "RRBack",
00201
00202 "BAccel", "LAccel", "DAccel"
00203
00204
00205 };
00206
00207
00208 const char* const outputNames[NumReferenceFrames + 1] = {
00209
00210
00211 "LArm:Rotate", "LArm:Elevator", "LArm:Elbow",
00212
00213
00214 "RArm:Rotate", "RArm:Elevator", "RArm:Elbow",
00215
00216
00217 "LLeg:Abduce", "LLeg:Flex", "LLeg:Knee",
00218 "LLeg:AnkleFlex",
00219 "LLeg:AnkleLateral",
00220
00221
00222 "RLeg:Abduce", "RLeg:Flex", "RLeg:Knee",
00223 "RLeg:AnkleFlex",
00224 "RLeg:AnkleLateral",
00225
00226
00227 "NECK:Pan",
00228
00229 "BaseFrame",
00230 "CAMERA:Eye",
00231 "LArm:Wrist",
00232 "RArm:Wrist",
00233 "LLeg:Sole",
00234 "RLeg:Sole",
00235 NULL
00236 };
00237
00238
00239 extern const Capabilities capabilities;
00240
00241
00242 const float DefaultPIDs[NumPIDJoints][3] = {
00243 {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
00244 {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
00245 {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
00246 {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
00247 {1, 0, 0}
00248 };
00249
00250
00251
00252
00253
00254
00255
00256
00257
00258 const float MaxOutputSpeed[NumOutputs] = {
00259
00260
00261 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f,
00262 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f, 1e-3f,
00263 1e-3f
00264 };
00265
00266 #ifndef RAD
00267
00268 #define RAD(deg) (((deg) * (float)M_PI ) / 180.0f)
00269
00270 #define __RI_RAD_FLAG
00271 #endif
00272
00273
00274 const float outputRanges[NumOutputs][2] = {
00275
00276
00277 {RAD(0), RAD(180)}, {RAD(0), RAD(180)}, {RAD(-90), RAD(90)},
00278
00279
00280 {RAD(0), RAD(180)}, {RAD(0), RAD(180)}, {RAD(-90), RAD(90)},
00281
00282
00283 {RAD(-10), RAD(90)}, {RAD(-90), RAD(90)}, {RAD(-90), RAD(20)},
00284 {RAD(-90), RAD(90)},
00285 {RAD(-70), RAD(20)},
00286
00287
00288 {RAD(-10), RAD(90)}, {RAD(-90), RAD(90)}, {RAD(-90), RAD(20)},
00289 {RAD(-90), RAD(90)},
00290 {RAD(-70), RAD(20)},
00291
00292
00293 {RAD(-90), RAD(90)}
00294 };
00295
00296
00297
00298
00299
00300 const float mechanicalLimits[NumOutputs][2] = {
00301
00302
00303 {RAD(0), RAD(180)}, {RAD(0), RAD(180)}, {RAD(-90), RAD(90)},
00304
00305
00306 {RAD(0), RAD(180)}, {RAD(0), RAD(180)}, {RAD(-90), RAD(90)},
00307
00308
00309 {RAD(-10), RAD(90)}, {RAD(-90), RAD(90)}, {RAD(-90), RAD(20)},
00310 {RAD(-90), RAD(90)},
00311 {RAD(-70), RAD(20)},
00312
00313
00314 {RAD(-10), RAD(90)}, {RAD(-90), RAD(90)}, {RAD(-90), RAD(20)},
00315 {RAD(-90), RAD(90)},
00316 {RAD(-70), RAD(20)},
00317
00318
00319 {RAD(-90), RAD(90)}
00320 };
00321
00322 #ifdef __RI_RAD_FLAG
00323 #undef RAD
00324 #undef __RI_RAD_FLAG
00325 #endif
00326 }
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337 #endif