Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

ERS210Info.h File Reference


Detailed Description

Defines RobotInfo namespace for ERS-210 models, gives some information about the robot's capabilities, such as joint counts, offsets, names and PID values.

Author:
ejt (Creator)
Author
ejt
Name
tekkotsu-2_4_1
Revision
1.20
State
Exp
Date
2005/06/01 05:47:48

Definition in file ERS210Info.h.

#include <math.h>
#include <Types.h>
#include "CommonInfo.h"

Include dependency graph for ERS210Info.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  ERS210Info

LED Bitmasks

Bitmasks for use when specifying combinations of LEDs (see LedEngine ) Note that left/right are robot's point of view

typedef unsigned int ERS210Info::LEDBitMask_t
 So you can be clear when you're refering to a LED bitmask.
const LEDBitMask_t ERS210Info::BotLLEDMask = 1<<(BotLLEDOffset-LEDOffset)
 bottom left (red - sad)
const LEDBitMask_t ERS210Info::BotRLEDMask = 1<<(BotRLEDOffset-LEDOffset)
 bottom right (red - sad)
const LEDBitMask_t ERS210Info::MidLLEDMask = 1<<(MidLLEDOffset-LEDOffset)
 middle left (green - happy)
const LEDBitMask_t ERS210Info::MidRLEDMask = 1<<(MidRLEDOffset-LEDOffset)
 middle right (green - happy)
const LEDBitMask_t ERS210Info::TopLLEDMask = 1<<(TopLLEDOffset-LEDOffset)
 top left (red - angry)
const LEDBitMask_t ERS210Info::TopRLEDMask = 1<<(TopRLEDOffset-LEDOffset)
 top right (red - angry)
const LEDBitMask_t ERS210Info::TopBrLEDMask = 1<<(TopBrLEDOffset-LEDOffset)
 top bar (green)
const LEDBitMask_t ERS210Info::TlRedLEDMask = 1<<(TlRedLEDOffset-LEDOffset)
 red tail light
const LEDBitMask_t ERS210Info::TlBluLEDMask = 1<<(TlBluLEDOffset-LEDOffset)
 blue tail light
const LEDBitMask_t ERS210Info::FaceLEDMask = BotLLEDMask|BotRLEDMask|MidLLEDMask|MidRLEDMask|TopLLEDMask|TopRLEDMask|TopBrLEDMask
 LEDs for face (all but tail).
const LEDBitMask_t ERS210Info::HeadLEDMask = BotLLEDMask|BotRLEDMask|MidLLEDMask|MidRLEDMask|TopLLEDMask|TopRLEDMask|TopBrLEDMask
 LEDs for face (all but tail).
const LEDBitMask_t ERS210Info::BackLEDMask = 0
 210 has no back LEDs
const LEDBitMask_t ERS210Info::TailLEDMask = TlRedLEDMask|TlBluLEDMask
 LEDs on tail.
const LEDBitMask_t ERS210Info::AllLEDMask = (LEDBitMask_t)~0
 selects all of the leds

Output Offsets

Corresponds to entries in ERS210Info::PrimitiveName, defined at the end of this file

enum  ERS210Info::LegOffset_t { ERS210Info::LFrLegOffset = LegOffset+LFrLegOrder*JointsPerLeg, ERS210Info::RFrLegOffset = LegOffset+RFrLegOrder*JointsPerLeg, ERS210Info::LBkLegOffset = LegOffset+LBkLegOrder*JointsPerLeg, ERS210Info::RBkLegOffset = LegOffset+RBkLegOrder*JointsPerLeg }
 The offsets of the individual legs. More...
const unsigned ERS210Info::PIDJointOffset = 0
 The beginning of the PID Joints.
const unsigned ERS210Info::LegOffset = PIDJointOffset
 the offset of the beginning of the leg joints
const unsigned ERS210Info::HeadOffset = LegOffset+NumLegJoints
 the offset of the beginning of the head joints
const unsigned ERS210Info::TailOffset = HeadOffset+NumHeadJoints
 the offset of the beginning of the tail joints
const unsigned ERS210Info::MouthOffset = TailOffset+NumTailJoints
 the offset of the beginning of the mouth joint
const unsigned ERS210Info::LEDOffset = PIDJointOffset + NumPIDJoints
 the offset of LEDs in WorldState::outputs and MotionCommand functions
const unsigned ERS210Info::BinJointOffset = LEDOffset + NumLEDs
 The beginning of the binary joints.
const unsigned ERS210Info::EarOffset = BinJointOffset
 the offset of the beginning of the ear joints - note that ears aren't sensed. They can be flicked by the environment and you won't know. Nor will they be flicked back
const unsigned ERS210Info::BaseFrameOffset = NumOutputs
 Use with kinematics to refer to base reference frame.
const unsigned ERS210Info::PawFrameOffset = BaseFrameOffset+1
 Use with kinematics to refer to paw reference frames (add appropriate LegOrder_t to specify which paw).
const unsigned ERS210Info::CameraFrameOffset = PawFrameOffset+NumLegs
 Use with kinematics to refer to camera reference frame.
const unsigned ERS210Info::IRFrameOffset = CameraFrameOffset+1
 Use with kinematics to refer to infrared (distance) sensor reference frame.

Input Offsets

The order in which inputs should be stored

enum  ERS210Info::ButtonOffset_t {
  ERS210Info::LFrPawOffset = LFrLegOrder, ERS210Info::RFrPawOffset = RFrLegOrder, ERS210Info::LBkPawOffset = LBkLegOrder, ERS210Info::RBkPawOffset = RBkLegOrder,
  ERS210Info::ChinButOffset = 4, ERS210Info::BackButOffset, ERS210Info::HeadFrButOffset, ERS210Info::HeadBkButOffset
}
 holds offsets to different buttons in WorldState::buttons[] More...
enum  ERS210Info::SensorOffset_t {
  ERS210Info::IRDistOffset = 0, ERS210Info::BAccelOffset, ERS210Info::LAccelOffset, ERS210Info::DAccelOffset,
  ERS210Info::ThermoOffset, ERS210Info::PowerRemainOffset, ERS210Info::PowerThermoOffset, ERS210Info::PowerCapacityOffset,
  ERS210Info::PowerVoltageOffset, ERS210Info::PowerCurrentOffset
}
 holds offset to different sensor values in WorldState::sensors[] More...
const char *const ERS210Info::buttonNames [NumButtons]
 Provides a string name for each button.
const char *const ERS210Info::sensorNames [NumSensors]
 Provides a string name for each sensor.

Output Types Information

Right now all binary joints are slow, but perhaps this won't always be the case... hence the IsFast/Slow bitmasks to select which type, in order to be more general

const unsigned ERS210Info::JointsPerLeg = 3
 The number of joints per leg.
const unsigned ERS210Info::NumLegs = 4
 The number of legs.
const unsigned ERS210Info::NumLegJoints = JointsPerLeg*NumLegs
 the TOTAL number of joints on ALL legs
const unsigned ERS210Info::NumHeadJoints = 3
 The number of joints in the neck.
const unsigned ERS210Info::NumTailJoints = 2
 The number of joints assigned to the tail.
const unsigned ERS210Info::NumMouthJoints = 1
 the number of joints that control the mouth
const unsigned ERS210Info::NumEarJoints = 2
 The number of joints which control the ears (NOT per ear, is total).
const unsigned ERS210Info::NumButtons = 8
 the number of buttons that are available, see ERS210Info::ButtonOffset_t
const unsigned ERS210Info::NumSensors = 1+3+1+5
 1 dist, 3 accel, 1 thermo, 5 from power, see ERS210Info::SensorOffset_t
const unsigned ERS210Info::NumLEDs = 9
 The number of LEDs which can be controlled.
const unsigned ERS210Info::NumPIDJoints = NumLegJoints+NumHeadJoints+NumTailJoints+NumMouthJoints
 The number of joints which use PID motion - everything except ears.
const unsigned ERS210Info::NumBinJoints = NumEarJoints
 The number of binary joints - just the ears.
const unsigned ERS210Info::NumOutputs = NumPIDJoints + NumBinJoints + NumLEDs
 the total number of outputs
const unsigned ERS210Info::NumReferenceFrames = NumOutputs + 1 + NumLegs + 1 + 1
 for the base, paw, camera, and IR sensor reference frames
const float ERS210Info::CameraHorizFOV = 57.6/180*M_PI
 horizontal field of view (radians)
const float ERS210Info::CameraVertFOV = 47.8/180*M_PI
 vertical field of view (radians)
const float ERS210Info::CameraFOV = CameraHorizFOV
 should be set to maximum of CameraHorizFOV or CameraVertFOV
const unsigned int ERS210Info::CameraResolutionX = 176
 the number of pixels available in the 'full' layer
const unsigned int ERS210Info::CameraResolutionY = 144
 the number of pixels available in the 'full' layer
const bool ERS210Info::IsFastOutput [NumOutputs] = { true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,false,false }
const bool ERS210Info::IsRealERS210 [NumOutputs] = { true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true }
 we need this so you can tell programmatically which joints are "real" and which are "fake" in ERS-2xx target mode

CPC IDs

values defined by OPEN-R, used to interface with lower level OPEN-R code to read sensors - DOESN'T correspond to ERS210Info::PrimitiveName

static const int ERS210Info::CPCJointNeckTilt = 0
static const int ERS210Info::CPCJointNeckPan = 1
static const int ERS210Info::CPCJointNeckRoll = 2
static const int ERS210Info::CPCSensorHeadBackPressure = 3
static const int ERS210Info::CPCSensorHeadFrontPressure = 4
static const int ERS210Info::CPCSensorPSD = 5
static const int ERS210Info::CPCJointMouth = 6
static const int ERS210Info::CPCSensorChinSwitch = 7
static const int ERS210Info::CPCJointLFRotator = 8
static const int ERS210Info::CPCJointLFElevator = 9
static const int ERS210Info::CPCJointLFKnee = 10
static const int ERS210Info::CPCSensorLFPaw = 11
static const int ERS210Info::CPCJointLHRotator = 12
static const int ERS210Info::CPCJointLHElevator = 13
static const int ERS210Info::CPCJointLHKnee = 14
static const int ERS210Info::CPCSensorLHPaw = 15
static const int ERS210Info::CPCJointRFRotator = 16
static const int ERS210Info::CPCJointRFElevator = 17
static const int ERS210Info::CPCJointRFKnee = 18
static const int ERS210Info::CPCSensorRFPaw = 19
static const int ERS210Info::CPCJointRHRotator = 20
static const int ERS210Info::CPCJointRHElevator = 21
static const int ERS210Info::CPCJointRHKnee = 22
static const int ERS210Info::CPCSensorRHPaw = 23
static const int ERS210Info::CPCJointTailPan = 24
static const int ERS210Info::CPCJointTailTilt = 25
static const int ERS210Info::CPCSensorThermoSensor = 26
static const int ERS210Info::CPCSensorBackSwitch = 27
static const int ERS210Info::CPCSensorAccelFB = 28
 Front-back; see RobotInfo::BAccelOffset.
static const int ERS210Info::CPCSensorAccelLR = 29
 Left-right; see RobotInfo::LAccelOffset.
static const int ERS210Info::CPCSensorAccelUD = 30
 Up-down; see RobotInfo::DAccelOffset.

Defines

#define RAD(deg)   (((deg) * M_PI ) / 180.0)
 Just a little macro for converting degrees to radians.
#define __RI_RAD_FLAG
 a flag so we undef these after we're done - do you have a cleaner solution?

Enumerations

enum  ERS210Info::LEDOffset_t {
  ERS210Info::BotLLEDOffset = LEDOffset, ERS210Info::BotRLEDOffset, ERS210Info::MidLLEDOffset, ERS210Info::MidRLEDOffset,
  ERS210Info::TopLLEDOffset, ERS210Info::TopRLEDOffset, ERS210Info::TopBrLEDOffset, ERS210Info::TlRedLEDOffset,
  ERS210Info::TlBluLEDOffset, ERS210Info::FaceFrontLeftLEDOffset = BotLLEDOffset, ERS210Info::FaceFrontRightLEDOffset = BotRLEDOffset, ERS210Info::FaceCenterLeftLEDOffset = MidLLEDOffset,
  ERS210Info::FaceCenterRightLEDOffset = MidRLEDOffset, ERS210Info::FaceBackLeftLEDOffset = TopLLEDOffset, ERS210Info::FaceBackRightLEDOffset = TopRLEDOffset, ERS210Info::ModeLEDOffset = TopBrLEDOffset,
  ERS210Info::TailRightLEDOffset = TlRedLEDOffset, ERS210Info::TailLeftLEDOffset = TlBluLEDOffset
}
 The offsets of the individual LEDs on the head and tail. Note that left/right are robot's point of view. See also LEDBitMask_t. More...
enum  ERS210Info::MinMaxRange_t { ERS210Info::MinRange, ERS210Info::MaxRange }
 Defines the indexes to use to access the min and max entries of ERS210Info::outputRanges and ERS210Info::mechanicalLimits. More...

Variables

const unsigned int ERS210Info::FrameTime = 8
 time between frames in the motion system (milliseconds)
const unsigned int ERS210Info::NumFrames = 4
 the number of frames per buffer (don't forget also double buffered)
const unsigned int ERS210Info::SlowFrameTime = 128
 time between frames for the ears (which move slower for some reason, don't want to mix with other outputs) (milliseconds)
const unsigned int ERS210Info::NumSlowFrames = 1
 the number of frames per buffer being sent to ears (double buffered as well)
const unsigned int ERS210Info::SoundBufferTime = 32
 the number of milliseconds per sound buffer... I'm not sure if this can be changed
const unsigned ERS210Info::outputNameLen = 9
 The length of the strings used for each of the outputs in outputNames (doesn't include null term).
const char *const ERS210Info::outputNames [NumOutputs]
 A name of uniform length for referring to joints - handy for posture files, etc.
const char *const ERS210Info::PrimitiveName [NumOutputs]
 the joint identifier strings used to refer to specific joints in OPEN-R (but not needed for others)
const char *const ERS210Info::SpeakerLocator = "PRM:/r1/c1/c2/c3/s1-Speaker:S1"
 use to open speaker connectio with the system
const char *const ERS210Info::CameraLocator = "PRM:/r1/c1/c2/c3/i1-FbkImageSensor:F1"
 use to open camera connection with the system
const float ERS210Info::DefaultPIDs [NumPIDJoints][3]
 This table holds the default PID values for each joint. see PIDMC.
const unsigned char ERS210Info::DefaultPIDShifts [3] = {0x0E, 0x02, 0x0F}
 These will control the shift values given to the system. see PIDMC.
const float ERS210Info::MaxOutputSpeed [NumOutputs]
 These values are Sony's recommended maximum joint velocities, in rad/ms.
const double ERS210Info::outputRanges [NumOutputs][2]
 This table holds the software limits of each of the outputs.
const double ERS210Info::mechanicalLimits [NumOutputs][2]
 This table holds the mechanical limits of each of the outputs.


Define Documentation

#define __RI_RAD_FLAG
 

a flag so we undef these after we're done - do you have a cleaner solution?

Definition at line 395 of file ERS210Info.h.

#define RAD deg   )     (((deg) * M_PI ) / 180.0)
 

Just a little macro for converting degrees to radians.

Definition at line 393 of file ERS210Info.h.


Tekkotsu v2.4.1
Generated Tue Aug 16 16:33:12 2005 by Doxygen 1.4.4