Khepera Class Reference

Inheritance diagram for Khepera:

Inheritance graph
[legend]
Collaboration diagram for Khepera:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 81 of file khepera.h.


Public Member Functions

 Khepera (ConfigFile *cf, int section)
 ~Khepera ()
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 Setup ()
 Initialize the driver.
virtual int Shutdown ()
 Finalize the driver.
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_tgeometry
int param_index
int khepera_fd
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
timeval last_pos_update
timeval last_ir_update
int pos_update_period
short desired_heading
int ir_sequence
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.

Reimplemented from Driver.

Definition at line 447 of file khepera.cc.

References position_subscriptions, Driver::ProcessMessages(), ResetOdometry(), SetSpeed(), and UpdateData().

Here is the call graph for this function:

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:
addr Address of the device to subscribe to (the driver may have more than one interface).
Returns:
Returns 0 on success.

Reimplemented from Driver.

Definition at line 353 of file khepera.cc.

References ir_subscriptions, PLAYER_IR_CODE, PLAYER_POSITION2D_CODE, position_subscriptions, and Driver::Subscribe().

Here is the call graph for this function:

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:
addr Address of the device to unsubscribe from (the driver may have more than one interface).
Returns:
Returns 0 on success.

Reimplemented from Driver.

Definition at line 376 of file khepera.cc.

References PLAYER_IR_CODE, PLAYER_POSITION2D_CODE, and Driver::Unsubscribe().

Here is the call graph for this function:

int Khepera::Setup (  )  [virtual]

Initialize the driver.

This function is called with the first client subscribes; it MUST be implemented by the driver.

Returns:
Returns 0 on success.

Implements Driver.

Definition at line 403 of file khepera.cc.

References desired_heading, direct_velocity_control, geometry, motors_enabled, KheperaSerial::Open(), player_khepera_geom::PortName, refresh_last_position, Serial, and velocity_mode.

Here is the call graph for this function:

int Khepera::Shutdown (  )  [virtual]

Finalize the driver.

This function is called with the last client unsubscribes; it MUST be implemented by the driver.

Returns:
Returns 0 on success.

Implements Driver.

Definition at line 429 of file khepera.cc.

References Serial, and Driver::StopThread().

Here is the call graph for this function:

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_queue The queue to which any response should go.
hdr The message header
data The message body

Reimplemented from Driver.

Definition at line 162 of file khepera.cc.

References player_khepera_geom::encoder_res, geometry, player_khepera_geom::ir, ir_addr, Message::MatchMessage(), motors_enabled, 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, player_khepera_geom::position, position_addr, Driver::Publish(), player_pose2d::px, ResetOdometry(), player_khepera_geom::scale, SetSpeed(), player_position2d_geom::size, player_bbox3d::sw, and player_position2d_cmd_vel::vel.

Here is the call graph for this function:


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

Last updated 12 September 2005 21:38:45