00001
00002 #ifndef INCLUDED_Regis1Info_h
00003 #define INCLUDED_Regis1Info_h
00004
00005 #include <stdlib.h>
00006 #include <cmath>
00007 #include "CommonInfo.h"
00008 using namespace RobotInfo;
00009
00010
00011 #if defined(TGT_REGIS1)
00012 # define TGT_HAS_WHEELS 2
00013 # define TGT_HAS_ARMS 1
00014 # define TGT_HAS_CAMERA 1
00015 # define TGT_HAS_HEAD 1
00016 #endif
00017
00018 namespace Regis1Info {
00019
00020
00021
00022
00023
00024 extern const char* const TargetName;
00025
00026 const unsigned int FrameTime=15;
00027 const unsigned int NumFrames=1;
00028 const unsigned int SoundBufferTime=32;
00029
00030
00031 const unsigned NumWheels = 2;
00032
00033 const unsigned JointsPerArm = 6;
00034 const unsigned NumArms = 1;
00035 const unsigned NumArmJoints = JointsPerArm*NumArms;
00036
00037 const unsigned JointsPerLeg = 0;
00038 const unsigned NumLegs = 0;
00039 const unsigned NumLegJoints = JointsPerLeg*NumLegs;
00040 const unsigned NumHeadJoints = 4;
00041 const unsigned NumTailJoints = 0;
00042 const unsigned NumMouthJoints = 0;
00043 const unsigned NumEarJoints = 0;
00044 const unsigned NumButtons = 0;
00045 const unsigned NumSensors = 0;
00046 const unsigned NumLEDs = 0;
00047 const unsigned NumFacePanelLEDs = 0;
00048
00049 const unsigned NumPIDJoints = NumWheels+NumArmJoints+NumLegJoints+NumHeadJoints+NumTailJoints+NumMouthJoints;
00050 const unsigned NumBinJoints = NumEarJoints;
00051 const unsigned NumOutputs = NumPIDJoints + NumBinJoints + NumLEDs;
00052 const unsigned NumReferenceFrames = NumOutputs + 1 + NumArms + 1;
00053
00054
00055 const float CameraHorizFOV=56.9/180*M_PI;
00056 const float CameraVertFOV=45.2/180*M_PI;
00057 const float CameraFOV=CameraHorizFOV;
00058 const unsigned int CameraResolutionX=320;
00059 const unsigned int CameraResolutionY=240;
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 const unsigned PIDJointOffset = 0;
00071 const unsigned WheelOffset = PIDJointOffset;
00072 const unsigned ArmOffset = WheelOffset+NumWheels;
00073 const unsigned HeadOffset = ArmOffset+NumArmJoints;
00074
00075 const unsigned LEDOffset = PIDJointOffset + NumPIDJoints;
00076 const unsigned BinJointOffset = LEDOffset + NumLEDs;
00077 const unsigned EarOffset = BinJointOffset;
00078
00079 const unsigned BaseFrameOffset = NumOutputs;
00080 const unsigned GripperFrameOffset = BaseFrameOffset+1;
00081 const unsigned CameraFrameOffset = GripperFrameOffset+NumArms;
00082
00083 enum WheelOffset_t {
00084 LWheelOffset=WheelOffset,
00085 RWheelOffset
00086 };
00087
00088
00089 enum HeadOffset_t {
00090 HeadBaseOffset = HeadOffset,
00091 HeadPanOffset = HeadBaseOffset,
00092 HeadShoulderOffset,
00093 HeadElbowOffset,
00094 HeadTiltOffset = HeadElbowOffset,
00095 HeadWristOffset,
00096 HeadNodOffset = HeadWristOffset
00097 };
00098
00099
00100 enum TPROffset_t {
00101 PanOffset = HeadBaseOffset - HeadOffset,
00102 TiltOffset = HeadElbowOffset - HeadOffset,
00103 NodOffset = HeadWristOffset - HeadOffset
00104 };
00105
00106 enum ArmOffset_t {
00107 ArmBaseOffset = ArmOffset,
00108 ArmShoulderOffset,
00109 ArmElbowOffset,
00110 ArmWristOffset,
00111 ArmWristRotateOffset,
00112 ArmGripperOffset
00113 };
00114
00115 enum LEDOffset_t { };
00116
00117 typedef unsigned int LEDBitMask_t;
00118
00119 const LEDBitMask_t FaceLEDMask = 0;
00120
00121 const LEDBitMask_t AllLEDMask = (LEDBitMask_t)~0;
00122
00123 enum ButtonOffset_t { };
00124
00125 const char* const buttonNames[NumButtons + 1] = { NULL };
00126
00127 enum SensorOffset_t { };
00128
00129 const char* const sensorNames[NumSensors + 1] = { NULL };
00130
00131
00132 const char* const outputNames[NumOutputs] = {
00133 "WHEEL:L",
00134 "WHEEL:R",
00135 "Arm:Base","Arm:Shldr","Arm:Elbow","Arm:Yaw","Arm:Roll","Arm:Grpr",
00136 "GNk:Pan","GNk:Shldr","GNk:Elbow","GNk:Pitch",
00137 };
00138
00139
00140 class Regis1Capabilities : public Capabilities {
00141 public:
00142
00143 Regis1Capabilities()
00144 : Capabilities(TargetName,NumOutputs,outputNames,NumButtons,buttonNames,NumSensors,sensorNames,PIDJointOffset,NumPIDJoints,LEDOffset,NumLEDs)
00145 {
00146
00147 outputToIndex["NECK:tilt"]=HeadTiltOffset;
00148 outputToIndex["NECK:pan"]=HeadPanOffset;
00149 outputToIndex["NECK:nod"]=HeadNodOffset;
00150 }
00151 };
00152
00153 extern Regis1Capabilities capabilities;
00154
00155 const float DefaultPIDs[NumPIDJoints][3] = {
00156 {1,0,0},
00157 {1,0,0},
00158 {1,0,0},{1,0,0},{1,0,0},{1,0,0},{1,0,0},{1,0,0},
00159 {1,0,0},{1,0,0},{1,0,0},{1,0,0}
00160 };
00161
00162
00163 const float MaxOutputSpeed[NumOutputs] = {
00164 1e-3,
00165 1e-3,
00166 1e-3,1e-3,1e-3,1e-3,1e-3,1e-3,
00167 1e-3,1e-3,1e-3,1e-3
00168 };
00169
00170 #ifndef RAD
00171
00172 #define RAD(deg) (((deg) * M_PI ) / 180.0)
00173
00174 #define __RI_RAD_FLAG
00175 #endif
00176
00177
00178 const double outputRanges[NumOutputs][2] = {
00179 { -1 , 1 },
00180 { -1 , 1 },
00181 { RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },
00182 { RAD(-100),RAD(100) },{ RAD(-10.0),RAD(190.0) },{ RAD(-140),RAD(60) },{ RAD(-150),RAD(50) }
00183 };
00184
00185
00186
00187 const double mechanicalLimits[NumOutputs][2] = {
00188 { -1 , 1 },
00189 { -1 , 1 },
00190 { RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },{ RAD(-90),RAD(90) },
00191 { RAD(-100),RAD(100) },{ RAD(-10.0),RAD(190.0) },{ RAD(-140),RAD(60) },{ RAD(-150),RAD(50) }
00192 };
00193
00194
00195 #ifdef __RI_RAD_FLAG
00196 #undef RAD
00197 #undef __RI_RAD_FLAG
00198 #endif
00199 }
00200
00201 #endif