Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

WalkControllerBehavior Class Reference

#include <WalkControllerBehavior.h>

Inheritance diagram for WalkControllerBehavior:

List of all members.


Detailed Description

Listens to control commands coming in from the command port for remotely controlling the walk.

The communication protocol is a very simple binary format, shared with HeadPointControllerBehavior. Each command is sent as a 5-byte group. The first byte is a command selector, and the following 4 bytes are a floating point argument:

  • <char: command indicator>
  • <float: value>

The valid values for command indicator are given by CMD_fwd, CMD_roto, or CMD_side ('f', 'r', or 's' respectively). Others are listed below, but are not currently used.

Definition at line 29 of file WalkControllerBehavior.h.


Public Member Functions

 WalkControllerBehavior ()
 constructor
virtual ~WalkControllerBehavior ()
 destructor
virtual void DoStart ()
 By default, merely adds to the reference counter (through AddReference()); Note you should still call this from your overriding methods.
virtual void DoStop ()
 By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).
virtual WalkMCgetWalkMC ()
 returns the WalkMC which [will be|is being] used
virtual MotionManager::MC_ID getWalkID ()
 returns the current Walk's MotionCommand ID
virtual void processEvent (const EventBase &)
 The only event we could possibly receive is the stop-if-no-heartbeat timer.
virtual std::string getDescription () const
 Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

Static Public Member Functions

static int mechacmd_callback (char *buf, int bytes)
 called by wireless when there's new data
static std::string getClassDescription ()
 Gives a short description of what this class of behaviors does... you should override this (but don't have to).

Static Public Attributes

static WalkControllerBehaviortheOne = NULL

Protected Attributes

SharedObject< WalkMCshared_walker
 the WalkMC to use

Private Member Functions

void runCommand (unsigned char *command)
 Executes a command. Called by mechacmd_callback.
 WalkControllerBehavior (const WalkControllerBehavior &)
 don't call
WalkControllerBehavior operator= (const WalkControllerBehavior &)
 don't call

Private Attributes

float dx
 Motion parameter.
float dy
 Motion parameter.
float da
 Motion parameter.
WalkControllerBehaviortheLastOne
Socketcmdsock
 The input command stream socket.

Static Private Attributes

Command Bytes
static const char CMD_fwd = 'f'
 handy symbol for matching incoming communication
static const char CMD_roto = 'r'
 handy symbol for matching incoming communication
static const char CMD_side = 's'
 handy symbol for matching incoming communication
static const char CMD_opt0 = '0'
 handy symbol for matching incoming communication
static const char CMD_opt1 = '1'
 handy symbol for matching incoming communication
static const char CMD_opt2 = '2'
 handy symbol for matching incoming communication
static const char CMD_opt3 = '3'
 handy symbol for matching incoming communication
static const char CMD_opt4 = '4'
 handy symbol for matching incoming communication
static const char CMD_opt5 = '5'
 handy symbol for matching incoming communication
static const char CMD_opt6 = '6'
 handy symbol for matching incoming communication
static const char CMD_opt7 = '7'
 handy symbol for matching incoming communication
static const char CMD_opt8 = '8'
 handy symbol for matching incoming communication
static const char CMD_opt9 = '9'
 handy symbol for matching incoming communication

Constructor & Destructor Documentation

WalkControllerBehavior::WalkControllerBehavior ( const WalkControllerBehavior  )  [private]

don't call

WalkControllerBehavior::WalkControllerBehavior (  )  [inline]

constructor

Definition at line 80 of file WalkControllerBehavior.h.

virtual WalkControllerBehavior::~WalkControllerBehavior (  )  [inline, virtual]

destructor

Definition at line 88 of file WalkControllerBehavior.h.


Member Function Documentation

int WalkControllerBehavior::mechacmd_callback ( char *  buf,
int  bytes 
) [static]

called by wireless when there's new data

Definition at line 128 of file WalkControllerBehavior.cc.

Referenced by DoStart().

void WalkControllerBehavior::runCommand ( unsigned char *  command  )  [private]

Executes a command. Called by mechacmd_callback.

Definition at line 9 of file WalkControllerBehavior.cc.

Referenced by mechacmd_callback().

WalkControllerBehavior WalkControllerBehavior::operator= ( const WalkControllerBehavior  )  [private]

don't call

void WalkControllerBehavior::DoStart (  )  [virtual]

By default, merely adds to the reference counter (through AddReference()); Note you should still call this from your overriding methods.

Reimplemented from BehaviorBase.

Definition at line 94 of file WalkControllerBehavior.cc.

void WalkControllerBehavior::DoStop (  )  [virtual]

By default, subtracts from the reference counter (RemoveReference()), and thus may deletex if zero; Don't forget to still call this when you override this; Warning: call this at the end of your DoStop(), not beginning (it might delete this ).

Reimplemented from BehaviorBase.

Definition at line 112 of file WalkControllerBehavior.cc.

virtual WalkMC* WalkControllerBehavior::getWalkMC (  )  [inline, virtual]

returns the WalkMC which [will be|is being] used

Definition at line 94 of file WalkControllerBehavior.h.

virtual MotionManager::MC_ID WalkControllerBehavior::getWalkID (  )  [inline, virtual]

returns the current Walk's MotionCommand ID

Definition at line 96 of file WalkControllerBehavior.h.

Referenced by DoStop(), processEvent(), and runCommand().

virtual void WalkControllerBehavior::processEvent ( const EventBase  )  [inline, virtual]

The only event we could possibly receive is the stop-if-no-heartbeat timer.

Reimplemented from BehaviorBase.

Definition at line 99 of file WalkControllerBehavior.h.

static std::string WalkControllerBehavior::getClassDescription (  )  [inline, static]

Gives a short description of what this class of behaviors does... you should override this (but don't have to).

If you do override this, also consider overriding getDescription() to return it

Reimplemented from BehaviorBase.

Definition at line 104 of file WalkControllerBehavior.h.

Referenced by getDescription().

virtual std::string WalkControllerBehavior::getDescription (  )  const [inline, virtual]

Gives a short description of what this particular instantiation does (in case a more specific description is needed on an individual basis).

By default simply returns getName(), because any calls from a BehaviorBase function to getClassDescription() are going to call BehaviorBase::getClassDescription(), not ~YourSubClass~getClassDescription(), because static functions can't be virtual in C++ (doh!)

This means that getDescription called on a pointer to a BehaviorBase of unknown subtype would always return an empty string, which is pretty useless. So instead we return the name in this situation. If you want getDescription to return getClassDescription, you'll have to override it in your subclass to do so.

Reimplemented from BehaviorBase.

Definition at line 109 of file WalkControllerBehavior.h.


Member Data Documentation

Points to the one WalkControllerBehavior object that the input command stream is talking to. A kludge. Dunno how you're gonna make sure you're not using this uninitialized.

Definition at line 35 of file WalkControllerBehavior.h.

Referenced by DoStart(), DoStop(), and ~WalkControllerBehavior().

the WalkMC to use

Definition at line 39 of file WalkControllerBehavior.h.

Referenced by DoStart(), and getWalkID().

const char WalkControllerBehavior::CMD_fwd = 'f' [static, private]

handy symbol for matching incoming communication

Definition at line 43 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_roto = 'r' [static, private]

handy symbol for matching incoming communication

Definition at line 44 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_side = 's' [static, private]

handy symbol for matching incoming communication

Definition at line 45 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt0 = '0' [static, private]

handy symbol for matching incoming communication

Definition at line 46 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt1 = '1' [static, private]

handy symbol for matching incoming communication

Definition at line 47 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt2 = '2' [static, private]

handy symbol for matching incoming communication

Definition at line 48 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt3 = '3' [static, private]

handy symbol for matching incoming communication

Definition at line 49 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt4 = '4' [static, private]

handy symbol for matching incoming communication

Definition at line 50 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt5 = '5' [static, private]

handy symbol for matching incoming communication

Definition at line 51 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt6 = '6' [static, private]

handy symbol for matching incoming communication

Definition at line 52 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt7 = '7' [static, private]

handy symbol for matching incoming communication

Definition at line 53 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt8 = '8' [static, private]

handy symbol for matching incoming communication

Definition at line 54 of file WalkControllerBehavior.h.

Referenced by runCommand().

const char WalkControllerBehavior::CMD_opt9 = '9' [static, private]

handy symbol for matching incoming communication

Definition at line 55 of file WalkControllerBehavior.h.

Referenced by runCommand().

float WalkControllerBehavior::dx [private]

Motion parameter.

Definition at line 58 of file WalkControllerBehavior.h.

Referenced by runCommand().

float WalkControllerBehavior::dy [private]

Motion parameter.

Definition at line 59 of file WalkControllerBehavior.h.

Referenced by runCommand().

float WalkControllerBehavior::da [private]

Motion parameter.

Definition at line 60 of file WalkControllerBehavior.h.

Referenced by runCommand().

The last WCB object that was theOne, so we can restore it to prominence when we die. This is a nice gesture, but it doesn't really make sense since we're all using the same port. But just in case something changes and we don't do that, this mechanism is in place.

Definition at line 67 of file WalkControllerBehavior.h.

Referenced by DoStart(), DoStop(), and ~WalkControllerBehavior().

The input command stream socket.

Definition at line 70 of file WalkControllerBehavior.h.

Referenced by DoStart(), and DoStop().


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