Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
hekateros Struct Reference
Inheritance diagram for hekateros:

Public Types

enum  HekProdSize {
  HekProdSizeUnknown = 0,
  HekProdSizeStd = 1,
  HekProdSizeShort = 2,
  HekProdSizeLong = 3,
  HekProdSizeMini = 4,
  HekProdSizeNumOf = 5
}
  Hekateros product size codes. More...
 
enum  HekTriState {
  HekTriStateUnknown = -1,
  HekTriStateFalse = 0,
  HekTriStateOff = 0,
  HekTriStateDisabled = 0,
  HekTriStateLow = 0,
  HekTriStateOpen = 0,
  HekTriStateDark = 0,
  HekTriStateTrue = 1,
  HekTriStateOn = 1,
  HekTriStateEnabled = 1,
  HekTriStateHigh = 1,
  HekTriStateClosed = 1,
  HekTriStateLight = 1
}
  Hekateros tri-state type. More...
 
enum  HekRobotMode {
  HekRobotModeUnknown = -1,
  HekRobotModeManual = 1,
  HekRobotModeAuto = 2
}
  Hekateros mode of operation. More...
 
enum  HekOpState {
  HekOpStateUncalibrated = 0,
  HekOpStateCalibrating = 1,
  HekOpStateCalibrated = 2
}
 Robot or joint operational states. More...
 
enum  HekAsyncTaskState {
  HekAsyncTaskStateIdle = 0,
  HekAsyncTaskStateWorking = 1
}
 Asynchronous task state. More...
 
enum  HekNorm {
  HekNormL1 = 1,
  HekNormL2 = 2,
  HekNormLinf = 3
}
 Length/Distance Norm. More...
 
enum  HekJointType {
  HekJointTypeUnknown = 0,
  HekJointTypeFixed,
  HekJointTypeRevolute,
  HekJointTypeContinuous,
  HekJointTypeRevMimic,
  HekJointTypeNumOf = 4
}
 Supported joint types. More...
 
enum  HekLimitType {
  HekLimitTypeUnknown = 0x00,
  HekLimitTypeNone = 0x01,
  HekLimitTypePhys = 0x02,
  HekLimitTypeElec = 0x04,
  HekLimitTypeElecTDC = 0x08,
  HekLimitTypeAbsEnc = 0x10,
  HekLimitTypeNumOf = 5
}
 Joint limit detection types. More...
 
typedef std::map< int, HekRobotJoint > MapRobotJoints
 Map of robot joints. More...
 

Public Member Functions

 if (sum.tv_usec > MILLION)
 
 if (sum.tv_nsec > BILLION)
 

Public Attributes

const char *const HekProdFamily = "Hekateros"
 product family name
 
const int HekProdFamilyUnknown = 0
 unknown/undefined product family
 
const int HekProdIdUnknown = 0
 unknown/undefined product id
 
const char *const HekProdSizeStrUnknown = "?"
 Common Hekateros product size codes as strings. More...
 
const char *const HekProdSizeStrStd = "N"
 standard (normal) size
 
const char *const HekProdSizeStrShort = "S"
 short
 
const char *const HekProdSizeStrLong = "L"
 long
 
const char *const HekProdSizeStrMini = "Mini"
 mini
 
const char *const HekImageDir = "/usr/local/share/Hekateros/images"
 image directory
 
const char *const HekIconDir = "/usr/local/share/Hekateros/images/icons"
 icon directory
 
const char *const HekSysCfgPath = "/etc/hekateros:/etc"
 System configuration search path.
 
const char *const HekUserCfgPath = "/etc/hekateros:~/.roadnarrows"
 User configuration search path and inheritance order.
 
const char *const HekEtcCfg = "hekateros.conf"
 xml configuration file
 
const char *const HekEtcTune = "hek_tune.conf"
 xml tune file
 
const char *const HekPanelXml = "hek_panel.xml"
 hek_panel configuration
 
const char *const HekEECamXml = "hek_eecam.xml"
 end effector camera cfg
 
const char *const HekXboxXml = "hek_xbox.xml"
 Xbox teleop config.
 
const char *const HekXslUrl
 xml stylesheet url More...
 
const char *const HekXsiUrl
 xml schema instance url More...
 
const char *const HekI2CDevice = "/dev/i2c-3"
 i2c device name
 
const int HekGpioAlarmLED = 10
 alarm led gpio number
 
const int HekGpioHalt = 174
 halt gpio number
 
const int HekGpioHalted = 170
 halt gpio number
 
const char *const HekDevDynabus = "/dev/dynabus"
 dynabus device name
 
const int HekBaudRateDynabus = 1000000
 dynabus baudrate
 
const char *const HekDevArduino = "/dev/arduino"
 arduino device name
 
const int HekBaudRateArduino = 115200
 arduino baudrate
 
const int HekProdArm4LId = HEK_PRODUCT_ID(HekProdSizeLong, 4, 0)
 product id
 
const int HekProdArm4LNumLinks = 4
 number of fixed links
 
const int HekProdArm4LDoF = 4
 degrees of freedom
 
const int HekProdArm4LNumOptLimits = 4
 number of optical limits
 
const int HekProdArm4LNumServos = 5
 number of servos
 
const HekSpecLink_T HekProdArm4LSpecLinks []
 Specification of links. More...
 
const HekSpecJoint_T HekProdArm4LSpecJoints_1_1 []
 Specification of joints, v1.1. More...
 
const HekSpecServo_T HekProdArm4LSpecServos_1_1 []
 Specification of servos, v1.1. More...
 
const int HekProdArm4SId = HEK_PRODUCT_ID(HekProdSizeShort, 4, 0)
 product id
 
const int HekProdArm4SVersion = HEK_VERSION(1, 0, 0)
 hw version
 
const int HekProdArm4SNumLinks = 4
 number of fixed links
 
const int HekProdArm4SDoF = 4
 degrees of freedom
 
const int HekProdArm4SNumServos = 5
 number of servos
 
const int HekProdArm5LId = HEK_PRODUCT_ID(HekProdSizeLong, 5, 0)
 product id
 
const int HekProdArm5LNumLinks = 5
 number of fixed links
 
const int HekProdArm5LDoF = 5
 degrees of freedom
 
const int HekProdArm5LNumOptLimits = 6
 number of optical limits
 
const int HekProdArm5LNumServos = 6
 number of servos
 
const HekSpecLink_T HekProdArm5LSpecLinks []
 Specification of links. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_1_1 []
 Specification of joints, v1.1. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_1_1 []
 Specification of servos, v1.1. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_1_2 []
 Specification of joints, v1.2. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_1_2 []
 Specification of servos, v1.2. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_1_3 []
 Specification of joints, v1.3. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_1_3 []
 Specification of servos, v1.3. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_1_3_5 []
 Specification of joints, v1.3.5. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_1_3_5 []
 Specification of servos, v1.4. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_1_4 []
 Specification of joints, v1.4. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_1_4 []
 Specification of servos, v1.4. More...
 
const HekSpecJoint_T HekProdArm5LSpecJoints_2_0 []
 Specification of joints, v2.0. More...
 
const HekSpecServo_T HekProdArm5LSpecServos_2_0 []
 Specification of servos, v2.0. More...
 
const int HekProdArm5LBetaId = HEK_PRODUCT_ID(HekProdSizeLong, 5, HEK_PROD_BETA)
 product id
 
const int HekProdArm5LBetaVersion = HEK_VERSION(0, 9, 2)
 hw version
 
const int HekProdArm5LBetaNumLinks = 5
 number of fixed links
 
const int HekProdArm5LBetaDoF = 5
 degrees of freedom
 
const int HekProdArm5LBetaNumOptLimits = 0
 number of optical limits
 
const int HekProdArm5LBetaNumServos = 6
 number of servos
 
const HekSpecLink_T HekProdArm5LBetaSpecLinks []
 Specification of links. More...
 
const HekSpecJoint_T HekProdArm5LBetaSpecJoints []
 Specification of joints. More...
 
const HekSpecServo_T HekProdArm5LBetaSpecServos []
 Specification of servos. More...
 
const int HekProdArm5SId = HEK_PRODUCT_ID(HekProdSizeShort, 5, 0)
 product id
 
const int HekProdArm5SVersion = HEK_VERSION(1, 0, 0)
 hw version
 
const int HekProdArm5SNumLinks = 5
 number of fixed links
 
const int HekProdArm5SDoF = 5
 degrees of freedom
 
const int HekProdArm5SNumServos = 6
 number of servos
 
const int HekProdEEFixedFamily = 0x01
 family
 
const int HekProdEEFixedId = HEK_EE_PRODUCT_ID( 0x01 , HekProdSizeStd, 1, 0)
 prod id
 
const int HekProdEEFixedVersion = HEK_VERSION(1, 0, 0)
 hw ver
 
const int HekProdEEFixedNumLinks = 1
 number of fixed links
 
const int HekProdEEFixedDoF = 0
 degrees of freedom
 
const int HekProdEEFixedNumServos = 0
 number of servos
 
const double HekProdEEFixedLinkLengths [HekProdEEFixedNumLinks]
 Link lengths (mm). More...
 
const int HekProdEEGraboidFamily = 0x02
 family
 
const int HekProdEEGraboidId = HEK_EE_PRODUCT_ID( 0x02 , HekProdSizeStd, 1, 0)
 prod id
 
const int HekProdEEGraboidNumLinks = 3
 number of fixed links
 
const int HekProdEEGraboidDoF = 1
 degrees of freedom
 
const int HekProdEEGraboidNumOptLimits = 0
 number of optical limits
 
const int HekProdEEGraboidNumServos = 1
 number of servos
 
const HekSpecLink_T HekProdEEGraboidSpecLinks []
 Specification of links. More...
 
const HekSpecJoint_T HekProdEEGraboidSpecJoints_1_0 []
 Specification of joints, v1.0. More...
 
const HekSpecServo_T HekProdEEGraboidSpecServos_1_0 []
 Specification of servos, v1.0. More...
 
const HekSpecJoint_T HekProdEEGraboidSpecJoints_1_1 []
 Specification of joints, v1.1. More...
 
const HekSpecServo_T HekProdEEGraboidSpecServos_1_1 []
 Specification of servos, v1.1. More...
 
const HekSpecJoint_T HekProdEEGraboidSpecJoints_1_2 []
 Specification of joints, v1.2. More...
 
const HekSpecServo_T HekProdEEGraboidSpecServos_1_2 []
 Specification of servos, v1.2. More...
 
const long MILLION = 1000000
 
const long long BILLION = 1000000000
 
struct timeval sum = op1
 
sum tv_sec = op2.tv_sec
 
sum tv_usec = op2.tv_usec
 
return sum
 
struct timespec sum = op1
 
sum tv_nsec = op2.tv_nsec
 

Static Public Attributes

static const int HEK_OK = 0
 not an error, success
 
static const int HEK_ECODE_GEN = 1
 general, unspecified error
 
static const int HEK_ECODE_SYS = 2
 system (errno) error
 
static const int HEK_ECODE_INTERNAL = 3
 internal error (bug)
 
static const int HEK_ECODE_BAD_VAL = 4
 bad value general error
 
static const int HEK_ECODE_TOO_BIG = 5
 value/list/size too big
 
static const int HEK_ECODE_TOO_SMALL = 6
 value/list/size too small
 
static const int HEK_ECODE_RANGE = 7
 value out-of-range
 
static const int HEK_ECODE_BAD_OP = 8
 invalid operation error
 
static const int HEK_ECODE_TIMEDOUT = 9
 operation timed out error
 
static const int HEK_ECODE_NO_DEV = 10
 device not found error
 
static const int HEK_ECODE_NO_RSRC = 11
 no resource available error
 
static const int HEK_ECODE_BUSY = 12
 resource busy error
 
static const int HEK_ECODE_NO_EXEC = 13
 cannot execute error
 
static const int HEK_ECODE_PERM = 14
 no permissions error
 
static const int HEK_ECODE_DYNA = 15
 dynamixel error
 
static const int HEK_ECODE_VIDEO = 16
 video error
 
static const int HEK_ECODE_FORMAT = 17
 bad format
 
static const int HEK_ECODE_BOTSENSE = 18
 botsense error
 
static const int HEK_ECODE_NO_FILE = 19
 file not found
 
static const int HEK_ECODE_XML = 20
 XML error.
 
static const int HEK_ECODE_ALARMED = 21
 robot is alarmed
 
static const int HEK_ECODE_INTR = 22
 operation interrupted
 
static const int HEK_ECODE_COLLISION = 23
 robot link(s) in collision
 
static const int HEK_ECODE_ESTOP = 24
 robot emergency stopped
 
static const int HEK_ECODE_BADEC = 25
 bad error code
 
static const int HEK_ECODE_NUMOF = 26
 number of error codes
 
static const int HekServoIdBase = 1
 continuous rotating base
 
static const int HekServoIdShoulderL = 2
 left shoulder
 
static const int HekServoIdShoulderR = 3
 right shoulder (linked slave)
 
static const int HekServoIdElbow = 4
 elbow
 
static const int HekServoIdWristPitch = 5
 wrist pitch
 
static const int HekServoIdWristRot = 6
 wrist continuous rotation
 
static const int HekServoIdRsrv1 = 7
 reserved for future bases
 
static const int HekServoIdRsrv2 = 8
 reserved for future bases
 
static const int HekServoIdRsrv3 = 9
 reserved for future bases
 
static const int HekServoIdEEStart = 10
 start id
 
static const int HekServoIdGraboid = 10
 graboid
 
static const int HekServoIdEquipStart = 20
 start id
 
static const int HekServoIdEquipPan = 20
 pan
 
static const int HekServoIdEquipTilt = 21
 tilt
 
static const int HekServoIdAuxStart = 30
 start id
 
static const int HekServoIdAuxPan = 30
 pan
 
static const int HekServoIdAuxTilt = 31
 tilt
 
static const byte_t HekIOExpI2CAddr = 0x20
 i2c 7-bit address
 
static const byte_t HekIOExpCmdInput0 = 0
 read port 0 command
 
static const byte_t HekIOExpCmdInput1 = 1
 read port 1 command
 
static const byte_t HekIOExpCmdOutput0 = 2
 write port 0 command
 
static const byte_t HekIOExpCmdOutput1 = 3
 write port 1 command
 
static const byte_t HekIOExpCmdPolarity0 = 4
 polarity inversion port 0
 
static const byte_t HekIOExpCmdPolarity1 = 5
 polarity inversion port 1
 
static const byte_t HekIOExpCmdConfig0 = 6
 configuration port 0 cmd
 
static const byte_t HekIOExpCmdConfig1 = 7
 configuration port 1 cmd
 
static const byte_t HekIOExpUnassigned = 0
 unassigned port bit
 
static const byte_t HekIOExpDark = 0
 optic switch blocked
 
static const byte_t HekIOExpLight = 0xff
 optical switch is lit
 
static const byte_t HekIOExpConstPolarity0 = 0x00
 port 0 not inverted
 
static const byte_t HekIOExpConstConfig0 = 0xff
 port 0 all input
 
static const byte_t HekIOExpPort0Base0 = 0x01
 base 0 ° limit
 
static const byte_t HekIOExpPort0Base180 = 0x02
 base 180 ° lim.
 
static const byte_t HekIOExpPort0Shoulder = 0x04
 shoulder limit
 
static const byte_t HekIOExpPort0Elbow = 0x08
 elbow limit
 
static const byte_t HekIOExpPort0WristPitch = 0x10
 wrist pitch limit
 
static const byte_t HekIOExpPort0WristRot0 = 0x20
 wrist rot 0 °
 
static const byte_t HekIOExpPort0Rsrv1 = 0x40
 reserved
 
static const byte_t HekIOExpPort0Rsrv2 = 0x80
 reserved
 
static const byte_t HekIOExpPort1EEUser1 = 0x01
 user defined 1
 
static const byte_t HekIOExpPort1EEUser2 = 0x02
 user defined 2
 
static const byte_t HekIOExpPort1Rsrv1 = 0x04
 reserved
 
static const byte_t HekIOExpPort1Rsrv2 = 0x08
 reserved
 
static const byte_t HekIOExpPort1Rsrv3 = 0x10
 reserved
 
static const byte_t HekIOExpPort1Rsrv4 = 0x20
 reserved
 
static const byte_t HekIOExpPort1Rsrv5 = 0x40
 reserved
 
static const byte_t HekIOExpPort1Rsrv6 = 0x80
 reserved
 
static const int HekOptLimitMaxPerJoint = 2
 max limits/joint
 
static const int HekOptLimitMaxEdges = 2
 max edges/limit
 
static const double HekTuneKinHzDft = 30.0
 Default kinematics thread cycle rate (Hertz). More...
 
static const double HekTuneKinHzMin = 0.1
 Minimum kinematics thread cycle rate (Hertz). More...
 
static const double HekTuneOverTorqueThDft = 80.0
 Default joint over torque threshold (% of maximum) More...
 
static const double HekTuneEEOverTorqueThDft = 40.0
 Default end effector over torque threshold (% of maximum) More...
 
static const double HekTuneOverTorqueThMin = 10.0
 Minimum joint over torque threshold (% of maximum)
 
static const double HekTuneOverTorqueThMax = 100.0
 Maximum joint over torque threshold (% of maximum)
 
static const double HekTuneClearTorqueOffsetDft = 90.0
 Default clear torque condition hysteresis threshhold offset (% of over torque threshold). More...
 
static const double HekTuneClearTorqueOffsetMin = 10.0
 Minimum clear torque condition hysteresis threshhold offset (% of over torque threshold).
 
static const double HekTuneClearTorqueOffsetMax = 99.5
 Maximum clear torque condition hysteresis threshhold offset (% of over torque threshold).
 
static const double HekTuneVelDerateDft = 100.0
 Default Hekateros robot velocity derate (% of goal velocities). More...
 
static const double HekTuneVelDerateMin = 10.0
 Minimum robot velocity derate (% of goal velocities).
 
static const double HekTuneVelDerateMax = 100.0
 Maximum robot velocity derate (% of goal velocities).
 
static const double HekTuneTolPosDft = 0.2
 Default joint position control tolerance (degrees). More...
 
static const double HekTuneTolPosMin = 0.0
 Minimum joint position control tolerance (degrees).
 
static const double HekTuneTolVelDft = 1.0
 Default joint velocity control tolerance (degrees/second). More...
 
static const double HekTuneTolVelMin = 0.0
 Minimum joint velocition control tolerance (degrees/second).
 
static const double HekTunePidKpDft = 3.0
 Default joint position and velocity PID proportional constant. More...
 
static const double HekTunePidKiDft = 0.05
 Default joint position and velocity PID integral constant. More...
 
static const double HekTunePidKdDft = 0.1
 Default joint position and velocity PID derivative constant. More...
 
static const double HekTunePidKMin = 0.0
 Minimum PID K constant value.
 
static const double HekTunePidMaxDeltaVDft = 30.0
 Maximum PID delta V output (degrees/second) More...
 
static const double HekTunePidDeltaVNoMax = 0
 No maximum PID delta V output special value.
 
static const HekNorm HekTuneTrajNormDft = HekNormLinf
 Default trajectory norm. More...
 
static const double HekTuneTrajEpsilonDft = 20.0
 Default trajectory distance epsilon (degrees). More...
 
static const double HekTuneTrajEpsilonMin = 0.0
 Minimum epsilon value.
 

Detailed Description

Definition at line 173 of file hekUtils.cxx.

Member Typedef Documentation

typedef std::map<int, HekRobotJoint> hekateros::MapRobotJoints

Map of robot joints.

key: master servo id
mapped type: joint data
Note
Joint order is critical. Ascending servo ids keeps map in order, but if this cannot be guaranteed, then change strategy.

Definition at line 202 of file hekJoint.h.

Member Enumeration Documentation

Supported joint types.

Enumerator
HekJointTypeUnknown 

unknown/undefined joint type

HekJointTypeFixed 

fixed joint

HekJointTypeRevolute 

limited rotation

HekJointTypeContinuous 

continuous rotation

HekJointTypeRevMimic 

mimic rotation (e.g. fingers)

HekJointTypeNumOf 

number of supported joint types

Definition at line 73 of file hekSpec.h.

74  {
75  HekJointTypeUnknown = 0, ///< unknown/undefined joint type
76  HekJointTypeFixed, ///< fixed joint
77  HekJointTypeRevolute, ///< limited rotation
78  HekJointTypeContinuous, ///< continuous rotation
79  HekJointTypeRevMimic, ///< mimic rotation (e.g. fingers)
80 
81  HekJointTypeNumOf = 4 ///< number of supported joint types
82  };
limited rotation
Definition: hekSpec.h:77
continuous rotation
Definition: hekSpec.h:78
number of supported joint types
Definition: hekSpec.h:81
unknown/undefined joint type
Definition: hekSpec.h:75
mimic rotation (e.g. fingers)
Definition: hekSpec.h:79

Joint limit detection types.

A joint may have more than one type.

Enumerator
HekLimitTypeUnknown 

unknown/undefined joint type

HekLimitTypeNone 

no limit detection

HekLimitTypePhys 

physical

HekLimitTypeElec 

electronic

HekLimitTypeElecTDC 

electronic top dead center

HekLimitTypeAbsEnc 

absolute encoder

HekLimitTypeNumOf 

number of supported joint types

Definition at line 89 of file hekSpec.h.

90  {
91  HekLimitTypeUnknown = 0x00, ///< unknown/undefined joint type
92  HekLimitTypeNone = 0x01, ///< no limit detection
93  HekLimitTypePhys = 0x02, ///< physical
94  HekLimitTypeElec = 0x04, ///< electronic
95  HekLimitTypeElecTDC = 0x08, ///< electronic top dead center
96  HekLimitTypeAbsEnc = 0x10, ///< absolute encoder
97 
98  HekLimitTypeNumOf = 5 ///< number of supported joint types
99  };
unknown/undefined joint type
Definition: hekSpec.h:91
absolute encoder
Definition: hekSpec.h:96
number of supported joint types
Definition: hekSpec.h:98
electronic top dead center
Definition: hekSpec.h:95
no limit detection
Definition: hekSpec.h:92

Member Data Documentation

const HekSpecJoint_T hekateros::HekProdArm4LSpecJoints_1_1

Specification of joints, v1.1.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 87 of file hekProdArm4L.h.

const HekSpecLink_T hekateros::HekProdArm4LSpecLinks
Initial value:
=
{
{ "base_fixed",
0.0
},
{ "upper_arm",
406.27
},
{ "forearm",
401.6
},
{ "tool_zero",
0.0
}
}

Specification of links.

Data:
link_name,
length(mm)

TODO

Definition at line 82 of file hekProdArm4L.h.

const HekSpecServo_T hekateros::HekProdArm4LSpecServos_1_1
Initial value:
=
{
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, 60.0},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, 60.0},
{HekServoIdElbow, true, true, DYNA_DIR_CW, 60.0},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, 60.0},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, 60.0}
}

Specification of servos, v1.1.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 92 of file hekProdArm4L.h.

const HekSpecJoint_T hekateros::HekProdArm5LBetaSpecJoints

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 92 of file hekProdArm5LBeta.h.

const HekSpecLink_T hekateros::HekProdArm5LBetaSpecLinks
Initial value:
=
{
{ "base_fixed",
0.0
},
{ "base",
0.0
},
{ "upper_arm",
406.27
},
{ "forearm",
401.6
},
{ "tool_zero",
0.0
}
}

Specification of links.

Data:
name,
length(mm)

TODO

Definition at line 87 of file hekProdArm5LBeta.h.

const HekSpecServo_T hekateros::HekProdArm5LBetaSpecServos
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, 80.0},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, 80.0},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, 80.0},
{HekServoIdElbow, true, true, DYNA_DIR_CW, 80.0},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, 80.0},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, 80.0}
}

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 97 of file hekProdArm5LBeta.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_1_1

Specification of joints, v1.1.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 84 of file hekProdArm5L.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_1_2

Specification of joints, v1.2.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 90 of file hekProdArm5L.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_1_3

Specification of joints, v1.3.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 96 of file hekProdArm5L.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_1_3_5

Specification of joints, v1.3.5.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 102 of file hekProdArm5L.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_1_4

Specification of joints, v1.4.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 108 of file hekProdArm5L.h.

const HekSpecJoint_T hekateros::HekProdArm5LSpecJoints_2_0

Specification of joints, v2.0.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 114 of file hekProdArm5L.h.

const HekSpecLink_T hekateros::HekProdArm5LSpecLinks
Initial value:
=
{
{ "base_fixed",
0.0
},
{ "base_rot",
0.0
},
{ "upper_arm",
406.27
},
{ "forearm",
401.6
},
{ "tool_zero",
0.0
}
}

Specification of links.

Data:
link_name,
length(mm)

TODO

Definition at line 81 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_1_1
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v1.1.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 87 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_1_2
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v1.2.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 93 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_1_3
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v1.3.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 99 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_1_3_5
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v1.4.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 105 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_1_4
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v1.4.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 111 of file hekProdArm5L.h.

const HekSpecServo_T hekateros::HekProdArm5LSpecServos_2_0
Initial value:
=
{
{HekServoIdBase, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdShoulderL, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdShoulderR, false, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdElbow, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
{HekServoIdWristPitch, true, true, DYNA_DIR_CCW, HekTuneOverTorqueThDft},
{HekServoIdWristRot, true, true, DYNA_DIR_CW, HekTuneOverTorqueThDft},
}

Specification of servos, v2.0.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir toque_limit(% of max)

Definition at line 117 of file hekProdArm5L.h.

const double hekateros::HekProdEEFixedLinkLengths[HekProdEEFixedNumLinks]
Initial value:
=
{
0.0
}

Link lengths (mm).

Definition at line 91 of file hekProdEEFixed.h.

const HekSpecJoint_T hekateros::HekProdEEGraboidSpecJoints_1_0
Initial value:
=
{
{ "grip",
0.0, 60.0, HekLimitTypePhys,
{
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
},
5.0, 20.0, 20.0,
0, 1
}
}

Specification of joints, v1.0.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 90 of file hekProdEEGraboid.h.

const HekSpecJoint_T hekateros::HekProdEEGraboidSpecJoints_1_1
Initial value:
=
{
{ "grip",
0.0, 60.0, HekLimitTypePhys,
{
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
},
5.0, 20.0, 20.0,
0, 1
}
}

Specification of joints, v1.1.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 96 of file hekProdEEGraboid.h.

const HekSpecJoint_T hekateros::HekProdEEGraboidSpecJoints_1_2
Initial value:
=
{
{ "grip",
0.0, 60.0, HekLimitTypePhys,
{
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 },
{ HekIOExpUnassigned, 0.0, 0.0, 0.0, 0.0, 0.0 }
},
5.0, 20.0, 20.0,
0, 1
}
}

Specification of joints, v1.2.

Specification of joints.

Data:
joint_name,
master_servo_id, slave_servo_id, joint_type, gear_ratio,
min_phy_limit(deg), max_phy_limit(deg), limit_types,
{ {io_bit_0, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, {io_bit_1, min_edge_pos(deg), min_black_pos(deg), center_pos(deg), max_black_pos(deg), max_edge_pos(deg) }, calib_pos(deg), balanced_pos(deg), park_pos(deg)
parent_link_idx, child_link_index

Definition at line 102 of file hekProdEEGraboid.h.

const HekSpecLink_T hekateros::HekProdEEGraboidSpecLinks
Initial value:
=
{
{ "gear_assembly",
0.0
},
{ "finger_L",
0.0
},
{ "finger_R",
406.27
}
}

Specification of links.

Data:
name,
length(mm)

TODO

Definition at line 87 of file hekProdEEGraboid.h.

const HekSpecServo_T hekateros::HekProdEEGraboidSpecServos_1_0
Initial value:
=
{
{HekServoIdGraboid, true, false, DYNA_DIR_CW, 60.0}
}

Specification of servos, v1.0.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir_to_max toque_limit(% of max)

Definition at line 93 of file hekProdEEGraboid.h.

const HekSpecServo_T hekateros::HekProdEEGraboidSpecServos_1_1
Initial value:
=
{
{HekServoIdGraboid, true, true, DYNA_DIR_CW, HekTuneEEOverTorqueThDft}
}

Specification of servos, v1.1.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir_to_max toque_limit(% of max)

Definition at line 99 of file hekProdEEGraboid.h.

const HekSpecServo_T hekateros::HekProdEEGraboidSpecServos_1_2
Initial value:
=
{
{HekServoIdGraboid, true, true, DYNA_DIR_CW, HekTuneEEOverTorqueThDft}
}

Specification of servos, v1.2.

Specification of servos.

Data:
servo_id, is_master, is_continuous, dir_to_max toque_limit(% of max)

Definition at line 105 of file hekProdEEGraboid.h.

const double hekateros::HekTuneClearTorqueOffsetDft = 90.0
static

Default clear torque condition hysteresis threshhold offset (% of over torque threshold).

The fraction is of the joint's over torque threshold. Once the servos associtated with a joint enter the over torque condition, the condition does not clear until torque is below the clear torque threshold.

The working value is converted to raw motor load values internally.

* clear_torque_offset = tune_clear_torque_offset / 100.0
* clear_over_torque_cond_th = over_torque_th * clear_torque_offset
* 

Range: [HekTuneClearTorqueOffsetMin, HekTuneClearTorqueOffsetMax] Scope: global

Definition at line 172 of file hekTune.h.

const double hekateros::HekTuneEEOverTorqueThDft = 40.0
static

Default end effector over torque threshold (% of maximum)

Default default for all end effector joints. The actual defaults are specified in the compiled product spec on a per joint basis.

The working value is converted to raw motor load values internally.

* over_torque_th = tune_over_torque_th / 100.0 * max_motor_load(joint)
* 

Range: [HekTuneOverTorqueThMin, HekTuneOverTorqueThMax] Scope: global

Definition at line 138 of file hekTune.h.

const double hekateros::HekTuneKinHzDft = 30.0
static

Default kinematics thread cycle rate (Hertz).

defgroup hek_tunes

All dynamics and kinematics tasks exectute per each cycle.

* kin_hz = tune_kin_hz
* T_task = 1/kin_hz * 1/(numof_joints + 1)
*   Where each joint dynamics is monitored and controlled each cycle and the
*   extra task is for health monitoring.
* 

Range: ≥ HekTuneKinHzMin Scope: global

Definition at line 93 of file hekTune.h.

const double hekateros::HekTuneKinHzMin = 0.1
static

Minimum kinematics thread cycle rate (Hertz).

Gotta give me something boys!

Definition at line 100 of file hekTune.h.

Referenced by hekateros::HekKinematics::HekKinematics(), and hekateros::HekKinematics::setHz().

const double hekateros::HekTuneOverTorqueThDft = 80.0
static

Default joint over torque threshold (% of maximum)

Default default for all arm joints excluding end effector. The actual defaults are specified in the compiled product spec on a per joint basis.

The working value is converted to raw motor load values internally.

* over_torque_th = tune_over_torque_th / 100.0 * max_motor_load(joint)
* 

Range: [HekTuneOverTorqueThMin, HekTuneOverTorqueThMax] Scope: per joint

Definition at line 121 of file hekTune.h.

const double hekateros::HekTunePidKdDft = 0.1
static

Default joint position and velocity PID derivative constant.

Range: ≥ HekTunePidKMin Scope: per joint

Definition at line 301 of file hekTune.h.

const double hekateros::HekTunePidKiDft = 0.05
static

Default joint position and velocity PID integral constant.

Range: ≥ HekTunePidKMin Scope: per joint

Definition at line 293 of file hekTune.h.

const double hekateros::HekTunePidKpDft = 3.0
static

Default joint position and velocity PID proportional constant.

Range: ≥ HekTunePidKMin Scope: per joint

Definition at line 285 of file hekTune.h.

const double hekateros::HekTunePidMaxDeltaVDft = 30.0
static

Maximum PID delta V output (degrees/second)

Range: HekTunePidDeltaVNoMax or > 0.0 Scope: per joint

Definition at line 314 of file hekTune.h.

Referenced by hekateros::HekKinJoint::HekKinJoint().

const double hekateros::HekTuneTolPosDft = 0.2
static

Default joint position control tolerance (degrees).

A joint goal position that is within the position tolerance of the current joint position is considered identical. If the joint was moving to the goal position, the joint will be automatically stopped.

The working value is converted to radians internally.

* tol_pos = deg_to_rad(tune_tol_pos)
* |joint_goal_pos - joint_cur_pos| < tol_pos <==> same position.
* 

Range: ≥ HekTuneTolPosMin Scope: per joint

Definition at line 239 of file hekTune.h.

Referenced by hekateros::HekKinJoint::HekKinJoint().

const double hekateros::HekTuneTolVelDft = 1.0
static

Default joint velocity control tolerance (degrees/second).

A joint goal velocity that is within the velocity tolerance of the current joint velocity is considered identical. No speed updates will be written to the servo contoller.

The working value is converted to radians/second internally.

* tol_vel = deg_to_rad(tune_tol_vel)
* |joint_goal_vel - joint_cur_vel| < tol_vel <==> same velocity.
* 

Range: ≥ HekTuneTolVelMin Scope: per joint

Definition at line 268 of file hekTune.h.

Referenced by hekateros::HekKinJoint::HekKinJoint().

const double hekateros::HekTuneTrajEpsilonDft = 20.0
static

Default trajectory distance epsilon (degrees).

Trajectory waypoints distances within epsilon are considered reached.

The working value is converted to radians internally.

* ||WP-P|| < epsilon <==> waypoint reached
*   Where WP is the vector of joint waypoint positions and P is the vector
*   of current joint positions.
* 

Range: ≥ HekTuneTrajEpsilonMin

Definition at line 348 of file hekTune.h.

const HekNorm hekateros::HekTuneTrajNormDft = HekNormLinf
static

Default trajectory norm.

Range: HekNormL1, HekNormL2, HekNormLinf Scope: global

Definition at line 331 of file hekTune.h.

const double hekateros::HekTuneVelDerateDft = 100.0
static

Default Hekateros robot velocity derate (% of goal velocities).

When a new move command is received, all of the goal velocities are multiplied by this derated value.

The working value is converted to a normalized value internally.

* velocity_derate = tune_velocity_derate / 100.0
* joint_goal_vel = joint_goal_vel * velocity_derate
* 

Range: [HekTuneVelDerateMin, HekTuneVelDerateMax] Scope: global

Definition at line 206 of file hekTune.h.

Referenced by hekateros::HekKinJoint::HekKinJoint().


The documentation for this struct was generated from the following files: