00001
00002
00003
00004
00005 #ifndef INCLUDED_ERS2xxInfo_h
00006 #define INCLUDED_ERS2xxInfo_h
00007
00008 #include <math.h>
00009 #ifndef PLATFORM_APERIOS
00010 typedef unsigned short word;
00011 #else
00012 #include <Types.h>
00013 #endif
00014
00015 #include "CommonInfo.h"
00016 using namespace RobotInfo;
00017
00018
00019
00020
00021
00022 namespace ERS2xxInfo {
00023
00024
00025
00026
00027
00028 const char* const RobotName="ERS-2xx";
00029
00030 const unsigned int FrameTime=8;
00031 const unsigned int NumFrames=4;
00032 const unsigned int SlowFrameTime=128;
00033 const unsigned int NumSlowFrames=1;
00034 const unsigned int SoundBufferTime=32;
00035
00036
00037
00038
00039 const unsigned JointsPerLeg = 3;
00040 const unsigned NumLegs = 4;
00041 const unsigned NumLegJoints = JointsPerLeg*NumLegs;
00042 const unsigned NumHeadJoints = 3;
00043 const unsigned NumTailJoints = 2;
00044 const unsigned NumMouthJoints = 1;
00045 const unsigned NumEarJoints = 2;
00046 const unsigned NumButtons = 11;
00047 const unsigned NumSensors = 1+3+1+5;
00048 const unsigned NumLEDs = 22;
00049
00050 const unsigned NumPIDJoints = NumLegJoints+NumHeadJoints+NumTailJoints+NumMouthJoints;
00051 const unsigned NumBinJoints = NumEarJoints;
00052 const unsigned NumOutputs = NumPIDJoints + NumBinJoints + NumLEDs;
00053 const unsigned NumReferenceFrames = NumOutputs + 1 + NumLegs + 1 + 1;
00054
00055 const float CameraHorizFOV=57.6/180*M_PI;
00056 const float CameraVertFOV=47.8/180*M_PI;
00057 const float CameraFOV=CameraHorizFOV;
00058 const unsigned int CameraResolutionX=176;
00059 const unsigned int CameraResolutionY=144;
00060 const float BallOfFootRadius=27.922/2;
00061 const float CylinderOfFootRadius=24.606/2;
00062
00063
00064 const bool IsFastOutput[NumOutputs] = {
00065
00066 true, true, true,
00067 true, true, true,
00068 true, true, true,
00069 true, true, true,
00070 true, true, true,
00071 true, true,
00072 true,
00073
00074 true, true, true,
00075 true, true, true,
00076 true,
00077 true, true, true,
00078 true, true, true,
00079 true, true, true,
00080 true, true, true,
00081 true,
00082 true, true,
00083
00084 false, false
00085 };
00086
00087
00088 const bool IsRealERS210[NumOutputs] = {
00089
00090 true, true, true,
00091 true, true, true,
00092 true, true, true,
00093 true, true, true,
00094 true, true, true,
00095 true, true,
00096 true,
00097
00098 true, true, true,
00099 true, true, true,
00100 true,
00101 false, false, false,
00102 false, false, false,
00103 false, false, false,
00104 false, false, false,
00105 false,
00106 true, true,
00107
00108 true, true
00109 };
00110
00111
00112 const bool IsRealERS220[NumOutputs] = {
00113
00114 true, true, true,
00115 true, true, true,
00116 true, true, true,
00117 true, true, true,
00118 true, true, true,
00119 false, false,
00120 false,
00121
00122 true, true, true,
00123 true, true, true,
00124 true,
00125 true, true, true,
00126 true, true, true,
00127 true, true, true,
00128 true, true, true,
00129 true,
00130 false, false,
00131
00132 false, false
00133 };
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 const unsigned PIDJointOffset = 0;
00144 const unsigned LegOffset = PIDJointOffset;
00145 const unsigned HeadOffset = LegOffset+NumLegJoints;
00146 const unsigned TailOffset = HeadOffset+NumHeadJoints;
00147 const unsigned MouthOffset = TailOffset+NumTailJoints;
00148
00149 const unsigned LEDOffset = PIDJointOffset + NumPIDJoints;
00150
00151 const unsigned BinJointOffset = LEDOffset+NumLEDs;
00152 const unsigned EarOffset = BinJointOffset;
00153
00154 const unsigned BaseFrameOffset = NumOutputs;
00155 const unsigned PawFrameOffset = BaseFrameOffset+1;
00156 const unsigned CameraFrameOffset = PawFrameOffset+NumLegs;
00157 const unsigned IRFrameOffset = CameraFrameOffset+1;
00158
00159
00160 enum LegOffset_t {
00161 LFrLegOffset = LegOffset+LFrLegOrder*JointsPerLeg,
00162 RFrLegOffset = LegOffset+RFrLegOrder*JointsPerLeg,
00163 LBkLegOffset = LegOffset+LBkLegOrder*JointsPerLeg,
00164 RBkLegOffset = LegOffset+RBkLegOrder*JointsPerLeg
00165 };
00166
00167
00168
00169
00170 enum LEDOffset_t {
00171 FaceFrontLeftLEDOffset = LEDOffset,
00172 FaceFrontRightLEDOffset,
00173 FaceCenterLeftLEDOffset,
00174 FaceCenterRightLEDOffset,
00175 FaceBackLeftLEDOffset,
00176 FaceBackRightLEDOffset,
00177 ModeLEDOffset,
00178 BackLeft1LEDOffset,
00179 BackLeft2LEDOffset,
00180 BackLeft3LEDOffset,
00181 BackRight3LEDOffset,
00182 BackRight2LEDOffset,
00183 BackRight1LEDOffset,
00184 TailLeftLEDOffset,
00185 TailCenterLEDOffset,
00186 TailRightLEDOffset,
00187 FaceFrontBLEDOffset,
00188 FaceFrontALEDOffset,
00189 FaceFrontCLEDOffset,
00190 RetractableHeadLEDOffset,
00191
00192 TlBluLEDOffset,
00193 TlRedLEDOffset,
00194
00195
00196 BotLLEDOffset = FaceFrontLeftLEDOffset,
00197 BotRLEDOffset = FaceFrontRightLEDOffset,
00198 MidLLEDOffset = FaceCenterLeftLEDOffset,
00199 MidRLEDOffset = FaceCenterRightLEDOffset,
00200 TopLLEDOffset = FaceBackLeftLEDOffset,
00201 TopRLEDOffset = FaceBackRightLEDOffset,
00202 TopBrLEDOffset = ModeLEDOffset,
00203 };
00204
00205
00206
00207 typedef unsigned int LEDBitMask_t;
00208 const LEDBitMask_t FaceFrontLeftLEDMask = 1<<(FaceFrontLeftLEDOffset-LEDOffset);
00209 const LEDBitMask_t FaceFrontRightLEDMask = 1<<(FaceFrontRightLEDOffset-LEDOffset);
00210 const LEDBitMask_t FaceCenterLeftLEDMask = 1<<(FaceCenterLeftLEDOffset-LEDOffset);
00211 const LEDBitMask_t FaceCenterRightLEDMask = 1<<(FaceCenterRightLEDOffset-LEDOffset);
00212 const LEDBitMask_t FaceBackLeftLEDMask = 1<<(FaceBackLeftLEDOffset-LEDOffset);
00213 const LEDBitMask_t FaceBackRightLEDMask = 1<<(FaceBackRightLEDOffset-LEDOffset);
00214 const LEDBitMask_t ModeLEDMask = 1<<(ModeLEDOffset-LEDOffset);
00215 const LEDBitMask_t BackLeft1LEDMask = 1<<(BackLeft1LEDOffset-LEDOffset);
00216 const LEDBitMask_t BackLeft2LEDMask = 1<<(BackLeft2LEDOffset-LEDOffset);
00217 const LEDBitMask_t BackLeft3LEDMask = 1<<(BackLeft3LEDOffset-LEDOffset);
00218 const LEDBitMask_t BackRight3LEDMask = 1<<(BackRight3LEDOffset-LEDOffset);
00219 const LEDBitMask_t BackRight2LEDMask = 1<<(BackRight2LEDOffset-LEDOffset);
00220 const LEDBitMask_t BackRight1LEDMask = 1<<(BackRight1LEDOffset-LEDOffset);
00221 const LEDBitMask_t TailLeftLEDMask = 1<<(TailLeftLEDOffset-LEDOffset);
00222 const LEDBitMask_t TailCenterLEDMask = 1<<(TailCenterLEDOffset-LEDOffset);
00223 const LEDBitMask_t TailRightLEDMask = 1<<(TailRightLEDOffset-LEDOffset);
00224 const LEDBitMask_t FaceFrontBLEDMask = 1<<(FaceFrontBLEDOffset-LEDOffset);
00225 const LEDBitMask_t FaceFrontALEDMask = 1<<(FaceFrontALEDOffset-LEDOffset);
00226 const LEDBitMask_t FaceFrontCLEDMask = 1<<(FaceFrontCLEDOffset-LEDOffset);
00227 const LEDBitMask_t RetractableHeadLEDMask = 1<<(RetractableHeadLEDOffset-LEDOffset);
00228
00229 const LEDBitMask_t TlRedLEDMask= 1<<(TlRedLEDOffset-LEDOffset);
00230 const LEDBitMask_t TlBluLEDMask= 1<<(TlBluLEDOffset-LEDOffset);
00231
00232
00233 const LEDBitMask_t BotLLEDMask = 1<<(BotLLEDOffset-LEDOffset);
00234 const LEDBitMask_t BotRLEDMask = 1<<(BotRLEDOffset-LEDOffset);
00235 const LEDBitMask_t MidLLEDMask = 1<<(MidLLEDOffset-LEDOffset);
00236 const LEDBitMask_t MidRLEDMask = 1<<(MidRLEDOffset-LEDOffset);
00237 const LEDBitMask_t TopLLEDMask = 1<<(TopLLEDOffset-LEDOffset);
00238 const LEDBitMask_t TopRLEDMask = 1<<(TopRLEDOffset-LEDOffset);
00239 const LEDBitMask_t TopBrLEDMask= 1<<(TopBrLEDOffset-LEDOffset);
00240
00241
00242 const LEDBitMask_t FaceLEDMask
00243 = FaceFrontLeftLEDMask
00244 | FaceFrontRightLEDMask
00245 | FaceCenterLeftLEDMask
00246 | FaceCenterRightLEDMask
00247 | FaceBackLeftLEDMask
00248 | FaceBackRightLEDMask
00249 | FaceFrontALEDMask
00250 | FaceFrontBLEDMask
00251 | FaceFrontCLEDMask
00252 | ModeLEDMask;
00253
00254
00255 const LEDBitMask_t HeadLEDMask
00256 = FaceLEDMask | RetractableHeadLEDMask;
00257
00258
00259 const LEDBitMask_t BackLEDMask
00260 = BackLeft1LEDMask
00261 | BackLeft2LEDMask
00262 | BackLeft3LEDMask
00263 | BackRight1LEDMask
00264 | BackRight2LEDMask
00265 | BackRight3LEDMask;
00266
00267
00268 const LEDBitMask_t TailLEDMask
00269 = TailLeftLEDMask
00270 | TailCenterLEDMask
00271 | TailRightLEDMask
00272 | TlRedLEDMask
00273 | TlBluLEDMask;
00274
00275
00276 const LEDBitMask_t AllLEDMask = (LEDBitMask_t)~0;
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297 enum ButtonOffset_t {
00298 LFrPawOffset = LFrLegOrder,
00299 RFrPawOffset = RFrLegOrder,
00300 LBkPawOffset = LBkLegOrder,
00301 RBkPawOffset = RBkLegOrder,
00302 ChinButOffset= 4,
00303 BackButOffset,
00304 HeadFrButOffset,
00305 HeadButOffset=HeadFrButOffset,
00306 HeadBkButOffset,
00307 TailLeftButOffset,
00308 TailCenterButOffset,
00309 TailRightButOffset,
00310 };
00311
00312
00313 const char* const buttonNames[NumButtons] = {
00314 "LFrPaw","RFrPaw","LBkPaw","RBkPaw",
00315 "ChinBut","BackBut","HeadFrBut","HeadBkBut",
00316 "TailLeftBut","TailCenterBut","TailRightBut"
00317 };
00318
00319
00320
00321 enum SensorOffset_t {
00322 IRDistOffset = 0,
00323 BAccelOffset,
00324 LAccelOffset,
00325 DAccelOffset,
00326 ThermoOffset,
00327 PowerRemainOffset,
00328 PowerThermoOffset,
00329 PowerCapacityOffset,
00330 PowerVoltageOffset,
00331 PowerCurrentOffset
00332 };
00333
00334
00335 const char* const sensorNames[NumSensors] = {
00336 "IRDist",
00337 "BAccel","LAccel","DAccel",
00338 "Thermo",
00339 "PowerRemain","PowerThermo","PowerCapacity","PowerVoltage","PowerCurrent"
00340 };
00341
00342
00343
00344
00345
00346 const unsigned outputNameLen = 9;
00347
00348 const char* const outputNames[NumOutputs] = {
00349 "LFr:rotor",
00350 "LFr:elvtr",
00351 "LFr:knee~",
00352 "RFr:rotor",
00353 "RFr:elvtr",
00354 "RFr:knee~",
00355 "LBk:rotor",
00356 "LBk:elvtr",
00357 "LBk:knee~",
00358 "RBk:rotor",
00359 "RBk:elvtr",
00360 "RBk:knee~",
00361
00362 "NECK:tilt",
00363 "NECK:pan~",
00364 "NECK:roll",
00365
00366 "TAIL:tilt",
00367 "TAIL:pan~",
00368
00369 "MOUTH~~~~",
00370
00371 "LED:botL~",
00372 "LED:botR~",
00373 "LED:midL~",
00374 "LED:midR~",
00375 "LED:topL~",
00376 "LED:topR~",
00377 "LED:topBr",
00378
00379 "LED:bkL1~",
00380 "LED:bkL2~",
00381 "LED:bkL3~",
00382 "LED:bkR3~",
00383 "LED:bkR2~",
00384 "LED:bkR1~",
00385 "LED:tailL",
00386 "LED:tailC",
00387 "LED:tailR",
00388 "LED:faceB",
00389 "LED:faceA",
00390 "LED:faceC",
00391 "LED:light",
00392
00393 "LED:tlRed",
00394 "LED:tlBlu",
00395
00396 "EAR:left~",
00397 "EAR:right"
00398 };
00399
00400
00401
00402
00403
00404
00405
00406
00407
00408
00409
00410
00411 const char* const PrimitiveName [NumOutputs] = {
00412 "PRM:/r2/c1-Joint2:j1",
00413 "PRM:/r2/c1/c2-Joint2:j2",
00414 "PRM:/r2/c1/c2/c3-Joint2:j3",
00415 "PRM:/r4/c1-Joint2:j1",
00416 "PRM:/r4/c1/c2-Joint2:j2",
00417 "PRM:/r4/c1/c2/c3-Joint2:j3",
00418
00419 "PRM:/r3/c1-Joint2:j1",
00420 "PRM:/r3/c1/c2-Joint2:j2",
00421 "PRM:/r3/c1/c2/c3-Joint2:j3",
00422 "PRM:/r5/c1-Joint2:j1",
00423 "PRM:/r5/c1/c2-Joint2:j2",
00424 "PRM:/r5/c1/c2/c3-Joint2:j3",
00425
00426 "PRM:/r1/c1-Joint2:j1",
00427 "PRM:/r1/c1/c2-Joint2:j2",
00428 "PRM:/r1/c1/c2/c3-Joint2:j3",
00429
00430 "PRM:/r6/c2-Joint2:j2",
00431 "PRM:/r6/c1-Joint2:j1",
00432
00433 "PRM:/r1/c1/c2/c3/c4-Joint2:j4",
00434
00435 "PRM:/r1/c1/c2/c3/l1-LED2:l1",
00436 "PRM:/r1/c1/c2/c3/l4-LED2:l4",
00437 "PRM:/r1/c1/c2/c3/l2-LED2:l2",
00438 "PRM:/r1/c1/c2/c3/l5-LED2:l5",
00439 "PRM:/r1/c1/c2/c3/l3-LED2:l3",
00440 "PRM:/r1/c1/c2/c3/l6-LED2:l6",
00441 "PRM:/r1/c1/c2/c3/l7-LED2:l7",
00442
00443 "PRM:/r6/l1-LED2:l1",
00444 "PRM:/r6/l2-LED2:l2",
00445 "PRM:/r6/l3-LED2:l3",
00446 "PRM:/r6/l4-LED2:l4",
00447 "PRM:/r6/l5-LED2:l5",
00448 "PRM:/r6/l6-LED2:l6",
00449
00450 "PRM:/r6/l9-LED2:l9",
00451 "PRM:/r6/l7-LED2:l7",
00452 "PRM:/r6/l8-LED2:l8",
00453
00454 "PRM:/r1/c1/c2/c3/l8-LED2:l8",
00455 "PRM:/r1/c1/c2/c3/l9-LED2:l9",
00456 "PRM:/r1/c1/c2/c3/la-LED2:la",
00457 "PRM:/r1/c1/c2/c3/lb-LED2:lb",
00458
00459 "PRM:/r6/l2-LED2:l2",
00460 "PRM:/r6/l1-LED2:l1",
00461
00462 "PRM:/r1/c1/c2/c3/e1-Joint3:j5",
00463 "PRM:/r1/c1/c2/c3/e2-Joint3:j6"
00464 };
00465
00466
00467 const char* const SpeakerLocator="PRM:/r1/c1/c2/c3/s1-Speaker:S1";
00468
00469
00470 const char* const CameraLocator="PRM:/r1/c1/c2/c3/i1-FbkImageSensor:F1";
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498 const float DefaultPIDs[NumPIDJoints][3] =
00499 {
00500 { 0x16/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x08/(double)(1<<(16-0xF)) },
00501 { 0x14/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x06/(double)(1<<(16-0xF)) },
00502 { 0x23/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x05/(double)(1<<(16-0xF)) },
00503 { 0x16/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x08/(double)(1<<(16-0xF)) },
00504 { 0x14/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x06/(double)(1<<(16-0xF)) },
00505 { 0x23/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x05/(double)(1<<(16-0xF)) },
00506 { 0x16/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x08/(double)(1<<(16-0xF)) },
00507 { 0x14/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x06/(double)(1<<(16-0xF)) },
00508 { 0x23/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x05/(double)(1<<(16-0xF)) },
00509 { 0x16/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x08/(double)(1<<(16-0xF)) },
00510 { 0x14/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x06/(double)(1<<(16-0xF)) },
00511 { 0x23/(double)(1<<(16-0xE)), 0x04/(double)(1<<(16-0x2)), 0x05/(double)(1<<(16-0xF)) },
00512
00513 { 0x0A/(double)(1<<(16-0xE)), 0x08/(double)(1<<(16-0x2)), 0x0C/(double)(1<<(16-0xF)) },
00514 { 0x0D/(double)(1<<(16-0xE)), 0x08/(double)(1<<(16-0x2)), 0x0B/(double)(1<<(16-0xF)) },
00515 { 0x0A/(double)(1<<(16-0xE)), 0x08/(double)(1<<(16-0x2)), 0x0C/(double)(1<<(16-0xF)) },
00516
00517 { 0x0A/(double)(1<<(16-0xE)), 0x00/(double)(1<<(16-0x2)), 0x18/(double)(1<<(16-0xF)) },
00518 { 0x07/(double)(1<<(16-0xE)), 0x00/(double)(1<<(16-0x2)), 0x11/(double)(1<<(16-0xF)) },
00519
00520 { 0x0E/(double)(1<<(16-0xE)), 0x08/(double)(1<<(16-0x2)), 0x10/(double)(1<<(16-0xF)) }
00521 };
00522
00523
00524 const unsigned char DefaultPIDShifts[3] = {0x0E, 0x02, 0x0F};
00525
00526
00527
00528
00529
00530
00531 const float MaxOutputSpeed[NumOutputs] = {
00532 2.8143434e-03,
00533 2.4980025e-03,
00534 2.8361600e-03,
00535 2.8143434e-03,
00536 2.4980025e-03,
00537 2.8361600e-03,
00538 2.8143434e-03,
00539 2.4980025e-03,
00540 2.8361600e-03,
00541 2.8143434e-03,
00542 2.4980025e-03,
00543 2.8361600e-03,
00544
00545 2.1053034e-03,
00546 3.0106930e-03,
00547 3.0106930e-03,
00548
00549 4.4724062e-03,
00550 4.4724062e-03,
00551
00552 4.3742314e-03,
00553
00554 0,0,0,
00555 0,0,0,
00556 0,
00557 0,0,0,
00558 0,0,0,
00559 0,0,0,
00560 0,0,0,
00561 0,
00562 0,0,
00563
00564 0,0
00565 };
00566
00567 #ifndef RAD
00568
00569 #define RAD(deg) (((deg) * M_PI ) / 180.0)
00570
00571 #define __RI_RAD_FLAG
00572 #endif
00573
00574
00575 const double outputRanges[NumOutputs][2] =
00576 {
00577 { RAD(-117),RAD(117) },{ RAD(-11),RAD(89) },{ RAD(-27),RAD(147) },
00578 { RAD(-117),RAD(117) },{ RAD(-11),RAD(89) },{ RAD(-27),RAD(147) },
00579 { RAD(-117),RAD(117) },{ RAD(-11),RAD(89) },{ RAD(-27),RAD(147) },
00580 { RAD(-117),RAD(117) },{ RAD(-11),RAD(89) },{ RAD(-27),RAD(147) },
00581
00582 { RAD(-82),RAD(43) },{ RAD(-89.6),RAD(89.6) },{ RAD(-29),RAD(29) },
00583
00584 { RAD(-22),RAD(22) },{ RAD(-22),RAD(22) },
00585
00586 { RAD(-47),RAD(-3) },
00587
00588 {0,1},{0,1},{0,1},
00589 {0,1},{0,1},{0,1},
00590 {0,1},
00591 {0,1},{0,1},{0,1},
00592 {0,1},{0,1},{0,1},
00593 {0,1},{0,1},{0,1},
00594 {0,1},{0,1},{0,1},
00595 {0,1},
00596 {0,1},{0,1},
00597
00598 {0,1},{0,1}
00599 };
00600
00601
00602 const double mechanicalLimits[NumOutputs][2] =
00603 {
00604 { RAD(-120),RAD(120) },{ RAD(-14),RAD(92) },{ RAD(-30),RAD(150) },
00605 { RAD(-120),RAD(120) },{ RAD(-14),RAD(92) },{ RAD(-30),RAD(150) },
00606 { RAD(-120),RAD(120) },{ RAD(-14),RAD(92) },{ RAD(-30),RAD(150) },
00607 { RAD(-120),RAD(120) },{ RAD(-14),RAD(92) },{ RAD(-30),RAD(150) },
00608
00609 { RAD(-85),RAD(46) },{ RAD(-92.6),RAD(92.6) },{ RAD(-32),RAD(32) },
00610
00611 { RAD(-25),RAD(25) },{ RAD(-25),RAD(25) },
00612
00613 { RAD(-50),RAD(0) },
00614
00615 {0,1},{0,1},{0,1},
00616 {0,1},{0,1},{0,1},
00617 {0,1},
00618 {0,1},{0,1},{0,1},
00619 {0,1},{0,1},{0,1},
00620 {0,1},{0,1},{0,1},
00621 {0,1},{0,1},{0,1},
00622 {0,1},
00623 {0,1},{0,1},
00624
00625 {0,1},{0,1}
00626 };
00627
00628 #ifdef __RI_RAD_FLAG
00629 #undef RAD
00630 #undef __RI_RAD_FLAG
00631 #endif
00632
00633 }
00634
00635
00636
00637
00638
00639
00640
00641
00642
00643
00644
00645
00646 #endif