Hekateros  3.4.3
RoadNarrows Robotics Robot Arm Project
hekateros.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Hekateros
4 //
5 // File: hekateros.h
6 //
7 /*! \file
8  *
9  * $LastChangedDate: 2015-04-17 15:31:34 -0600 (Fri, 17 Apr 2015) $
10  * $Rev: 3942 $
11  *
12  * \brief Top-level package include file.
13  *
14  * \author Robin Knight (robin.knight@roadnarrows.com)
15  * \author Daniel Packard (daniel@roadnarrows.com)
16  *
17  * \copyright
18  * \h_copy 2011-2018. RoadNarrows LLC.\n
19  * http://www.roadnarrows.com\n
20  * All Rights Reserved
21  */
22 /*
23  * @EulaBegin@
24  *
25  * Unless otherwise stated explicitly, all materials contained are copyrighted
26  * and may not be used without RoadNarrows LLC's written consent,
27  * except as provided in these terms and conditions or in the copyright
28  * notice (documents and software) or other proprietary notice provided with
29  * the relevant materials.
30  *
31  * IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY
32  * MEMBERS/EMPLOYEES/CONTRACTORS OF ROADNARROWS OR DISTRIBUTORS OF THIS SOFTWARE
33  * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
34  * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
35  * DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN
36  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  *
38  * THE AUTHORS AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
39  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
40  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
41  * "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
42  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
43  *
44  * @EulaEnd@
45  */
46 ////////////////////////////////////////////////////////////////////////////////
47 
48 #ifndef _HEKATEROS_H
49 #define _HEKATEROS_H
50 
51 /*!
52  * \brief The \h_hekateros namespace encapsulates all \h_hekateros related
53  * constructs.
54  */
55 #ifndef SWIG
56 namespace hekateros
57 {
58 #endif // SWIG
59 
60  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61 
62  /*!
63  * \ingroup hek_h
64  * \defgroup hek_ecodes Hekateros Error Codes
65  *
66  * Hekateros package-wide error codes.
67  *
68  * \{
69  */
70  static const int HEK_OK = 0; ///< not an error, success
71 
72  static const int HEK_ECODE_GEN = 1; ///< general, unspecified error
73  static const int HEK_ECODE_SYS = 2; ///< system (errno) error
74  static const int HEK_ECODE_INTERNAL = 3; ///< internal error (bug)
75  static const int HEK_ECODE_BAD_VAL = 4; ///< bad value general error
76  static const int HEK_ECODE_TOO_BIG = 5; ///< value/list/size too big
77  static const int HEK_ECODE_TOO_SMALL = 6; ///< value/list/size too small
78  static const int HEK_ECODE_RANGE = 7; ///< value out-of-range
79  static const int HEK_ECODE_BAD_OP = 8; ///< invalid operation error
80  static const int HEK_ECODE_TIMEDOUT = 9; ///< operation timed out error
81  static const int HEK_ECODE_NO_DEV = 10; ///< device not found error
82  static const int HEK_ECODE_NO_RSRC = 11; ///< no resource available error
83  static const int HEK_ECODE_BUSY = 12; ///< resource busy error
84  static const int HEK_ECODE_NO_EXEC = 13; ///< cannot execute error
85  static const int HEK_ECODE_PERM = 14; ///< no permissions error
86  static const int HEK_ECODE_DYNA = 15; ///< dynamixel error
87  static const int HEK_ECODE_VIDEO = 16; ///< video error
88  static const int HEK_ECODE_FORMAT = 17; ///< bad format
89  static const int HEK_ECODE_BOTSENSE = 18; ///< botsense error
90  static const int HEK_ECODE_NO_FILE = 19; ///< file not found
91  static const int HEK_ECODE_XML = 20; ///< XML error
92  static const int HEK_ECODE_ALARMED = 21; ///< robot is alarmed
93  static const int HEK_ECODE_INTR = 22; ///< operation interrupted
94  static const int HEK_ECODE_COLLISION = 23; ///< robot link(s) in collision
95  static const int HEK_ECODE_ESTOP = 24; ///< robot emergency stopped
96 
97  static const int HEK_ECODE_BADEC = 25; ///< bad error code
98 
99  static const int HEK_ECODE_NUMOF = 26; ///< number of error codes
100  /*! \} */
101 
102  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
103 
104  /*!
105  *
106  * \ingroup hek_h
107  * \defgroup hek_prod Hekateros Product Identifiers
108  *
109  * \h_hek product ids, names, and descriptions.
110  *
111  * Products ids are classified by class, family, size, dof, and special
112  * fields.
113  *
114  * \{
115  */
116 
117  //
118  // Product release status
119  //
120  #define HEK_PROD_GA 0x000 ///< product general availability
121  #define HEK_PROD_BETA 0x001 ///< product beta version
122  #define HEK_PROD_ALPHA 0x002 ///< product alpha version
123  #define HEK_PROD_PROTO 0x003 ///< product prototype version
124 
125  //
126  // Product classes
127  //
128  #define HEK_CLASS_ARM 0xBA000000 ///< base arm
129  #define HEK_CLASS_EE 0xEE000000 ///< end effector
130  #define HEK_CLASS_EQUIP_DECK 0xED000000 ///< equipment deck effector
131  #define HEK_CLASS_AUX 0xAE000000 ///< auxiliary effector
132 
133  /*!
134  * \brief Convert robotic arm (base) product triplet to product id.
135  *
136  * \param sizecode Product size code.
137  * \param dof Degrees of freedom.
138  * \param special Special product subfields. To be defined as needed.
139  */
140  #define HEK_PRODUCT_ID(sizecode, dof, special) \
141  ( HEK_CLASS_ARM | \
142  (((sizecode)&0xf)<<20) | (((dof)&0xff)<<12) | ((special)&0xfff) )
143 
144  /*!
145  * \brief Convert end effector product 4-tuple to product id.
146  *
147  * \param family End effector family
148  * \param sizecode Product size code.
149  * \param dof Degrees of freedom.
150  * \param special Special product subfields. To be defined as needed.
151  */
152  #define HEK_EE_PRODUCT_ID(family, sizecode, dof, special) \
153  ( HEK_CLASS_EE | (((family)&0xff)<<16) | \
154  (((sizecode)&0xf)<<12) | (((dof)&0xff)<<4) | ((special)&0xf) )
155 
156  /*!
157  * \brief Convert equipment deck effector product triplet to product id.
158  *
159  * \param sizecode Product size code.
160  * \param dof Degrees of freedom.
161  * \param special Special product subfields. To be defined as needed.
162  */
163  #define HEK_ED_PRODUCT_ID(sizecode, dof, special) \
164  ( HEK_CLASS_EQUIP_DECK | \
165  (((sizecode)&0xf)<<20) | (((dof)&0xff)<<12) | ((special)&0xfff) )
166 
167  /*!
168  * \brief Convert auxiliary effector product triplet to product id.
169  *
170  * \param sizecode Product size code.
171  * \param dof Degrees of freedom.
172  * \param special Special product subfields. To be defined as needed.
173  */
174  #define HEK_AE_PRODUCT_ID(sizecode, dof, special) \
175  ( HEK_CLASS_AUX | \
176  (((sizecode)&0xf)<<20) | (((dof)&0xff)<<12) | ((special)&0xfff) )
177 
178  /*!
179  * \brief Convert version triplet to integer equivalent.
180  *
181  * \param major Major version number.
182  * \param minor Minor version number.
183  * \param revision Revision number.
184  */
185  #define HEK_VERSION(major, minor, revision) \
186  ((((major)&0xff)<<24) | (((minor)&0xff)<<16) | ((revision)&0xffff))
187 
188  /*!
189  * \brief Get version major number from version.
190  *
191  * \param ver Version number.
192  *
193  * \return Major number.
194  */
195  #define HEK_VER_MAJOR(ver) (((ver)>>24) &0xff)
196 
197  /*!
198  * \brief Get version minor number from version.
199  *
200  * \param ver Version number.
201  *
202  * \return Minor number.
203  */
204  #define HEK_VER_MINOR(ver) (((ver)>>16) &0xff)
205 
206  /*!
207  * \brief Get revision number from version.
208  *
209  * \param ver Version number.
210  *
211  * \return Revision number.
212  */
213  #define HEK_VER_REV(ver) ((ver) & 0xffff)
214 
215 
216  const char* const HekProdFamily = "Hekateros"; ///< product family name
217 
218  const int HekProdFamilyUnknown = 0; ///< unknown/undefined product family
219  const int HekProdIdUnknown = 0; ///< unknown/undefined product id
220 
221  /*!
222  * \brief \h_hek product size codes.
223  *
224  * Sizes are relavent to the product family. For example, a short base is
225  * different from a short end effector.
226  */
228  {
229  HekProdSizeUnknown = 0, ///< unknown size
230  HekProdSizeStd = 1, ///< standard (normal) size
231  HekProdSizeShort = 2, ///< short
232  HekProdSizeLong = 3, ///< long
233  HekProdSizeMini = 4, ///< mini
234 
235  HekProdSizeNumOf = 5 ///< number of
236  };
237 
238  /*!
239  * \brief Common \h_hek product size codes as strings.
240  */
241  const char* const HekProdSizeStrUnknown = "?"; ///< unknown base size
242  const char* const HekProdSizeStrStd = "N"; ///< standard (normal) size
243  const char* const HekProdSizeStrShort = "S"; ///< short
244  const char* const HekProdSizeStrLong = "L"; ///< long
245  const char* const HekProdSizeStrMini = "Mini"; ///< mini
246  /*! \} */
247 
248  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249 
250  /*!
251  * \ingroup hek_spec
252  *
253  * \defgroup hek_common_spec Hekateros Common Specs
254  *
255  * \h_hek product family specifications.
256  *
257  * \{
258  */
259  // base servo ids
260  static const int HekServoIdBase = 1; ///< continuous rotating base
261  static const int HekServoIdShoulderL = 2; ///< left shoulder
262  static const int HekServoIdShoulderR = 3; ///< right shoulder (linked slave)
263  static const int HekServoIdElbow = 4; ///< elbow
264  static const int HekServoIdWristPitch = 5; ///< wrist pitch
265  static const int HekServoIdWristRot = 6; ///< wrist continuous rotation
266  static const int HekServoIdRsrv1 = 7; ///< reserved for future bases
267  static const int HekServoIdRsrv2 = 8; ///< reserved for future bases
268  static const int HekServoIdRsrv3 = 9; ///< reserved for future bases
269 
270  // end effector servo ids
271  static const int HekServoIdEEStart = 10; ///< start id
272  static const int HekServoIdGraboid = 10; ///< graboid
273 
274  // equipment deck effector servo ids
275  static const int HekServoIdEquipStart = 20; ///< start id
276  static const int HekServoIdEquipPan = 20; ///< pan
277  static const int HekServoIdEquipTilt = 21; ///< tilt
278 
279  // base auxiliary effector servo ids
280  static const int HekServoIdAuxStart = 30; ///< start id
281  static const int HekServoIdAuxPan = 30; ///< pan
282  static const int HekServoIdAuxTilt = 31; ///< tilt
283  /*! \} */
284 
285  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
286 
287  /*!
288  *
289  * \ingroup hek_h
290  * \defgroup hek_env Hekateros Environment
291  *
292  * Hekateros directories and files.
293  *
294  * \{
295  */
296 
297  //
298  // Images directory.
299  //
300  #ifdef HEK_IMAGE_DIR
301  const char* const HekImageDir = HEK_IMAGE_DIR; ///< image directory
302  #else
303  const char* const HekImageDir = "/usr/local/share/Hekateros/images";
304  ///< image directory
305  #endif
306 
307  //
308  // Icons directory.
309  //
310  #ifdef HEK_ICON_DIR
311  const char* const HekIconDir = HEK_ICON_DIR; ///< icon directory
312  #else
313  const char* const HekIconDir = "/usr/local/share/Hekateros/images/icons";
314  ///< icon directory
315  #endif
316 
317  //
318  // Paths
319  //
320 
321  /*! \brief System configuration search path. */
322  const char* const HekSysCfgPath = "/etc/hekateros:/etc";
323 
324  /*! \brief User configuration search path and inheritance order. */
325  const char* const HekUserCfgPath = "/etc/hekateros:~/.roadnarrows";
326 
327  //
328  // Top-level configuration XML file basename.
329  //
330  #ifdef HEK_ETC_CFG
331  const char* const HekEtcCfg = HEK_ETC_CFG; ///< xml configuration file
332  #else
333  const char* const HekEtcCfg = "hekateros.conf";
334  ///< xml configuration file
335  #endif
336 
337  //
338  // Tuning XML file basename.
339  //
340  #ifdef HEK_ETC_TUNE
341  const char* const HekEtcTune = HEK_ETC_TUNE; ///< xml tune file
342  #else
343  const char* const HekEtcTune = "hek_tune.conf";
344  ///< xml tune file
345  #endif
346 
347  //
348  // Specific Hekateros application configuration file basenames.
349  //
350  const char* const HekPanelXml = "hek_panel.xml"; ///< hek_panel configuration
351  const char* const HekEECamXml = "hek_eecam.xml"; ///< end effector camera cfg
352  const char* const HekXboxXml = "hek_xbox.xml"; ///< Xbox teleop config
353 
354  //
355  // XML stylesheet URL
356  //
357  #ifdef HEK_XSL_URL
358  const char* const HekXslUrl = HEK_XSL_URL; ///< xml stylesheet url
359  #else
360  const char* const HekXslUrl =
361  "http://roadnarrows.com/xml/Hekateros/1.0/hekateros.xsl";
362  ///< xml stylesheet url
363  #endif
364 
365  //
366  // XML schema instance URL
367  //
368  #ifdef HEK_XSI_URL
369  const char* const HekXsiUrl = HEK_XSI_URL; ///< xml schema instance url
370  #else
371  const char* const HekXsiUrl =
372  "http://roadnarrows.com/xml/Hekateros/1.0/hekateros.xsd";
373  ///< xml schema instance url
374  #endif
375 
376  //
377  // I2C default device name (deprecated)
378  //
379  #ifdef HEK_DEV_I2C
380  const char* const HekI2CDevice = HEK_DEV_I2C; ///< i2c device name
381  #else
382  const char* const HekI2CDevice = "/dev/i2c-3"; ///< i2c device name
383  #endif
384 
385  //
386  // Alarm LED GPIO number (deprecated)
387  //
388  // Direction: Output
389  //
390  #ifdef HEK_GPIO_ALARM
391  const int HekGpioAlarmLED = HEK_GPIO_ALARM; ///< alarm led gpio number
392  #else
393  const int HekGpioAlarmLED = 10; ///< alarm led gpio number
394  #endif
395 
396  //
397  // Halt GPIO number.
398  //
399  // Direction: Input
400  //
401  // Signal received from the monitor subprocessor to halt the system.
402  //
403  #ifdef HEK_GPIO_HALT
404  const int HekGpioHalt = HEK_ALARM_HALT; ///< halt gpio number
405  #else
406  const int HekGpioHalt = 174; ///< halt gpio number
407  #endif
408 
409  //
410  // Halted GPIO number.
411  //
412  // Direction: Output
413  //
414  // Signal sent to the monitor subprocessor to indicate main processor is in
415  // the safe-to-power-off state.
416  //
417  #ifdef HEK_GPIO_HALTED
418  const int HekGpioHalted = HEK_ALARM_HALTED; ///< halt gpio number
419  #else
420  const int HekGpioHalted = 170; ///< halt gpio number
421  #endif
422 
423  //
424  // Dynabus USB serial default device name.
425  //
426  #ifdef HEK_DEV_DYNABUS
427  const char* const HekDevDynabus = HEK_DEV_DYNABUS; ///< dynabus device name
428  #else
429  const char* const HekDevDynabus = "/dev/dynabus"; ///< dynabus device name
430  #endif
431 
432  //
433  // Dynabus default baud rate.
434  //
435  #ifdef HEK_BAUDRATE_DYNABUS
436  const int HekBaudRateDynabus = HEK_BAUDRATE_DYNABUS; ///< dynabus baudrate
437  #else
438  const int HekBaudRateDynabus = 1000000; ///< dynabus baudrate
439  #endif
440 
441  //
442  // Arduino subprocessor USB serial default device name.
443  //
444  #ifdef HEK_DEV_ARDUINO
445  const char* const HekDevArduino = HEK_DEV_ARDUINO; ///< arduino device name
446  #else
447  const char* const HekDevArduino = "/dev/arduino"; ///< arduino device name
448  #endif
449 
450  //
451  // Arduino default baud rate.
452  //
453  #ifdef HEK_BAUDRATE_ARDUINO
454  const int HekBaudRateArduino = HEK_BAUDRATE_ARDUINO; ///< arduino baudrate
455  #else
456  const int HekBaudRateArduino = 115200; ///< arduino baudrate
457  #endif
458 
459  /*! \} */
460 
461  // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
462 
463  /*!
464  *
465  * \ingroup hek_h
466  * \defgroup hek_types Hekateros Common Simple Types
467  *
468  * Common types used to control and report robot information.
469  * fields.
470  *
471  * \{
472  */
473 
474  /*!
475  * \brief \h_hek tri-state type.
476  *
477  * Basically, a tri-state value is either unknown, 0, or 1.
478  */
480  {
481  // unknown
482  HekTriStateUnknown = -1, ///< unknown state
483 
484  // low state synonyms
485  HekTriStateFalse = 0, ///< false
486  HekTriStateOff = 0, ///< off
487  HekTriStateDisabled = 0, ///< disabled
488  HekTriStateLow = 0, ///< low
489  HekTriStateOpen = 0, ///< open
490  HekTriStateDark = 0, ///< dark
491 
492  // high state synonyms
493  HekTriStateTrue = 1, ///< true
494  HekTriStateOn = 1, ///< on
495  HekTriStateEnabled = 1, ///< enabled
496  HekTriStateHigh = 1, ///< high
497  HekTriStateClosed = 1, ///< closed
498  HekTriStateLight = 1 ///< light
499  };
500 
501  /*!
502  * \brief \h_hek mode of operation.
503  *
504  * Robot mode of operation.
505  */
507  {
508  HekRobotModeUnknown = -1, ///< unknown mode state
509  HekRobotModeManual = 1, ///< can only be operated locally, not remotely
510  HekRobotModeAuto = 2 ///< fully available
511  };
512 
513  /*!
514  * \brief Robot or joint operational states.
515  */
517  {
518  HekOpStateUncalibrated = 0, ///< uncalibrated
519  HekOpStateCalibrating = 1, ///< calibrating
520  HekOpStateCalibrated = 2 ///< calibrated
521  };
522 
523  /*!
524  * \brief Asynchronous task state.
525  */
527  {
528  HekAsyncTaskStateIdle = 0, ///< idle, no async task running
529  HekAsyncTaskStateWorking = 1 ///< async task running
530  };
531 
532  /*!
533  * \brief Length/Distance Norm
534  */
535  enum HekNorm
536  {
537  HekNormL1 = 1, ///< L1 norm (taxicab or manhattan norm)
538  HekNormL2 = 2, ///< L2 norm (Euclidean norm)
539  HekNormLinf = 3 ///< Linf norm (maximum, infinity, or supremum norm)
540  };
541 
542  /*! \} */
543 
544 #ifndef SWIG
545 } // namespace hekateros
546 #endif // SWIG
547 
548 
549 #endif // _HEKATEROS_H
static const int HEK_ECODE_NUMOF
number of error codes
Definition: hekateros.h:99
const char *const HekXboxXml
Xbox teleop config.
Definition: hekateros.h:352
const char *const HekSysCfgPath
System configuration search path.
Definition: hekateros.h:322
static const int HEK_ECODE_NO_DEV
device not found error
Definition: hekateros.h:81
const char *const HekIconDir
icon directory
Definition: hekateros.h:313
standard (normal) size
Definition: hekateros.h:230
HekProdSize
<b><i>Hekateros</i></b> product size codes.
Definition: hekateros.h:227
static const int HekServoIdRsrv3
reserved for future bases
Definition: hekateros.h:268
static const int HEK_OK
not an error, success
Definition: hekateros.h:70
const char *const HekXsiUrl
xml schema instance url
Definition: hekateros.h:371
static const int HekServoIdWristPitch
wrist pitch
Definition: hekateros.h:264
static const int HekServoIdElbow
elbow
Definition: hekateros.h:263
const char *const HekEECamXml
end effector camera cfg
Definition: hekateros.h:351
static const int HEK_ECODE_PERM
no permissions error
Definition: hekateros.h:85
static const int HEK_ECODE_BUSY
resource busy error
Definition: hekateros.h:83
const int HekProdIdUnknown
unknown/undefined product id
Definition: hekateros.h:219
const int HekGpioHalt
halt gpio number
Definition: hekateros.h:406
static const int HEK_ECODE_NO_EXEC
cannot execute error
Definition: hekateros.h:84
const int HekBaudRateDynabus
dynabus baudrate
Definition: hekateros.h:438
HekRobotMode
<b><i>Hekateros</i></b> mode of operation.
Definition: hekateros.h:506
static const int HEK_ECODE_TIMEDOUT
operation timed out error
Definition: hekateros.h:80
static const int HEK_ECODE_TOO_BIG
value/list/size too big
Definition: hekateros.h:76
const char *const HekDevDynabus
dynabus device name
Definition: hekateros.h:429
static const int HekServoIdEquipPan
pan
Definition: hekateros.h:276
HekAsyncTaskState
Asynchronous task state.
Definition: hekateros.h:526
const char *const HekI2CDevice
i2c device name
Definition: hekateros.h:382
L2 norm (Euclidean norm)
Definition: hekateros.h:538
static const int HEK_ECODE_TOO_SMALL
value/list/size too small
Definition: hekateros.h:77
static const int HekServoIdEquipStart
start id
Definition: hekateros.h:275
static const int HEK_ECODE_BAD_OP
invalid operation error
Definition: hekateros.h:79
static const int HEK_ECODE_FORMAT
bad format
Definition: hekateros.h:88
const char *const HekProdSizeStrStd
standard (normal) size
Definition: hekateros.h:242
fully available
Definition: hekateros.h:510
const char *const HekProdFamily
product family name
Definition: hekateros.h:216
HekTriState
<b><i>Hekateros</i></b> tri-state type.
Definition: hekateros.h:479
const char *const HekProdSizeStrShort
short
Definition: hekateros.h:243
static const int HEK_ECODE_XML
XML error.
Definition: hekateros.h:91
const char *const HekProdSizeStrLong
long
Definition: hekateros.h:244
static const int HekServoIdRsrv1
reserved for future bases
Definition: hekateros.h:266
const char *const HekXslUrl
xml stylesheet url
Definition: hekateros.h:360
static const int HEK_ECODE_SYS
system (errno) error
Definition: hekateros.h:73
static const int HEK_ECODE_INTR
operation interrupted
Definition: hekateros.h:93
HekOpState
Robot or joint operational states.
Definition: hekateros.h:516
const char *const HekEtcTune
xml tune file
Definition: hekateros.h:343
static const int HEK_ECODE_INTERNAL
internal error (bug)
Definition: hekateros.h:74
const int HekGpioAlarmLED
alarm led gpio number
Definition: hekateros.h:393
const int HekGpioHalted
halt gpio number
Definition: hekateros.h:420
static const int HEK_ECODE_BADEC
bad error code
Definition: hekateros.h:97
static const int HEK_ECODE_NO_RSRC
no resource available error
Definition: hekateros.h:82
const char *const HekPanelXml
hek_panel configuration
Definition: hekateros.h:350
static const int HEK_ECODE_DYNA
dynamixel error
Definition: hekateros.h:86
static const int HEK_ECODE_RANGE
value out-of-range
Definition: hekateros.h:78
static const int HekServoIdShoulderL
left shoulder
Definition: hekateros.h:261
const char *const HekProdSizeStrMini
mini
Definition: hekateros.h:245
static const int HekServoIdBase
continuous rotating base
Definition: hekateros.h:260
const char *const HekImageDir
image directory
Definition: hekateros.h:303
Linf norm (maximum, infinity, or supremum norm)
Definition: hekateros.h:539
static const int HEK_ECODE_COLLISION
robot link(s) in collision
Definition: hekateros.h:94
static const int HEK_ECODE_NO_FILE
file not found
Definition: hekateros.h:90
static const int HEK_ECODE_ESTOP
robot emergency stopped
Definition: hekateros.h:95
static const int HekServoIdShoulderR
right shoulder (linked slave)
Definition: hekateros.h:262
static const int HekServoIdWristRot
wrist continuous rotation
Definition: hekateros.h:265
const int HekBaudRateArduino
arduino baudrate
Definition: hekateros.h:456
static const int HEK_ECODE_ALARMED
robot is alarmed
Definition: hekateros.h:92
L1 norm (taxicab or manhattan norm)
Definition: hekateros.h:537
HekNorm
Length/Distance Norm.
Definition: hekateros.h:535
static const int HEK_ECODE_BOTSENSE
botsense error
Definition: hekateros.h:89
static const int HekServoIdAuxStart
start id
Definition: hekateros.h:280
const int HekProdFamilyUnknown
unknown/undefined product family
Definition: hekateros.h:218
static const int HekServoIdAuxTilt
tilt
Definition: hekateros.h:282
static const int HekServoIdAuxPan
pan
Definition: hekateros.h:281
const char *const HekDevArduino
arduino device name
Definition: hekateros.h:447
static const int HEK_ECODE_GEN
general, unspecified error
Definition: hekateros.h:72
const char *const HekProdSizeStrUnknown
Common <b><i>Hekateros</i></b> product size codes as strings.
Definition: hekateros.h:241
const char *const HekUserCfgPath
User configuration search path and inheritance order.
Definition: hekateros.h:325
static const int HEK_ECODE_BAD_VAL
bad value general error
Definition: hekateros.h:75
static const int HekServoIdEEStart
start id
Definition: hekateros.h:271
static const int HekServoIdGraboid
graboid
Definition: hekateros.h:272
const char *const HekEtcCfg
xml configuration file
Definition: hekateros.h:333
static const int HekServoIdRsrv2
reserved for future bases
Definition: hekateros.h:267
static const int HEK_ECODE_VIDEO
video error
Definition: hekateros.h:87
unknown mode state
Definition: hekateros.h:508
The <b><i>Hekateros</i></b> namespace encapsulates all <b><i>Hekateros</i></b> related constructs...
Definition: hekateros.h:56
static const int HekServoIdEquipTilt
tilt
Definition: hekateros.h:277
idle, no async task running
Definition: hekateros.h:528
can only be operated locally, not remotely
Definition: hekateros.h:509