position2d
Interface specifications

Planar mobile robot. More...

#define | PLAYER_POSITION2D_REQ_GET_GEOM 1
| Request/reply: geometry. More...
#define | PLAYER_POSITION2D_REQ_MOTOR_POWER 2
| Request/reply: Motor power. More...
#define | PLAYER_POSITION2D_REQ_VELOCITY_MODE 3
| Request/reply: Change velocity control. More...
#define | PLAYER_POSITION2D_REQ_POSITION_MODE 4
| Request/reply: Change control mode. More...
#define | PLAYER_POSITION2D_REQ_SET_ODOM 5
| Request/reply: Set odometry. More...
#define | PLAYER_POSITION2D_REQ_RESET_ODOM 6
| Request/reply: Reset odometry. More...
#define | PLAYER_POSITION2D_REQ_SPEED_PID 7
| Request/reply: Set velocity PID parameters. More...
#define | PLAYER_POSITION2D_REQ_POSITION_PID 8
| Request/reply: Set position PID parameters. More...
#define | PLAYER_POSITION2D_REQ_SPEED_PROF 9
| Request/reply: Set linear speed profile parameters. More...
#define | PLAYER_POSITION2D_DATA_STATE 1
| Data: state (PLAYER_POSITION2D_DATA_STATE) More...
#define | PLAYER_POSITION2D_DATA_GEOM 2
| Data: geometry. More...
#define | PLAYER_POSITION2D_CMD_VEL 1
| Command: velocity (PLAYER_POSITION2D_CMD_VEL) More...
#define | PLAYER_POSITION2D_CMD_POS 2
| Command: position (PLAYER_POSITION2D_CMD_POS) More...
#define | PLAYER_POSITION2D_CMD_CAR 3
| Command: carlike (PLAYER_POSITION2D_CMD_CAR) More...
#define | PLAYER_POSITION2D_CMD_VEL_HEAD 4
| Command: vel/head (PLAYER_POSITION2D_CMD_VEL_HEAD) More...
typedef struct player_position2d_data | player_position2d_data_t
| position2d data
typedef struct player_position2d_cmd_vel | player_position2d_cmd_vel_t
| position 2d velocity command
typedef struct player_position2d_cmd_pos | player_position2d_cmd_pos_t
| position2d position command
typedef struct player_position2d_cmd_car | player_position2d_cmd_car_t
| position2d command setting velocity and steering angle
typedef struct player_position2d_cmd_vel_head | player_position2d_cmd_vel_head_t
| position2d command setting velocity and heading
typedef struct player_position2d_geom | player_position2d_geom_t
| position2d geom
typedef struct player_position2d_power_config | player_position2d_power_config_t
| position2d power config
typedef struct player_position2d_velocity_mode_config | player_position2d_velocity_mode_config_t
| position2d velocity mode config
typedef struct player_position2d_position_mode_req | player_position2d_position_mode_req_t
| position2d position mode request
typedef struct player_position2d_set_odom_req | player_position2d_set_odom_req_t
| set odometry
typedef struct player_position2d_speed_pid_req | player_position2d_speed_pid_req_t
| position2d speed PID req
typedef struct player_position2d_position_pid_req | player_position2d_position_pid_req_t
| position2d position pid req
typedef struct player_position2d_speed_prof_req | player_position2d_speed_prof_req_t
| speed prof req

## Detailed Description

Planar mobile robot.

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

## Macro Definition Documentation

#define PLAYER_POSITION2D_CMD_CAR 3

Command: carlike (PLAYER_POSITION2D_CMD_CAR)

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

Referenced by ER::ProcessMessage().

#define PLAYER_POSITION2D_CMD_POS 2

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).

Referenced by GarciaDriver::ProcessMessage(), and snd::ProcessMessage().

#define PLAYER_POSITION2D_CMD_VEL 1

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).

Referenced by SegwayRMP400::HandlePosition2DCmd(), GarciaDriver::ProcessMessage(), snd::ProcessMessage(), SegwayRMP::ProcessMessage(), SegwayRMP400::ProcessMessage(), ER::ProcessMessage(), Khepera::ProcessMessage(), RFLEX::ProcessMessage(), ClodBuster::ProcessMessage(), and P2OS::ProcessMessage().

#define PLAYER_POSITION2D_CMD_VEL_HEAD 4

Command: vel/head (PLAYER_POSITION2D_CMD_VEL_HEAD)

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

#define PLAYER_POSITION2D_DATA_GEOM 2

Data: geometry.

This messages is published by drivers which can change their geometry at run time

#define PLAYER_POSITION2D_DATA_STATE 1

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.

Referenced by ER::Main(), SegwayRMP::Main(), RFLEX::Main(), ClodBuster::Main(), SegwayRMP400::ProcessData(), snd::ProcessMessage(), and SegwayRMP400::ProcessMessage().

#define PLAYER_POSITION2D_REQ_GET_GEOM 1

Request/reply: geometry.

To request robot geometry, send a null PLAYER_POSITION2D_REQ_GET_GEOM request.

Referenced by GarciaDriver::ProcessMessage(), SegwayRMP400::ProcessMessage(), AdaptiveMCL::ProcessMessage(), ER::ProcessMessage(), Khepera::ProcessMessage(), RFLEX::ProcessMessage(), and ClodBuster::ProcessMessage().

#define PLAYER_POSITION2D_REQ_MOTOR_POWER 2

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.

Referenced by ER::ProcessMessage(), Khepera::ProcessMessage(), RFLEX::ProcessMessage(), and ClodBuster::ProcessMessage().

#define PLAYER_POSITION2D_REQ_POSITION_MODE 4

Request/reply: Change control mode.

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

#define PLAYER_POSITION2D_REQ_POSITION_PID 8

Request/reply: Set position PID parameters.

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

#define PLAYER_POSITION2D_REQ_RESET_ODOM 6

Request/reply: Reset odometry.

To reset the robot's odometry to , send a PLAYER_POSITION2D_REQ_RESET_ODOM request. Null response.

Referenced by ER::ProcessMessage(), Khepera::ProcessMessage(), RFLEX::ProcessMessage(), and ClodBuster::ProcessMessage().

#define PLAYER_POSITION2D_REQ_SET_ODOM 5

Request/reply: Set odometry.

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

Referenced by ER::ProcessMessage(), Khepera::ProcessMessage(), RFLEX::ProcessMessage(), and ClodBuster::ProcessMessage().

#define PLAYER_POSITION2D_REQ_SPEED_PID 7

Request/reply: Set velocity PID parameters.

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

Referenced by ClodBuster::ProcessMessage().

#define PLAYER_POSITION2D_REQ_SPEED_PROF 9

Request/reply: Set linear speed profile parameters.

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

#define PLAYER_POSITION2D_REQ_VELOCITY_MODE 3

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.

Referenced by Khepera::ProcessMessage(), RFLEX::ProcessMessage(), and ClodBuster::ProcessMessage().

Last updated 12 September 2005 21:38:45