00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00051 #ifndef PLAYERC_H
00052 #define PLAYERC_H
00053
00054 #if !defined (WIN32)
00055 #include <netinet/in.h>
00056 #endif
00057 #include <stddef.h>
00058 #include <stdio.h>
00059
00060 #include <playerconfig.h>
00061
00062
00063 #include <libplayercommon/playercommon.h>
00064 #include <libplayerinterface/player.h>
00065 #include <libplayercommon/playercommon.h>
00066 #include <libplayerinterface/interface_util.h>
00067 #include <libplayerinterface/playerxdr.h>
00068 #include <libplayerinterface/functiontable.h>
00069 #include <libplayerwkb/playerwkb.h>
00070 #if defined (WIN32)
00071 #include <winsock2.h>
00072 #endif
00073
00074 #ifndef MIN
00075 #define MIN(a,b) ((a < b) ? a : b)
00076 #endif
00077 #ifndef MAX
00078 #define MAX(a,b) ((a > b) ? a : b)
00079 #endif
00080
00081 #if defined (WIN32)
00082 #if defined (PLAYER_STATIC)
00083 #define PLAYERC_EXPORT
00084 #elif defined (playerc_EXPORTS)
00085 #define PLAYERC_EXPORT __declspec (dllexport)
00086 #else
00087 #define PLAYERC_EXPORT __declspec (dllimport)
00088 #endif
00089 #else
00090 #define PLAYERC_EXPORT
00091 #endif
00092
00093
00094 #ifdef __cplusplus
00095 extern "C" {
00096 #endif
00097
00098
00099
00100
00101
00102
00104 #define PLAYERC_OPEN_MODE PLAYER_OPEN_MODE
00105 #define PLAYERC_CLOSE_MODE PLAYER_CLOSE_MODE
00106 #define PLAYERC_ERROR_MODE PLAYER_ERROR_MODE
00107
00108
00110 #define PLAYERC_DATAMODE_PUSH PLAYER_DATAMODE_PUSH
00111 #define PLAYERC_DATAMODE_PULL PLAYER_DATAMODE_PULL
00112
00114 #define PLAYERC_TRANSPORT_TCP 1
00115 #define PLAYERC_TRANSPORT_UDP 2
00116
00117 #define PLAYERC_QUEUE_RING_SIZE 512
00118
00334
00340
00341
00346 PLAYERC_EXPORT const char *playerc_error_str(void);
00347
00349
00350
00352
00353
00355 PLAYERC_EXPORT int playerc_add_xdr_ftable(playerxdr_function_t *flist, int replace);
00356
00358
00359
00360
00361
00362 struct _playerc_client_t;
00363 struct _playerc_device_t;
00364
00365
00366
00367
00368 struct pollfd;
00369
00370
00371
00382
00383 typedef struct
00384 {
00385 player_msghdr_t header;
00386 void *data;
00387 } playerc_client_item_t;
00388
00389
00390
00391 typedef struct
00392 {
00393
00394 int client_count;
00395 struct _playerc_client_t *client[128];
00396
00397
00398 struct pollfd* pollfd;
00399
00400
00401 double time;
00402
00403 } playerc_mclient_t;
00404
00405
00406 PLAYERC_EXPORT playerc_mclient_t *playerc_mclient_create(void);
00407
00408
00409 PLAYERC_EXPORT void playerc_mclient_destroy(playerc_mclient_t *mclient);
00410
00411
00412 PLAYERC_EXPORT int playerc_mclient_addclient(playerc_mclient_t *mclient, struct _playerc_client_t *client);
00413
00414
00415
00416 PLAYERC_EXPORT int playerc_mclient_peek(playerc_mclient_t *mclient, int timeout);
00417
00418
00419
00420 PLAYERC_EXPORT int playerc_mclient_read(playerc_mclient_t *mclient, int timeout);
00421
00423
00424
00425
00426
00439 PLAYERC_EXPORT typedef void (*playerc_putmsg_fn_t) (void *device, char *header, char *data);
00440
00442 PLAYERC_EXPORT typedef void (*playerc_callback_fn_t) (void *data);
00443
00444
00448 typedef struct
00449 {
00451 player_devaddr_t addr;
00452
00454 char drivername[PLAYER_MAX_DRIVER_STRING_LEN];
00455
00456 } playerc_device_info_t;
00457
00458
00460 typedef struct _playerc_client_t
00461 {
00464 void *id;
00465
00467 char *host;
00468 int port;
00469 int transport;
00470 struct sockaddr_in server;
00471
00474 int connected;
00475
00479 int retry_limit;
00480
00483 double retry_time;
00484
00486 uint32_t overflow_count;
00487
00488
00490 int sock;
00491
00493 uint8_t mode;
00494
00497 int data_requested;
00498
00501 int data_received;
00502
00503
00506 playerc_device_info_t devinfos[PLAYER_MAX_DEVICES];
00507 int devinfo_count;
00508
00510 struct _playerc_device_t *device[PLAYER_MAX_DEVICES];
00511 int device_count;
00512
00514 playerc_client_item_t qitems[PLAYERC_QUEUE_RING_SIZE];
00515 int qfirst, qlen, qsize;
00516
00518 char *data;
00519 char *write_xdrdata;
00520 char *read_xdrdata;
00521 size_t read_xdrdata_len;
00522
00523
00525 double datatime;
00527 double lasttime;
00528
00529 double request_timeout;
00530
00531 } playerc_client_t;
00532
00533
00549 PLAYERC_EXPORT playerc_client_t *playerc_client_create(playerc_mclient_t *mclient,
00550 const char *host, int port);
00551
00557 PLAYERC_EXPORT void playerc_client_destroy(playerc_client_t *client);
00558
00563 PLAYERC_EXPORT void playerc_client_set_transport(playerc_client_t* client,
00564 unsigned int transport);
00565
00574 PLAYERC_EXPORT int playerc_client_connect(playerc_client_t *client);
00575
00584 PLAYERC_EXPORT int playerc_client_disconnect(playerc_client_t *client);
00585
00592 PLAYERC_EXPORT int playerc_client_disconnect_retry(playerc_client_t *client);
00593
00608 PLAYERC_EXPORT int playerc_client_datamode(playerc_client_t *client, uint8_t mode);
00609
00621 PLAYERC_EXPORT int playerc_client_requestdata(playerc_client_t* client);
00622
00645 PLAYERC_EXPORT int playerc_client_set_replace_rule(playerc_client_t *client, int interf, int index, int type, int subtype, int replace);
00646
00647
00650 PLAYERC_EXPORT int playerc_client_adddevice(playerc_client_t *client, struct _playerc_device_t *device);
00651
00652
00655 PLAYERC_EXPORT int playerc_client_deldevice(playerc_client_t *client, struct _playerc_device_t *device);
00656
00659 PLAYERC_EXPORT int playerc_client_addcallback(playerc_client_t *client, struct _playerc_device_t *device,
00660 playerc_callback_fn_t callback, void *data);
00661
00664 PLAYERC_EXPORT int playerc_client_delcallback(playerc_client_t *client, struct _playerc_device_t *device,
00665 playerc_callback_fn_t callback, void *data);
00666
00678 PLAYERC_EXPORT int playerc_client_get_devlist(playerc_client_t *client);
00679
00682 PLAYERC_EXPORT int playerc_client_subscribe(playerc_client_t *client, int code, int index,
00683 int access, char *drivername, size_t len);
00684
00687 PLAYERC_EXPORT int playerc_client_unsubscribe(playerc_client_t *client, int code, int index);
00688
00699 PLAYERC_EXPORT int playerc_client_request(playerc_client_t *client,
00700 struct _playerc_device_t *device, uint8_t reqtype,
00701 const void *req_data, void **rep_data);
00702
00713
00714
00715
00727 PLAYERC_EXPORT int playerc_client_peek(playerc_client_t *client, int timeout);
00728
00741 PLAYERC_EXPORT int playerc_client_internal_peek(playerc_client_t *client, int timeout);
00742
00757 PLAYERC_EXPORT void *playerc_client_read(playerc_client_t *client);
00758
00761 PLAYERC_EXPORT int playerc_client_read_nonblock(playerc_client_t *client);
00764 PLAYERC_EXPORT int playerc_client_read_nonblock_withproxy(playerc_client_t *client, void ** proxy);
00765
00772 PLAYERC_EXPORT void playerc_client_set_request_timeout(playerc_client_t* client, uint32_t seconds);
00773
00780 PLAYERC_EXPORT void playerc_client_set_retry_limit(playerc_client_t* client, int limit);
00781
00787 PLAYERC_EXPORT void playerc_client_set_retry_time(playerc_client_t* client, double time);
00788
00791 PLAYERC_EXPORT int playerc_client_write(playerc_client_t *client,
00792 struct _playerc_device_t *device,
00793 uint8_t subtype,
00794 void *cmd, double* timestamp);
00795
00796
00798
00799
00800
00801
00814 typedef struct _playerc_device_t
00815 {
00819 void *id;
00820
00822 playerc_client_t *client;
00823
00825 player_devaddr_t addr;
00826
00828 char drivername[PLAYER_MAX_DRIVER_STRING_LEN];
00829
00832 int subscribed;
00833
00835 double datatime;
00836
00838 double lasttime;
00839
00843 int fresh;
00847 int freshgeom;
00851 int freshconfig;
00852
00854 playerc_putmsg_fn_t putmsg;
00855
00857 void *user_data;
00858
00860 int callback_count;
00861 playerc_callback_fn_t callback[4];
00862 void *callback_data[4];
00863
00864 } playerc_device_t;
00865
00866
00868 PLAYERC_EXPORT void playerc_device_init(playerc_device_t *device, playerc_client_t *client,
00869 int code, int index, playerc_putmsg_fn_t putmsg);
00870
00872 PLAYERC_EXPORT void playerc_device_term(playerc_device_t *device);
00873
00875 PLAYERC_EXPORT int playerc_device_subscribe(playerc_device_t *device, int access);
00876
00878 PLAYERC_EXPORT int playerc_device_unsubscribe(playerc_device_t *device);
00879
00881 PLAYERC_EXPORT int playerc_device_hascapability(playerc_device_t *device, uint32_t type, uint32_t subtype);
00882
00884 PLAYERC_EXPORT int playerc_device_get_boolprop(playerc_device_t *device, char *property, BOOL *value);
00885
00887 PLAYERC_EXPORT int playerc_device_set_boolprop(playerc_device_t *device, char *property, BOOL value);
00888
00890 PLAYERC_EXPORT int playerc_device_get_intprop(playerc_device_t *device, char *property, int32_t *value);
00891
00893 PLAYERC_EXPORT int playerc_device_set_intprop(playerc_device_t *device, char *property, int32_t value);
00894
00896 PLAYERC_EXPORT int playerc_device_get_dblprop(playerc_device_t *device, char *property, double *value);
00897
00899 PLAYERC_EXPORT int playerc_device_set_dblprop(playerc_device_t *device, char *property, double value);
00900
00902 PLAYERC_EXPORT int playerc_device_get_strprop(playerc_device_t *device, char *property, char **value);
00903
00905 PLAYERC_EXPORT int playerc_device_set_strprop(playerc_device_t *device, char *property, char *value);
00906
00907
00909
00910
00911
00912
00917
00918
00919
00929 typedef struct
00930 {
00932 playerc_device_t info;
00933
00934
00935 uint8_t voltages_count;
00936
00937
00938 float *voltages;
00939
00940 } playerc_aio_t;
00941
00942
00944 PLAYERC_EXPORT playerc_aio_t *playerc_aio_create(playerc_client_t *client, int index);
00945
00947 PLAYERC_EXPORT void playerc_aio_destroy(playerc_aio_t *device);
00948
00950 PLAYERC_EXPORT int playerc_aio_subscribe(playerc_aio_t *device, int access);
00951
00953 PLAYERC_EXPORT int playerc_aio_unsubscribe(playerc_aio_t *device);
00954
00956 PLAYERC_EXPORT int playerc_aio_set_output(playerc_aio_t *device, uint8_t id, float volt);
00957
00959 PLAYERC_EXPORT float playerc_aio_get_data(playerc_aio_t *device, uint32_t index);
00960
00962
00963
00964
00965
00976 #define PLAYERC_ACTARRAY_NUM_ACTUATORS PLAYER_ACTARRAY_NUM_ACTUATORS
00977 #define PLAYERC_ACTARRAY_ACTSTATE_IDLE PLAYER_ACTARRAY_ACTSTATE_IDLE
00978 #define PLAYERC_ACTARRAY_ACTSTATE_MOVING PLAYER_ACTARRAY_ACTSTATE_MOVING
00979 #define PLAYERC_ACTARRAY_ACTSTATE_BRAKED PLAYER_ACTARRAY_ACTSTATE_BRAKED
00980 #define PLAYERC_ACTARRAY_ACTSTATE_STALLED PLAYER_ACTARRAY_ACTSTATE_STALLED
00981 #define PLAYERC_ACTARRAY_TYPE_LINEAR PLAYER_ACTARRAY_TYPE_LINEAR
00982 #define PLAYERC_ACTARRAY_TYPE_ROTARY PLAYER_ACTARRAY_TYPE_ROTARY
00983
00984
00986 typedef struct
00987 {
00989 playerc_device_t info;
00990
00992 uint32_t actuators_count;
00994 player_actarray_actuator_t *actuators_data;
00996 uint32_t actuators_geom_count;
00997 player_actarray_actuatorgeom_t *actuators_geom;
00999 uint8_t motor_state;
01001 player_point_3d_t base_pos;
01003 player_orientation_3d_t base_orientation;
01004 } playerc_actarray_t;
01005
01007 PLAYERC_EXPORT playerc_actarray_t *playerc_actarray_create(playerc_client_t *client, int index);
01008
01010 PLAYERC_EXPORT void playerc_actarray_destroy(playerc_actarray_t *device);
01011
01013 PLAYERC_EXPORT int playerc_actarray_subscribe(playerc_actarray_t *device, int access);
01014
01016 PLAYERC_EXPORT int playerc_actarray_unsubscribe(playerc_actarray_t *device);
01017
01019 PLAYERC_EXPORT player_actarray_actuator_t playerc_actarray_get_actuator_data(playerc_actarray_t *device, uint32_t index);
01020
01022 PLAYERC_EXPORT player_actarray_actuatorgeom_t playerc_actarray_get_actuator_geom(playerc_actarray_t *device, uint32_t index);
01023
01026 PLAYERC_EXPORT int playerc_actarray_get_geom(playerc_actarray_t *device);
01027
01029 PLAYERC_EXPORT int playerc_actarray_position_cmd(playerc_actarray_t *device, int joint, float position);
01030
01032 PLAYERC_EXPORT int playerc_actarray_multi_position_cmd(playerc_actarray_t *device, float *positions, int positions_count);
01033
01035 PLAYERC_EXPORT int playerc_actarray_speed_cmd(playerc_actarray_t *device, int joint, float speed);
01036
01038 PLAYERC_EXPORT int playerc_actarray_multi_speed_cmd(playerc_actarray_t *device, float *speeds, int speeds_count);
01039
01041 PLAYERC_EXPORT int playerc_actarray_home_cmd(playerc_actarray_t *device, int joint);
01042
01044 PLAYERC_EXPORT int playerc_actarray_current_cmd(playerc_actarray_t *device, int joint, float current);
01045
01047 PLAYERC_EXPORT int playerc_actarray_multi_current_cmd(playerc_actarray_t *device, float *currents, int currents_count);
01048
01049
01053 PLAYERC_EXPORT int playerc_actarray_power(playerc_actarray_t *device, uint8_t enable);
01054
01056 PLAYERC_EXPORT int playerc_actarray_brakes(playerc_actarray_t *device, uint8_t enable);
01057
01059 PLAYERC_EXPORT int playerc_actarray_speed_config(playerc_actarray_t *device, int joint, float speed);
01060
01061
01062 PLAYERC_EXPORT int playerc_actarray_accel_config(playerc_actarray_t *device, int joint, float accel);
01063
01064
01066
01067
01068
01080 typedef struct
01081 {
01083 playerc_device_t info;
01084
01086 player_audio_mixer_channel_list_detail_t channel_details_list;
01087
01089 player_audio_wav_t wav_data;
01090
01092 player_audio_seq_t seq_data;
01093
01095 player_audio_mixer_channel_list_t mixer_data;
01096
01098 uint32_t state;
01099
01100 int last_index;
01101
01102 } playerc_audio_t;
01103
01105 PLAYERC_EXPORT playerc_audio_t *playerc_audio_create(playerc_client_t *client, int index);
01106
01108 PLAYERC_EXPORT void playerc_audio_destroy(playerc_audio_t *device);
01109
01111 PLAYERC_EXPORT int playerc_audio_subscribe(playerc_audio_t *device, int access);
01112
01114 PLAYERC_EXPORT int playerc_audio_unsubscribe(playerc_audio_t *device);
01115
01117 PLAYERC_EXPORT int playerc_audio_wav_play_cmd(playerc_audio_t *device, uint32_t data_count, uint8_t data[], uint32_t format);
01118
01120 PLAYERC_EXPORT int playerc_audio_wav_stream_rec_cmd(playerc_audio_t *device, uint8_t state);
01121
01123 PLAYERC_EXPORT int playerc_audio_sample_play_cmd(playerc_audio_t *device, int index);
01124
01126 PLAYERC_EXPORT int playerc_audio_seq_play_cmd(playerc_audio_t *device, player_audio_seq_t * tones);
01127
01129 PLAYERC_EXPORT int playerc_audio_mixer_multchannels_cmd(playerc_audio_t *device, player_audio_mixer_channel_list_t * levels);
01130
01132 PLAYERC_EXPORT int playerc_audio_mixer_channel_cmd(playerc_audio_t *device, uint32_t index, float amplitude, uint8_t active);
01133
01136 PLAYERC_EXPORT int playerc_audio_wav_rec(playerc_audio_t *device);
01137
01139 PLAYERC_EXPORT int playerc_audio_sample_load(playerc_audio_t *device, int index, uint32_t data_count, uint8_t data[], uint32_t format);
01140
01143 PLAYERC_EXPORT int playerc_audio_sample_retrieve(playerc_audio_t *device, int index);
01144
01146 PLAYERC_EXPORT int playerc_audio_sample_rec(playerc_audio_t *device, int index, uint32_t length);
01147
01150 PLAYERC_EXPORT int playerc_audio_get_mixer_levels(playerc_audio_t *device);
01151
01154 PLAYERC_EXPORT int playerc_audio_get_mixer_details(playerc_audio_t *device);
01155
01157
01158
01168 #define PLAYERC_BLACKBOARD_DATA_TYPE_NONE 0
01169 #define PLAYERC_BLACKBOARD_DATA_TYPE_SIMPLE 1
01170 #define PLAYERC_BLACKBOARD_DATA_TYPE_COMPLEX 2
01171
01172 #define PLAYERC_BLACKBOARD_DATA_SUBTYPE_NONE 0
01173 #define PLAYERC_BLACKBOARD_DATA_SUBTYPE_STRING 1
01174 #define PLAYERC_BLACKBOARD_DATA_SUBTYPE_INT 2
01175 #define PLAYERC_BLACKBOARD_DATA_SUBTYPE_DOUBLE 3
01176
01178 typedef struct playerc_blackboard
01179 {
01181 playerc_device_t info;
01183 void (*on_blackboard_event)(struct playerc_blackboard*, player_blackboard_entry_t);
01185 void *py_private;
01186 } playerc_blackboard_t;
01187
01189 PLAYERC_EXPORT playerc_blackboard_t *playerc_blackboard_create(playerc_client_t *client, int index);
01190
01192 PLAYERC_EXPORT void playerc_blackboard_destroy(playerc_blackboard_t *device);
01193
01195 PLAYERC_EXPORT int playerc_blackboard_subscribe(playerc_blackboard_t *device, int access);
01196
01198 PLAYERC_EXPORT int playerc_blackboard_unsubscribe(playerc_blackboard_t *device);
01199
01202 PLAYERC_EXPORT int playerc_blackboard_subscribe_to_key(playerc_blackboard_t *device, const char* key, const char* group, player_blackboard_entry_t** entry);
01203
01206 PLAYERC_EXPORT int playerc_blackboard_get_entry(playerc_blackboard_t *device, const char* key, const char* group, player_blackboard_entry_t** entry);
01207
01209 PLAYERC_EXPORT int playerc_blackboard_unsubscribe_from_key(playerc_blackboard_t *device, const char* key, const char* group);
01210
01212 PLAYERC_EXPORT int playerc_blackboard_subscribe_to_group(playerc_blackboard_t *device, const char* group);
01213
01215 PLAYERC_EXPORT int playerc_blackboard_unsubscribe_from_group(playerc_blackboard_t *device, const char* group);
01216
01218 PLAYERC_EXPORT int playerc_blackboard_set_entry(playerc_blackboard_t *device, player_blackboard_entry_t* entry);
01219
01220 PLAYERC_EXPORT int playerc_blackboard_set_string(playerc_blackboard_t *device, const char* key, const char* group, const char* value);
01221
01222 PLAYERC_EXPORT int playerc_blackboard_set_int(playerc_blackboard_t *device, const char* key, const char* group, const int value);
01223
01224 PLAYERC_EXPORT int playerc_blackboard_set_double(playerc_blackboard_t *device, const char* key, const char* group, const double value);
01225
01228
01239 typedef struct
01240 {
01242 playerc_device_t info;
01243
01244 uint32_t enabled;
01245 double duty_cycle;
01246 double period;
01247 uint8_t red, green, blue;
01248 } playerc_blinkenlight_t;
01249
01250
01252 PLAYERC_EXPORT playerc_blinkenlight_t *playerc_blinkenlight_create(playerc_client_t *client, int index);
01253
01255 PLAYERC_EXPORT void playerc_blinkenlight_destroy(playerc_blinkenlight_t *device);
01256
01258 PLAYERC_EXPORT int playerc_blinkenlight_subscribe(playerc_blinkenlight_t *device, int access);
01259
01261 PLAYERC_EXPORT int playerc_blinkenlight_unsubscribe(playerc_blinkenlight_t *device);
01262
01264 PLAYERC_EXPORT int playerc_blinkenlight_enable( playerc_blinkenlight_t *device,
01265 uint32_t enable );
01266
01268 PLAYERC_EXPORT int playerc_blinkenlight_color( playerc_blinkenlight_t *device,
01269 uint32_t id,
01270 uint8_t red,
01271 uint8_t green,
01272 uint8_t blue );
01275 PLAYERC_EXPORT int playerc_blinkenlight_blink( playerc_blinkenlight_t *device,
01276 uint32_t id,
01277 float period,
01278 float duty_cycle );
01281
01292 typedef player_blobfinder_blob_t playerc_blobfinder_blob_t;
01293
01295 typedef struct
01296 {
01298 playerc_device_t info;
01299
01301 unsigned int width, height;
01302
01304 unsigned int blobs_count;
01305 playerc_blobfinder_blob_t *blobs;
01306
01307 } playerc_blobfinder_t;
01308
01309
01311 PLAYERC_EXPORT playerc_blobfinder_t *playerc_blobfinder_create(playerc_client_t *client, int index);
01312
01314 PLAYERC_EXPORT void playerc_blobfinder_destroy(playerc_blobfinder_t *device);
01315
01317 PLAYERC_EXPORT int playerc_blobfinder_subscribe(playerc_blobfinder_t *device, int access);
01318
01320 PLAYERC_EXPORT int playerc_blobfinder_unsubscribe(playerc_blobfinder_t *device);
01321
01322
01324
01325
01326
01327
01338 typedef struct
01339 {
01341 playerc_device_t info;
01342
01344 int pose_count;
01345
01349 player_bumper_define_t *poses;
01350
01352 int bumper_count;
01353
01355 uint8_t *bumpers;
01356
01357 } playerc_bumper_t;
01358
01359
01361 PLAYERC_EXPORT playerc_bumper_t *playerc_bumper_create(playerc_client_t *client, int index);
01362
01364 PLAYERC_EXPORT void playerc_bumper_destroy(playerc_bumper_t *device);
01365
01367 PLAYERC_EXPORT int playerc_bumper_subscribe(playerc_bumper_t *device, int access);
01368
01370 PLAYERC_EXPORT int playerc_bumper_unsubscribe(playerc_bumper_t *device);
01371
01378 PLAYERC_EXPORT int playerc_bumper_get_geom(playerc_bumper_t *device);
01379
01380
01382
01383
01384
01385
01395 typedef struct
01396 {
01398 playerc_device_t info;
01399
01401 int width, height;
01402
01404 int bpp;
01405
01407 int format;
01408
01412 int fdiv;
01413
01415 int compression;
01416
01418 int image_count;
01419
01424 uint8_t *image;
01425
01426 } playerc_camera_t;
01427
01428
01430 PLAYERC_EXPORT playerc_camera_t *playerc_camera_create(playerc_client_t *client, int index);
01431
01433 PLAYERC_EXPORT void playerc_camera_destroy(playerc_camera_t *device);
01434
01436 PLAYERC_EXPORT int playerc_camera_subscribe(playerc_camera_t *device, int access);
01437
01439 PLAYERC_EXPORT int playerc_camera_unsubscribe(playerc_camera_t *device);
01440
01442 PLAYERC_EXPORT void playerc_camera_decompress(playerc_camera_t *device);
01443
01445 PLAYERC_EXPORT void playerc_camera_save(playerc_camera_t *device, const char *filename);
01446
01448
01449
01450
01451
01461 typedef struct
01462 {
01464 playerc_device_t info;
01465
01466
01467 uint8_t count;
01468
01469
01470 uint32_t digin;
01471
01472 } playerc_dio_t;
01473
01474
01476 PLAYERC_EXPORT playerc_dio_t *playerc_dio_create(playerc_client_t *client, int index);
01477
01479 PLAYERC_EXPORT void playerc_dio_destroy(playerc_dio_t *device);
01480
01482 PLAYERC_EXPORT int playerc_dio_subscribe(playerc_dio_t *device, int access);
01483
01485 PLAYERC_EXPORT int playerc_dio_unsubscribe(playerc_dio_t *device);
01486
01488 PLAYERC_EXPORT int playerc_dio_set_output(playerc_dio_t *device, uint8_t output_count, uint32_t digout);
01489
01490
01492
01493
01494
01495
01510 typedef struct
01511 {
01513 playerc_device_t info;
01514
01519 player_fiducial_geom_t fiducial_geom;
01520
01522 int fiducials_count;
01523 player_fiducial_item_t *fiducials;
01524
01525 } playerc_fiducial_t;
01526
01527
01529 PLAYERC_EXPORT playerc_fiducial_t *playerc_fiducial_create(playerc_client_t *client, int index);
01530
01532 PLAYERC_EXPORT void playerc_fiducial_destroy(playerc_fiducial_t *device);
01533
01535 PLAYERC_EXPORT int playerc_fiducial_subscribe(playerc_fiducial_t *device, int access);
01536
01538 PLAYERC_EXPORT int playerc_fiducial_unsubscribe(playerc_fiducial_t *device);
01539
01546 PLAYERC_EXPORT int playerc_fiducial_get_geom(playerc_fiducial_t *device);
01547
01548
01550
01551
01552
01561 typedef struct
01562 {
01564 playerc_device_t info;
01565
01567 double utc_time;
01568
01572 double lat, lon;
01573
01576 double alt;
01577
01579 double utm_e, utm_n;
01580
01582 double hdop;
01583
01585 double vdop;
01586
01588 double err_horz, err_vert;
01589
01591 int quality;
01592
01594 int sat_count;
01595
01596 } playerc_gps_t;
01597
01598
01600 PLAYERC_EXPORT playerc_gps_t *playerc_gps_create(playerc_client_t *client, int index);
01601
01603 PLAYERC_EXPORT void playerc_gps_destroy(playerc_gps_t *device);
01604
01606 PLAYERC_EXPORT int playerc_gps_subscribe(playerc_gps_t *device, int access);
01607
01609 PLAYERC_EXPORT int playerc_gps_unsubscribe(playerc_gps_t *device);
01610
01611
01613
01614
01615
01625 typedef struct
01626 {
01628 playerc_device_t info;
01629
01631 player_color_t color;
01632
01633 } playerc_graphics2d_t;
01634
01635
01637 PLAYERC_EXPORT playerc_graphics2d_t *playerc_graphics2d_create(playerc_client_t *client, int index);
01638
01640 PLAYERC_EXPORT void playerc_graphics2d_destroy(playerc_graphics2d_t *device);
01641
01643 PLAYERC_EXPORT int playerc_graphics2d_subscribe(playerc_graphics2d_t *device, int access);
01644
01646 PLAYERC_EXPORT int playerc_graphics2d_unsubscribe(playerc_graphics2d_t *device);
01647
01649 PLAYERC_EXPORT int playerc_graphics2d_setcolor(playerc_graphics2d_t *device,
01650 player_color_t col );
01651
01653 PLAYERC_EXPORT int playerc_graphics2d_draw_points(playerc_graphics2d_t *device,
01654 player_point_2d_t pts[],
01655 int count );
01656
01658 PLAYERC_EXPORT int playerc_graphics2d_draw_polyline(playerc_graphics2d_t *device,
01659 player_point_2d_t pts[],
01660 int count );
01661
01663 PLAYERC_EXPORT int playerc_graphics2d_draw_polygon(playerc_graphics2d_t *device,
01664 player_point_2d_t pts[],
01665 int count,
01666 int filled,
01667 player_color_t fill_color );
01668
01670 PLAYERC_EXPORT int playerc_graphics2d_clear(playerc_graphics2d_t *device );
01671
01672
01675
01685 typedef struct
01686 {
01688 playerc_device_t info;
01689
01691 player_color_t color;
01692
01693 } playerc_graphics3d_t;
01694
01695
01697 PLAYERC_EXPORT playerc_graphics3d_t *playerc_graphics3d_create(playerc_client_t *client, int index);
01698
01700 PLAYERC_EXPORT void playerc_graphics3d_destroy(playerc_graphics3d_t *device);
01701
01703 PLAYERC_EXPORT int playerc_graphics3d_subscribe(playerc_graphics3d_t *device, int access);
01704
01706 PLAYERC_EXPORT int playerc_graphics3d_unsubscribe(playerc_graphics3d_t *device);
01707
01709 PLAYERC_EXPORT int playerc_graphics3d_setcolor(playerc_graphics3d_t *device,
01710 player_color_t col );
01711
01713 PLAYERC_EXPORT int playerc_graphics3d_draw(playerc_graphics3d_t *device,
01714 player_graphics3d_draw_mode_t mode,
01715 player_point_3d_t pts[],
01716 int count );
01717
01719 PLAYERC_EXPORT int playerc_graphics3d_clear(playerc_graphics3d_t *device );
01720
01722 PLAYERC_EXPORT int playerc_graphics3d_translate(playerc_graphics3d_t *device,
01723 double x, double y, double z );
01724
01725
01727 PLAYERC_EXPORT int playerc_graphics3d_rotate( playerc_graphics3d_t *device,
01728 double a, double x, double y, double z );
01731
01741 typedef struct
01742 {
01744 playerc_device_t info;
01745
01752 player_pose3d_t pose;
01753 player_bbox3d_t outer_size;
01754 player_bbox3d_t inner_size;
01756 uint8_t num_beams;
01758 uint8_t capacity;
01759
01763 uint8_t state;
01765 uint32_t beams;
01767 uint8_t stored;
01768 } playerc_gripper_t;
01769
01771 PLAYERC_EXPORT playerc_gripper_t *playerc_gripper_create(playerc_client_t *client, int index);
01772
01774 PLAYERC_EXPORT void playerc_gripper_destroy(playerc_gripper_t *device);
01775
01777 PLAYERC_EXPORT int playerc_gripper_subscribe(playerc_gripper_t *device, int access);
01778
01780 PLAYERC_EXPORT int playerc_gripper_unsubscribe(playerc_gripper_t *device);
01781
01783 PLAYERC_EXPORT int playerc_gripper_open_cmd(playerc_gripper_t *device);
01784
01786 PLAYERC_EXPORT int playerc_gripper_close_cmd(playerc_gripper_t *device);
01787
01789 PLAYERC_EXPORT int playerc_gripper_stop_cmd(playerc_gripper_t *device);
01790
01792 PLAYERC_EXPORT int playerc_gripper_store_cmd(playerc_gripper_t *device);
01793
01795 PLAYERC_EXPORT int playerc_gripper_retrieve_cmd(playerc_gripper_t *device);
01796
01799 PLAYERC_EXPORT void playerc_gripper_printout(playerc_gripper_t *device, const char* prefix);
01800
01805 PLAYERC_EXPORT int playerc_gripper_get_geom(playerc_gripper_t *device);
01806
01808
01809
01810
01824 typedef struct
01825 {
01827 playerc_device_t info;
01829 player_health_cpu_t cpu_usage;
01831 player_health_memory_t mem;
01833 player_health_memory_t swap;
01834 } playerc_health_t;
01835
01836
01838 PLAYERC_EXPORT playerc_health_t *playerc_health_create(playerc_client_t *client, int index);
01839
01841 PLAYERC_EXPORT void playerc_health_destroy(playerc_health_t *device);
01842
01844 PLAYERC_EXPORT int playerc_health_subscribe(playerc_health_t *device, int access);
01845
01847 PLAYERC_EXPORT int playerc_health_unsubscribe(playerc_health_t *device);
01848
01849
01851
01852
01853
01854
01865 typedef struct
01866 {
01868 playerc_device_t info;
01869
01870
01871 player_ir_data_t data;
01872
01873
01874 player_ir_pose_t poses;
01875
01876 } playerc_ir_t;
01877
01878
01880 PLAYERC_EXPORT playerc_ir_t *playerc_ir_create(playerc_client_t *client, int index);
01881
01883 PLAYERC_EXPORT void playerc_ir_destroy(playerc_ir_t *device);
01884
01886 PLAYERC_EXPORT int playerc_ir_subscribe(playerc_ir_t *device, int access);
01887
01889 PLAYERC_EXPORT int playerc_ir_unsubscribe(playerc_ir_t *device);
01890
01897 PLAYERC_EXPORT int playerc_ir_get_geom(playerc_ir_t *device);
01898
01899
01901
01902
01903
01904
01914 typedef struct
01915 {
01917 playerc_device_t info;
01918 int32_t axes_count;
01919 int32_t pos[8];
01920 uint32_t buttons;
01921 int * axes_max;
01922 int * axes_min;
01923 double * scale_pos;
01924
01925
01926 } playerc_joystick_t;
01927
01928
01930 PLAYERC_EXPORT playerc_joystick_t *playerc_joystick_create(playerc_client_t *client, int index);
01931
01933 PLAYERC_EXPORT void playerc_joystick_destroy(playerc_joystick_t *device);
01934
01936 PLAYERC_EXPORT int playerc_joystick_subscribe(playerc_joystick_t *device, int access);
01937
01939 PLAYERC_EXPORT int playerc_joystick_unsubscribe(playerc_joystick_t *device);
01940
01942
01943
01944
01945
01959 typedef struct
01960 {
01962 playerc_device_t info;
01963
01967 double pose[3];
01968 double size[2];
01969
01971 double robot_pose[3];
01972
01974 int intensity_on;
01975
01977 int scan_count;
01978
01980 double scan_start;
01981
01983 double scan_res;
01984
01986 double range_res;
01987
01989 double max_range;
01990
01992 double scanning_frequency;
01993
01995 double *ranges;
01996
01998 double (*scan)[2];
01999
02001 player_point_2d_t *point;
02002
02006 int *intensity;
02007
02009 int scan_id;
02010
02012 int laser_id;
02013
02017 double min_right;
02018
02022 double min_left;
02023 } playerc_laser_t;
02024
02025
02027 PLAYERC_EXPORT playerc_laser_t *playerc_laser_create(playerc_client_t *client, int index);
02028
02030 PLAYERC_EXPORT void playerc_laser_destroy(playerc_laser_t *device);
02031
02033 PLAYERC_EXPORT int playerc_laser_subscribe(playerc_laser_t *device, int access);
02034
02036 PLAYERC_EXPORT int playerc_laser_unsubscribe(playerc_laser_t *device);
02037
02060 PLAYERC_EXPORT int playerc_laser_set_config(playerc_laser_t *device,
02061 double min_angle, double max_angle,
02062 double resolution,
02063 double range_res,
02064 unsigned char intensity,
02065 double scanning_frequency);
02066
02089 PLAYERC_EXPORT int playerc_laser_get_config(playerc_laser_t *device,
02090 double *min_angle,
02091 double *max_angle,
02092 double *resolution,
02093 double *range_res,
02094 unsigned char *intensity,
02095 double *scanning_frequency);
02096
02103 PLAYERC_EXPORT int playerc_laser_get_geom(playerc_laser_t *device);
02104
02109 PLAYERC_EXPORT int playerc_laser_get_id (playerc_laser_t *device);
02110
02113 PLAYERC_EXPORT void playerc_laser_printout( playerc_laser_t * device,
02114 const char* prefix );
02115
02117
02118
02119
02131 typedef struct
02132 {
02134 playerc_device_t info;
02135
02136 player_limb_data_t data;
02137 player_limb_geom_req_t geom;
02138 } playerc_limb_t;
02139
02141 PLAYERC_EXPORT playerc_limb_t *playerc_limb_create(playerc_client_t *client, int index);
02142
02144 PLAYERC_EXPORT void playerc_limb_destroy(playerc_limb_t *device);
02145
02147 PLAYERC_EXPORT int playerc_limb_subscribe(playerc_limb_t *device, int access);
02148
02150 PLAYERC_EXPORT int playerc_limb_unsubscribe(playerc_limb_t *device);
02151
02154 PLAYERC_EXPORT int playerc_limb_get_geom(playerc_limb_t *device);
02155
02157 PLAYERC_EXPORT int playerc_limb_home_cmd(playerc_limb_t *device);
02158
02160 PLAYERC_EXPORT int playerc_limb_stop_cmd(playerc_limb_t *device);
02161
02163 PLAYERC_EXPORT int playerc_limb_setpose_cmd(playerc_limb_t *device, float pX, float pY, float pZ, float aX, float aY, float aZ, float oX, float oY, float oZ);
02164
02167 PLAYERC_EXPORT int playerc_limb_setposition_cmd(playerc_limb_t *device, float pX, float pY, float pZ);
02168
02171 PLAYERC_EXPORT int playerc_limb_vecmove_cmd(playerc_limb_t *device, float x, float y, float z, float length);
02172
02176 PLAYERC_EXPORT int playerc_limb_power(playerc_limb_t *device, uint32_t enable);
02177
02179 PLAYERC_EXPORT int playerc_limb_brakes(playerc_limb_t *device, uint32_t enable);
02180
02182 PLAYERC_EXPORT int playerc_limb_speed_config(playerc_limb_t *device, float speed);
02183
02185
02186
02187
02188
02205 typedef struct playerc_localize_particle
02206 {
02207 double pose[3];
02208 double weight;
02209 } playerc_localize_particle_t;
02210
02211
02213 typedef struct
02214 {
02216 playerc_device_t info;
02217
02219 int map_size_x, map_size_y;
02220
02222 double map_scale;
02223
02225 int map_tile_x, map_tile_y;
02226
02228 int8_t *map_cells;
02229
02231 int pending_count;
02232
02234 double pending_time;
02235
02237 int hypoth_count;
02238 player_localize_hypoth_t *hypoths;
02239
02240 double mean[3];
02241 double variance;
02242 int num_particles;
02243 playerc_localize_particle_t *particles;
02244
02245 } playerc_localize_t;
02246
02247
02249 PLAYERC_EXPORT playerc_localize_t *playerc_localize_create(playerc_client_t *client, int index);
02250
02252 PLAYERC_EXPORT void playerc_localize_destroy(playerc_localize_t *device);
02253
02255 PLAYERC_EXPORT int playerc_localize_subscribe(playerc_localize_t *device, int access);
02256
02258 PLAYERC_EXPORT int playerc_localize_unsubscribe(playerc_localize_t *device);
02259
02261 PLAYERC_EXPORT int playerc_localize_set_pose(playerc_localize_t *device, double pose[3], double cov[3]);
02262
02265 PLAYERC_EXPORT int playerc_localize_get_particles(playerc_localize_t *device);
02266
02268
02269
02270
02271
02281 typedef struct
02282 {
02284 playerc_device_t info;
02285
02288 int type;
02289
02292 int state;
02293 } playerc_log_t;
02294
02295
02297 PLAYERC_EXPORT playerc_log_t *playerc_log_create(playerc_client_t *client, int index);
02298
02300 PLAYERC_EXPORT void playerc_log_destroy(playerc_log_t *device);
02301
02303 PLAYERC_EXPORT int playerc_log_subscribe(playerc_log_t *device, int access);
02304
02306 PLAYERC_EXPORT int playerc_log_unsubscribe(playerc_log_t *device);
02307
02309 PLAYERC_EXPORT int playerc_log_set_write_state(playerc_log_t* device, int state);
02310
02312 PLAYERC_EXPORT int playerc_log_set_read_state(playerc_log_t* device, int state);
02313
02315 PLAYERC_EXPORT int playerc_log_set_read_rewind(playerc_log_t* device);
02316
02322 PLAYERC_EXPORT int playerc_log_get_state(playerc_log_t* device);
02323
02325 PLAYERC_EXPORT int playerc_log_set_filename(playerc_log_t* device, const char* fname);
02326
02327
02331
02341 typedef struct
02342 {
02344 playerc_device_t info;
02345
02347 double resolution;
02348
02350 int width, height;
02351
02353 double origin[2];
02354
02356 char* cells;
02357
02360 double vminx, vminy, vmaxx, vmaxy;
02361 int num_segments;
02362 player_segment_t* segments;
02363 } playerc_map_t;
02364
02367 #define PLAYERC_MAP_INDEX(dev, i, j) ((dev->width) * (j) + (i))
02368
02370 PLAYERC_EXPORT playerc_map_t *playerc_map_create(playerc_client_t *client, int index);
02371
02373 PLAYERC_EXPORT void playerc_map_destroy(playerc_map_t *device);
02374
02376 PLAYERC_EXPORT int playerc_map_subscribe(playerc_map_t *device, int access);
02377
02379 PLAYERC_EXPORT int playerc_map_unsubscribe(playerc_map_t *device);
02380
02382 PLAYERC_EXPORT int playerc_map_get_map(playerc_map_t* device);
02383
02385 PLAYERC_EXPORT int playerc_map_get_vector(playerc_map_t* device);
02386
02388
02389
02398 typedef struct
02399 {
02401 playerc_device_t info;
02403 uint32_t srid;
02405 player_extent2d_t extent;
02407 uint32_t layers_count;
02409 player_vectormap_layer_data_t** layers_data;
02411 player_vectormap_layer_info_t** layers_info;
02413 playerwkbprocessor_t wkbprocessor;
02414
02415 } playerc_vectormap_t;
02416
02418 PLAYERC_EXPORT playerc_vectormap_t *playerc_vectormap_create(playerc_client_t *client, int index);
02419
02421 PLAYERC_EXPORT void playerc_vectormap_destroy(playerc_vectormap_t *device);
02422
02424 PLAYERC_EXPORT int playerc_vectormap_subscribe(playerc_vectormap_t *device, int access);
02425
02427 PLAYERC_EXPORT int playerc_vectormap_unsubscribe(playerc_vectormap_t *device);
02428
02430 PLAYERC_EXPORT int playerc_vectormap_get_map_info(playerc_vectormap_t* device);
02431
02433 PLAYERC_EXPORT int playerc_vectormap_get_layer_data(playerc_vectormap_t *device, unsigned layer_index);
02434
02436 PLAYERC_EXPORT int playerc_vectormap_write_layer(playerc_vectormap_t *device, const player_vectormap_layer_data_t * data);
02437
02439 PLAYERC_EXPORT void playerc_vectormap_cleanup(playerc_vectormap_t *device);
02440
02443 PLAYERC_EXPORT uint8_t * playerc_vectormap_get_feature_data(playerc_vectormap_t *device, unsigned layer_index, unsigned feature_index);
02444 PLAYERC_EXPORT size_t playerc_vectormap_get_feature_data_count(playerc_vectormap_t *device, unsigned layer_index, unsigned feature_index);
02445
02448
02459 typedef struct
02460 {
02462 playerc_device_t info;
02463
02465 int data_count;
02466
02468 uint8_t *data;
02469 } playerc_opaque_t;
02470
02472 PLAYERC_EXPORT playerc_opaque_t *playerc_opaque_create(playerc_client_t *client, int index);
02473
02475 PLAYERC_EXPORT void playerc_opaque_destroy(playerc_opaque_t *device);
02476
02478 PLAYERC_EXPORT int playerc_opaque_subscribe(playerc_opaque_t *device, int access);
02479
02481 PLAYERC_EXPORT int playerc_opaque_unsubscribe(playerc_opaque_t *device);
02482
02484 PLAYERC_EXPORT int playerc_opaque_cmd(playerc_opaque_t *device, player_opaque_data_t *data);
02485
02492 PLAYERC_EXPORT int playerc_opaque_req(playerc_opaque_t *device, player_opaque_data_t *request, player_opaque_data_t **reply);
02493
02495
02496
02497
02498
02508 typedef struct
02509 {
02511 playerc_device_t info;
02512
02514 int path_valid;
02515
02517 int path_done;
02518
02520 double px, py, pa;
02521
02523 double gx, gy, ga;
02524
02526 double wx, wy, wa;
02527
02531 int curr_waypoint;
02532
02534 int waypoint_count;
02535
02538 double (*waypoints)[3];
02539
02540 } playerc_planner_t;
02541
02543 PLAYERC_EXPORT playerc_planner_t *playerc_planner_create(playerc_client_t *client, int index);
02544
02546 PLAYERC_EXPORT void playerc_planner_destroy(playerc_planner_t *device);
02547
02549 PLAYERC_EXPORT int playerc_planner_subscribe(playerc_planner_t *device, int access);
02550
02552 PLAYERC_EXPORT int playerc_planner_unsubscribe(playerc_planner_t *device);
02553
02555 PLAYERC_EXPORT int playerc_planner_set_cmd_pose(playerc_planner_t *device,
02556 double gx, double gy, double ga);
02557
02564 PLAYERC_EXPORT int playerc_planner_get_waypoints(playerc_planner_t *device);
02565
02571 PLAYERC_EXPORT int playerc_planner_enable(playerc_planner_t *device, int state);
02572
02574
02575
02576
02587 typedef struct
02588 {
02590 playerc_device_t info;
02591
02595 double pose[3];
02596 double size[2];
02597
02599 double pos;
02600
02602 double vel;
02603
02605 int stall;
02606
02618 int status;
02619
02620 } playerc_position1d_t;
02621
02623 PLAYERC_EXPORT playerc_position1d_t *playerc_position1d_create(playerc_client_t *client,
02624 int index);
02625
02627 PLAYERC_EXPORT void playerc_position1d_destroy(playerc_position1d_t *device);
02628
02630 PLAYERC_EXPORT int playerc_position1d_subscribe(playerc_position1d_t *device, int access);
02631
02633 PLAYERC_EXPORT int playerc_position1d_unsubscribe(playerc_position1d_t *device);
02634
02636 PLAYERC_EXPORT int playerc_position1d_enable(playerc_position1d_t *device, int enable);
02637
02640 PLAYERC_EXPORT int playerc_position1d_get_geom(playerc_position1d_t *device);
02641
02643 PLAYERC_EXPORT int playerc_position1d_set_cmd_vel(playerc_position1d_t *device,
02644 double vel, int state);
02645
02649 PLAYERC_EXPORT int playerc_position1d_set_cmd_pos(playerc_position1d_t *device,
02650 double pos, int state);
02651
02656 PLAYERC_EXPORT int playerc_position1d_set_cmd_pos_with_vel(playerc_position1d_t *device,
02657 double pos, double vel, int state);
02658
02660 PLAYERC_EXPORT int playerc_position1d_set_odom(playerc_position1d_t *device,
02661 double odom);
02662
02664
02665
02666
02667
02681 typedef struct
02682 {
02684 playerc_device_t info;
02685
02689 double pose[3];
02690 double size[2];
02691
02693 double px, py, pa;
02694
02696 double vx, vy, va;
02697
02699 int stall;
02700
02701 } playerc_position2d_t;
02702
02704 PLAYERC_EXPORT playerc_position2d_t *playerc_position2d_create(playerc_client_t *client,
02705 int index);
02706
02708 PLAYERC_EXPORT void playerc_position2d_destroy(playerc_position2d_t *device);
02709
02711 PLAYERC_EXPORT int playerc_position2d_subscribe(playerc_position2d_t *device, int access);
02712
02714 PLAYERC_EXPORT int playerc_position2d_unsubscribe(playerc_position2d_t *device);
02715
02717 PLAYERC_EXPORT int playerc_position2d_enable(playerc_position2d_t *device, int enable);
02718
02721 PLAYERC_EXPORT int playerc_position2d_get_geom(playerc_position2d_t *device);
02722
02727 PLAYERC_EXPORT int playerc_position2d_set_cmd_vel(playerc_position2d_t *device,
02728 double vx, double vy, double va, int state);
02729
02731 PLAYERC_EXPORT int playerc_position2d_set_cmd_pose_with_vel(playerc_position2d_t *device,
02732 player_pose2d_t pos,
02733 player_pose2d_t vel,
02734 int state);
02735
02740 PLAYERC_EXPORT int playerc_position2d_set_cmd_vel_head(playerc_position2d_t *device,
02741 double vx, double vy, double pa, int state);
02742
02743
02744
02747 PLAYERC_EXPORT int playerc_position2d_set_cmd_pose(playerc_position2d_t *device,
02748 double gx, double gy, double ga, int state);
02749
02751 PLAYERC_EXPORT int playerc_position2d_set_cmd_car(playerc_position2d_t *device,
02752 double vx, double a);
02753
02755 PLAYERC_EXPORT int playerc_position2d_set_odom(playerc_position2d_t *device,
02756 double ox, double oy, double oa);
02757
02759
02760
02761
02776 typedef struct
02777 {
02779 playerc_device_t info;
02780
02784 double pose[3];
02785 double size[2];
02786
02788 double pos_x, pos_y, pos_z;
02789
02791 double pos_roll, pos_pitch, pos_yaw;
02792
02794 double vel_x, vel_y, vel_z;
02795
02797 double vel_roll, vel_pitch, vel_yaw;
02798
02800 int stall;
02801
02802 } playerc_position3d_t;
02803
02804
02806 PLAYERC_EXPORT playerc_position3d_t *playerc_position3d_create(playerc_client_t *client,
02807 int index);
02808
02810 PLAYERC_EXPORT void playerc_position3d_destroy(playerc_position3d_t *device);
02811
02813 PLAYERC_EXPORT int playerc_position3d_subscribe(playerc_position3d_t *device, int access);
02814
02816 PLAYERC_EXPORT int playerc_position3d_unsubscribe(playerc_position3d_t *device);
02817
02819 PLAYERC_EXPORT int playerc_position3d_enable(playerc_position3d_t *device, int enable);
02820
02823 PLAYERC_EXPORT int playerc_position3d_get_geom(playerc_position3d_t *device);
02824
02829 PLAYERC_EXPORT int playerc_position3d_set_velocity(playerc_position3d_t *device,
02830 double vx, double vy, double vz,
02831 double vr, double vp, double vt,
02832 int state);
02833
02835 PLAYERC_EXPORT int playerc_position3d_set_speed(playerc_position3d_t *device,
02836 double vx, double vy, double vz, int state);
02837
02840 PLAYERC_EXPORT int playerc_position3d_set_pose(playerc_position3d_t *device,
02841 double gx, double gy, double gz,
02842 double gr, double gp, double gt);
02843
02844
02846 PLAYERC_EXPORT int playerc_position3d_set_pose_with_vel(playerc_position3d_t *device,
02847 player_pose3d_t pos,
02848 player_pose3d_t vel);
02849
02851 PLAYERC_EXPORT int playerc_position3d_set_cmd_pose(playerc_position3d_t *device,
02852 double gx, double gy, double gz);
02853
02855 PLAYERC_EXPORT int playerc_position3d_set_vel_mode(playerc_position3d_t *device, int mode);
02856
02858 PLAYERC_EXPORT int playerc_position3d_set_odom(playerc_position3d_t *device,
02859 double ox, double oy, double oz,
02860 double oroll, double opitch, double oyaw);
02861
02863 PLAYERC_EXPORT int playerc_position3d_reset_odom(playerc_position3d_t *device);
02864
02866
02867
02868
02869
02880 typedef struct
02881 {
02883 playerc_device_t info;
02884
02887 int valid;
02888
02890 double charge;
02891
02893 double percent;
02894
02896 double joules;
02897
02900 double watts;
02901
02903 int charging;
02904
02905 } playerc_power_t;
02906
02907
02909 PLAYERC_EXPORT playerc_power_t *playerc_power_create(playerc_client_t *client, int index);
02910
02912 PLAYERC_EXPORT void playerc_power_destroy(playerc_power_t *device);
02913
02915 PLAYERC_EXPORT int playerc_power_subscribe(playerc_power_t *device, int access);
02916
02918 PLAYERC_EXPORT int playerc_power_unsubscribe(playerc_power_t *device);
02919
02920
02922
02923
02924
02925
02926
02937 typedef struct
02938 {
02940 playerc_device_t info;
02941
02945 double pan, tilt;
02946
02948 double zoom;
02949
02951 int status;
02952 } playerc_ptz_t;
02953
02954
02956 PLAYERC_EXPORT playerc_ptz_t *playerc_ptz_create(playerc_client_t *client, int index);
02957
02959 PLAYERC_EXPORT void playerc_ptz_destroy(playerc_ptz_t *device);
02960
02962 PLAYERC_EXPORT int playerc_ptz_subscribe(playerc_ptz_t *device, int access);
02963
02965 PLAYERC_EXPORT int playerc_ptz_unsubscribe(playerc_ptz_t *device);
02966
02975 PLAYERC_EXPORT int playerc_ptz_set(playerc_ptz_t *device, double pan, double tilt, double zoom);
02976
02982 PLAYERC_EXPORT int playerc_ptz_query_status(playerc_ptz_t *device);
02983
02994 PLAYERC_EXPORT int playerc_ptz_set_ws(playerc_ptz_t *device, double pan, double tilt, double zoom,
02995 double panspeed, double tiltspeed);
02996
03004 PLAYERC_EXPORT int playerc_ptz_set_control_mode(playerc_ptz_t *device, int mode);
03005
03007
03008
03009
03019 typedef struct
03020 {
03022 playerc_device_t info;
03023
03025 uint32_t element_count;
03026
03028 double min_angle;
03030 double max_angle;
03032 double angular_res;
03035 double min_range;
03037 double max_range;
03039 double range_res;
03041 double frequency;
03042
03046 player_pose3d_t device_pose;
03047 player_bbox3d_t device_size;
03051 player_pose3d_t *element_poses;
03052 player_bbox3d_t *element_sizes;
03053
03055 uint32_t ranges_count;
03057 double *ranges;
03058
03060 uint32_t intensities_count;
03064 double *intensities;
03065
03067 uint32_t bearings_count;
03070 double *bearings;
03071
03073 uint32_t points_count;
03075 player_point_3d_t *points;
03076
03077 } playerc_ranger_t;
03078
03080 PLAYERC_EXPORT playerc_ranger_t *playerc_ranger_create(playerc_client_t *client, int index);
03081
03083 PLAYERC_EXPORT void playerc_ranger_destroy(playerc_ranger_t *device);
03084
03086 PLAYERC_EXPORT int playerc_ranger_subscribe(playerc_ranger_t *device, int access);
03087
03089 PLAYERC_EXPORT int playerc_ranger_unsubscribe(playerc_ranger_t *device);
03090
03095 PLAYERC_EXPORT int playerc_ranger_get_geom(playerc_ranger_t *device);
03096
03100 PLAYERC_EXPORT int playerc_ranger_power_config(playerc_ranger_t *device, uint8_t value);
03101
03105 PLAYERC_EXPORT int playerc_ranger_intns_config(playerc_ranger_t *device, uint8_t value);
03106
03115 PLAYERC_EXPORT int playerc_ranger_set_config(playerc_ranger_t *device, double min_angle,
03116 double max_angle, double angular_res,
03117 double min_range, double max_range,
03118 double range_res, double frequency);
03119
03128 PLAYERC_EXPORT int playerc_ranger_get_config(playerc_ranger_t *device, double *min_angle,
03129 double *max_angle, double *angular_res,
03130 double *min_range, double *max_range,
03131 double *range_res, double *frequency);
03132
03134
03135
03136
03147 typedef struct
03148 {
03150 playerc_device_t info;
03151
03153 int pose_count;
03154
03157 player_pose3d_t *poses;
03158
03160 int scan_count;
03161
03163 double *scan;
03164
03165 } playerc_sonar_t;
03166
03167
03169 PLAYERC_EXPORT playerc_sonar_t *playerc_sonar_create(playerc_client_t *client, int index);
03170
03172 PLAYERC_EXPORT void playerc_sonar_destroy(playerc_sonar_t *device);
03173
03175 PLAYERC_EXPORT int playerc_sonar_subscribe(playerc_sonar_t *device, int access);
03176
03178 PLAYERC_EXPORT int playerc_sonar_unsubscribe(playerc_sonar_t *device);
03179
03185 PLAYERC_EXPORT int playerc_sonar_get_geom(playerc_sonar_t *device);
03186
03188
03189
03190
03202 typedef struct
03203 {
03205 uint8_t mac[32];
03206
03208 uint8_t ip[32];
03209
03211 uint8_t essid[32];
03212
03214 int mode;
03215
03217 int encrypt;
03218
03220 double freq;
03221
03223 int qual, level, noise;
03224
03225 } playerc_wifi_link_t;
03226
03227
03229 typedef struct
03230 {
03232 playerc_device_t info;
03233
03235 playerc_wifi_link_t *links;
03236 int link_count;
03237 char ip[32];
03238 } playerc_wifi_t;
03239
03240
03242 PLAYERC_EXPORT playerc_wifi_t *playerc_wifi_create(playerc_client_t *client, int index);
03243
03245 PLAYERC_EXPORT void playerc_wifi_destroy(playerc_wifi_t *device);
03246
03248 PLAYERC_EXPORT int playerc_wifi_subscribe(playerc_wifi_t *device, int access);
03249
03251 PLAYERC_EXPORT int playerc_wifi_unsubscribe(playerc_wifi_t *device);
03252
03254 PLAYERC_EXPORT playerc_wifi_link_t *playerc_wifi_get_link(playerc_wifi_t *device, int link);
03255
03256
03258
03259
03260
03272 typedef struct
03273 {
03275 playerc_device_t info;
03276
03277 } playerc_simulation_t;
03278
03279
03281 PLAYERC_EXPORT playerc_simulation_t *playerc_simulation_create(playerc_client_t *client, int index);
03282
03284 PLAYERC_EXPORT void playerc_simulation_destroy(playerc_simulation_t *device);
03285
03287 PLAYERC_EXPORT int playerc_simulation_subscribe(playerc_simulation_t *device, int access);
03288
03290 PLAYERC_EXPORT int playerc_simulation_unsubscribe(playerc_simulation_t *device);
03291
03293 PLAYERC_EXPORT int playerc_simulation_set_pose2d(playerc_simulation_t *device, char* name,
03294 double gx, double gy, double ga);
03295
03297 PLAYERC_EXPORT int playerc_simulation_get_pose2d(playerc_simulation_t *device, char* identifier,
03298 double *x, double *y, double *a);
03299
03301 PLAYERC_EXPORT int playerc_simulation_set_pose3d(playerc_simulation_t *device, char* name,
03302 double gx, double gy, double gz,
03303 double groll, double gpitch, double gyaw);
03304
03306 PLAYERC_EXPORT int playerc_simulation_get_pose3d(playerc_simulation_t *device, char* identifier,
03307 double *x, double *y, double *z,
03308 double *roll, double *pitch, double *yaw, double *time);
03309
03311 PLAYERC_EXPORT int playerc_simulation_set_property(playerc_simulation_t *device,
03312 char* name,
03313 char* property,
03314 void* value,
03315 size_t value_len);
03316
03318 PLAYERC_EXPORT int playerc_simulation_get_property(playerc_simulation_t *device,
03319 char* name,
03320 char* property,
03321 void* value,
03322 size_t value_len);
03323
03325 PLAYERC_EXPORT int playerc_simulation_pause(playerc_simulation_t *device );
03326
03328 PLAYERC_EXPORT int playerc_simulation_reset(playerc_simulation_t *device );
03329
03331 PLAYERC_EXPORT int playerc_simulation_save(playerc_simulation_t *device );
03332
03333
03335
03336
03337
03338
03348 typedef struct
03349 {
03351 playerc_device_t info;
03352 } playerc_speech_t;
03353
03354
03356 PLAYERC_EXPORT playerc_speech_t *playerc_speech_create(playerc_client_t *client, int index);
03357
03359 PLAYERC_EXPORT void playerc_speech_destroy(playerc_speech_t *device);
03360
03362 PLAYERC_EXPORT int playerc_speech_subscribe(playerc_speech_t *device, int access);
03363
03365 PLAYERC_EXPORT int playerc_speech_unsubscribe(playerc_speech_t *device);
03366
03368 PLAYERC_EXPORT int playerc_speech_say (playerc_speech_t *device, char *);
03369
03370
03372
03373
03374
03384 typedef struct
03385 {
03387 playerc_device_t info;
03388
03389 char *rawText;
03390
03391
03392 char **words;
03393 int wordCount;
03394 } playerc_speechrecognition_t;
03395
03396
03398 PLAYERC_EXPORT playerc_speechrecognition_t *playerc_speechrecognition_create(playerc_client_t *client, int index);
03399
03401 PLAYERC_EXPORT void playerc_speechrecognition_destroy(playerc_speechrecognition_t *device);
03402
03404 PLAYERC_EXPORT int playerc_speechrecognition_subscribe(playerc_speechrecognition_t *device, int access);
03405
03407 PLAYERC_EXPORT int playerc_speechrecognition_unsubscribe(playerc_speechrecognition_t *device);
03408
03410
03411
03412
03422 typedef struct
03423 {
03425 uint32_t type;
03427 uint32_t guid_count;
03429 uint8_t *guid;
03430 } playerc_rfidtag_t;
03431
03433 typedef struct
03434 {
03436 playerc_device_t info;
03437
03439 uint16_t tags_count;
03440
03442 playerc_rfidtag_t *tags;
03443 } playerc_rfid_t;
03444
03445
03447 PLAYERC_EXPORT playerc_rfid_t *playerc_rfid_create(playerc_client_t *client, int index);
03448
03450 PLAYERC_EXPORT void playerc_rfid_destroy(playerc_rfid_t *device);
03451
03453 PLAYERC_EXPORT int playerc_rfid_subscribe(playerc_rfid_t *device, int access);
03454
03456 PLAYERC_EXPORT int playerc_rfid_unsubscribe(playerc_rfid_t *device);
03457
03459
03460
03461
03471 typedef player_pointcloud3d_element_t playerc_pointcloud3d_element_t;
03472
03474 typedef struct
03475 {
03477 playerc_device_t info;
03478
03480 uint16_t points_count;
03481
03483 playerc_pointcloud3d_element_t *points;
03484 } playerc_pointcloud3d_t;
03485
03486
03488 PLAYERC_EXPORT playerc_pointcloud3d_t *playerc_pointcloud3d_create (playerc_client_t *client, int index);
03489
03491 PLAYERC_EXPORT void playerc_pointcloud3d_destroy (playerc_pointcloud3d_t *device);
03492
03494 PLAYERC_EXPORT int playerc_pointcloud3d_subscribe (playerc_pointcloud3d_t *device, int access);
03495
03497 PLAYERC_EXPORT int playerc_pointcloud3d_unsubscribe (playerc_pointcloud3d_t *device);
03498
03500
03501
03502
03511 typedef player_pointcloud3d_stereo_element_t playerc_pointcloud3d_stereo_element_t;
03512
03514 typedef struct
03515 {
03517 playerc_device_t info;
03518
03519
03520 playerc_camera_t left_channel;
03521
03522 playerc_camera_t right_channel;
03523
03524
03525 playerc_camera_t disparity;
03526
03527
03528 uint32_t points_count;
03529 playerc_pointcloud3d_stereo_element_t *points;
03530
03531 } playerc_stereo_t;
03532
03533
03535 PLAYERC_EXPORT playerc_stereo_t *playerc_stereo_create (playerc_client_t *client, int index);
03536
03538 PLAYERC_EXPORT void playerc_stereo_destroy (playerc_stereo_t *device);
03539
03541 PLAYERC_EXPORT int playerc_stereo_subscribe (playerc_stereo_t *device, int access);
03542
03544 PLAYERC_EXPORT int playerc_stereo_unsubscribe (playerc_stereo_t *device);
03545
03547
03548
03549
03559 typedef struct
03560 {
03562 playerc_device_t info;
03563
03565 player_pose3d_t pose;
03566 player_pose3d_t vel;
03567 player_pose3d_t acc;
03568
03570 player_imu_data_calib_t calib_data;
03571
03573 float q0, q1, q2, q3;
03574 } playerc_imu_t;
03575
03577 PLAYERC_EXPORT playerc_imu_t *playerc_imu_create (playerc_client_t *client, int index);
03578
03580 PLAYERC_EXPORT void playerc_imu_destroy (playerc_imu_t *device);
03581
03583 PLAYERC_EXPORT int playerc_imu_subscribe (playerc_imu_t *device, int access);
03584
03586 PLAYERC_EXPORT int playerc_imu_unsubscribe (playerc_imu_t *device);
03587
03589 PLAYERC_EXPORT int playerc_imu_datatype (playerc_imu_t *device, int value);
03590
03592 PLAYERC_EXPORT int playerc_imu_reset_orientation (playerc_imu_t *device, int value);
03593
03595
03596
03597
03610 typedef struct
03611 {
03613 playerc_device_t info;
03614
03616 uint32_t node_type;
03618 uint32_t node_id;
03620 uint32_t node_parent_id;
03622 player_wsn_node_data_t data_packet;
03623 } playerc_wsn_t;
03624
03625
03627 PLAYERC_EXPORT playerc_wsn_t *playerc_wsn_create(playerc_client_t *client, int index);
03628
03630 PLAYERC_EXPORT void playerc_wsn_destroy(playerc_wsn_t *device);
03631
03633 PLAYERC_EXPORT int playerc_wsn_subscribe(playerc_wsn_t *device, int access);
03634
03636 PLAYERC_EXPORT int playerc_wsn_unsubscribe(playerc_wsn_t *device);
03637
03639 PLAYERC_EXPORT int playerc_wsn_set_devstate(playerc_wsn_t *device, int node_id,
03640 int group_id, int devnr, int state);
03641
03643 PLAYERC_EXPORT int playerc_wsn_power(playerc_wsn_t *device, int node_id, int group_id,
03644 int value);
03645
03647 PLAYERC_EXPORT int playerc_wsn_datatype(playerc_wsn_t *device, int value);
03648
03650 PLAYERC_EXPORT int playerc_wsn_datafreq(playerc_wsn_t *device, int node_id, int group_id,
03651 double frequency);
03652
03654
03655
03656 #ifdef __cplusplus
03657 }
03658 #endif
03659
03660 #endif