Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

WalkCalibration Class Reference

#include <WalkCalibration.h>

Inheritance diagram for WalkCalibration:

List of all members.


Detailed Description

allows interactive calibration of a walk engine

In retrospect, this might have been a little easier to do as a ControlBase/StateNode multiple inheritance instead of ControlBase/EventListener... oh well.

Definition at line 17 of file WalkCalibration.h.


Public Member Functions

 WalkCalibration ()
 constructor
 ~WalkCalibration ()
 destructor
virtual ControlBaseactivate (MotionManager::MC_ID disp_id, Socket *gui)
 Called when the control is activated (or the control system is reactivating).
virtual void refresh ()
 called when the child has deactivated and this control should refresh its display, or some other event (such as the user pressing the refresh button) has happened to cause a refresh to be needed
virtual void deactivate ()
 called when this control is being popped from the control stack
virtual ControlBasedoSelect ()
 when the user has trigger an "open selection" - default is to return the hilighted control*/
virtual void processEvent (const EventBase &e)
 listens for locomotion events so we know when to stop recording
virtual ControlBasetakeInput (const std::string &msg)
 called when the user has supplied a text string (may or may not have been prompted by doReadStdIn()! May not even be active yet - the user can direct the same input to a set of hilighted menus)
virtual void setHilights (const std::vector< unsigned int > &hi)
 sets the hilighted slots
virtual void hilightFirst ()
 sets the hilight to the first non-null slot

Protected Types

enum  {
  ROOT, CHOOSE, READY, MOVING,
  READING_1, READING_2, CLEAR
}
enum  dataSource {
  fs, fr, sr, br,
  bs, r, NUM_SRC
}
 allows representation of the current sample type More...

Protected Member Functions

void setupRoot ()
 sets state to root menu
void setupChoose ()
 sets state to choose type menu
void setupReady ()
 sets state to ready menu
void setupMoving ()
 sets state to moving menu
void setupReading1 ()
 sets state to enter first measurement menu
void setupReading2 ()
 sets state to enter second measurement menu
void setupClear ()
 sets state to clear confirmation menu
unsigned int getType ()
 returns current sample type
unsigned int getFirstIndex (dataSource t)
 returns a name index for the first measurement type
unsigned int getSecondIndex (dataSource t)
 returns a name index for the second measurement type
char * getIndexName (unsigned int t)
 returns name for measurement type
char * getFirstMeasure (dataSource t)
 returns name for first measurement type
char * getSecondMeasure (dataSource t)
 returns name for second measurement type
float arclen (float d, float a, float sign)
 calculates arc distance corresponding to a displacement and angle, negated if necessary to match sign
void addSample ()
 adds data point corresponding to measurements stored in firstIn and secondIn
void addSample (std::vector< float * > &dat, float x, float y, float a)
 adds data point to dat for a given x,y,a (and old_x, old_y, old_a)

Static Protected Member Functions

static void loadData (const std::string &name, std::vector< float * > &data)
 does the work of loading data sets
static void saveData (const std::string &name, const std::vector< float * > &data)
 does the work of saving data sets
static void clearData (std::vector< float * > &data)
 clears current data
static void report (unsigned int row, float cmd, float actual)
 reports data as they are being taken
static void err (const std::string &str)
 pops up an error message on the controller and also displays it on the console

Protected Attributes

enum WalkCalibration:: { ... }  st
 the currently active state
enum WalkCalibration::dataSource curType
 the currently selected type of data being recorded
float old_x
 the x velocity recorded when we started moving
float old_y
 the y velocity recorded when we started moving
float old_a
 the a velocity recorded when we started moving
unsigned int startTime
 the time recording started
unsigned int stopTime
 the time recording stopped
ControlBasehelp
 control holding help info
FileInputControlload
 control for loading data
StringInputControlsave
 control for saving data
ControlBasemeasure
 control for taking measurements
ControlBaseclear
 control for clearing data
ToggleControlpolar
 control for selecting polar measurements for fs/bs
ToggleControlrect
 control for selecting cartesian measurements for fs/bs
bool isPolar
 true if polar measurements is selected
std::string lastLoad
 name last data file selected (so we know if a new has been selected
float firstIn
 the input given for the first measurement
float secondIn
 the input given for the second measurement
std::vector< float * > data [NUM_SRC]
 an array of vectors of sample points (one veotor for each of the sample types)
unsigned int cnts [NUM_SRC]
 count of samples for each sample type (cnts[i] should equal data[i].size())
std::string status
 string to send for ControllerGUI status message (current count of each sample type)

Static Protected Attributes

static char * datanames [NUM_SRC] = { "fs","fr","sr","br","bs","rr" }
 name for each sample type

Private Member Functions

 WalkCalibration (const WalkCalibration &)
 don't call
WalkCalibrationoperator= (const WalkCalibration &)
 don't call

Member Enumeration Documentation

anonymous enum [protected]

Enumerator:
ROOT  indicates the root menu is currently displayed (save/load data sets...)
CHOOSE  indicates the sample type selection is displayed
READY  waiting for user to indicate 0 point
MOVING  recording, waiting for the motion stop event
READING_1  waiting for user to supply the first measurement coordinate
READING_2  waiting for user to supply the second measurement coordinate
CLEAR  clear data confirmation menu

Definition at line 46 of file WalkCalibration.h.

enum WalkCalibration::dataSource [protected]

allows representation of the current sample type

Enumerator:
fs  forward-sideways
fr  forward-rotate
sr  sideways-rotate
br  backward-rotate
bs  backward-sideways
r  pure rotation
NUM_SRC  number of data types

Definition at line 57 of file WalkCalibration.h.


Constructor & Destructor Documentation

WalkCalibration::WalkCalibration (  ) 

constructor

Definition at line 18 of file WalkCalibration.cc.

WalkCalibration::~WalkCalibration (  ) 

destructor

Definition at line 178 of file WalkCalibration.cc.

WalkCalibration::WalkCalibration ( const WalkCalibration  )  [private]

don't call


Member Function Documentation

ControlBase * WalkCalibration::activate ( MotionManager::MC_ID  disp_id,
Socket gui 
) [virtual]

Called when the control is activated (or the control system is reactivating).

Takes the id number of a LedMC which the control should use, maintained by Controller. Controls share the display which is passed, and may use the socket gui to communicate with the GUI controller, if it is connected.

Returns:
a ControlBase pointer. Return:
  • this if the control should stay active (if it's not a one-shot command)
  • NULL to return to parent
  • other address to spawn a child control

Reimplemented from ControlBase.

Definition at line 187 of file WalkCalibration.cc.

void WalkCalibration::refresh (  )  [virtual]

called when the child has deactivated and this control should refresh its display, or some other event (such as the user pressing the refresh button) has happened to cause a refresh to be needed

Reimplemented from ControlBase.

Definition at line 193 of file WalkCalibration.cc.

Referenced by doSelect(), processEvent(), and takeInput().

virtual void WalkCalibration::deactivate (  )  [inline, virtual]

called when this control is being popped from the control stack

Reimplemented from ControlBase.

Definition at line 29 of file WalkCalibration.h.

ControlBase * WalkCalibration::doSelect (  )  [virtual]

when the user has trigger an "open selection" - default is to return the hilighted control*/

The value which is returned is then activate()ed and pushed on the Controller's stack

Reimplemented from ControlBase.

Definition at line 218 of file WalkCalibration.cc.

void WalkCalibration::processEvent ( const EventBase e  )  [virtual]

listens for locomotion events so we know when to stop recording

Implements EventListener.

Definition at line 286 of file WalkCalibration.cc.

ControlBase * WalkCalibration::takeInput ( const std::string &  msg  )  [virtual]

called when the user has supplied a text string (may or may not have been prompted by doReadStdIn()! May not even be active yet - the user can direct the same input to a set of hilighted menus)

The value which is returned is then activate()ed and pushed on the Controller's stack

Reimplemented from ControlBase.

Definition at line 301 of file WalkCalibration.cc.

void WalkCalibration::setHilights ( const std::vector< unsigned int > &  hi  )  [virtual]

sets the hilighted slots

Reimplemented from ControlBase.

Definition at line 338 of file WalkCalibration.cc.

void WalkCalibration::hilightFirst (  )  [virtual]

sets the hilight to the first non-null slot

Reimplemented from ControlBase.

Definition at line 351 of file WalkCalibration.cc.

Referenced by setupClear().

void WalkCalibration::loadData ( const std::string &  name,
std::vector< float * > &  data 
) [static, protected]

does the work of loading data sets

Definition at line 365 of file WalkCalibration.cc.

Referenced by refresh().

void WalkCalibration::saveData ( const std::string &  name,
const std::vector< float * > &  data 
) [static, protected]

does the work of saving data sets

Definition at line 389 of file WalkCalibration.cc.

Referenced by refresh().

void WalkCalibration::clearData ( std::vector< float * > &  data  )  [static, protected]

clears current data

Definition at line 411 of file WalkCalibration.cc.

Referenced by doSelect(), and loadData().

void WalkCalibration::setupRoot (  )  [protected]

sets state to root menu

Definition at line 417 of file WalkCalibration.cc.

Referenced by doSelect(), and WalkCalibration().

void WalkCalibration::setupChoose (  )  [protected]

sets state to choose type menu

Definition at line 429 of file WalkCalibration.cc.

Referenced by doSelect().

void WalkCalibration::setupReady (  )  [protected]

sets state to ready menu

Definition at line 453 of file WalkCalibration.cc.

Referenced by doSelect(), and takeInput().

void WalkCalibration::setupMoving (  )  [protected]

sets state to moving menu

Definition at line 543 of file WalkCalibration.cc.

Referenced by doSelect().

void WalkCalibration::setupReading1 (  )  [protected]

sets state to enter first measurement menu

Definition at line 603 of file WalkCalibration.cc.

Referenced by processEvent().

void WalkCalibration::setupReading2 (  )  [protected]

sets state to enter second measurement menu

Definition at line 620 of file WalkCalibration.cc.

Referenced by setupReading1(), and takeInput().

void WalkCalibration::setupClear (  )  [protected]

sets state to clear confirmation menu

Definition at line 638 of file WalkCalibration.cc.

Referenced by doSelect().

unsigned int WalkCalibration::getType (  )  [protected]

returns current sample type

unsigned int WalkCalibration::getFirstIndex ( WalkCalibration::dataSource  t  )  [protected]

returns a name index for the first measurement type

Definition at line 650 of file WalkCalibration.cc.

Referenced by setupChoose(), setupMoving(), and setupReady().

unsigned int WalkCalibration::getSecondIndex ( WalkCalibration::dataSource  t  )  [protected]

returns a name index for the second measurement type

Definition at line 667 of file WalkCalibration.cc.

Referenced by setupChoose(), setupMoving(), and setupReady().

char * WalkCalibration::getIndexName ( unsigned int  t  )  [protected]

returns name for measurement type

Definition at line 683 of file WalkCalibration.cc.

Referenced by setupChoose(), setupMoving(), and setupReady().

char * WalkCalibration::getFirstMeasure ( WalkCalibration::dataSource  t  )  [protected]

returns name for first measurement type

Definition at line 697 of file WalkCalibration.cc.

Referenced by processEvent(), setupReading1(), and takeInput().

char * WalkCalibration::getSecondMeasure ( WalkCalibration::dataSource  t  )  [protected]

returns name for second measurement type

Definition at line 721 of file WalkCalibration.cc.

Referenced by processEvent(), setupReading2(), and takeInput().

float WalkCalibration::arclen ( float  d,
float  a,
float  sign 
) [protected]

calculates arc distance corresponding to a displacement and angle, negated if necessary to match sign

Definition at line 740 of file WalkCalibration.cc.

Referenced by addSample().

void WalkCalibration::addSample (  )  [protected]

adds data point corresponding to measurements stored in firstIn and secondIn

Definition at line 798 of file WalkCalibration.cc.

Referenced by takeInput().

void WalkCalibration::addSample ( std::vector< float * > &  dat,
float  x,
float  y,
float  a 
) [protected]

adds data point to dat for a given x,y,a (and old_x, old_y, old_a)

Definition at line 880 of file WalkCalibration.cc.

void WalkCalibration::report ( unsigned int  row,
float  cmd,
float  actual 
) [static, protected]

reports data as they are being taken

Definition at line 859 of file WalkCalibration.cc.

Referenced by addSample().

void WalkCalibration::err ( const std::string &  str  )  [static, protected]

pops up an error message on the controller and also displays it on the console

Definition at line 870 of file WalkCalibration.cc.

Referenced by loadData(), saveData(), setupMoving(), and takeInput().

WalkCalibration& WalkCalibration::operator= ( const WalkCalibration  )  [private]

don't call


Member Data Documentation

float WalkCalibration::old_x [protected]

the x velocity recorded when we started moving

Definition at line 92 of file WalkCalibration.h.

Referenced by addSample(), and setupMoving().

float WalkCalibration::old_y [protected]

the y velocity recorded when we started moving

Definition at line 93 of file WalkCalibration.h.

Referenced by addSample(), and setupMoving().

float WalkCalibration::old_a [protected]

the a velocity recorded when we started moving

Definition at line 94 of file WalkCalibration.h.

Referenced by addSample(), and setupMoving().

unsigned int WalkCalibration::startTime [protected]

the time recording started

Definition at line 95 of file WalkCalibration.h.

Referenced by addSample(), processEvent(), and setupMoving().

unsigned int WalkCalibration::stopTime [protected]

the time recording stopped

Definition at line 96 of file WalkCalibration.h.

Referenced by addSample(), and processEvent().

control holding help info

Definition at line 98 of file WalkCalibration.h.

Referenced by setupRoot(), WalkCalibration(), and ~WalkCalibration().

control for loading data

Definition at line 99 of file WalkCalibration.h.

Referenced by refresh(), setupRoot(), WalkCalibration(), and ~WalkCalibration().

control for saving data

Definition at line 100 of file WalkCalibration.h.

Referenced by refresh(), setupRoot(), WalkCalibration(), and ~WalkCalibration().

control for taking measurements

Definition at line 101 of file WalkCalibration.h.

Referenced by doSelect(), setupRoot(), WalkCalibration(), and ~WalkCalibration().

control for clearing data

Definition at line 102 of file WalkCalibration.h.

Referenced by doSelect(), setupRoot(), WalkCalibration(), and ~WalkCalibration().

control for selecting polar measurements for fs/bs

Definition at line 103 of file WalkCalibration.h.

Referenced by doSelect(), refresh(), setHilights(), and setupReady().

control for selecting cartesian measurements for fs/bs

Definition at line 104 of file WalkCalibration.h.

Referenced by doSelect(), setHilights(), and setupReady().

bool WalkCalibration::isPolar [protected]

true if polar measurements is selected

Definition at line 105 of file WalkCalibration.h.

Referenced by addSample(), getFirstMeasure(), getSecondMeasure(), refresh(), and setupReady().

std::string WalkCalibration::lastLoad [protected]

name last data file selected (so we know if a new has been selected

Definition at line 106 of file WalkCalibration.h.

Referenced by refresh().

float WalkCalibration::firstIn [protected]

the input given for the first measurement

Definition at line 108 of file WalkCalibration.h.

Referenced by addSample(), and takeInput().

float WalkCalibration::secondIn [protected]

the input given for the second measurement

Definition at line 109 of file WalkCalibration.h.

Referenced by addSample(), and takeInput().

std::vector<float*> WalkCalibration::data[NUM_SRC] [protected]

an array of vectors of sample points (one veotor for each of the sample types)

Definition at line 110 of file WalkCalibration.h.

Referenced by addSample(), doSelect(), and refresh().

unsigned int WalkCalibration::cnts[NUM_SRC] [protected]

count of samples for each sample type (cnts[i] should equal data[i].size())

Definition at line 111 of file WalkCalibration.h.

Referenced by addSample(), doSelect(), refresh(), setupClear(), and WalkCalibration().

char * WalkCalibration::datanames = { "fs","fr","sr","br","bs","rr" } [static, protected]

name for each sample type

Definition at line 112 of file WalkCalibration.h.

Referenced by refresh().

std::string WalkCalibration::status [protected]

string to send for ControllerGUI status message (current count of each sample type)

Definition at line 114 of file WalkCalibration.h.

Referenced by refresh(), setupClear(), and setupRoot().


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

Tekkotsu v4.0
Generated Thu Nov 22 00:58:47 2007 by Doxygen 1.5.4