rcore_xbridge.h
1 /*
2  * Player - One Hell of a Robot Server
3  * Copyright (C) 2006
4  * Radu Bogdan Rusu <rusu@cs.tum.edu>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  *
20  */
21 #include <vector>
22 
23 #define DEFAULT_XBRIDGE_PORT 5555
24 #define MAXREADPPACKET 10
25 // ---[ Node calibration values ]---
26 class NodeCalibrationValues
27 {
28  public:
29  unsigned int node_id; // node identifier
30  unsigned int group_id; // group identifier
31  int c_values[6]; // calibration values
32 };
33 typedef std::vector<NodeCalibrationValues> NCV;
34 
35 struct p_packet *packet = NULL;
#define PLAYER_DIO_CMD_VALUES
Data: input values (PLAYER_DIO_DATA_VALUES)
Definition: player_interfaces.h:1987
#define PLAYER_WARN1(msg, a)
Error message macros.
Definition: error.h:90
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Message handler.
Definition: fromranger.cc:68
#define PLAYER_IMU_DATA_FULLSTATE
Data subtype: All IMU position/orientation data
Definition: player_interfaces.h:4691
uint32_t element_sizes_count
Number of individual elements that make up the device.
Definition: player_interfaces.h:5011
Request/reply: Get/set scan properties.
Definition: player_interfaces.h:961
player_pose3d_t * element_poses
Pose of each individual element that makes up the device (in device CS).
Definition: player_interfaces.h:5009
#define PLAYER_RANGER_REQ_INTNS
Request/reply subtype: intensity data config.
Definition: player_interfaces.h:4965
uint8_t have_geom
If non-zero, the geometry data has been filled.
Definition: player_interfaces.h:5036
float gyro_z
The IMU's calibrated gyro value on Z-axis.
Definition: player_interfaces.h:4732
player_ranger_geom_t geom
The geometry of the device at the time the scan was acquired.
Definition: player_interfaces.h:5038
double proll
roll [rad]
Definition: player.h:237
uint32_t intensities_count
Number of intensity readings.
Definition: player_interfaces.h:5051
Data: Quaternions orientation data (PLAYER_IMU_DATA_QUAT)
Definition: player_interfaces.h:4745
float accel_z
The node's acceleration on Z-axis from an acceleration sensor.
Definition: player_interfaces.h:4392
float magn_y
The IMU's calibrated magnetic value on Y-axis.
Definition: player_interfaces.h:4736
#define PLAYER_LASER_DATA_SCAN
Data subtype: scan.
Definition: player_interfaces.h:845
static bool MatchMessage(player_msghdr_t *hdr, int type, int subtype, player_devaddr_t addr)
Helper for message processing.
Definition: message.h:159
float temperature
The node's templerature measurement from a temperature sensor.
Definition: player_interfaces.h:4400
double ReadFloat(int section, const char *name, double value)
Read a floating point (double) value.
#define PLAYER_IMU_DATA_STATE
Data subtype: IMU position/orientation data.
Definition: player_interfaces.h:4679
uint8_t state
TRUE to turn device on, FALSE to turn device off.
Definition: player_interfaces.h:5080
float magn_x
The IMU's calibrated magnetic value on X-axis.
Definition: player_interfaces.h:4734
double px
X [m].
Definition: player.h:231
#define PLAYER_LASER_REQ_SET_CONFIG
Request/reply subtype: set configuration.
Definition: player_interfaces.h:857
#define PLAYER_LASER_DATA_SCANPOSE
Data subtype: pose-stamped scan.
Definition: player_interfaces.h:848
Data: intensity scan (PLAYER_RANGER_DATA_INTNS)
Definition: player_interfaces.h:5048
player_pose3d_t pose
Laser pose, in robot cs (m, m, m, rad, rad, rad).
Definition: player_interfaces.h:948
Request/reply: Turn intensity data on/off for devices that provide it (PLAYER_RANGER_REQ_INTNS)
Definition: player_interfaces.h:5089
double ReadTupleLength(int section, const char *name, int index, double value)
Read a length from a tuple (includes units conversion)
Data: calibrated IMU data (PLAYER_IMU_DATA_STATE)
Definition: player_interfaces.h:4709
Request/reply: change the data type to one of the predefined data structures.
Definition: player_interfaces.h:4794
player_ranger_data_intns_t data
The scan data.
Definition: player_interfaces.h:5063
Generic message header.
Definition: player.h:161
double pz
Z [m].
Definition: player.h:235
Device configuration request (PLAYER_RANGER_REQ_GET_CONFIG)
Definition: player_interfaces.h:4978
Request/reply: Reset euler orientation.
Definition: player_interfaces.h:4816
virtual int MainSetup(void)
Sets up the resources needed by the driver thread.
Definition: driver.h:658
Request/reply: Turn power on/off.
Definition: player_interfaces.h:983
#define PLAYER_WSN_REQ_DATATYPE
Request/reply: change the data type to RAW or converted metric units.
Definition: player_interfaces.h:4373
virtual void MainQuit(void)
Cleanup method for driver thread (called when main exits)
Definition: driver.h:664
#define PLAYER_RANGER_DATA_INTNS
Data subtype: intensity scan.
Definition: player_interfaces.h:4950
Data: Stamped range scan (PLAYER_RANGER_DATA_RANGESTAMPED)
Definition: player_interfaces.h:5031
Encapsulates a device (i.e., a driver bound to an interface)
Definition: device.h:74
const char * ReadString(int section, const char *name, const char *value)
Read a string value.
virtual int Setup(void)
Initialize the driver.
Definition: fromranger.cc:51
double px
X [m].
Definition: player.h:220
#define PLAYER_WSN_REQ_POWER
Request/reply: put the node in sleep mode (0) or wake it up (1).
Definition: player_interfaces.h:4370
float accel_x
The IMU's calibrated acceleration value on X-axis.
Definition: player_interfaces.h:4722
#define PLAYER_RANGER_REQ_GET_CONFIG
Request/reply subtype: get configuration.
Definition: player_interfaces.h:4971
#define PLAYER_IMU_REQ_RESET_ORIENTATION
Request/reply subtype: reset orientation.
Definition: player_interfaces.h:4697
double pyaw
yaw [rad]
Definition: player.h:241
uint8_t subtype
Message subtype; interface specific.
Definition: player.h:168
double max_angle
End angle of scans [rad].
Definition: player_interfaces.h:4983
virtual void Main(void)=0
Main method for driver thread.
double min_angle
Start angle of scans [rad].
Definition: player_interfaces.h:4981
#define PLAYER_RANGER_DATA_RANGE
Data subtype: range scan.
Definition: player_interfaces.h:4944
#define PLAYER_RANGER_DATA_INTNSSTAMPED
Data subtype: intensity scan with extra info.
Definition: player_interfaces.h:4953
int ReadInt(int section, const char *name, int value)
Read an integer value.
uint8_t intensity
Enable reflection intensity data.
Definition: player_interfaces.h:974
#define PLAYER_MSGTYPE_DATA
A data message.
Definition: player.h:95
double py
Y [m].
Definition: player.h:222
Data: Euler orientation data (PLAYER_IMU_DATA_EULER)
Definition: player_interfaces.h:4761
uint32_t digout
output bitfield
Definition: player_interfaces.h:2011
float battery
The node's remaining battery voltage.
Definition: player_interfaces.h:4402
player_wsn_node_data_t data_packet
The WSN node's data packet.
Definition: player_interfaces.h:4417
#define PLAYER_MSGTYPE_RESP_ACK
A positive response message.
Definition: player.h:112
uint32_t ranges_count
Number of range readings.
Definition: player_interfaces.h:5022
Definition: fromranger.h:32
player_bbox3d_t size
Size of the device [m, m, m].
Definition: player_interfaces.h:5005
float accel_z
The IMU's calibrated acceleration value on Z-axis.
Definition: player_interfaces.h:4726
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Message handler.
static bool MatchDeviceAddress(player_devaddr_t addr1, player_devaddr_t addr2)
Compare two addresses.
Definition: device.h:201
Request/reply: Turn power on/off (PLAYER_RANGER_REQ_POWER)
Definition: player_interfaces.h:5077
Data: all of the calibrated IMU data (PLAYER_IMU_DATA_FULLSTATE)
Definition: player_interfaces.h:4775
float magn_x
The node's magnetic measurement on X-axis from a magnetometer.
Definition: player_interfaces.h:4394
double ppitch
pitch [rad]
Definition: player.h:239
Data and Request/reply: Get geometry.
Definition: player_interfaces.h:5000
double sh
Height [m].
Definition: player.h:261
#define PLAYER_IMU_REQ_RESET_EULER
Request/reply subtype: reset euler values.
Definition: player_interfaces.h:4700
#define PLAYER_MSGTYPE_REQ
A request message.
Definition: player.h:106
float light
The node's light measurement from a light sensor.
Definition: player_interfaces.h:4384
#define PLAYER_LASER_REQ_GET_GEOM
Request/reply subtype: get geometry.
Definition: player_interfaces.h:854
#define PLAYER_MSGTYPE_RESP_NACK
A negative response message.
Definition: player.h:125
#define PLAYER_RANGER_REQ_POWER
Request/reply subtype: power config.
Definition: player_interfaces.h:4962
double sl
Length [m].
Definition: player.h:259
Request/reply: Get geometry.
Definition: player_interfaces.h:945
#define PLAYER_LASER_REQ_GET_CONFIG
Request/reply subtype: get configuration.
Definition: player_interfaces.h:860
uint8_t state
TRUE to turn data on, FALSE to turn data off.
Definition: player_interfaces.h:5092
double ReadTupleAngle(int section, const char *name, int index, double value)
Read an angle form a tuple (includes units conversion)
uint32_t node_type
The type of WSN node.
Definition: player_interfaces.h:4411
Data: range scan (PLAYER_RANGER_DATA_RANGE)
Definition: player_interfaces.h:5019
#define PLAYER_RANGER_REQ_SET_CONFIG
Request/reply subtype: set configuration.
Definition: player_interfaces.h:4968
float mic
The node's accoustic measurement from a microphone.
Definition: player_interfaces.h:4386
Command: output values (PLAYER_DIO_CMD_VALUES)
Definition: player_interfaces.h:2006
int ReadDeviceAddr(player_devaddr_t *addr, int section, const char *name, int code, int index, const char *key)
Read a device id.
float accel_x
The node's acceleration on X-axis from an acceleration sensor.
Definition: player_interfaces.h:4388
#define PLAYER_IMU_DATA_EULER
Data subtype: Euler orientation data
Definition: player_interfaces.h:4688
uint32_t element_poses_count
Number of individual elements that make up the device.
Definition: player_interfaces.h:5007
Data: input values (PLAYER_DIO_DATA_VALUES)
Definition: player_interfaces.h:1994
uint8_t value
Data type setting: 1 for pose/orientation, 2 for calibrated (raw) data, 3 for quaternions,...
Definition: player_interfaces.h:4799
float resolution
Scan resolution [rad].
Definition: player_interfaces.h:968
Class for loading configuration file information.
Definition: configfile.h:196
int ReadTupleInt(int section, const char *name, int index, int value)
Read an integer from a tuple field.
double sw
Width [m].
Definition: player.h:257
virtual int Setup()
Initialize the driver.
Definition: driver.h:386
#define PLAYER_CAPABILITIES_REQ
Capability request message type.
Definition: player.h:397
A device address.
Definition: player.h:145
An autopointer for the message queue.
Definition: message.h:73
double py
Y [m].
Definition: player.h:233
float min_angle
Start and end angles for the laser scan [rad].
Definition: player_interfaces.h:964
uint32_t node_parent_id
The ID of the WSN node's parent (if existing).
Definition: player_interfaces.h:4415
uint32_t bits
bitfield of samples
Definition: player_interfaces.h:1999
#define PLAYER_RANGER_DATA_RANGESTAMPED
Data subtype: range scan with extra info.
Definition: player_interfaces.h:4947
void SetFilter(int host, int robot, int interf, int index, int type, int subtype)
Set filter values.
float magn_z
The node's magnetic measurement on Z-axis from a magnetometer.
Definition: player_interfaces.h:4398
position2d data
Definition: player_interfaces.h:606
#define PLAYER_IMU_DATA_QUAT
Data subtype: Quaternions orientation data
Definition: player_interfaces.h:4685
#define PLAYER_WSN_DATA_STATE
Data subtypes
Definition: player_interfaces.h:4364
uint32_t node_id
The ID of the WSN node.
Definition: player_interfaces.h:4413
uint32_t count
the command
Definition: player_interfaces.h:2009
A pose in space.
Definition: player.h:228
uint8_t have_config
If non-zero, the configuration data has been filled.
Definition: player_interfaces.h:5040
#define PLAYER_WSN_REQ_DATAFREQ
Request/reply: change the receiving data frequency.
Definition: player_interfaces.h:4376
double range_res
Range resolution [m].
Definition: player_interfaces.h:4992
#define PLAYER_ERROR(msg)
Error message macros.
Definition: error.h:81
Base class for drivers which oeprate with a thread.
Definition: driver.h:552
float gyro_x
The IMU's calibrated gyro value on X-axis.
Definition: player_interfaces.h:4728
double max_range
Maximum range [m].
Definition: player_interfaces.h:4990
virtual int Shutdown(void)
Finalize the driver.
Definition: fromranger.cc:58
float range_res
Range Resolution [m].
Definition: player_interfaces.h:972
#define PLAYER_POSITION2D_DATA_STATE
Data: state (PLAYER_POSITION2D_DATA_STATE)
Definition: player_interfaces.h:568
double timestamp
Time associated with message contents (seconds since epoch)
Definition: player.h:170
float max_angle
Start and end angles for the laser scan [rad].
Definition: player_interfaces.h:966
Data (PLAYER_WSN_DATA_STATE)
Definition: player_interfaces.h:4408
player_pose2d_t pos
position [m,m,rad] (x, y, yaw)
Definition: player_interfaces.h:609
float accel_y
The IMU's calibrated acceleration value on Y-axis.
Definition: player_interfaces.h:4724
float magn_z
The IMU's calibrated magnetic value on Z-axis.
Definition: player_interfaces.h:4738
player_bbox3d_t size
Laser dimensions (m, m, m).
Definition: player_interfaces.h:950
float magn_y
The node's magnetic measurement on Y-axis from a magnetometer.
Definition: player_interfaces.h:4396
#define PLAYER_WARN(msg)
Warning message macros.
Definition: error.h:89
double * ranges
Range readings [m].
Definition: player_interfaces.h:5024
#define PLAYER_IMU_DATA_CALIB
Data subtype: Calibrated IMU data
Definition: player_interfaces.h:4682
#define PLAYER_MSGTYPE_CMD
A command message.
Definition: player.h:99
uint32_t count
number of samples
Definition: player_interfaces.h:1997
virtual int Shutdown()
Finalize the driver.
Definition: driver.h:393
double frequency
Scanning frequency [Hz].
Definition: player_interfaces.h:4994
#define PLAYER_DIO_DATA_VALUES
Data: input values (PLAYER_DIO_DATA_VALUES)
Definition: player_interfaces.h:1984
float gyro_y
The IMU's calibrated gyro value on Y-axis.
Definition: player_interfaces.h:4730
#define PLAYER_IMU_REQ_SET_DATATYPE
Request/reply subtype: set data type.
Definition: player_interfaces.h:4694
double pa
yaw [rad]
Definition: player.h:224
Base class for all drivers.
Definition: driver.h:108
Command: set device state (PLAYER_WSN_CMD_DEVSTATE) This wsn command sets the state of the node's ind...
Definition: player_interfaces.h:4423
Data: calibrated IMU data (PLAYER_IMU_DATA_CALIB)
Definition: player_interfaces.h:4719
float max_range
Maximum range [m].
Definition: player_interfaces.h:970
Data: pose-stamped scan (PLAYER_LASER_DATA_SCANPOSE)
Definition: player_interfaces.h:909
#define PLAYER_MSG0(level, msg)
General messages.
Definition: error.h:105
float accel_y
The node's acceleration on Y-axis from an acceleration sensor.
Definition: player_interfaces.h:4390
Request/reply: change the data type to RAW or converted engineering units.
Definition: player_interfaces.h:4454
float scanning_frequency
Scanning frequency [Hz].
Definition: player_interfaces.h:976
uint8_t value
Data type setting: 0 for RAW values, 1 for converted units.
Definition: player_interfaces.h:4457
player_devaddr_t addr
Device to which this message pertains.
Definition: player.h:164
player_pose3d_t pose
Device centre pose in robot CS [m, m, m, rad, rad, rad].
Definition: player_interfaces.h:5003
#define PLAYER_RANGER_REQ_GET_GEOM
Request/reply subtype: get geometry.
Definition: player_interfaces.h:4959
#define PLAYER_MSGQUEUE_DEFAULT_MAXLEN
Default maximum length for a message queue.
Definition: player.h:76
double angular_res
Scan resolution [rad].
Definition: player_interfaces.h:4985
#define PLAYER_LASER_REQ_POWER
Request/reply subtype: set power.
Definition: player_interfaces.h:863
Data: Stamped intensity scan (PLAYER_RANGER_DATA_INTNSSTAMPED)
Definition: player_interfaces.h:5060
#define PLAYER_RANGER_DATA_GEOM
Data subtype: sensor geometry.
Definition: player_interfaces.h:4956
player_ranger_data_range_t data
The scan data.
Definition: player_interfaces.h:5034