player.h
1/*
2 * Player - One Hell of a Robot Server
3 * Copyright (C) 2000
4 * Brian Gerkey, Kasper Stoy, Richard Vaughan, & Andrew Howard
5 *
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 *
21 */
22/********************************************************************
23 *
24 * This library is free software; you can redistribute it and/or
25 * modify it under the terms of the GNU Lesser General Public
26 * License as published by the Free Software Foundation; either
27 * version 2.1 of the License, or (at your option) any later version.
28 *
29 * This library is distributed in the hope that it will be useful,
30 * but WITHOUT ANY WARRANTY; without even the implied warranty of
31 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
32 * Lesser General Public License for more details.
33 *
34 * You should have received a copy of the GNU Lesser General Public
35 * License along with this library; if not, write to the Free Software
36 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
37 *
38 ********************************************************************/
39
40/*
41 * Desc: Player communication packet structures and codes
42 * CVS: $Id$
43 */
44
45
46#ifndef PLAYER_H
47#define PLAYER_H
48
49#include <time.h>
50
51/* Include values from the configure script */
52#include "playerconfig.h"
53
68#define PLAYER_MAX_MESSAGE_SIZE 8388608 /*8MB*/
70#define PLAYER_MAX_PAYLOAD_SIZE (PLAYER_MAX_MESSAGE_SIZE - sizeof(player_msghdr_t))
72#define PLAYER_MAX_DRIVER_STRING_LEN 64
74#define PLAYER_MAX_DEVICES 4096
76#define PLAYER_MSGQUEUE_DEFAULT_MAXLEN 1024
78#define PLAYER_IDENT_STRING "Player v."
80#define PLAYER_IDENT_STRLEN 32
82#define PLAYER_KEYLEN 32
95#define PLAYER_MSGTYPE_DATA 1
96
99#define PLAYER_MSGTYPE_CMD 2
100
106#define PLAYER_MSGTYPE_REQ 3
107
112#define PLAYER_MSGTYPE_RESP_ACK 4
113
117#define PLAYER_MSGTYPE_SYNCH 5
118
125#define PLAYER_MSGTYPE_RESP_NACK 6
126
145typedef struct player_devaddr
146{
148 uint32_t host;
151 uint32_t robot;
153 uint16_t interf;
155 uint16_t index;
157
161typedef struct player_msghdr
162{
166 uint8_t type;
168 uint8_t subtype;
170 double timestamp;
172 uint32_t seq;
174 uint32_t size;
184typedef struct player_point_2d
185{
187 double px;
189 double py;
191
192
194typedef struct player_point_3d
195{
197 double px;
199 double py;
201 double pz;
203
204
215
217typedef struct player_pose2d
218{
220 double px;
222 double py;
224 double pa;
226
228typedef struct player_pose3d
229{
231 double px;
233 double py;
235 double pz;
237 double proll;
239 double ppitch;
241 double pyaw;
243
245typedef struct player_bbox2d
246{
248 double sw;
250 double sl;
252
254typedef struct player_bbox3d
255{
257 double sw;
259 double sl;
261 double sh;
263
266{
268 uint32_t key_count;
270 char* key;
272 uint32_t group_count;
274 char* group;
276 uint16_t type;
278 uint16_t subtype;
280 uint32_t data_count;
282 uint8_t* data;
289
291typedef struct player_segment
292{
294 double x0;
296 double y0;
298 double x1;
300 double y1;
302
307typedef struct player_extent2d
308{
310 double x0;
312 double y0;
314 double x1;
316 double y1;
318
320typedef struct player_color
321{
323 uint8_t alpha;
325 uint8_t red;
327 uint8_t green;
329 uint8_t blue;
331
333typedef struct player_bool
334{
336 uint8_t state;
338
340typedef struct player_uint32
341{
342 uint32_t value;
344
345
397#define PLAYER_CAPABILITIES_REQ 255
400#define PLAYER_CAPABILTIES_REQ 255
401
410
430#define PLAYER_GET_INTPROP_REQ 254
432#define PLAYER_SET_INTPROP_REQ 253
434#define PLAYER_GET_DBLPROP_REQ 252
436#define PLAYER_SET_DBLPROP_REQ 251
438#define PLAYER_GET_STRPROP_REQ 250
440#define PLAYER_SET_STRPROP_REQ 249
442#define PLAYER_GET_BOOLPROP_REQ 248
444#define PLAYER_SET_BOOLPROP_REQ 247
445
456
458typedef struct player_intprop_req
459{
461 uint32_t key_count;
463 char *key;
465 int32_t value;
467
469typedef struct player_dblprop_req
470{
472 uint32_t key_count;
474 char *key;
476 double value;
478
480typedef struct player_strprop_req
481{
483 uint32_t key_count;
485 char *key;
487 uint32_t value_count;
489 char *value;
491
494// /////////////////////////////////////////////////////////////////////////////
495//
496// Here starts the alphabetical list of interfaces
497// (please keep it that way)
498//
499// /////////////////////////////////////////////////////////////////////////////
500
536#include <libplayerinterface/player_interfaces.h>
537
538#endif /* PLAYER_H */
struct player_msghdr player_msghdr_t
Generic message header.
struct player_devaddr player_devaddr_t
A device address.
struct player_capabilities_req player_capabilities_req_t
Structure containing a single capability request.
struct player_intprop_req player_intprop_req_t
Request to get an integer property.
struct player_dblprop_req player_dblprop_req_t
Request to get a double property.
struct player_boolprop_req player_boolprop_req_t
Request to get a boolean property.
struct player_strprop_req player_strprop_req_t
Request to get a string property.
struct player_point_2d player_point_2d_t
A point in the plane.
struct player_bbox2d player_bbox2d_t
A rectangular bounding box, used to define the size of an object.
struct player_blackboard_entry player_blackboard_entry_t
Vectormap feature data.
struct player_uint32 player_uint32_t
Structure for messages returning a single integer.
struct player_color player_color_t
A color descriptor.
struct player_segment player_segment_t
A line segment, used to construct vector-based maps.
struct player_extent2d player_extent2d_t
A rectangular bounding box, used to define the origin and bounds of an object.
struct player_bool player_bool_t
A boolean variable, 0 for false anything else for true.
struct player_bbox3d player_bbox3d_t
A rectangular bounding box, used to define the size of an object.
struct player_pose3d player_pose3d_t
A pose in space.
struct player_point_3d player_point_3d_t
A point in 3D space.
struct player_pose2d player_pose2d_t
A pose in the plane.
struct player_orientation_3d player_orientation_3d_t
An angle in 3D space.
A rectangular bounding box, used to define the size of an object.
Definition player.h:246
double sw
Width [m].
Definition player.h:248
double sl
Length [m].
Definition player.h:250
A rectangular bounding box, used to define the size of an object.
Definition player.h:255
double sh
Height [m].
Definition player.h:261
double sw
Width [m].
Definition player.h:257
double sl
Length [m].
Definition player.h:259
Vectormap feature data.
Definition player.h:266
char * key
Identifier for the entry.
Definition player.h:270
uint32_t timestamp_sec
Time of entry creation.
Definition player.h:284
uint16_t type
Entry data type.
Definition player.h:276
uint32_t data_count
Entry data length.
Definition player.h:280
uint16_t subtype
Entry data subtype.
Definition player.h:278
char * group
Second identifier.
Definition player.h:274
uint32_t key_count
Length of key in bytes.
Definition player.h:268
uint32_t group_count
Second identifier count.
Definition player.h:272
uint8_t * data
Entry data.
Definition player.h:282
uint32_t timestamp_usec
Time of entry creation.
Definition player.h:286
A boolean variable, 0 for false anything else for true.
Definition player.h:334
uint8_t state
state
Definition player.h:336
Request to get a boolean property.
Definition player.h:448
uint32_t key_count
The property key's length.
Definition player.h:450
char * key
The property key.
Definition player.h:452
char value
The property value.
Definition player.h:454
Structure containing a single capability request.
Definition player.h:404
uint32_t type
The type of the requested capability (i.e.
Definition player.h:406
uint32_t subtype
The subtype of the requested capability (i.e.
Definition player.h:408
A color descriptor.
Definition player.h:321
uint8_t green
Green color channel.
Definition player.h:327
uint8_t blue
Blue color channel.
Definition player.h:329
uint8_t red
Red color channel.
Definition player.h:325
uint8_t alpha
Alpha (transparency) channel.
Definition player.h:323
Request to get a double property.
Definition player.h:470
uint32_t key_count
The property key's length.
Definition player.h:472
double value
The property value.
Definition player.h:476
char * key
The property key.
Definition player.h:474
A device address.
Definition player.h:146
uint16_t index
Which device of that interface.
Definition player.h:155
uint32_t robot
The "robot" or device collection in which the device resides.
Definition player.h:151
uint32_t host
The "host" on which the device resides.
Definition player.h:148
uint16_t interf
The interface provided by the device; must be one of PLAYER_*_CODE.
Definition player.h:153
A rectangular bounding box, used to define the origin and bounds of an object.
Definition player.h:308
double y1
Endpoints [m].
Definition player.h:316
double x1
Endpoints [m].
Definition player.h:314
double x0
Origin x [m].
Definition player.h:310
double y0
Origin y [m].
Definition player.h:312
Request to get an integer property.
Definition player.h:459
int32_t value
The property value.
Definition player.h:465
char * key
The property key.
Definition player.h:463
uint32_t key_count
The property key's length.
Definition player.h:461
Generic message header.
Definition player.h:162
uint8_t type
Message type; must be one of PLAYER_MSGTYPE_*.
Definition player.h:166
uint32_t size
Size in bytes of the payload to follow.
Definition player.h:174
uint32_t seq
For keeping track of associated messages.
Definition player.h:172
uint8_t subtype
Message subtype; interface specific.
Definition player.h:168
player_devaddr_t addr
Device to which this message pertains.
Definition player.h:164
double timestamp
Time associated with message contents (seconds since epoch)
Definition player.h:170
An angle in 3D space.
Definition player.h:207
double proll
roll [rad]
Definition player.h:209
double pyaw
yaw [rad]
Definition player.h:213
double ppitch
pitch [rad]
Definition player.h:211
A point in the plane.
Definition player.h:185
double py
Y [m].
Definition player.h:189
double px
X [m].
Definition player.h:187
A point in 3D space.
Definition player.h:195
double px
X [m].
Definition player.h:197
double pz
Z [m].
Definition player.h:201
double py
Y [m].
Definition player.h:199
A pose in the plane.
Definition player.h:218
double px
X [m].
Definition player.h:220
double pa
yaw [rad]
Definition player.h:224
double py
Y [m].
Definition player.h:222
A pose in space.
Definition player.h:229
double pz
Z [m].
Definition player.h:235
double py
Y [m].
Definition player.h:233
double ppitch
pitch [rad]
Definition player.h:239
double px
X [m].
Definition player.h:231
double pyaw
yaw [rad]
Definition player.h:241
double proll
roll [rad]
Definition player.h:237
A line segment, used to construct vector-based maps.
Definition player.h:292
double y0
Endpoints [m].
Definition player.h:296
double x0
Endpoints [m].
Definition player.h:294
double y1
Endpoints [m].
Definition player.h:300
double x1
Endpoints [m].
Definition player.h:298
Request to get a string property.
Definition player.h:481
char * key
The property key.
Definition player.h:485
char * value
The property value.
Definition player.h:489
uint32_t value_count
The property's length.
Definition player.h:487
uint32_t key_count
The property key's length.
Definition player.h:483
Structure for messages returning a single integer.
Definition player.h:341