Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

BioloidInfo Namespace Reference

Declares configuration of generic bioloid/dynamixel based robots, such as number of joints, LEDs, etc. More...

Functions

const Capabilities capabilities (TargetName, NumReferenceFrames, outputNames, NumButtons, buttonNames, NumSensors, sensorNames, PIDJointOffset, NumPIDJoints, LEDOffset, NumLEDs, NumOutputs)

Variables

const char *const TargetName = "Bioloid"
 the name of the model, to be used for logging and remote GUIs
const unsigned int FrameTime = 32
 time between frames in the motion system (milliseconds)
const unsigned int NumFrames = 1
 the number of frames per buffer (don't forget also double buffered)
const unsigned int SoundBufferTime = 32
 the number of milliseconds per sound buffer... I'm not sure if this can be changed
const char *const outputNames [NumReferenceFrames+1]
 Names for each of the outputs.
const Capabilities capabilities
 allocation declared in RobotInfo.cc
const float DefaultPIDs [NumPIDJoints][3]
 Dynamixel servos don't use PID control. Instead, these values indicate compliance slope (P), punch (add to P*error), compliance margin (min error to start applying torque) (see ServoParam_t).
const float MaxOutputSpeed [NumOutputs]
 These values are our recommended maximum joint velocities, in rad/sec.
const float outputRanges [NumOutputs][2]
 This table holds the software limits of each of the outputs, first index is the output offset, second index is MinMaxRange_t (i.e. MinRange or MaxRange).
const float mechanicalLimits [NumOutputs][2]
 This table holds the mechanical limits of each of the outputs, first index is the output offset, second index is MinMaxRange_t (i.e. MinRange or MaxRange).
Output Types Information

const unsigned NumWheels = 0
 The number of joints per leg.
const unsigned FingerJointsPerArm = 0
 The number of joints per leg.
const unsigned JointsPerArm = 0
 The number of joints per leg.
const unsigned NumArms = 0
 The number of joints per leg.
const unsigned NumArmJoints = JointsPerArm*NumArms
 The number of joints per leg.
const unsigned JointsPerLeg = 0
 The number of joints per leg.
const unsigned NumLegs = 0
 The number of legs.
const unsigned NumLegJoints = JointsPerLeg*NumLegs
 the TOTAL number of joints on ALL legs
const unsigned NumHeadJoints = 0
 The number of joints in the pantilt.
const unsigned NumTailJoints = 0
 The number of joints assigned to the tail.
const unsigned NumMouthJoints = 0
 the number of joints that control the mouth
const unsigned NumEarJoints = 0
 The number of joints which control the ears (NOT per ear, is total).
const unsigned NumButtons = 0
 the number of buttons that are available
const unsigned NumSensors = 2
 the number of sensors available (voltage and temperature)
const unsigned NumFacePanelLEDs = 0
 The number of face panel LEDs.
const unsigned NumLEDs = 18
 The number of LEDs which can be controlled (one per dynamixel servo).
const unsigned NumPIDJoints = 18 + NumWheels + NumArmJoints + NumLegJoints+NumHeadJoints+NumTailJoints+NumMouthJoints
 The number of joints per leg.
const unsigned NumOutputs = NumWheels + NumPIDJoints + NumLEDs
 servo pins
const unsigned NumReferenceFrames = NumOutputs+1
 Since we don't know what the user built, we don't actually know any of the kinematics...

Output Offsets

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



enum  WheelOffset_t { LWheelOffset = WheelOffset, RWheelOffset }
 

The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).

More...
enum  LEDOffset_t
 

The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).

More...
typedef unsigned int LEDBitMask_t
const unsigned PIDJointOffset = 0
 The beginning of the PID Joints.
const unsigned WheelOffset = PIDJointOffset
 The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).
const unsigned LEDOffset = PIDJointOffset + NumPIDJoints
 the offset of LEDs in WorldState::outputs and MotionCommand functions, see LedOffset_t for specific offsets
const unsigned BaseFrameOffset = NumOutputs
 Use with kinematics to refer to base reference frame.
const LEDBitMask_t FaceLEDMask = 0
 LEDs for the face panel (all FaceLEDPanelMask<<(0:NumFacePanelLEDs-1) entries).
const LEDBitMask_t AllLEDMask = (LEDBitMask_t)~0
 selects all of the leds

Input Offsets

The order in which inputs should be stored



enum  ButtonOffset_t
 

holds offsets to different buttons in WorldState::buttons[]

More...
enum  SensorOffset_t { PowerThermoOffset, PowerVoltageOffset }
 

holds offset to different sensor values in WorldState::sensors[]

More...
const char *const buttonNames [NumButtons+1] = { NULL }
 Provides a string name for each button.
const char *const sensorNames [NumSensors+1]
 Provides a string name for each sensor.

Detailed Description

Declares configuration of generic bioloid/dynamixel based robots, such as number of joints, LEDs, etc.


Typedef Documentation

typedef unsigned int BioloidInfo::LEDBitMask_t

So you can be clear when you're refering to a LED bitmask

Definition at line 92 of file BioloidInfo.h.


Enumeration Type Documentation

holds offsets to different buttons in WorldState::buttons[]

Should be a straight mapping to the ButtonSourceIDs

Note that the chest (power) button is not a normal button. It kills power to the motors at a hardware level, and isn't sensed in the normal way. If you want to know when it is pressed (and you are about to shut down) see PowerSrcID::PauseSID.

See also:
WorldState::buttons
ButtonSourceID_t

Definition at line 118 of file BioloidInfo.h.

The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).

Definition at line 90 of file BioloidInfo.h.

holds offset to different sensor values in WorldState::sensors[]

See also:
WorldState::sensors[]
Enumerator:
PowerThermoOffset 

degrees Celcius

PowerVoltageOffset 

volts

Definition at line 125 of file BioloidInfo.h.

The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).

Enumerator:
LWheelOffset 
RWheelOffset 

Definition at line 83 of file BioloidInfo.h.


Function Documentation

const Capabilities BioloidInfo::capabilities ( TargetName  ,
NumReferenceFrames  ,
outputNames  ,
NumButtons  ,
buttonNames  ,
NumSensors  ,
sensorNames  ,
PIDJointOffset  ,
NumPIDJoints  ,
LEDOffset  ,
NumLEDs  ,
NumOutputs   
)

Variable Documentation

Initial value:
 {
    {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0}, 

    {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0}, 
    {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0}, 
    {32,32,0}, {32,32,0}, {32,32,0}, {32,32,0}, 
    {32,32,0}, {32,32,0},

  }

Dynamixel servos don't use PID control. Instead, these values indicate compliance slope (P), punch (add to P*error), compliance margin (min error to start applying torque) (see ServoParam_t).

I believe the torque calculation goes something like: torque = (error<compliance) ? 0 : punch + P*error Dynamixel servos allow different values to be supplied for CW vs. CCW motion, but we just use the same value for each

Definition at line 190 of file BioloidInfo.h.

Referenced by ArmMC::clearGripperPulse(), PIDMC::setAllPowerLevel(), PIDMC::setJointPowerLevel(), PIDMC::setRangePowerLevel(), TorqueCalibrate::TakeMeasurementControl::transition(), ArmMC::updateOutputs(), and WorldState::WorldState().

const unsigned BioloidInfo::FingerJointsPerArm = 0

The number of joints per leg.

Definition at line 37 of file BioloidInfo.h.

Referenced by ArmController::connect().

const unsigned BioloidInfo::JointsPerArm = 0

The number of joints per leg.

Definition at line 38 of file BioloidInfo.h.

Referenced by Grasper::MoveArm::advTime().

Initial value:
 {
    
    0.4f,0.4f,0.4f,0.4f,

    0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,

    
    0.4f,0.4f,0.4f,0.4f,

    0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,0.4f,0.4f, 0.4f,0.4f,

  }

These values are our recommended maximum joint velocities, in rad/sec.

a value <= 0 means infinite speed (e.g. LEDs)

These limits are not enforced by the framework. They are simply available for you to use as you see fit. HeadPointerMC and PostureMC are primary examples of included classes which do respect these values (although they can be overridden)

These values were obtained from the administrators of the Sony OPEN-R BBS

Definition at line 207 of file BioloidInfo.h.

Referenced by PostureMC::defaultMaxSpeed().

Initial value:
 {
    
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, 

    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, 

    
    
    {0,1}, {0,1}, {0,1}, {0,1},

    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1},

  }

This table holds the mechanical limits of each of the outputs, first index is the output offset, second index is MinMaxRange_t (i.e. MinRange or MaxRange).

Same as outputRanges, don't know actual values because they were never specified by Sony

Definition at line 250 of file BioloidInfo.h.

const unsigned BioloidInfo::NumArms = 0

The number of joints per leg.

Definition at line 39 of file BioloidInfo.h.

const unsigned BioloidInfo::NumEarJoints = 0

The number of joints which control the ears (NOT per ear, is total).

Definition at line 48 of file BioloidInfo.h.

const unsigned BioloidInfo::NumFacePanelLEDs = 0

The number of face panel LEDs.

Definition at line 51 of file BioloidInfo.h.

const unsigned BioloidInfo::NumMouthJoints = 0

the number of joints that control the mouth

Definition at line 47 of file BioloidInfo.h.

servo pins

the total number of outputs

Definition at line 61 of file BioloidInfo.h.

Referenced by PostureEngine::avgdiff(), PostureEngine::clear(), MotionSequenceMC< MAXMOVE >::clear(), MotionSequenceEngine::compress(), PostureMC::defaultMaxSpeed(), PostureEngine::diff(), WorldStateSerializerBehavior::doEvent(), WorldStateSerializerBehavior::doStart(), EmergencyStopMC::freezeJoints(), PostureEngine::getBinSize(), MotionSequenceEngine::getBinSize(), Kinematics::getInterestPoint(), KinematicJoint::getJointJacobian(), MotionSequenceEngine::getOutputIndex(), MotionSequenceEngine::getPose(), PostureMC::isAlive(), MotionSequenceEngine::loadBuffer(), PostureEngine::maxdiff(), MotionManager::MotionManager(), MotionManager::motionReport(), MotionSequenceEngine::MotionSequenceEngine(), ArmMC::moveOffsetToPoint(), ArmMC::moveOffsetToPointWithOrientation(), PostureMC::noMaxSpeed(), PostureEngine::operator=(), MotionSequenceEngine::overlayMotion(), PostureEditor::PostureEditor(), PostureEngine::PostureEngine(), SensorObserverControl::processEvent(), PostureEditor::processEvent(), WorldState::read(), RemoteState::RemoteState(), MotionSequenceEngine::resume(), PostureEngine::saveBuffer(), MotionSequenceEngine::saveBuffer(), XWalkMC::sendLoadPredictions(), SensorObserverControl::SensorObserverControl(), PostureEngine::setAverage(), PostureEngine::setCombine(), PostureMC::setDirty(), MotionSequenceEngine::setExplicitPose(), MotionManager::setOutput(), PostureEngine::setOverlay(), MotionSequenceEngine::setPose(), MotionSequenceEngine::setTime(), PostureEngine::setUnderlay(), PostureMC::setWeights(), PostureEngine::setWeights(), SineMC::SineMC(), XWalkMC::solveIK(), GaitedFootstepMC::solveIK(), PostureEngine::solveLink(), PostureEngine::solveLinkOrientation(), PostureEngine::solveLinkPosition(), XWalkMC::start(), XWalkMC::stop(), SineMC::syncAll(), PostureEngine::takeSnapshot(), PostureEngine::update(), Kinematics::update(), XWalkMC::updateOutputs(), SineMC::updateOutputs(), RemoteControllerMC::updateOutputs(), PostureMC::updateOutputs(), MotionSequenceMC< MAXMOVE >::updateOutputs(), EmergencyStopMC::updateOutputs(), XWalkMC::updateOutputsInitial(), PostureEditor::updatePose(), SensorObserverControl::updateRT(), and WorldState::WorldState().

Since we don't know what the user built, we don't actually know any of the kinematics...

Definition at line 62 of file BioloidInfo.h.

Referenced by GaitedFootstepMC::GaitedFootstepMC(), Kinematics::getInterestPoint(), Kinematics::init(), Kinematics::Kinematics(), Kinematics::operator=(), GaitedFootsteps::setGait(), and XWalkMC::XWalkMC().

const unsigned BioloidInfo::NumTailJoints = 0

The number of joints assigned to the tail.

Definition at line 46 of file BioloidInfo.h.

const unsigned BioloidInfo::NumWheels = 0

The number of joints per leg.

Definition at line 35 of file BioloidInfo.h.

Referenced by EmergencyStopMC::freezeJoints(), and XWalkParameters::init().

Initial value:
 {
    
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, 

    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)},
    {RAD(-150),RAD(150)}, {RAD(-150),RAD(150)}, 


    
    {0,1}, {0,1}, {0,1}, {0,1},

    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1}, {0,1}, {0,1},
    {0,1}, {0,1},

  }

This table holds the software limits of each of the outputs, first index is the output offset, second index is MinMaxRange_t (i.e. MinRange or MaxRange).

Definition at line 228 of file BioloidInfo.h.

Referenced by Grasper::checkGoalCandidate(), HeadPointerMC::clipAngularRange(), ArmMC::clipAngularRange(), ArmController::connect(), ArmController::doEvent(), ArmMC::openGripper(), ArmController::pointPicked(), HeadController::runCommand(), ArmController::setJoint(), Grasper::CloseTheGripper::setup(), Grasper::OpenTheGripper::setup(), and SineMC::SineMC().

const char* const BioloidInfo::sensorNames[NumSensors+1]
Initial value:
 {
    "PowerThermo","PowerVoltage", NULL
  }

Provides a string name for each sensor.

Definition at line 131 of file BioloidInfo.h.

Referenced by PostureEngine::getBinSize(), PostureEngine::saveBuffer(), SensorObserverControl::SensorObserverControl(), and SensorObserverControl::updateRT().

const unsigned int BioloidInfo::SoundBufferTime = 32

the number of milliseconds per sound buffer... I'm not sure if this can be changed

Definition at line 32 of file BioloidInfo.h.

const char *const BioloidInfo::TargetName = "Bioloid"

the name of the model, to be used for logging and remote GUIs

Definition at line 115 of file RobotInfo.cc.

Referenced by RobotInfo::detectModel(), Controller::init(), and Config::searchPath().

The offsets of the individual LEDs -- except we don't have any idea what to 'name' the servos in a reconfigurable kit, so this is empty (just add numeric offsets).

Definition at line 77 of file BioloidInfo.h.

Referenced by EmergencyStopMC::freezeJoints().


Tekkotsu v5.1CVS
Generated Mon May 9 04:59:19 2016 by Doxygen 1.6.3