position2d
[Interface specifications]


Detailed Description

Planar mobile robot.

The position2d interface is used to control mobile robot bases in 2D.

#define PLAYER_POSITION2D_REQ_GET_GEOM   1
 Request/reply subtype: get geometry.
#define PLAYER_POSITION2D_REQ_MOTOR_POWER   2
 Request/reply subtype: motor power.
#define PLAYER_POSITION2D_REQ_VELOCITY_MODE   3
 Request/reply subtype: velocity mode.
#define PLAYER_POSITION2D_REQ_POSITION_MODE   4
 Request/reply subtype: position mode.
#define PLAYER_POSITION2D_REQ_SET_ODOM   5
 Request/reply subtype: set odometry.
#define PLAYER_POSITION2D_REQ_RESET_ODOM   6
 Request/reply subtype: reset odometry.
#define PLAYER_POSITION2D_REQ_SPEED_PID   7
 Request/reply subtype: set speed PID params.
#define PLAYER_POSITION2D_REQ_POSITION_PID   8
 Request/reply subtype: set position PID params.
#define PLAYER_POSITION2D_REQ_SPEED_PROF   9
 Request/reply subtype: set speed profile params.
#define PLAYER_POSITION2D_DATA_STATE   1
 Data subtype: state.
#define PLAYER_POSITION2D_DATA_GEOM   2
 Data subtype: geometry.
#define PLAYER_POSITION2D_CMD_VEL   1
 Command subtype: velocity command.
#define PLAYER_POSITION2D_CMD_POS   2
 Command subtype: position command.
#define PLAYER_POSITION2D_CMD_CAR   3
 Command subtype: carlike command.
#define PLAYER_POSITION2D_CMD_VEL_HEAD   4
 Command subtype: velocity and heading command.
typedef player_position2d_data player_position2d_data_t
 Data: state (PLAYER_POSITION2D_DATA_STATE).
typedef player_position2d_cmd_vel player_position2d_cmd_vel_t
 Command: velocity (PLAYER_POSITION2D_CMD_VEL).
typedef player_position2d_cmd_pos player_position2d_cmd_pos_t
 Command: position (PLAYER_POSITION2D_CMD_POS).
typedef player_position2d_cmd_car player_position2d_cmd_car_t
 Command: carlike (PLAYER_POSITION2D_CMD_CAR).
typedef player_position2d_cmd_vel_head player_position2d_cmd_vel_head_t
 Command: vel/head (PLAYER_POSITION2D_CMD_VEL_HEAD).
typedef player_position2d_geom player_position2d_geom_t
 Data AND Request/reply: geometry.
typedef player_position2d_power_config player_position2d_power_config_t
 Request/reply: Motor power.
typedef player_position2d_velocity_mode_config player_position2d_velocity_mode_config_t
 Request/reply: Change velocity control.
typedef player_position2d_reset_odom_config player_position2d_reset_odom_config_t
 Request/reply: Reset odometry.
typedef player_position2d_position_mode_req player_position2d_position_mode_req_t
 Request/reply: Change control mode.
typedef player_position2d_set_odom_req player_position2d_set_odom_req_t
 Request/reply: Set odometry.
typedef player_position2d_speed_pid_req player_position2d_speed_pid_req_t
 Request/reply: Set velocity PID parameters.
typedef player_position2d_position_pid_req player_position2d_position_pid_req_t
 Request/reply: Set position PID parameters.
typedef player_position2d_speed_prof_req player_position2d_speed_prof_req_t
 Request/reply: Set linear speed profile parameters.

Typedef Documentation

typedef struct player_position2d_cmd_car player_position2d_cmd_car_t
 

Command: carlike (PLAYER_POSITION2D_CMD_CAR).

The position interface accepts new carlike velocity commands (speed and turning angle) for the robot's motors (only supported by some drivers).

typedef struct player_position2d_cmd_pos player_position2d_cmd_pos_t
 

Command: position (PLAYER_POSITION2D_CMD_POS).

The position interface accepts new positions for the robot's motors (drivers may support position control, speed control, or both).

typedef struct player_position2d_cmd_vel_head player_position2d_cmd_vel_head_t
 

Command: vel/head (PLAYER_POSITION2D_CMD_VEL_HEAD).

The position interface accepts new velocity+heading commands (speed and angle position) for the robot's motors (only supported by some drivers).

typedef struct player_position2d_cmd_vel player_position2d_cmd_vel_t
 

Command: velocity (PLAYER_POSITION2D_CMD_VEL).

The position interface accepts new velocities for the robot's motors (drivers may support position control, speed control, or both).

typedef struct player_position2d_data player_position2d_data_t
 

Data: state (PLAYER_POSITION2D_DATA_STATE).

The position interface returns data regarding the odometric pose and velocity of the robot, as well as motor stall information.

typedef struct player_position2d_geom player_position2d_geom_t
 

Data AND Request/reply: geometry.

To request robot geometry, send a null PLAYER_POSITION2D_REQ_GET_GEOM request. Depending on the underlying driver, this message may also be sent as data, with subtype PLAYER_POSITION2D_DATA_GEOM.

typedef struct player_position2d_position_mode_req player_position2d_position_mode_req_t
 

Request/reply: Change control mode.

To change control mode, send a PLAYER_POSITION2D_REQ_POSITION_MODE request. Null response.

typedef struct player_position2d_position_pid_req player_position2d_position_pid_req_t
 

Request/reply: Set position PID parameters.

To set position PID parameters, send a PLAYER_POSITION2D_REQ_POSITION_PID request. Null response.

typedef struct player_position2d_power_config player_position2d_power_config_t
 

Request/reply: Motor power.

On some robots, the motor power can be turned on and off from software. To do so, send a PLAYER_POSITION2D_REQ_MOTOR_POWER request with the format given below, and with the appropriate state (zero for motors off and non-zero for motors on). Null response.

Be VERY careful with this command! You are very likely to start the robot running across the room at high speed with the battery charger still attached.

typedef struct player_position2d_reset_odom_config player_position2d_reset_odom_config_t
 

Request/reply: Reset odometry.

To reset the robot's odometry to $(x, y, yaw) = (0,0,0)$, send a PLAYER_POSITION2D_REQ_RESET_ODOM request. Null response.

typedef struct player_position2d_set_odom_req player_position2d_set_odom_req_t
 

Request/reply: Set odometry.

To set the robot's odometry to a particular state, send a PLAYER_POSITION2D_REQ_SET_ODOM request. Null response.

typedef struct player_position2d_speed_pid_req player_position2d_speed_pid_req_t
 

Request/reply: Set velocity PID parameters.

To set velocity PID parameters, send a PLAYER_POSITION2D_REQ_SPEED_PID request. Null response.

typedef struct player_position2d_speed_prof_req player_position2d_speed_prof_req_t
 

Request/reply: Set linear speed profile parameters.

To set linear speed profile parameters, send a PLAYER_POSITION2D_REQ_SPEED_PROF request. Null response.

typedef struct player_position2d_velocity_mode_config player_position2d_velocity_mode_config_t
 

Request/reply: Change velocity control.

Some robots offer different velocity control modes. It can be changed by sending a PLAYER_POSITION2D_REQ_VELOCITY_MODE request with the format given below, including the appropriate mode. No matter which mode is used, the external client interface to the position device remains the same. Null response.

The p2os driver offers two modes of velocity control: separate translational and rotational control and direct wheel control. When in the separate mode, the robot's microcontroller internally computes left and right wheel velocities based on the currently commanded translational and rotational velocities and then attenuates these values to match a nice predefined acceleration profile. When in the direct mode, the microcontroller simply passes on the current left and right wheel velocities. Essentially, the separate mode offers smoother but slower (lower acceleration) control, and the direct mode offers faster but jerkier (higher acceleration) control. Player's default is to use the direct mode. Set mode to zero for direct control and non-zero for separate control.

For the reb driver, 0 is direct velocity control, 1 is for velocity-based heading PD controller.


Last updated 12 September 2005 21:38:45