Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
laeDesc.h
Go to the documentation of this file.
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Package: Laelaps
4 //
5 // Library: liblaelaps
6 //
7 // File: laeDesc.h
8 //
9 /*! \file
10  *
11  * $LastChangedDate: 2016-02-15 15:44:49 -0700 (Mon, 15 Feb 2016) $
12  * $Rev: 4320 $
13  *
14  * \brief Laelaps robotic base mobile platform description class interface.
15  *
16  * The description does not include any payload descriptions.
17  * Any applicable tuning parameters override the description.
18  *
19  * \author Robin Knight (robin.knight@roadnarrows.com)
20  *
21  * \par Copyright
22  * \h_copy 2015-2017. RoadNarrows LLC.\n
23  * http://www.roadnarrows.com\n
24  * All Rights Reserved
25  */
26 /*
27  * @EulaBegin@
28  *
29  * Unless otherwise stated explicitly, all materials contained are copyrighted
30  * and may not be used without RoadNarrows LLC's written consent,
31  * except as provided in these terms and conditions or in the copyright
32  * notice (documents and software) or other proprietary notice provided with
33  * the relevant materials.
34  *
35  * IN NO EVENT SHALL THE AUTHOR, ROADNARROWS LLC, OR ANY
36  * MEMBERS/EMPLOYEES/CONTRACTORS OF ROADNARROWS OR DISTRIBUTORS OF THIS SOFTWARE
37  * BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
38  * CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
39  * DOCUMENTATION, EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN
40  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41  *
42  * THE AUTHORS AND ROADNARROWS LLC SPECIFICALLY DISCLAIM ANY WARRANTIES,
43  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
44  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN
45  * "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO
46  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
47  *
48  * @EulaEnd@
49  */
50 ////////////////////////////////////////////////////////////////////////////////
51 
52 #ifndef _LAE_DESC_H
53 #define _LAE_DESC_H
54 
55 #include <stdio.h>
56 
57 #include <string>
58 #include <map>
59 #include <vector>
60 
61 #include "rnr/rnrconfig.h"
62 
63 #include "Laelaps/laelaps.h"
64 #include "Laelaps/laeUtils.h"
65 #include "Laelaps/laeSysDev.h"
66 #include "Laelaps/laeMotor.h"
67 
68 
69 namespace laelaps
70 {
71  /*!
72  * \brief Supported joint/wheel types. Not really used for now.
73  */
75  {
76  LaeJointTypeUnknown = 0, ///< unknown/undefined joint type
77  LaeJointTypeFixed, ///< fixed joint
78  LaeJointTypeRevolute, ///< limited rotation
79  LaeJointTypeContinuous, ///< continuous rotation
80  LaeJointTypeRevMimic, ///< mimic rotation (e.g. fingers)
81 
82  LaeJointTypeNumOf = 4 ///< number of supported joint types
83  };
84 
85  /*!
86  * \brief Joint/wheel location detection types.
87  *
88  * A joint may have more than one type.
89  */
91  {
92  LaeEncTypeUnknown = 0x00, ///< unknown/undefined encoder type
93  LaeEncTypeNone = 0x01, ///< no encoder
94  LaeEncTypePhys = 0x02, ///< physical torque with relative encoder
95  LaeEncTypeElec = 0x04, ///< limit switch with relative encoder
96  LaeEncTypeElecTDC = 0x08, ///< top dead center switch with rel. enc.
97  LaeEncTypeAbs = 0x10, ///< absolute encoder
98  LaeEncTypeQuadrature = 0x20, ///< quadrature encoder
99 
100  LaeEncTypeNumOf = 6 ///< number of supported location types
101  };
102 
103 
104  // ---------------------------------------------------------------------------
105  // Class LaeDescBase
106  // ---------------------------------------------------------------------------
107 
108  /*!
109  * \brief Robotic base platform description.
110  *
111  * A base includes the body, suspension, power supply, and fixed interfaces.
112  */
114  {
115  public:
116  std::string m_strKey; ///< base name
117  Dim m_dimRobot; ///< robot full dimensions(m)
118  Dim m_dimBody; ///< body dimensions(m)
119  double m_fWheelbase; ///< wheelbase(m)
120  double m_fWheeltrack; ///< wheeltrack(m)
121  int m_nNumMotorCtlrs; ///< number of motor controllers
122  int m_nNumMotors; ///< number of motors
123 
124  /*!
125  * \brief Default constructor.
126  */
127  LaeDescBase();
128 
129  /*!
130  * \brief Destructor.
131  */
132  virtual ~LaeDescBase();
133 
134  /*!
135  * \brief Assignment operator.
136  *
137  * \param rhs Right hand side object.
138  *
139  * \return this.
140  */
141  LaeDescBase operator=(const LaeDescBase &rhs);
142 
143  /*!
144  * \brief Clear description.
145  */
146  void clear();
147 
148  /*!
149  * \brief Calculate robot dimensions.
150  *
151  * \param fTireRadius Tire radius (meters).
152  * \param fTireWidth Tire width (meters).
153  */
154  void calcDimensions(double fTireRadius, double fTireWidth);
155 
156  /*!
157  * \brief Print out description to stdout.
158  *
159  * \param indent Left indentation.
160  */
161  virtual void print(int indent = 0);
162 
163  }; // class LaeDescBase
164 
165 
166  // ---------------------------------------------------------------------------
167  // Class LaeDescPowertrain
168  // ---------------------------------------------------------------------------
169 
170  /*!
171  * \brief Robotic powertrain description.
172  *
173  * A powertrain includes the motor and drivetrain. The drivetrain is the
174  * group of components that deliver power to the driving wheel(s) including
175  * encoders, gears, axles, wheels, and tires.
176  */
178  {
179  public:
180  std::string m_strKey; ///< powertrain key
181  int m_nMotorId; ///< unique robot motor id
182  int m_nMotorCtlrId; ///< unique motor controller id
183  int m_nMotorIndex; ///< motor controller unique motor index
184  LaeJointType m_eJointType; ///< powertrain joint type
185  LaeEncType m_eEncType; ///< encoder type
186  double m_fGearRatio; ///< motor gear ratio
187  int m_nDir; ///< normalize cw/ccw direction.
188 
189  /*!
190  * \brief Default constructor.
191  */
193 
194  /*!
195  * \brief Initialization constructor.
196  */
197  LaeDescPowertrain(const std::string &strKey);
198 
199  /*!
200  * \brief Destructor.
201  */
202  virtual ~LaeDescPowertrain();
203 
204  /*!
205  * \brief Assignment operator.
206  *
207  * \param rhs Right hand side object.
208  *
209  * \return this.
210  */
212 
213  /*!
214  * \brief Clear description.
215  */
216  void clear();
217 
218  /*!
219  * \brief Print out description to stdout.
220  *
221  * \param indent Left indentation.
222  */
223  virtual void print(int indent = 0);
224 
225  }; // class LaeDescPowertrain
226 
227 
228  // ---------------------------------------------------------------------------
229  // Class LaeDescBattery
230  // ---------------------------------------------------------------------------
231 
232  /*!
233  * \brief Battery description.
234  */
236  {
237  public:
238  std::string m_strKey; ///< battery key
239  std::string m_strType; ///< battery type
240  std::string m_strChemistry; ///< battery chemistry
241  int m_nNumCells; ///< number of cells
242  double m_fCapacity; ///< battery capacity(Ah)
243  double m_fMaxV; ///< battery maximum high charge (V)
244  double m_fMinV; ///< battery minimum low at cutoff (V)
245  double m_fNomV; ///< battery nominal voltage (V)
246 
247  /*!
248  * \brief Default constructor.
249  */
250  LaeDescBattery();
251 
252  /*!
253  * \brief Destructor.
254  */
255  virtual ~LaeDescBattery();
256 
257  /*!
258  * \brief Assignment operator.
259  *
260  * \param rhs Right hand side object.
261  *
262  * \return this.
263  */
265 
266  /*!
267  * \brief Clear description.
268  */
269  void clear();
270 
271  /*!
272  * \brief Print out description to stdout.
273  *
274  * \param indent Left indentation.
275  */
276  virtual void print(int indent = 0);
277 
278  }; // class LaeDescBattery
279 
280 
281  // ---------------------------------------------------------------------------
282  // Class LaeDescRangeSensor
283  // ---------------------------------------------------------------------------
284 
285  /*!
286  * \brief Range sensor description.
287  */
289  {
290  public:
291  std::string m_strKey; ///< range sensor key
292  int m_nChan; ///< channel number
293  double m_fDir; ///< sensor direction (radians)
294  double m_fDeadzone; ///< deadzone (meters)
295  std::string m_strDesc; ///< short description string
296 
297  /*!
298  * \brief Default constructor.
299  */
301 
302  /*!
303  * \brief Initialization constructor.
304  */
305  LaeDescRangeSensor(const std::string &strKey);
306 
307  /*!
308  * \brief Destructor.
309  */
310  virtual ~LaeDescRangeSensor();
311 
312  /*!
313  * \brief Assignment operator.
314  *
315  * \param rhs Right hand side object.
316  *
317  * \return this.
318  */
320 
321  /*!
322  * \brief Clear description.
323  */
324  void clear();
325 
326  /*!
327  * \brief Print out description to stdout.
328  *
329  * \param indent Left indentation.
330  */
331  virtual void print(int indent = 0);
332 
333  protected:
334 
335  /*!
336  * \brief Make sensor description string from description.
337  */
338  virtual void makeDesc();
339 
340  }; // class LaeDescRangeSensor
341 
342 
343  // ---------------------------------------------------------------------------
344  // Class LaeDescImu
345  // ---------------------------------------------------------------------------
346 
347  /*!
348  * \brief Robotic built-in IMU description.
349  */
351  {
352  public:
353  std::string m_strKey; ///< base key
354  std::string m_strHw; ///< hardware
355  std::string m_strFw; ///< firmware
356 
357  /*!
358  * \brief Default constructor.
359  */
360  LaeDescImu();
361 
362  /*!
363  * \brief Destructor.
364  */
365  virtual ~LaeDescImu();
366 
367  /*!
368  * \brief Assignment operator.
369  *
370  * \param rhs Right hand side object.
371  *
372  * \return this.
373  */
374  LaeDescImu operator=(const LaeDescImu &rhs);
375 
376  /*!
377  * \brief Clear description.
378  */
379  void clear();
380 
381  /*!
382  * \brief Print out description to stdout.
383  *
384  * \param indent Left indentation.
385  */
386  virtual void print(int indent = 0);
387 
388  }; // class LaeDescImu
389 
390 
391  // ---------------------------------------------------------------------------
392  // Class LaeDescOptions
393  // ---------------------------------------------------------------------------
394 
395  /*!
396  * \brief Package options class
397  */
399  {
400  public:
401  static const char* const PkgOptStd; ///< standard package option
402  static const char* const PkgOptDeluxe; ///< deluxe package option
403 
404  std::string m_strPkgToF; ///< range time-of-flight package
405  std::string m_strPkgFCam; ///< front camera package
406 
407  /*!
408  * \brief Default constructor.
409  */
410  LaeDescOptions();
411 
412  /*!
413  * \brief Destructor.
414  */
415  virtual ~LaeDescOptions();
416 
417  /*!
418  * \brief Assignment operator.
419  *
420  * \param rhs Right hand side object.
421  *
422  * \return this.
423  */
425 
426  /*!
427  * \brief Clear description.
428  */
429  void clear();
430 
431  /*!
432  * \brief Print out description to stdout.
433  *
434  * \param indent Left indentation.
435  */
436  virtual void print(int indent = 0);
437 
438  }; // class LaeDescImu
439 
440 
441  // ---------------------------------------------------------------------------
442  // Class LaeDesc
443  // ---------------------------------------------------------------------------
444 
445  /*!
446  * \brief Laelaps robotic mobile platform full description class.
447  *
448  * The description is determined from the XML etc configuration file. From
449  * those description components, the compiled description are assigned.
450  */
451  class LaeDesc
452  {
453  public:
454  /*! Map of powertrain descriptions type. */
455  typedef std::map<std::string, LaeDescPowertrain*> MapDescPowertrain;
456 
457  /*! Map of range sensor descriptions type. */
458  typedef std::map<std::string, LaeDescRangeSensor*> MapDescRangeSensor;
459 
460  static const char* const KeyRobotBase; ///< robot base key
461  static const char* const KeyBattery; ///< internal battery key
462  static const char* const KeyMotorCtlr[]; ///< motor controller keys
463  static const char* const KeyPowertrain[]; ///< powertrain keys
464  static const char* const KeyImu; ///< built-in IMU keys
465  static const char* const KeyRangeSensorMax[];///< max range sensor keys
466  static const char* const KeyRangeSensorStd[];///< std range sensor keys
467  static const char* const KeyFCam; ///< front camera keys
468 
469  /*!
470  * \brief Create pretty motor controller identifier string.
471  *
472  * \param nCtlrId Unique motor controller id.
473  *
474  * \return String
475  */
476  static std::string prettyMotorCtlrName(int nCtlrId);
477 
478  /*!
479  * \brief Create pretty motor controller identifier string.
480  *
481  * \param nCtlrId Unique motor controller id.
482  * \param addr Motor controller packet address.
483  *
484  * \return String
485  */
486  static std::string prettyMotorCtlrName(int nCtlrId, byte_t addr);
487 
488  /*!
489  * \brief Create pretty motor/powertrain identifier string.
490  *
491  * \param nMotorId Unique motor id.
492  *
493  * \return String
494  */
495  static std::string prettyMotorName(int nMotorId);
496 
497  /*!
498  * \brief Create pretty motor/powertrain identifier string.
499  *
500  * \param nCtlrId Unique motor controller id.
501  * \param addr Motor controller packet address.
502  * \param nMotorId Unique motor id.
503  *
504  * \return String
505  */
506  static std::string prettyMotorName(int nCtlrId, byte_t addr, int nMotorId);
507 
508 
509  // RoadNarrows product identifiers
510  bool m_bIsDescribed; ///< \h_laelaps is [not] fully described
511  int m_eProdId; ///< base product id
512  std::string m_strProdFamily; ///< product family
513  std::string m_strProdModel; ///< product model
514  std::string m_strProdName; ///< product name
515  std::string m_strProdBrief; ///< product brief
516  std::string m_strProdHwVer; ///< product hardware version string
517  uint_t m_uProdHwVer; ///< product hardware version number
518 
519  // RoadNarrows package options
520  LaeDescOptions m_options;
521 
522  // RoadNarrows product descriptions
523  LaeDescBase *m_pDescBase; ///< base description
524  LaeDescBattery *m_pDescBattery; ///< internal battery description
525  MapDescPowertrain m_mapDescPowertrain; ///< powertrain descriptions
526  MapDescRangeSensor m_mapDescRangeSensor; ///< range sensor descriptions
527  LaeDescImu *m_pDescImu; ///< built-in imu description
528 
529  /*!
530  * \breif Default constructor.
531  */
532  LaeDesc();
533 
534  /*!
535  * \breif Destructor.
536  */
537  virtual ~LaeDesc();
538 
539  /*!
540  * \brief Mark \h_laelaps hardware as fully described.
541  *
542  * The calling application context determines this state.
543  *
544  * \copydoc doc_return_std
545  */
546  int markAsDescribed();
547 
548  /*!
549  * \brief Clear description to the "unitialized" values.
550  */
551  void clear();
552 
553  /*!
554  * \brief Test if required base description is adequately described.
555  *
556  * \return Returns true or false.
557  */
558  bool isDescribed() const
559  {
560  return m_bIsDescribed;
561  }
562 
563  /*!
564  * \brief Get this base description's base product id.
565  *
566  * \return Returns product id. See \ref LaeProdId.
567  */
568  int getProdId() const
569  {
570  return m_eProdId;
571  }
572 
573  /*!
574  * \brief Get this base description's name.
575  *
576  * \return Returns string.
577  */
578  std::string getProdName() const
579  {
580  return m_strProdName;
581  }
582 
583  /*!
584  * \brief Get this base description's brief.
585  *
586  * \return Returns string.
587  */
588  std::string getProdBrief() const
589  {
590  return m_strProdBrief;
591  }
592 
593  /*!
594  * \brief Get this robot's hardware version string.
595  *
596  * \return Returns string.
597  */
598  std::string getProdHwVerString() const
599  {
600  return m_strProdHwVer;
601  }
602 
603  /*!
604  * \brief Get this robot's packed hardware version number.
605  *
606  * \return Number.
607  */
608  uint_t getProdHwVer() const
609  {
610  return m_uProdHwVer;
611  }
612 
613  /*!
614  * \brief Get the \h_laelaps product name string given the product id.
615  *
616  * \param eProdId Supported product id. See \ref LaeProdId.
617  *
618  * \return Returns product name string. An unidentified product id
619  * returns "".
620  */
621  static const char *getProdName(int eProdId);
622 
623  /*!
624  * \brief Get the \h_laelaps product one-line brief description string given
625  * the product id.
626  *
627  * \param eProdId Supported product id. See \ref LaeProdId.
628  *
629  * \return Returns product description string. An unidentified product id
630  * returns "".
631  */
632  static const char *getProdBrief(int eProdId);
633 
634  /*!
635  * \brief Print out description to stdout.
636  *
637  * \param indent Left indentation.
638  */
639  void print(int indent = 0);
640 
641  protected:
642  /*!
643  * \brief Set version number from parsed version string.
644  */
645  void setVersion();
646  };
647 
648 } // namespace laelaps
649 
650 #endif // _LAE_DESC_H
uint_t getProdHwVer() const
Get this robot&#39;s packed hardware version number.
Definition: laeDesc.h:608
double m_fWheelbase
wheelbase(m)
Definition: laeDesc.h:119
std::map< std::string, LaeDescRangeSensor * > MapDescRangeSensor
Definition: laeDesc.h:458
absolute encoder
Definition: laeDesc.h:97
LaeDescBase * m_pDescBase
base description
Definition: laeDesc.h:523
Laelaps robotic mobile platform full description class.
Definition: laeDesc.h:451
double m_fDir
sensor direction (radians)
Definition: laeDesc.h:293
int m_nNumMotors
number of motors
Definition: laeDesc.h:122
LaeDescImu * m_pDescImu
built-in imu description
Definition: laeDesc.h:527
Battery description.
Definition: laeDesc.h:235
double m_fDeadzone
deadzone (meters)
Definition: laeDesc.h:294
std::string m_strProdBrief
product brief
Definition: laeDesc.h:515
number of supported location types
Definition: laeDesc.h:100
std::string m_strChemistry
battery chemistry
Definition: laeDesc.h:240
double m_fCapacity
battery capacity(Ah)
Definition: laeDesc.h:242
std::string m_strKey
range sensor key
Definition: laeDesc.h:291
LaeDescBase operator=(const LaeDescBase &rhs)
Assignment operator.
Definition: laeDesc.cxx:116
void clear()
Clear description.
Definition: laeDesc.cxx:129
Object width x height x length dimensions class.
Definition: laeUtils.h:524
double m_fMinV
battery minimum low at cutoff (V)
Definition: laeDesc.h:244
std::string m_strKey
base name
Definition: laeDesc.h:116
static const char *const PkgOptDeluxe
deluxe package option
Definition: laeDesc.h:402
std::map< std::string, LaeDescPowertrain * > MapDescPowertrain
Definition: laeDesc.h:455
LaeEncType m_eEncType
encoder type
Definition: laeDesc.h:185
std::string m_strHw
hardware
Definition: laeDesc.h:354
LaeJointType
Supported joint/wheel types. Not really used for now.
Definition: laeDesc.h:74
std::string getProdBrief() const
Get this base description&#39;s brief.
Definition: laeDesc.h:588
std::string m_strPkgToF
range time-of-flight package
Definition: laeDesc.h:404
std::string m_strFw
firmware
Definition: laeDesc.h:355
LaeJointType m_eJointType
powertrain joint type
Definition: laeDesc.h:184
int getProdId() const
Get this base description&#39;s base product id.
Definition: laeDesc.h:568
Robotic built-in IMU description.
Definition: laeDesc.h:350
number of supported joint types
Definition: laeDesc.h:82
int m_nNumMotorCtlrs
number of motor controllers
Definition: laeDesc.h:121
int m_nDir
normalize cw/ccw direction.
Definition: laeDesc.h:187
bool isDescribed() const
Test if required base description is adequately described.
Definition: laeDesc.h:558
std::string m_strProdModel
product model
Definition: laeDesc.h:513
Robotic powertrain description.
Definition: laeDesc.h:177
double m_fMaxV
battery maximum high charge (V)
Definition: laeDesc.h:243
MapDescPowertrain m_mapDescPowertrain
powertrain descriptions
Definition: laeDesc.h:525
The <b><i>Laelaps</i></b> namespace encapsulates all <b><i>Laelaps</i></b> related constructs...
Definition: laeAlarms.h:64
LaeDescBattery * m_pDescBattery
internal battery description
Definition: laeDesc.h:524
std::string m_strProdHwVer
product hardware version string
Definition: laeDesc.h:516
Laelaps common utilities.
std::string m_strProdFamily
product family
Definition: laeDesc.h:512
uint_t m_uProdHwVer
product hardware version number
Definition: laeDesc.h:517
continuous rotation
Definition: laeDesc.h:79
int m_nMotorId
unique robot motor id
Definition: laeDesc.h:181
int m_eProdId
base product id
Definition: laeDesc.h:511
mimic rotation (e.g. fingers)
Definition: laeDesc.h:80
Dim m_dimBody
body dimensions(m)
Definition: laeDesc.h:118
physical torque with relative encoder
Definition: laeDesc.h:94
Laelaps system devices.
std::string m_strPkgFCam
front camera package
Definition: laeDesc.h:405
static const char *const KeyFCam
front camera keys
Definition: laeDesc.h:467
int m_nNumCells
number of cells
Definition: laeDesc.h:241
Package options class.
Definition: laeDesc.h:398
limit switch with relative encoder
Definition: laeDesc.h:95
std::string m_strType
battery type
Definition: laeDesc.h:239
double m_fGearRatio
motor gear ratio
Definition: laeDesc.h:186
virtual ~LaeDescBase()
Destructor.
Definition: laeDesc.cxx:112
Robotic base platform description.
Definition: laeDesc.h:113
int m_nMotorCtlrId
unique motor controller id
Definition: laeDesc.h:182
Laelaps motors, encoder, and controllers hardware abstraction interfaces.
static const char *const KeyBattery
internal battery key
Definition: laeDesc.h:461
std::string m_strKey
base key
Definition: laeDesc.h:353
unknown/undefined joint type
Definition: laeDesc.h:76
Dim m_dimRobot
robot full dimensions(m)
Definition: laeDesc.h:117
std::string m_strKey
powertrain key
Definition: laeDesc.h:180
limited rotation
Definition: laeDesc.h:78
static const char *const KeyImu
built-in IMU keys
Definition: laeDesc.h:464
static const char *const PkgOptStd
standard package option
Definition: laeDesc.h:401
unknown/undefined encoder type
Definition: laeDesc.h:92
int m_nChan
channel number
Definition: laeDesc.h:292
std::string m_strDesc
short description string
Definition: laeDesc.h:295
bool m_bIsDescribed
<b><i>Laelaps</i></b> is [not] fully described
Definition: laeDesc.h:510
top dead center switch with rel. enc.
Definition: laeDesc.h:96
double m_fWheeltrack
wheeltrack(m)
Definition: laeDesc.h:120
Range sensor description.
Definition: laeDesc.h:288
std::string getProdHwVerString() const
Get this robot&#39;s hardware version string.
Definition: laeDesc.h:598
int m_nMotorIndex
motor controller unique motor index
Definition: laeDesc.h:183
std::string getProdName() const
Get this base description&#39;s name.
Definition: laeDesc.h:578
std::string m_strKey
battery key
Definition: laeDesc.h:238
LaeDescBase()
Default constructor.
Definition: laeDesc.cxx:102
static const char *const KeyRobotBase
robot base key
Definition: laeDesc.h:460
double m_fNomV
battery nominal voltage (V)
Definition: laeDesc.h:245
quadrature encoder
Definition: laeDesc.h:98
LaeEncType
Joint/wheel location detection types.
Definition: laeDesc.h:90
virtual void print(int indent=0)
Print out description to stdout.
Definition: laeDesc.cxx:172
void calcDimensions(double fTireRadius, double fTireWidth)
Calculate robot dimensions.
Definition: laeDesc.cxx:140
Top-level package include file.
std::string m_strProdName
product name
Definition: laeDesc.h:514
MapDescRangeSensor m_mapDescRangeSensor
range sensor descriptions
Definition: laeDesc.h:526