Homepage Demos Overview Downloads Tutorials Reference
Credits
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages | Search

WorldState Class Reference

#include <WorldState.h>

List of all members.


Detailed Description

The state of the robot and its environment
.

Definition at line 126 of file WorldState.h.

Public Member Functions

 WorldState ()
 constructor - sets everything to zeros

void read (OSensorFrameVectorData &sensor, EventRouter *er)
 will process a sensor reading as given by OPEN-R

void read (const OPowerStatus &power, EventRouter *er)
 will process a power status update as given by OPEN-R


Public Attributes

bool alwaysGenerateStatus
 controls whether status events are generated for the boolean buttons

float outputs [NumOutputs]
 same format as Motion stuff, for ears, x<.5 is up, x>=.5 is down

float buttons [NumButtons]
 magnitude is pressure for some, 0/1 for others

float sensors [NumSensors]
 IR, Accel, Thermo, Power stuff.

float pids [NumPIDJoints][3]
 current PID settings

float pidduties [NumPIDJoints]
 duty cycles - -1 means the motor is trying to move full power in negative direction, 1 means full power in positive direction, in practice, these values stay rather small - 0.15 is significant force.

unsigned int robotStatus
 bitmask, see OPENR/OPower.h

unsigned int batteryStatus
 bitmask, see OPENR/OPower.h

unsigned int powerFlags [PowerSourceID::NumPowerSIDs]
 bitmasks of similarly-grouped items from previous two masks, corresponds to the PowerSourceID_t's

unsigned int button_times [NumButtons]
 value is time of current press, 0 if not down

unsigned int lastSensorUpdateTime
 primarily so calcDers can determine the time difference between updates, but others might want to know this too...

ProfilerOfSize< 20 > mainProfile
 holds code profiling information for MainObject

ProfilerOfSize< 06 > motionProfile
 holds code profiling information for MotionObject

WorldStateSerializerwsser
 sends current worldstate to TekkotsuMon, if it's connected

unsigned int robotDesign
 bitmask corresponding to OPENR::GetRobotDesign()


Static Public Attributes

const double g = 9.80665
 the gravitational acceleration of objects on earth

const double IROORDist = 900.0
 If IR returns this, we're out of range.

const unsigned int ERS210Mask = 1<<0
 use this to test for ERS210 features

const unsigned int ERS220Mask = 1<<1
 use this to test for ERS220 features


Protected Member Functions

void chkEvent (EventRouter *er, unsigned int off, float newval, const char *name)
 Tests to see if the button status has changed and post events as needed.

void chkPowerEvent (unsigned int sid, unsigned int cur, unsigned int mask, const char *name, std::string actname[PowerSourceID::NumPowerSIDs], std::string dename[PowerSourceID::NumPowerSIDs], unsigned int summask[PowerSourceID::NumPowerSIDs])
 sets the names of the flags that will be generating events

void calcDers (double next, double &cur, double &vel, double &acc, double invtimediff)
 given the next value, calculates and stores the next current, the velocity, and the acceleration


Protected Attributes

unsigned int curtime
 set by read(OSensorFrameVectorData& sensor, EventRouter* er) for chkEvent() so each call doesn't have to


Private Member Functions

 WorldState (const WorldState &)
 don't use

WorldState operator= (const WorldState &)
 don't use


Constructor & Destructor Documentation

WorldState::WorldState  ) 
 

constructor - sets everything to zeros

Definition at line 26 of file WorldState.cc.

References button_times, buttons, ERS210Mask, ERS220Mask, get_time(), ERS210Info::NumButtons, ERS210Info::NumOutputs, ERS210Info::NumPIDJoints, ERS210Info::NumSensors, outputs, pidduties, pids, powerFlags, robotDesign, sensors, and wsser.

WorldState::WorldState const WorldState  )  [private]
 

don't use


Member Function Documentation

void WorldState::calcDers double  next,
double &  cur,
double &  vel,
double &  acc,
double  invtimediff
[inline, protected]
 

given the next value, calculates and stores the next current, the velocity, and the acceleration

Parameters:
next the new value that's about to be set
cur the previous value
vel the previous 1st derivative
acc the previous 2nd derivative
invtimediff $1/(curtime-prevtime)$ in seconds

Definition at line 196 of file WorldState.h.

void WorldState::chkEvent EventRouter er,
unsigned int  off,
float  newval,
const char *  name
[protected]
 

Tests to see if the button status has changed and post events as needed.

Definition at line 287 of file WorldState.cc.

References EventBase::activateETID, alwaysGenerateStatus, button_times, EventBase::buttonEGID, buttons, curtime, EventBase::deactivateETID, EventRouter::postEvent(), and EventBase::statusETID.

void WorldState::chkPowerEvent unsigned int  sid,
unsigned int  cur,
unsigned int  mask,
const char *  name,
std::string  actname[PowerSourceID::NumPowerSIDs],
std::string  dename[PowerSourceID::NumPowerSIDs],
unsigned int  summask[PowerSourceID::NumPowerSIDs]
[inline, protected]
 

sets the names of the flags that will be generating events

note that this function does not actually do the event posting

Definition at line 179 of file WorldState.h.

References powerFlags.

WorldState WorldState::operator= const WorldState  )  [private]
 

don't use

void WorldState::read const OPowerStatus &  power,
EventRouter er
 

will process a power status update as given by OPEN-R

This will cause events to be posted

Definition at line 213 of file WorldState.cc.

References EventBase::activateETID, chkPowerEvent(), EventBase::deactivateETID, EventRouter::postEvent(), ERS210Info::PowerCapacityOffset, ERS210Info::PowerCurrentOffset, EventBase::powerEGID, powerFlags, ERS210Info::PowerRemainOffset, ERS210Info::PowerThermoOffset, ERS210Info::PowerVoltageOffset, sensors, and EventBase::statusETID.

void WorldState::read OSensorFrameVectorData &  sensor,
EventRouter er
 

will process a sensor reading as given by OPEN-R

This will cause events to be posted

Todo:
change to use most recent instead of oldest - is a buffer!

Definition at line 71 of file WorldState.cc.

References ERS210Info::BAccelOffset, ERS210Info::BackButOffset, ERS210Info::ChinButOffset, chkEvent(), curtime, ERS210Info::DAccelOffset, ERS210Info::ElevatorOffset, ERS210Mask, ERS220Mask, get_time(), GETB, GETD, GETDUTY, ERS210Info::HeadBkButOffset, ERS210Info::HeadFrButOffset, ERS210Info::HeadOffset, ERS210Info::IRDistOffset, ERS210Info::KneeOffset, ERS210Info::LAccelOffset, lastSensorUpdateTime, ERS210Info::LBkLegOffset, ERS210Info::LBkPawOffset, ERS210Info::LFrLegOffset, ERS210Info::LFrPawOffset, outputs, ERS210Info::PanOffset, pidduties, EventRouter::postEvent(), ERS210Info::RBkLegOffset, ERS210Info::RBkPawOffset, ERS210Info::RFrLegOffset, ERS210Info::RFrPawOffset, robotDesign, ERS210Info::RollOffset, ERS210Info::RotatorOffset, EventBase::sensorEGID, sensors, EventBase::statusETID, ERS210Info::ThermoOffset, and ERS210Info::TiltOffset.


Member Data Documentation

bool WorldState::alwaysGenerateStatus
 

controls whether status events are generated for the boolean buttons

Definition at line 131 of file WorldState.h.

unsigned int WorldState::batteryStatus
 

bitmask, see OPENR/OPower.h

Definition at line 140 of file WorldState.h.

unsigned int WorldState::button_times[NumButtons]
 

value is time of current press, 0 if not down

Definition at line 143 of file WorldState.h.

float WorldState::buttons[NumButtons]
 

magnitude is pressure for some, 0/1 for others

Definition at line 134 of file WorldState.h.

unsigned int WorldState::curtime [protected]
 

set by read(OSensorFrameVectorData& sensor, EventRouter* er) for chkEvent() so each call doesn't have to

Definition at line 172 of file WorldState.h.

const unsigned int WorldState::ERS210Mask = 1<<0 [static]
 

use this to test for ERS210 features

Definition at line 168 of file WorldState.h.

const unsigned int WorldState::ERS220Mask = 1<<1 [static]
 

use this to test for ERS220 features

Definition at line 169 of file WorldState.h.

const double WorldState::g = 9.80665 [static]
 

the gravitational acceleration of objects on earth

Definition at line 21 of file WorldState.cc.

const double WorldState::IROORDist = 900.0 [static]
 

If IR returns this, we're out of range.

Definition at line 22 of file WorldState.cc.

unsigned int WorldState::lastSensorUpdateTime
 

primarily so calcDers can determine the time difference between updates, but others might want to know this too...

Definition at line 145 of file WorldState.h.

ProfilerOfSize<20> WorldState::mainProfile
 

holds code profiling information for MainObject

Definition at line 150 of file WorldState.h.

ProfilerOfSize<06> WorldState::motionProfile
 

holds code profiling information for MotionObject

Definition at line 151 of file WorldState.h.

float WorldState::outputs[NumOutputs]
 

same format as Motion stuff, for ears, x<.5 is up, x>=.5 is down

Definition at line 133 of file WorldState.h.

float WorldState::pidduties[NumPIDJoints]
 

duty cycles - -1 means the motor is trying to move full power in negative direction, 1 means full power in positive direction, in practice, these values stay rather small - 0.15 is significant force.

Definition at line 137 of file WorldState.h.

float WorldState::pids[NumPIDJoints][3]
 

current PID settings

Definition at line 136 of file WorldState.h.

unsigned int WorldState::powerFlags[PowerSourceID::NumPowerSIDs]
 

bitmasks of similarly-grouped items from previous two masks, corresponds to the PowerSourceID_t's

Definition at line 141 of file WorldState.h.

unsigned int WorldState::robotDesign
 

bitmask corresponding to OPENR::GetRobotDesign()

This allows you to efficiently test different combinations, like any 2x0 model vs. any 3xx model (when/if the 3xx's are supported).
Testing this will give more accurate feedback as to whether features exist than checking RobotInfo values - to achieve dual booting, RobotInfo may, for instance, tell you there are two ears, but if you're running on a 220 the value you set them to will be ignored

Definition at line 167 of file WorldState.h.

unsigned int WorldState::robotStatus
 

bitmask, see OPENR/OPower.h

Definition at line 139 of file WorldState.h.

float WorldState::sensors[NumSensors]
 

IR, Accel, Thermo, Power stuff.

Definition at line 135 of file WorldState.h.

WorldStateSerializer* WorldState::wsser
 

sends current worldstate to TekkotsuMon, if it's connected

Definition at line 157 of file WorldState.h.


The documentation for this class was generated from the following files:
Tekkotsu v1.4
Generated Sat Jul 19 00:09:17 2003 by Doxygen 1.3.2