Laelaps  2.3.5
RoadNarrows Robotics Small Outdoor Mobile Robot Project
laelaps::LaeTunes Class Reference

Laelaps tuning data class. More...

#include <laeTune.h>

Public Types

typedef std::map< std::string, LaeTunesPowertrainLaeTunesMapPtp
 
typedef std::map< std::string, LaeTunesVL6180LaeTunesMapVL6180
 

Public Member Functions

 LaeTunes ()
 Default constructor.
 
 ~LaeTunes ()
 Destructor.
 
double getImuHz () const
 Get IMU tasks thread cycle rate tune parameter (hertz). More...
 
double getKinematicsHz () const
 Get kinematics thread cycle rate tune parameter (hertz). More...
 
double getRangeHz () const
 Get range sensing thread cycle rate tune parameter (hertz). More...
 
double getWatchDogTimeout () const
 Get watchdog timeout (seconds). More...
 
double getVelocityDerate () const
 Get derated velocity tune parameter (normalized). More...
 
void getTrajectoryParams (LaeNorm &eNorm, double &fEpsilon) const
 Get trajectory tune parameters. More...
 
void getBattOpRangeParams (double &fBattMinV, double &fBattMaxV) const
 Get battery minimum and maximum allowed operating range voltages tune parameters. More...
 
void getVelPidKParams (const std::string &strName, double &fKp, double &fKi, double &fKd) const
 Get motor velocity PID K tune parameters. More...
 
void getTireDimParams (const std::string &strName, double &fTireRadius, double &fTireWidth) const
 Get tire dimensions tune parameters. More...
 
std::string mapToPtp (const std::string &strKey) const
 
void getVL6180Params (const std::string &strName, int &nTofOffset, int &nTofCrossTalk, double &fAlsGain, int &nAlsIntPeriod) const
 Get VL6180 range sensor tune parameters. More...
 
void print (int indent=0)
 Print out tuning parameters to stdout. More...
 

Public Attributes

double m_fImuHz
 kinematic thread rate (hertz)
 
double m_fKinematicsHz
 kinematic thread rate (hertz)
 
double m_fRangeHz
 kinematic thread rate (hertz)
 
double m_fWatchDogTimeout
 watchdog timeout (seconds)
 
double m_fVelDerate
 velocity derate (fraction)
 
LaeNorm m_eTrajNorm
 trajectory distanct norm
 
double m_fTrajEpsilon
 trajectory epsilon distance (radians)
 
LaeTunesBattery m_battery
 battery tuning
 
LaeTunesMapPtp m_mapPtp
 powertrain pair tuning
 
LaeTunesMapVL6180 m_mapVL6180
 range sensors tuning
 

Detailed Description

Laelaps tuning data class.

Definition at line 566 of file laeTune.h.

Member Typedef Documentation

typedef std::map<std::string, LaeTunesPowertrain> laelaps::LaeTunes::LaeTunesMapPtp

Map of powertrain pair tuning parameters.

Definition at line 570 of file laeTune.h.

typedef std::map<std::string, LaeTunesVL6180> laelaps::LaeTunes::LaeTunesMapVL6180

Map of VL6180 range sensor tuning parameters.

Definition at line 573 of file laeTune.h.

Member Function Documentation

void LaeTunes::getBattOpRangeParams ( double &  fBattMinV,
double &  fBattMaxV 
) const

Get battery minimum and maximum allowed operating range voltages tune parameters.

Parameters
[out]fBattMinVMinimum battery voltage.
[out]fBattMaxVMaximum battery voltage.

Definition at line 350 of file laeTune.cxx.

351 {
352  fBattMinV = m_battery.m_fMinV;
353  fBattMaxV = m_battery.m_fMaxV;
354 }
double m_fMinV
minimum operation voltage
Definition: laeTune.h:431
double m_fMaxV
maximum operating voltage
Definition: laeTune.h:429
LaeTunesBattery m_battery
battery tuning
Definition: laeTune.h:585
double LaeTunes::getImuHz ( ) const

Get IMU tasks thread cycle rate tune parameter (hertz).

Returns
Hertz.

Definition at line 319 of file laeTune.cxx.

Referenced by laelaps::LaeThreadImu::reload(), and laelaps::LaeRobot::startCoreThreads().

320 {
321  return m_fImuHz;
322 }
double m_fImuHz
kinematic thread rate (hertz)
Definition: laeTune.h:576
double LaeTunes::getKinematicsHz ( ) const

Get kinematics thread cycle rate tune parameter (hertz).

Returns
Hertz.

Definition at line 324 of file laeTune.cxx.

Referenced by laelaps::LaeThreadKin::reload(), and laelaps::LaeRobot::startCoreThreads().

325 {
326  return m_fKinematicsHz;
327 }
double m_fKinematicsHz
kinematic thread rate (hertz)
Definition: laeTune.h:577
double LaeTunes::getRangeHz ( ) const

Get range sensing thread cycle rate tune parameter (hertz).

Returns
Hertz.

Definition at line 329 of file laeTune.cxx.

Referenced by laelaps::LaeThreadRange::reload(), and laelaps::LaeRobot::startCoreThreads().

330 {
331  return m_fRangeHz;
332 }
double m_fRangeHz
kinematic thread rate (hertz)
Definition: laeTune.h:578
void LaeTunes::getTireDimParams ( const std::string &  strName,
double &  fTireRadius,
double &  fTireWidth 
) const

Get tire dimensions tune parameters.

Parameters
strNameName of powertrain or powertrain pair. One of: front left_front right_front rear left_rear right_rear.
[out]fTireRadiusTire radius (meters).
[out]fTireWidthTire width (meters).

Definition at line 382 of file laeTune.cxx.

References laelaps::LaeTunesPowertrain::m_fTireRadius, and laelaps::LaeTunesPowertrain::m_fTireWidth.

Referenced by laelaps::LaePlatform::configure(), and laelaps::LaePowertrain::configure().

385 {
386  string strKey;
387  LaeTunesMapPtp::const_iterator pos;
388 
389  strKey = mapToPtp(strName);
390 
391  if( (pos = m_mapPtp.find(strKey)) != m_mapPtp.end() )
392  {
393  fTireRadius = pos->second.m_fTireRadius;
394  fTireWidth = pos->second.m_fTireWidth;
395  }
396  else
397  {
398  LaeTunesPowertrain dft; // default parameters
399 
400  fTireRadius = dft.m_fTireRadius;
401  fTireWidth = dft.m_fTireWidth;
402  }
403 }
std::string mapToPtp(const std::string &strKey) const
Definition: laeTune.cxx:405
double m_fTireRadius
tire radius (meters)
Definition: laeTune.h:477
LaeTunesMapPtp m_mapPtp
powertrain pair tuning
Definition: laeTune.h:586
double m_fTireWidth
tire width (meters)
Definition: laeTune.h:478
Laelaps powertrain tuning data class.
Definition: laeTune.h:471
void LaeTunes::getTrajectoryParams ( LaeNorm eNorm,
double &  fEpsilon 
) const

Get trajectory tune parameters.

Parameters
[out]eNormDistance norm.
[out]fEpsilonWaypoint precision (radians)

Definition at line 344 of file laeTune.cxx.

345 {
346  eNorm = m_eTrajNorm;
347  fEpsilon = m_fTrajEpsilon;
348 }
LaeNorm m_eTrajNorm
trajectory distanct norm
Definition: laeTune.h:581
double m_fTrajEpsilon
trajectory epsilon distance (radians)
Definition: laeTune.h:582
double LaeTunes::getVelocityDerate ( ) const

Get derated velocity tune parameter (normalized).

Returns
Derated value [0.0, 1.0].

Definition at line 339 of file laeTune.cxx.

340 {
341  return m_fVelDerate;
342 }
double m_fVelDerate
velocity derate (fraction)
Definition: laeTune.h:580
void LaeTunes::getVelPidKParams ( const std::string &  strName,
double &  fKp,
double &  fKi,
double &  fKd 
) const

Get motor velocity PID K tune parameters.

Parameters
strNameName of powertrain or powertrain pair. One of: front left_front right_front rear left_rear right_rear.
[out]fKpProportional constant.
[out]fKiIntegral constant.
[out]fKdDerivative constant.

Definition at line 356 of file laeTune.cxx.

References laelaps::LaeTunesPowertrain::m_fVelPidKd, laelaps::LaeTunesPowertrain::m_fVelPidKi, and laelaps::LaeTunesPowertrain::m_fVelPidKp.

Referenced by laelaps::LaeKinematics::configMotorVelocityPid().

360 {
361  string strKey;
362  LaeTunesMapPtp::const_iterator pos;
363 
364  strKey = mapToPtp(strName);
365 
366  if( (pos = m_mapPtp.find(strKey)) != m_mapPtp.end() )
367  {
368  fKp = pos->second.m_fVelPidKp;
369  fKi = pos->second.m_fVelPidKi;
370  fKd = pos->second.m_fVelPidKd;
371  }
372  else
373  {
374  LaeTunesPowertrain dft; // default parameters
375 
376  fKp = dft.m_fVelPidKp;
377  fKi = dft.m_fVelPidKi;
378  fKd = dft.m_fVelPidKd;
379  }
380 }
double m_fVelPidKd
motor velocity PID derivative constant
Definition: laeTune.h:476
std::string mapToPtp(const std::string &strKey) const
Definition: laeTune.cxx:405
double m_fVelPidKp
motor velocity PID proportional const
Definition: laeTune.h:474
LaeTunesMapPtp m_mapPtp
powertrain pair tuning
Definition: laeTune.h:586
double m_fVelPidKi
motor velocity PID integral constant
Definition: laeTune.h:475
Laelaps powertrain tuning data class.
Definition: laeTune.h:471
void LaeTunes::getVL6180Params ( const std::string &  strName,
int &  nTofOffset,
int &  nTofCrossTalk,
double &  fAlsGain,
int &  nAlsIntPeriod 
) const

Get VL6180 range sensor tune parameters.

Parameters
strNameName of range sensor (key)
[out]nTofOffsetToF part-to-part offset
[out]nTofCrossTalkToF cross-talk compensation
[out]fAlsGainALS analog gain
[out]nAlsIntPeriodALS integration period

Definition at line 421 of file laeTune.cxx.

References laelaps::LaeTunesVL6180::m_fAlsGain, laelaps::LaeTunesVL6180::m_nAlsIntPeriod, laelaps::LaeTunesVL6180::m_nTofCrossTalk, and laelaps::LaeTunesVL6180::m_nTofOffset.

Referenced by sensor::vl6180::LaeVL6180MuxArray::configure(), and sensor::vl6180::LaeRangeMuxSubproc::configure().

426 {
427  LaeTunesMapVL6180::const_iterator pos;
428 
429  if( (pos = m_mapVL6180.find(strName)) != m_mapVL6180.end() )
430  {
431  nTofOffset = pos->second.m_nTofOffset;
432  nTofCrossTalk = pos->second.m_nTofCrossTalk;
433  fAlsGain = pos->second.m_fAlsGain;
434  nAlsIntPeriod = pos->second.m_nAlsIntPeriod;
435  }
436  else
437  {
438  LaeTunesVL6180 dft; // default parameters
439 
440  nTofOffset = dft.m_nTofOffset;
441  nTofCrossTalk = dft.m_nTofCrossTalk;
442  fAlsGain = dft.m_fAlsGain;
443  nAlsIntPeriod = dft.m_nAlsIntPeriod;
444  }
445 }
LaeTunesMapVL6180 m_mapVL6180
range sensors tuning
Definition: laeTune.h:587
int m_nTofOffset
ToF part-to-part offset.
Definition: laeTune.h:522
int m_nAlsIntPeriod
ALS integration period.
Definition: laeTune.h:525
int m_nTofCrossTalk
ToF cross-talk compensation.
Definition: laeTune.h:523
Laelaps powertrain tuning data class.
Definition: laeTune.h:519
double m_fAlsGain
ALS analog gain.
Definition: laeTune.h:524
double LaeTunes::getWatchDogTimeout ( ) const

Get watchdog timeout (seconds).

Returns
Seconds.

Definition at line 334 of file laeTune.cxx.

Referenced by laelaps::LaeWd::configure(), and laelaps::LaeRobot::startCoreThreads().

335 {
336  return m_fWatchDogTimeout;
337 }
double m_fWatchDogTimeout
watchdog timeout (seconds)
Definition: laeTune.h:579
string LaeTunes::mapToPtp ( const std::string &  strKey) const

Map powertrain (pair) key to powertrain pair key.

Parameters
strKeyPowertrain (pair) key.
Returns
"front" or "rear"

Definition at line 405 of file laeTune.cxx.

References laelaps::LaeKeyFront, laelaps::LaeKeyLeftFront, laelaps::LaeKeyRear, and laelaps::LaeKeyRightFront.

406 {
407  if( (strKey == LaeKeyFront) || (strKey == LaeKeyRear) )
408  {
409  return strKey;
410  }
411  else if( (strKey == LaeKeyLeftFront) || (strKey == LaeKeyRightFront) )
412  {
413  return LaeKeyFront;
414  }
415  else
416  {
417  return LaeKeyRear;
418  }
419 }
static const char *const LaeKeyRightFront
right front
Definition: laeMotor.h:95
static const char *const LaeKeyRear
rear
Definition: laeMotor.h:93
static const char *const LaeKeyFront
front
Definition: laeMotor.h:92
static const char *const LaeKeyLeftFront
left front
Definition: laeMotor.h:94
void LaeTunes::print ( int  indent = 0)

Print out tuning parameters to stdout.

Parameters
indentLeft indentation.

Definition at line 447 of file laeTune.cxx.

References laelaps::radToDeg().

Referenced by mainInit().

448 {
449  LaeTunesMapPtp::iterator iPtp;
450  LaeTunesMapVL6180::iterator iSensor;
451 
452  printf("%*sGlobals =\n", indent, "");
453  printf("%*s{\n", indent, "");
454 
455  printf("%*sThreads =\n", indent+2, "");
456  printf("%*s{\n", indent+2, "");
457  printf("%*sIMU Thread Hertz = %.1lf\n", indent+4, "", m_fImuHz);
458  printf("%*sKinematics Thread Hertz = %.1lf\n", indent+4, "",
460  printf("%*sRange Thread Hertz = %.1lf\n", indent+4, "", m_fRangeHz);
461  printf("%*s}\n", indent+2, "");
462 
463  printf("%*sTrajectory =\n", indent+2, "");
464  printf("%*s{\n", indent+2, "");
465  printf("%*sNorm = %d\n", indent+4, "", m_eTrajNorm);
466  printf("%*sEpsilon = %lf\n", indent+4, "", radToDeg(m_fTrajEpsilon));
467  printf("%*s}\n", indent+2, "");
468 
469  printf("%*sVelocity Derate = %.1lf\n", indent+2, "", m_fVelDerate * 100.0);
470  printf("%*s}\n", indent, "");
471 
472  m_battery.print(indent);
473 
474  for(iPtp = m_mapPtp.begin(); iPtp != m_mapPtp.end(); ++iPtp)
475  {
476  iPtp->second.print(iPtp->first, indent);
477  }
478 
479  for(iSensor = m_mapVL6180.begin(); iSensor != m_mapVL6180.end(); ++iSensor)
480  {
481  iSensor->second.print(iSensor->first, indent);
482  }
483 }
double m_fImuHz
kinematic thread rate (hertz)
Definition: laeTune.h:576
double m_fKinematicsHz
kinematic thread rate (hertz)
Definition: laeTune.h:577
LaeTunesMapVL6180 m_mapVL6180
range sensors tuning
Definition: laeTune.h:587
double radToDeg(double r)
Convert radians to degrees.
Definition: laeUtils.h:136
LaeNorm m_eTrajNorm
trajectory distanct norm
Definition: laeTune.h:581
LaeTunesMapPtp m_mapPtp
powertrain pair tuning
Definition: laeTune.h:586
void print(int indent=0)
Print out tuning parameters to stdout.
Definition: laeTune.cxx:178
double m_fTrajEpsilon
trajectory epsilon distance (radians)
Definition: laeTune.h:582
double m_fVelDerate
velocity derate (fraction)
Definition: laeTune.h:580
double m_fRangeHz
kinematic thread rate (hertz)
Definition: laeTune.h:578
LaeTunesBattery m_battery
battery tuning
Definition: laeTune.h:585

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