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

Robot platform control and state data class. More...

#include <laePlatform.h>

Public Types

enum  Idx {
  IdxPrev = 0,
  IdxCur = 1,
  HistSize = 2
}
 Working indices and sizes. More...
 

Public Member Functions

 LaePlatform ()
 Default constructor.
 
 LaePlatform (const LaePlatform &src)
 Copy constructor.
 
 ~LaePlatform ()
 Destructor.
 
LaePlatform operator= (const LaePlatform &rhs)
 Assignment operator. More...
 
void clear ()
 Clear data sans name.
 
std::string getPlatformName () const
 Get robot platform name. More...
 
virtual int configure (const LaeDescBase &desc)
 Configure robot platform from product description. More...
 
virtual int configure (const LaeTunes &tunes)
 Configure platform. More...
 
virtual int reload (const LaeTunes &tunes)
 Reload tuning parameters and re-configure. More...
 
virtual int resetOdometer ()
 Reset odometry to zero. More...
 
virtual int updateStateDynamics (const LaeMapPowertrain &mapPowertrains)
 Update robot platform state dynamics. More...
 
virtual int updateCtlrHealth (int nCtlr, double fVolts, double fTemp, uint_t uStatus)
 Update robot platform motor controller health state. More...
 
virtual int updateHealth (const LaeMapPowertrain &mapPowertrains)
 Update robot platform health state. More...
 
virtual void clearPoses ()
 Clear pose history.
 
virtual void pushNewPose (const LaePose &pose)
 Push a new pose on the pose history. More...
 

Public Attributes

std::string m_strName
 robot platform name
 
Dim m_dimRobot
 total dimensions of robot (TODO)
 
Dim m_dimBody
 dimensions of robot body
 
double m_fWheelbase
 wheelbase (m)
 
double m_fWheeltrack
 wheeltrack (m)
 
double m_fPosLast [LaeMotorsNumOf]
 last sensed wheel positions (radians)
 
LaePose m_pose [HistSize]
 robot pose (meters, meters, radians)
 
double m_fOdometer
 robot odometer (meters)
 
double m_fVelocity
 robot velocity (meters/second)
 
double m_fAmpsMotors
 total draw from all motors (A)
 
double m_fVoltsAvg
 average sensed battery voltage (V)
 
double m_fTempAvg
 average sensed interior tempature (C)
 
LaeMotorCtlrState m_ctlr [LaeNumMotorCtlrs]
 motor controllers' state
 

Detailed Description

Robot platform control and state data class.

Definition at line 127 of file laePlatform.h.

Member Enumeration Documentation

enum laelaps::LaePlatform::Idx

Working indices and sizes.

Enumerator
IdxPrev 

index of previous history

IdxCur 

index of current state

HistSize 

size of history

Definition at line 133 of file laePlatform.h.

134  {
135  IdxPrev = 0, ///< index of previous history
136  IdxCur = 1, ///< index of current state
137  HistSize = 2 ///< size of history
138  };
index of current state
Definition: laePlatform.h:136
index of previous history
Definition: laePlatform.h:135

Member Function Documentation

int LaePlatform::configure ( const LaeDescBase desc)
virtual

Configure robot platform from product description.

Parameters
descLaelaps robot base product description data.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 218 of file laePlatform.cxx.

References laelaps::LaeDescBase::m_dimBody, m_dimBody, laelaps::LaeDescBase::m_dimRobot, m_dimRobot, laelaps::LaeDescBase::m_fWheelbase, m_fWheelbase, laelaps::LaeDescBase::m_fWheeltrack, and m_fWheeltrack.

Referenced by reload().

219 {
220  // base kinematics
221  m_dimBody = desc.m_dimBody;
222  m_dimRobot = desc.m_dimRobot;
223  m_fWheelbase = desc.m_fWheelbase;
225 }
double m_fWheeltrack
wheeltrack (m)
Definition: laePlatform.h:146
double m_fWheelbase
wheelbase(m)
Definition: laeDesc.h:119
Dim m_dimBody
dimensions of robot body
Definition: laePlatform.h:144
Dim m_dimRobot
total dimensions of robot (TODO)
Definition: laePlatform.h:143
Dim m_dimBody
body dimensions(m)
Definition: laeDesc.h:118
Dim m_dimRobot
robot full dimensions(m)
Definition: laeDesc.h:117
double m_fWheelbase
wheelbase (m)
Definition: laePlatform.h:145
double m_fWheeltrack
wheeltrack(m)
Definition: laeDesc.h:120
int LaePlatform::configure ( const LaeTunes tunes)
virtual

Configure platform.

Parameters
tunesLaelaps tuning parameters.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 227 of file laePlatform.cxx.

References laelaps::LaeDescBase::calcDimensions(), laelaps::LaeTunes::getTireDimParams(), laelaps::LAE_OK, laelaps::LaeKeyLeftFront, laelaps::LaeDescBase::m_dimBody, m_dimBody, laelaps::LaeDescBase::m_dimRobot, m_dimRobot, laelaps::LaeDescBase::m_fWheelbase, m_fWheelbase, laelaps::LaeDescBase::m_fWheeltrack, and m_fWheeltrack.

228 {
229  LaeDescBase desc;
230  double fTuneTireRadius, fTuneTireWidth; // tire dimensions
231 
232  // assumes all tires are the same dimensions
233  tunes.getTireDimParams(LaeKeyLeftFront, fTuneTireRadius, fTuneTireWidth);
234 
235  desc.calcDimensions(fTuneTireRadius, fTuneTireWidth);
236 
237  m_dimBody = desc.m_dimBody;
238  m_dimRobot = desc.m_dimRobot;
239  m_fWheelbase = desc.m_fWheelbase;
241 
242  return LAE_OK;
243 }
double m_fWheeltrack
wheeltrack (m)
Definition: laePlatform.h:146
double m_fWheelbase
wheelbase(m)
Definition: laeDesc.h:119
Dim m_dimBody
dimensions of robot body
Definition: laePlatform.h:144
Dim m_dimRobot
total dimensions of robot (TODO)
Definition: laePlatform.h:143
Dim m_dimBody
body dimensions(m)
Definition: laeDesc.h:118
Robotic base platform description.
Definition: laeDesc.h:113
Dim m_dimRobot
robot full dimensions(m)
Definition: laeDesc.h:117
double m_fWheelbase
wheelbase (m)
Definition: laePlatform.h:145
double m_fWheeltrack
wheeltrack(m)
Definition: laeDesc.h:120
void getTireDimParams(const std::string &strName, double &fTireRadius, double &fTireWidth) const
Get tire dimensions tune parameters.
Definition: laeTune.cxx:382
static const char *const LaeKeyLeftFront
left front
Definition: laeMotor.h:94
void calcDimensions(double fTireRadius, double fTireWidth)
Calculate robot dimensions.
Definition: laeDesc.cxx:140
static const int LAE_OK
not an error, success
Definition: laelaps.h:71
std::string laelaps::LaePlatform::getPlatformName ( ) const
inline

Get robot platform name.

Returns
String.

Definition at line 199 of file laePlatform.h.

References laelaps::LaeMotorCtlrState::m_strName.

200  {
201  return m_strName;
202  }
std::string m_strName
robot platform name
Definition: laePlatform.h:140
LaePlatform LaePlatform::operator= ( const LaePlatform rhs)

Assignment operator.

Parameters
rhsRight hand side object.
Returns
Returns copy of this.

Definition at line 149 of file laePlatform.cxx.

References HistSize, laelaps::LaeMotorsNumOf, laelaps::LaeNumMotorCtlrs, m_ctlr, m_dimBody, m_dimRobot, m_fAmpsMotors, m_fOdometer, m_fPosLast, m_fTempAvg, m_fVelocity, m_fVoltsAvg, m_fWheelbase, m_fWheeltrack, m_pose, and m_strName.

150 {
151  int nCtlr;
152  int i;
153 
154  m_strName = rhs.m_strName;
155 
156  m_dimRobot = rhs.m_dimRobot;
157  m_dimBody = rhs.m_dimBody;
158 
161 
162  for(i = 0; i < LaeMotorsNumOf; ++i)
163  {
164  m_fPosLast[i] = rhs.m_fPosLast[i];
165  }
166 
167  for(i = 0; i < HistSize; ++i)
168  {
169  m_pose[i] = rhs.m_pose[i];
170  }
171 
172  m_fOdometer = rhs.m_fOdometer;
173  m_fVelocity = rhs.m_fVelocity;
174 
176  m_fVoltsAvg = rhs.m_fVoltsAvg;
177  m_fTempAvg = rhs.m_fTempAvg;
178 
179  for(nCtlr = 0; nCtlr < LaeNumMotorCtlrs; ++nCtlr)
180  {
181  m_ctlr[nCtlr] = rhs.m_ctlr[nCtlr];
182  }
183 
184  return *this;
185 }
double m_fWheeltrack
wheeltrack (m)
Definition: laePlatform.h:146
double m_fVelocity
robot velocity (meters/second)
Definition: laePlatform.h:153
double m_fAmpsMotors
total draw from all motors (A)
Definition: laePlatform.h:156
std::string m_strName
robot platform name
Definition: laePlatform.h:140
static const int LaeMotorsNumOf
number of motors
Definition: laeMotor.h:107
Dim m_dimBody
dimensions of robot body
Definition: laePlatform.h:144
Dim m_dimRobot
total dimensions of robot (TODO)
Definition: laePlatform.h:143
LaePose m_pose[HistSize]
robot pose (meters, meters, radians)
Definition: laePlatform.h:151
double m_fPosLast[LaeMotorsNumOf]
last sensed wheel positions (radians)
Definition: laePlatform.h:149
double m_fVoltsAvg
average sensed battery voltage (V)
Definition: laePlatform.h:157
double m_fWheelbase
wheelbase (m)
Definition: laePlatform.h:145
static const int LaeNumMotorCtlrs
number of motor controllers
Definition: laeMotor.h:115
LaeMotorCtlrState m_ctlr[LaeNumMotorCtlrs]
motor controllers&#39; state
Definition: laePlatform.h:161
double m_fTempAvg
average sensed interior tempature (C)
Definition: laePlatform.h:158
double m_fOdometer
robot odometer (meters)
Definition: laePlatform.h:152
void LaePlatform::pushNewPose ( const LaePose pose)
virtual

Push a new pose on the pose history.

The history is aged first.

Parameters
poseNew pose.

Definition at line 471 of file laePlatform.cxx.

References IdxCur, IdxPrev, and m_pose.

Referenced by updateStateDynamics().

472 {
473  // save pose
475 
476  // clear new pose
477  m_pose[IdxCur] = pose;
478 }
LaePose m_pose[HistSize]
robot pose (meters, meters, radians)
Definition: laePlatform.h:151
index of current state
Definition: laePlatform.h:136
index of previous history
Definition: laePlatform.h:135
int LaePlatform::reload ( const LaeTunes tunes)
virtual

Reload tuning parameters and re-configure.

Parameters
tunesLaelaps tuning parameters.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 245 of file laePlatform.cxx.

References configure().

246 {
247  return configure(tunes);
248 }
virtual int configure(const LaeDescBase &desc)
Configure robot platform from product description.
int LaePlatform::resetOdometer ( )
virtual

Reset odometry to zero.

All related positioning data are reset to 0.

Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 250 of file laePlatform.cxx.

References clearPoses(), laelaps::LaeMotorsNumOf, m_fOdometer, and m_fPosLast.

251 {
252  int i;
253 
254  clearPoses();
255 
256  for(i = 0; i < LaeMotorsNumOf; ++i)
257  {
258  m_fPosLast[i] = 0.0;
259  }
260 
261  m_fOdometer = 0.0;
262 }
static const int LaeMotorsNumOf
number of motors
Definition: laeMotor.h:107
double m_fPosLast[LaeMotorsNumOf]
last sensed wheel positions (radians)
Definition: laePlatform.h:149
virtual void clearPoses()
Clear pose history.
double m_fOdometer
robot odometer (meters)
Definition: laePlatform.h:152
int LaePlatform::updateCtlrHealth ( int  nCtlr,
double  fVolts,
double  fTemp,
uint_t  uStatus 
)
virtual

Update robot platform motor controller health state.

Parameters
nCtlrMotor controller id.
fVoltsMotor input voltage (V).
fTempMotor controller board voltage (V).
uCtlrStatusMotor controller status bits.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 414 of file laePlatform.cxx.

References laelaps::LAE_ECODE_BAD_VAL, laelaps::LAE_OK, laelaps::LaeNumMotorCtlrs, m_ctlr, laelaps::LaeMotorCtlrState::m_fBoardTemp, laelaps::LaeMotorCtlrState::m_fMainVolts, and laelaps::LaeMotorCtlrState::m_uStatus.

418 {
419  if( (nCtlr < 0) || (nCtlr >= LaeNumMotorCtlrs) )
420  {
421  LOGERROR("Motor controller id %d: Out-of-range.", nCtlr);
422  return -LAE_ECODE_BAD_VAL;
423  }
424 
425  m_ctlr[nCtlr].m_fMainVolts = fVolts;
426  m_ctlr[nCtlr].m_fBoardTemp = fTemp;
427  m_ctlr[nCtlr].m_uStatus = uStatus;
428 
429  return LAE_OK;
430 }
double m_fBoardTemp
average sensed interior tempature (C)
Definition: laePlatform.h:80
double m_fMainVolts
average sensed battery voltage (V)
Definition: laePlatform.h:79
uint_t m_uStatus
board status
Definition: laePlatform.h:81
static const int LAE_ECODE_BAD_VAL
bad value general error
Definition: laelaps.h:76
static const int LaeNumMotorCtlrs
number of motor controllers
Definition: laeMotor.h:115
LaeMotorCtlrState m_ctlr[LaeNumMotorCtlrs]
motor controllers&#39; state
Definition: laePlatform.h:161
static const int LAE_OK
not an error, success
Definition: laelaps.h:71
int LaePlatform::updateHealth ( const LaeMapPowertrain mapPowertrains)
virtual

Update robot platform health state.

Parameters
mapPowertrainsPowertrain kinodynamics.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 432 of file laePlatform.cxx.

References laelaps::LAE_OK, laelaps::LaePowertrainState::m_fAmps, m_fAmpsMotors, laelaps::LaePowertrainState::m_fTemp, laelaps::LaeDbRobotStatus::m_fTempAvg, m_fTempAvg, laelaps::LaePowertrainState::m_fVolts, m_fVoltsAvg, laelaps::LaeDb::m_robotstatus, laelaps::LaePowertrain::m_state, and laelaps::RtDb.

433 {
434  LaeMapPowertrain::const_iterator iter;
435 
436  int n;
437 
438  m_fAmpsMotors = 0.0;
439  m_fVoltsAvg = 0.0;
440  m_fTempAvg = 0.0;
441 
442  n = 0;
443 
444  for(iter = mapPowertrains.begin(); iter != mapPowertrains.end(); ++iter)
445  {
446  const LaePowertrain &train = iter->second;
447 
448  m_fAmpsMotors += train.m_state.m_fAmps;
449  m_fVoltsAvg += train.m_state.m_fVolts;
450  m_fTempAvg += train.m_state.m_fTemp;
451 
452  ++n;
453  }
454 
455  m_fVoltsAvg /= (double)n;
456  m_fTempAvg /= (double)n;
457 
459 
460  return LAE_OK;
461 }
double m_fAmpsMotors
total draw from all motors (A)
Definition: laePlatform.h:156
double m_fAmps
motor draw (A)
double m_fTemp
motor temperature (C)
LaeDbRobotStatus m_robotstatus
robot status data
Definition: laeDb.h:229
LaeDb RtDb
The real-time database.
Definition: laeDb.h:244
double m_fVolts
input motor voltage (V)
double m_fVoltsAvg
average sensed battery voltage (V)
Definition: laePlatform.h:157
LaePowertrainState m_state
dynamic state data
double m_fTempAvg
average interior temperature
Definition: laeDb.h:113
double m_fTempAvg
average sensed interior tempature (C)
Definition: laePlatform.h:158
Powertrain data class.
static const int LAE_OK
not an error, success
Definition: laelaps.h:71
int LaePlatform::updateStateDynamics ( const LaeMapPowertrain mapPowertrains)
virtual

Update robot platform state dynamics.

Parameters
mapPowertrainsPowertrain kinodynamics.
Returns
On success, OK(0) is returned.
On error, RC_ERROR(-1) is returned.

Definition at line 264 of file laePlatform.cxx.

References IdxCur, IdxPrev, laelaps::LAE_OK, laelaps::LaeMotorIdLF, laelaps::LaeMotorIdLR, laelaps::LaeMotorIdRF, laelaps::LaeMotorIdRR, laelaps::LaeMotorsNumOf, laelaps::LaePowertrain::m_attr, laelaps::LaePowertrainAttr::m_fMetersPerRadian, m_fOdometer, laelaps::LaeDbKinRobot::m_fOdometer, laelaps::LaePowertrainState::m_fPosition, m_fPosLast, m_fVelocity, laelaps::LaePowertrainState::m_fVelocity, laelaps::LaeDbKinRobot::m_fVelocity, m_fWheelbase, laelaps::LaeDb::m_kin, laelaps::LaePowertrainAttr::m_nMotorId, m_pose, laelaps::LaeDbKin::m_robot, laelaps::LaePowertrain::m_state, M_TAU, laelaps::LaePose::m_theta, laelaps::LaeDbKinRobot::m_theta, laelaps::LaePose::m_x, laelaps::LaeDbKinRobot::m_x, laelaps::LaePose::m_y, laelaps::LaeDbKinRobot::m_y, pushNewPose(), and laelaps::RtDb.

265 {
266  static double ReallyZero = 1e-4;
267 
268  LaeMapPowertrain::const_iterator iter;
269 
270  int nMotorId; // motor id
271  double fDeltaPos; // delta position last position (radians)
272  double fDeltaDist[LaeMotorsNumOf]; // delta wheel distances (meters)
273  double fDeltaOd; // delta odometer (meters)
274  double fDistL, fDistR; // left and right average delta distance
275  double s; // delta arc length
276  double r; // radius of curvature
277  double c; // central angle
278  double dx, dy, da; // delta pose (m, m, radians)
279  LaePose pose; // new pose
280 
281  // zero current velocity, delta odometer
282  m_fVelocity = 0.0;
283  fDeltaOd = 0.0;
284 
285  //
286  // Process powertrain kinodynamics to arrive at platform dynamics.
287  //
288  for(iter = mapPowertrains.begin(); iter != mapPowertrains.end(); ++iter)
289  {
290  const LaePowertrain &train = iter->second;
291 
292  nMotorId = train.m_attr.m_nMotorId;
293 
294  // delta position (radians) and delta distance (meters)
295  fDeltaPos = train.m_state.m_fPosition - m_fPosLast[nMotorId];
296  m_fPosLast[nMotorId] = train.m_state.m_fPosition;
297  fDeltaDist[nMotorId] = fDeltaPos * train.m_attr.m_fMetersPerRadian;
298 
299  // sum delta odometer distances
300  fDeltaOd += fDeltaDist[nMotorId];
301 
302  // sum wheel velocity (radians/s) to linear velocity (meters/s)
304  }
305 
306  //
307  // Average the odometer delta sum value and accumulate to attain meters
308  // traveled at the platform center of rotation. Note that this odometer is
309  // the absolute distance traveled.
310  //
311  fDeltaOd = fabs(fDeltaOd / (double)LaeMotorsNumOf);
312  m_fOdometer += fDeltaOd;
313 
314  //
315  // Average the velocity sum. The velocity is calculated from the platform
316  // center of rotation. Note that this velocity is the absolute value.
317  //
318  m_fVelocity = fabs(m_fVelocity / (double)LaeMotorsNumOf);
319 
320  //
321  // Average the left and right side delta distances traveled.
322  //
323  fDistL = (fDeltaDist[LaeMotorIdLF] + fDeltaDist[LaeMotorIdLR]) / 2.0;
324  fDistR = (fDeltaDist[LaeMotorIdRF] + fDeltaDist[LaeMotorIdRR]) / 2.0;
325 
326  //
327  // Calculate the new absolute orientation.
328  //
329  // The new theta can be calculated directly from current odometry.
330  //
331  // Eq. s = r * c, where
332  //
333  // s = arc length (meters)
334  // r = radius of curvature (meters) == wheel base
335  // c = central angle (radians)
336  //
337  s = (fDistR + fDistL) / 2.0;
338  c = (fDistR - fDistL) / m_fWheelbase;
339 
340  //
341  // No linear component (i.e. spin or stopped).
342  //
343  if( fabs(s) <= ReallyZero )
344  {
345  dx = 0.0;
346  dy = 0.0;
347  da = c;
348  }
349 
350  //
351  // Degenerate curve: straight path.
352  //
353  // The arc length is a straigt line.
354  //
355  else if( fabs(c) <= ReallyZero )
356  {
357  dx = s;
358  dy = 0.0;
359  da = 0.0;
360  }
361 
362  //
363  // Circular arc path.
364  //
365  // Note: The following comments are nice, but the calculations simplify when
366  // delta distances are used.
367  //
368  // The center of rotation is a pi/2 rotation from the robot frame of
369  // reference. Rotating 90 degrees and translating the center to 0,0, we
370  // can calculate the delta position. From the deltas, the current absolute
371  // position is determined.
372  //
373  // Using trig identities:
374  // sin(-u) = -sin(u)
375  // cos(-u) = cos(u)
376  // sin(u) = cos(theta)
377  // cos(u) = sin(theta)
378  //
379  // Let u = pi/2 - theta
380  // -u = theta - pi/2
381  // Then:
382  // dx = r * (m.cos(theta[cur]-m.pi/2) - m.cos(theta[prev]-m.pi/2))
383  // dy = r * (m.sin(theta[cur]-m.pi/2) - m.sin(theta[prev]-m.pi/2))
384  //
385  else
386  {
387  r = s / c;
388  dx = r * sin(c);
389  dy = r * -cos(c);
390  da = c;
391  }
392 
393  //
394  // New current pose.
395  //
396  pose.m_x = m_pose[IdxPrev].m_x + dx;
397  pose.m_y = m_pose[IdxPrev].m_y + dy;
398  pose.m_theta = fmod(m_pose[IdxPrev].m_theta + da, M_TAU);
399 
400  pushNewPose(pose);
401 
402  //
403  // Save to real-time DB.
404  //
410 
411  return LAE_OK;
412 }
static const int LaeMotorIdRR
right rear
Definition: laeMotor.h:106
double m_fVelocity
robot velocity (meters/second)
Definition: laePlatform.h:153
LaeDbKin m_kin
kinodynamics
Definition: laeDb.h:236
static const int LaeMotorsNumOf
number of motors
Definition: laeMotor.h:107
double m_y
robot absolute y position (meters)
Definition: laeTraj.h:174
double m_theta
robot orientation (radians)
Definition: laeTraj.h:175
double m_fVelocity
robot velocity (meters/second)
Definition: laeDb.h:181
LaeDbKinRobot m_robot
robot kinodynmics
Definition: laeDb.h:191
double m_fOdometer
robot odometer (meters)
Definition: laeDb.h:180
LaeDb RtDb
The real-time database.
Definition: laeDb.h:244
double m_x
robot absolute x position (meters)
Definition: laeTraj.h:173
static const int LaeMotorIdRF
right front
Definition: laeMotor.h:104
static const int LaeMotorIdLR
left rear
Definition: laeMotor.h:105
double m_y
robot absolute y position (meters)
Definition: laeDb.h:178
LaePowertrainAttr m_attr
semi-fixed attribute data
double m_theta
robot orientation (radians)
Definition: laeDb.h:179
LaePose m_pose[HistSize]
robot pose (meters, meters, radians)
Definition: laePlatform.h:151
double m_fPosLast[LaeMotorsNumOf]
last sensed wheel positions (radians)
Definition: laePlatform.h:149
double m_x
robot absolute x position (meters)
Definition: laeDb.h:177
index of current state
Definition: laePlatform.h:136
static const int LaeMotorIdLF
left front
Definition: laeMotor.h:103
double m_fMetersPerRadian
tire meters per radian
double m_fWheelbase
wheelbase (m)
Definition: laePlatform.h:145
Laelaps 2D pose class.
Definition: laeTraj.h:170
virtual void pushNewPose(const LaePose &pose)
Push a new pose on the pose history.
LaePowertrainState m_state
dynamic state data
index of previous history
Definition: laePlatform.h:135
double m_fVelocity
wheel angular velocity (radians/second)
#define M_TAU
tau = 2 * pi
Definition: laeUtils.h:66
double m_fPosition
wheel angular position (radians)
Powertrain data class.
double m_fOdometer
robot odometer (meters)
Definition: laePlatform.h:152
static const int LAE_OK
not an error, success
Definition: laelaps.h:71

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