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

#include <laeThreadImu.h>

Inheritance diagram for laelaps::LaeThreadImu:
laelaps::LaeThread

Public Member Functions

 LaeThreadImu (sensor::imu::LaeImuCleanFlight &hwif)
 Default constructor.
 
virtual ~LaeThreadImu ()
 Destructor.
 
int reload (const LaeTunes &tunes)
 Reload tunable paramaters. More...
 
- Public Member Functions inherited from laelaps::LaeThread
 LaeThread (const std::string &strThreadName)
 Default constructor.
 
virtual ~LaeThread ()
 Destructor.
 
virtual int createThread (int nPriority)
 Create the thread. More...
 
virtual int runThread (const double fHz)
 Run the thread. More...
 
virtual int terminateThread ()
 Terminate the thread. More...
 
virtual void setHz (const double fHz)
 Calculate thread new full cycle run rate. More...
 
std::string getThreadName () const
 Get assigned thread name. More...
 
int getThreadPriority () const
 Get thread system scheduling priority. More...
 
double getThreadHz () const
 Get thread run full cycle rate. More...
 

Static Public Attributes

static const double ThreadImuPrioDft = 80
 default priority
 
static const double ThreadImuHzDft = 30.0
 default run rate
 
- Static Public Attributes inherited from laelaps::LaeThread
static const int ThreadPriorityMin = 1
 minimum scheduling priority
 
static const int ThreadPriorityMax = 99
 maximum scheduling priority
 
static const double ThreadMinHz = 0.001
 minimum thread Hertz More...
 

Protected Member Functions

virtual void exec ()
 Execute watchdog task within scheduled cycle. More...
 
- Protected Member Functions inherited from laelaps::LaeThread
void lock ()
 Lock the I2C bus. More...
 
void unlock ()
 Unlock the I2C bus. More...
 
void changeState (ThreadState eNewState)
 Change the thread state. More...
 
void timedWait (const struct timespec &tsTimeout)
 Timed wait until state change or time out. More...
 
virtual void readyBlock ()
 Block indefinitely while in the ready state. More...
 
virtual void schedBlock ()
 Block the thread until the next subcycle task is to be run. More...
 
virtual void transToReady ()
 Uninitialized to Ready state transition function. More...
 
virtual void transToRunning ()
 Ready to Running state transition function. More...
 
virtual void transToExit ()
 Any to Exit state transition function. More...
 

Protected Attributes

sensor::imu::LaeImuCleanFlightm_hwif
 hardware interface
 
- Protected Attributes inherited from laelaps::LaeThread
std::string m_strThreadName
 thread identifying name
 
ThreadState m_eState
 thread state
 
pthread_mutex_t m_mutexSync
 synchonization mutex
 
pthread_cond_t m_condSync
 synchonization condition
 
pthread_t m_thread
 pthread identifier
 
int m_nPriority
 thread OS scheduling priority
 
double m_fHz
 thread cycle run rate (Hertz)
 
double m_fTExec
 task execution cycle period (seconds)
 
struct timespec m_tsExecPeriod
 task execution period (converted)
 
struct timespec m_tsJitter
 allowable scheduling jitter
 
struct timespec m_tsSched
 working scheduler time stamp
 
struct timespec m_tsExecLast
 start of last execution time stamp
 
struct timespec m_tsExecThis
 start of this execution time stamp
 
int m_nSlipErrCnt
 slipped error count leaky bucket
 

Additional Inherited Members

- Public Types inherited from laelaps::LaeThread
enum  ThreadState {
  ThreadStateUninit,
  ThreadStateReady,
  ThreadStateStart,
  ThreadStateRunning,
  ThreadStateExit
}
 Kinematics thread states. More...
 
- Static Protected Member Functions inherited from laelaps::LaeThread
static void * thread (void *pArg)
 The thread. More...
 

Detailed Description

IMU thread class.

Definition at line 81 of file laeThreadImu.h.

Member Function Documentation

void LaeThreadImu::exec ( )
protectedvirtual

Execute watchdog task within scheduled cycle.

This function executes under the lock/unlock mutex.

Context:
This thread.

Reimplemented from laelaps::LaeThread.

Definition at line 107 of file laeThreadImu.cxx.

References sensor::imu::LaeImu::exec(), and m_hwif.

108 {
109  m_hwif.exec();
110 }
virtual void exec()
Exectute one step to read, convert, and compute IMU values.
Definition: laeImu.cxx:285
sensor::imu::LaeImuCleanFlight & m_hwif
hardware interface
Definition: laeThreadImu.h:105
int LaeThreadImu::reload ( const LaeTunes tunes)

Reload tunable paramaters.

This function executes under the lock/unlock mutex.

Definition at line 86 of file laeThreadImu.cxx.

References laelaps::LaeTunes::getImuHz(), laelaps::LaeThread::lock(), laelaps::LaeThread::m_fHz, m_hwif, sensor::imu::LaeImu::reload(), laelaps::LaeThread::setHz(), and laelaps::LaeThread::unlock().

Referenced by laelaps::LaeRobot::reload().

87 {
88  double fHz;
89  int rc;
90 
91  lock();
92 
93  fHz = tunes.getImuHz();
94 
95  if( fHz != m_fHz )
96  {
97  setHz(fHz);
98  }
99 
100  rc = m_hwif.reload(tunes);
101 
102  unlock();
103 
104  return rc;
105 }
double getImuHz() const
Get IMU tasks thread cycle rate tune parameter (hertz).
Definition: laeTune.cxx:319
void unlock()
Unlock the I2C bus.
Definition: laeThread.h:235
void lock()
Lock the I2C bus.
Definition: laeThread.h:221
virtual int reload(const laelaps::LaeTunes &tunes)
Reload with new tuning parameters.
Definition: laeImu.cxx:247
virtual void setHz(const double fHz)
Calculate thread new full cycle run rate.
Definition: laeThread.cxx:214
double m_fHz
thread cycle run rate (Hertz)
Definition: laeThread.h:204
sensor::imu::LaeImuCleanFlight & m_hwif
hardware interface
Definition: laeThreadImu.h:105

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