Tekkotsu Homepage
Dev. Resources

MantisArmInfo.h File Reference

Defines some capabilities of the Mantis arm Robots. More...

#include <cmath>
#include <stdlib.h>
#include "CommonInfo.h"
Include dependency graph for MantisArmInfo.h:

Go to the source code of this file.


class  MantisArmInfo::MantisArmCapabilities
 provides polymorphic robot capability detection/mapping More...


namespace  MantisArmInfo

Contains information about an Mantis Arm robot, such as number of joints, LEDs, etc.


#define RAD(deg)   (((deg) * (float)M_PI ) / 180.0f)
 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?


enum  MantisArmInfo::ServoParam_t { MantisArmInfo::DYNAMIXEL_SLOPE = 0, MantisArmInfo::DYNAMIXEL_PUNCH, MantisArmInfo::DYNAMIXEL_MARGIN }

offsets into DefaultPIDs, since Dynamixel servos don't actually use PID control, but a different set of parameters



const char *const MantisArmInfo::TargetName = "MantisArm"
 the name of the model, to be used for logging and remote GUIs
const unsigned int MantisArmInfo::FrameTime = 32
 time between frames in the motion system (milliseconds)
const unsigned int MantisArmInfo::NumFrames = 1
 the number of frames per buffer (don't forget also double buffered)
const unsigned int MantisArmInfo::SoundBufferTime = 32
 the number of milliseconds per sound buffer... I'm not sure if this can be changed
const fmat::Column< 3 > MantisArmInfo::AgentBoundingBoxBaseFrameOffset = fmat::pack(400,70,350)
 Offset needed so that the centroid of the robot is correct related to the bounding box.
const fmat::Column< 3 > MantisArmInfo::AgentBoundingBoxHalfDims = fmat::pack(100,100,100)
 Half of the length, width, and height of the robot.
const char *const MantisArmInfo::outputNames [NumReferenceFrames+1]
 Names for each of the outputs.
const MantisArmCapabilities MantisArmInfo::capabilities
 allocation declared in RobotInfo.cc
const float MantisArmInfo::DefaultPIDs [NumPIDJoints][3]
 Dynamixel MX servos use PID control.
const float MantisArmInfo::MaxOutputSpeed [NumOutputs]
 These values are our recommended maximum joint velocities, in rad/ms.
const float MantisArmInfo::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 MantisArmInfo::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 MantisArmInfo::NumWheels = 0
 The number of joints per leg.
const unsigned MantisArmInfo::JointsPerArm = 6
 The number of joints per leg.
const unsigned MantisArmInfo::NumArms = 1
 The number of joints per leg.
const unsigned MantisArmInfo::NumArmJoints = JointsPerArm*NumArms
 The number of joints per leg.
const unsigned MantisArmInfo::JointsPerLeg = 0
 The number of joints per leg.
const unsigned MantisArmInfo::NumLegs = 0
 The number of legs.
const unsigned MantisArmInfo::NumLegJoints = JointsPerLeg*NumLegs
 the TOTAL number of joints on ALL legs
const unsigned MantisArmInfo::NumHeadJoints = 0
 The number of joints in the pantilt.
const unsigned MantisArmInfo::NumTailJoints = 0
 The number of joints assigned to the tail.
const unsigned MantisArmInfo::NumMouthJoints = 0
 the number of joints that control the mouth
const unsigned MantisArmInfo::NumEarJoints = 0
 The number of joints which control the ears (NOT per ear, is total).
const unsigned MantisArmInfo::NumButtons = 3
 the number of buttons that are available
const unsigned MantisArmInfo::NumSensors = 0
 the number of sensors available
const unsigned MantisArmInfo::NumFacePanelLEDs = 0
 The number of face panel LEDs.
const unsigned MantisArmInfo::NumPIDJoints = NumArmJoints + NumLegJoints + NumHeadJoints + NumTailJoints + NumMouthJoints
 servo pins
const unsigned MantisArmInfo::NumLEDs = NumPIDJoints
 There's an LED on every dynamixel, but can't see most of them, so save some computational resources and only expose the visible ones.
const unsigned MantisArmInfo::NumOutputs = NumWheels + NumPIDJoints + NumLEDs
 the total number of outputs
const unsigned MantisArmInfo::NumReferenceFrames = NumOutputs + NumLegs + NumArms + 1
 for the base, feet, gripper, camera, and IR distance rangefinder
const unsigned MantisArmInfo::FingerJointsPerArm = 0
 The number of joints per leg.
const float MantisArmInfo::BallOfFootRadius = 0
 radius of the ball of the foot

Output Offsets

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

enum  MantisArmInfo::ArmOrder_t { MantisArmInfo::MdArmOrder = 0 }

the ordering of arms

enum  MantisArmInfo::SEKOffset_t {
  MantisArmInfo::SweepOffset = 0, MantisArmInfo::ElevatorOffset, MantisArmInfo::Twist1Offset, MantisArmInfo::ElbowOffset,
  MantisArmInfo::Twist2Offset, MantisArmInfo::WristOffset

The offsets within appendages (the legs) Note that the ordering matches the actual physical ordering of joints on the appendage.

enum  MantisArmInfo::TPROffset_t { MantisArmInfo::PanOffset = 0, MantisArmInfo::TiltOffset, MantisArmInfo::NodOffset = TiltOffset, MantisArmInfo::RollOffset }

The offsets of appendages with tilt (elevation), pan (heading), and roll or nod joints (i.e. head/wrist).

enum  MantisArmInfo::ArmOffset_t { MantisArmInfo::MdArmOffset = ArmOffset+MdArmOrder*JointsPerArm }

The offsets of the individual legs, add REKOffset_t value to access specific joint.

enum  MantisArmInfo::LEDOffset_t {
  MantisArmInfo::ElevatorLEDOffset = LEDOffset, MantisArmInfo::ShoulderLEDOffset, MantisArmInfo::Twist1LEDOffset, MantisArmInfo::ElbowLEDOffset,
  MantisArmInfo::Twist2LEDOffset, MantisArmInfo::WristLEDOffset

The offsets of the individual LEDs.

typedef unsigned int MantisArmInfo::LEDBitMask_t
 So you can be clear when you're refering to a LED bitmask.
const unsigned MantisArmInfo::PIDJointOffset = 0
 The beginning of the PID Joints.
const unsigned MantisArmInfo::ArmOffset = PIDJointOffset
 the offset of the beginning of the regular leg joints (after the 1 rotator joint for the right front leg): NumLegs of JointsPerLeg each, in LegOrder_t order; see LegOffset_t
const unsigned MantisArmInfo::LEDOffset = PIDJointOffset + NumPIDJoints
 the offset of LEDs in WorldState::outputs and MotionCommand functions, see LedOffset_t for specific offsets
const unsigned MantisArmInfo::BaseFrameOffset = NumOutputs
 Use with kinematics to refer to base reference frame.
const unsigned MantisArmInfo::FootFrameOffset = BaseFrameOffset+1
 Use with kinematics to refer to feet reference frames (add appropriate LegOrder_t to specify which paw).
const unsigned MantisArmInfo::GripperFrameOffset = FootFrameOffset+NumLegs
 Use with kinematics to refer to gripper reference frame.
const unsigned MantisArmInfo::CameraFrameOffset = GripperFrameOffset+NumArms
 Use with kinematics to refer to camera reference frame.
const unsigned MantisArmInfo::LeftIRFrameOffset = CameraFrameOffset+1
 Use with kinematics to refer to left IR distance rangefinder reference frame.
const unsigned MantisArmInfo::CenterIRFrameOffset = LeftIRFrameOffset+1
 Use with kinematics to refer to center IR distance rangefinder reference frame.
const unsigned MantisArmInfo::IRFrameOffset = CenterIRFrameOffset
 alias for CenterIRFrameOffset
const unsigned MantisArmInfo::RightIRFrameOffset = CenterIRFrameOffset+1
 Use with kinematics to refer to right IR distance rangefinder reference frame.
const LEDOffset_t MantisArmInfo::RedLEDOffset = ElevatorLEDOffset
 the ordering of arms
const LEDOffset_t MantisArmInfo::YellowLEDOffset = ShoulderLEDOffset
 the ordering of arms
const LEDOffset_t MantisArmInfo::GreenLEDOffset = ElbowLEDOffset
 the ordering of arms
const LEDOffset_t MantisArmInfo::BlueLEDOffset = WristLEDOffset
 the ordering of arms
const LEDBitMask_t MantisArmInfo::RedLEDMask = 1<<(ElevatorLEDOffset-LEDOffset)
 mask corresponding to RedLEDOffset
const LEDBitMask_t MantisArmInfo::YellowLEDMask = 1<<(ShoulderLEDOffset-LEDOffset)
 mask corresponding to YellowLEDOffset
const LEDBitMask_t MantisArmInfo::GreenLEDMask = 1<<(ElbowLEDOffset-LEDOffset)
 mask corresponding to GreenLEDOffset
const LEDBitMask_t MantisArmInfo::BlueLEDMask = (1<<(WristLEDOffset-LEDOffset))
 mask corresponding to BlueLEDOffset
const LEDBitMask_t MantisArmInfo::FaceLEDMask = 0
 LEDs for the face panel (all FaceLEDPanelMask<<(0:NumFacePanelLEDs-1) entries).
const LEDBitMask_t MantisArmInfo::AllLEDMask = (LEDBitMask_t)~0
 selects all of the leds

Input Offsets

The order in which inputs should be stored

enum  MantisArmInfo::ButtonOffset_t { MantisArmInfo::GreenButOffset, MantisArmInfo::RedButOffset, MantisArmInfo::YellowButOffset }

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

enum  MantisArmInfo::SensorOffset_t

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

const char *const MantisArmInfo::buttonNames [NumButtons+1] = { "GreenBut", "RedBut", "YellowBut", NULL }
 Provides a string name for each button.
const char *const MantisArmInfo::sensorNames [NumSensors+1]
 Provides a string name for each sensor.

Detailed Description

Defines some capabilities of the Mantis arm Robots.

ejt (Creator)

Definition in file MantisArmInfo.h.

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 244 of file MantisArmInfo.h.

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

Just a little macro for converting degrees to radians.

Definition at line 242 of file MantisArmInfo.h.

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