Khepera Class Reference
Inheritance diagram for Khepera:
ThreadedDriver Driver

List of all members.

Public Member Functions

 Khepera (ConfigFile *cf, int section)
virtual void Main ()
 Main method for driver thread.
virtual int Subscribe (player_devaddr_t addr)
 Subscribe to this driver.
virtual int Unsubscribe (player_devaddr_t addr)
 Unsubscribe from this driver.
virtual int MainSetup ()
 Sets up the resources needed by the driver thread.
virtual void MainQuit ()
 Cleanup method for driver thread (called when main exits)
int ResetOdometry ()
void SetIRState (int)
void UpdateData (void)
void UpdateIRData (player_ir_data_t *)
void UpdatePosData (player_position2d_data_t *)
unsigned short ReadAD (int)
int ReadAllIR (player_ir_data_t *)
int SetSpeed (int, int)
int ReadSpeed (int *, int *)
int SetPos (int, int)
int SetPosCounter (int, int)
int ReadPos (int *, int *)
int ProcessMessage (QueuePointer &resp_queue, player_msghdr *hdr, void *data)
 Message handler.

Private Attributes

player_devaddr_t ir_addr
player_devaddr_t position_addr
int position_subscriptions
int ir_subscriptions
KheperaSerialSerial
player_khepera_geom_t * geometry
int param_index
int khepera_fd
struct timeval last_position
bool refresh_last_position
int last_lpos
int last_rpos
double x
double y
double yaw
int last_x_f
int last_y_f
double last_theta
struct timeval last_pos_update
struct timeval last_ir_update
int pos_update_period
short desired_heading
int ir_sequence
struct timeval last_ir
bool motors_enabled
bool velocity_mode
bool direct_velocity_control
char khepera_serial_port [MAX_FILENAME_SIZE]

Member Function Documentation

void Khepera::Main ( ) [virtual]

Main method for driver thread.

drivers have their own thread of execution, created using StartThread(); this is the entry point for the driver thread, and must be overloaded by all threaded drivers.

Implements ThreadedDriver.

References Driver::ProcessMessages().

void Khepera::MainQuit ( void  ) [virtual]

Cleanup method for driver thread (called when main exits)

Overload this method and to do additional cleanup when the driver thread exits.

Reimplemented from ThreadedDriver.

int Khepera::ProcessMessage ( QueuePointer resp_queue,
player_msghdr hdr,
void *  data 
) [virtual]

Message handler.

This function is called once for each message in the incoming queue. Reimplement it to provide message handling. Return 0 if you handled the message and -1 otherwise

Parameters:
resp_queueThe queue to which any response should go.
hdrThe message header
dataThe message body

Reimplemented from Driver.

References Message::MatchMessage(), player_pose2d::pa, PLAYER_IR_REQ_POSE, PLAYER_MSGTYPE_CMD, PLAYER_MSGTYPE_REQ, PLAYER_MSGTYPE_RESP_ACK, PLAYER_MSGTYPE_RESP_NACK, PLAYER_POSITION2D_CMD_VEL, PLAYER_POSITION2D_REQ_GET_GEOM, PLAYER_POSITION2D_REQ_MOTOR_POWER, PLAYER_POSITION2D_REQ_RESET_ODOM, PLAYER_POSITION2D_REQ_SET_ODOM, PLAYER_POSITION2D_REQ_VELOCITY_MODE, Driver::Publish(), player_pose2d::px, player_msghdr::subtype, and player_position2d_cmd_vel::vel.

int Khepera::Subscribe ( player_devaddr_t  addr) [virtual]

Subscribe to this driver.

The Subscribe() and Unsubscribe() methods are used to control subscriptions to the driver; a driver MAY override them, but usually won't.

Parameters:
addrAddress of the device to subscribe to (the driver may have more than one interface).
Returns:
Returns 0 on success.

Reimplemented from Driver.

References player_devaddr::interf, and Driver::Subscribe().

int Khepera::Unsubscribe ( player_devaddr_t  addr) [virtual]

Unsubscribe from this driver.

The Subscribe() and Unsubscribe() methods are used to control subscriptions to the driver; a driver MAY override them, but usually won't.

Parameters:
addrAddress of the device to unsubscribe from (the driver may have more than one interface).
Returns:
Returns 0 on success.

Reimplemented from Driver.

References player_devaddr::interf, and Driver::Unsubscribe().


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

Last updated 25 May 2011 21:17:00