Tekkotsu Homepage
Demos
Overview
Downloads
Dev. Resources
Reference
Credits

WalkController Class Reference

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

#include <WalkController.h>

Inheritance diagram for WalkController:

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 30 of file WalkController.h.

List of all members.

Public Member Functions

 WalkController ()
 constructor
virtual ~WalkController ()
 destructor
virtual void doStart ()
 Delegate function for subclasses to be notified when the behavior starts up.
virtual void doStop ()
 Delegate function for subclasses to be notified when the behavior starts up.
void setKeepGUI (bool b=true)
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 doEvent ()
 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 WalkControllertheOne

Protected Types

enum  { TIMER_COMM_CHECK, TIMER_COMM_TIMEOUT }

Protected Attributes

SharedObject< WalkMCshared_walker
 the WalkMC to use

Private Member Functions

void runCommand (unsigned char *command)
 Executes a command. Called by mechacmd_callback.
void shutdown ()
 closes server socket, but skips sending close GUI command
 WalkController (const WalkController &)
 don't call
WalkController operator= (const WalkController &)
 don't call

Private Attributes

float dx
 Motion parameter.
float dy
 Motion parameter.
float da
 Motion parameter.
bool keepGUI
 if set to true (default false) then the closeGUI call will be skipped on doStop()
WalkControllertheLastOne
Socketcmdsock
 The input command stream socket.
int sock
 So we can test for remote closure.

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

Member Enumeration Documentation

anonymous enum [protected]
Enumerator:
TIMER_COMM_CHECK 
TIMER_COMM_TIMEOUT 

Definition at line 40 of file WalkController.h.


Constructor & Destructor Documentation

WalkController::WalkController ( const WalkController  )  [private]

don't call

WalkController::WalkController (  ) 

constructor

Definition at line 89 of file WalkController.h.

virtual WalkController::~WalkController (  )  [virtual]

destructor

Definition at line 97 of file WalkController.h.


Member Function Documentation

virtual void WalkController::doEvent (  )  [virtual]

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

Reimplemented from BehaviorBase.

Definition at line 110 of file WalkController.h.

virtual void WalkController::doStart (  )  [virtual]

Delegate function for subclasses to be notified when the behavior starts up.

Should be overridden by subclasses to subscribe to events, install motion commands, etc.

doStart() is basically a hook to allow subclasses to jump in and do some customization of behavior parameters while the behavior is starting. If you are writing a behavior class and do not expect further derivation, just override doStart() yourself. However, if you do expect further derivation of your class, consider using preStart() or postStart() instead, and leave doStart() for the 'leaf' classes.

Reimplemented from BehaviorBase.

virtual void WalkController::doStop (  )  [virtual]

Delegate function for subclasses to be notified when the behavior starts up.

May be overridden to cleanup when the behavior is shutting down. However events will automatically be unsubscribed, and by using addMotion(), motions will automatically be removed by stop(), so you may not need any cleanup.

Reimplemented from BehaviorBase.

Referenced by doEvent().

static std::string WalkController::getClassDescription (  )  [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 124 of file WalkController.h.

Referenced by getDescription().

virtual std::string WalkController::getDescription (  )  const [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 129 of file WalkController.h.

virtual MotionManager::MC_ID WalkController::getWalkID (  )  [virtual]

returns the current Walk's MotionCommand ID

Definition at line 107 of file WalkController.h.

Referenced by doEvent().

virtual WalkMC* WalkController::getWalkMC (  )  [virtual]

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

Definition at line 105 of file WalkController.h.

Referenced by XWalkEdit::XWalkEdit().

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

called by wireless when there's new data

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

don't call

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

Executes a command. Called by mechacmd_callback.

void WalkController::setKeepGUI ( bool  b = true  ) 

Definition at line 103 of file WalkController.h.

Referenced by XWalkEdit::~XWalkEdit().

void WalkController::shutdown (  )  [private]

closes server socket, but skips sending close GUI command

Referenced by doEvent().


Member Data Documentation

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

handy symbol for matching incoming communication

Definition at line 45 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 48 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 49 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 50 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 51 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 52 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 53 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 54 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 55 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 56 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 57 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 46 of file WalkController.h.

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

handy symbol for matching incoming communication

Definition at line 47 of file WalkController.h.

The input command stream socket.

Definition at line 74 of file WalkController.h.

Referenced by doEvent().

Motion parameter.

Definition at line 62 of file WalkController.h.

Motion parameter.

Definition at line 60 of file WalkController.h.

Motion parameter.

Definition at line 61 of file WalkController.h.

bool WalkController::keepGUI [private]

if set to true (default false) then the closeGUI call will be skipped on doStop()

Definition at line 64 of file WalkController.h.

Referenced by setKeepGUI().

the WalkMC to use

Definition at line 41 of file WalkController.h.

Referenced by getWalkID().

int WalkController::sock [private]

So we can test for remote closure.

Definition at line 76 of file WalkController.h.

Referenced by doEvent().

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 71 of file WalkController.h.

Referenced by ~WalkController().

Points to the one WalkController 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 36 of file WalkController.h.

Referenced by ~WalkController().


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

Tekkotsu v5.1CVS
Generated Mon May 9 04:59:18 2016 by Doxygen 1.6.3