RS4Leuze_laser.h
1  /*
2  * Player - One Hell of a Robot Server
3  * Copyright (C) 2000 Brian Gerkey et al.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18  *
19  */
20 
28 #ifndef RS4Leuze_laser_h
29 #define RS4Leuze_laser_h
30 
31 #include <termios.h>
32 #include <sys/types.h>
33 #include <sys/stat.h>
34 #include <fcntl.h>
35 #include <time.h>
36 #include <sys/time.h>
37 #include <stdlib.h>
38 
39 using namespace std;
40 
41 #define MAX_SCAN_POINTS 529
42 
43 
44 typedef struct RS4Leuze_laser_readings {
45  double Reading[MAX_SCAN_POINTS];
47 
48 //classes
52 class Claser
53 {
54  private:
55  char *portName;
56  int serialFD;
57  termios ttyset;
58  fd_set rfds;
60  unsigned char byte;
61  unsigned char checksum;
62  unsigned char option1;
63  long unsigned int scan_number;
64  unsigned int output_start;
65  unsigned int output_stop;
66  unsigned int scanedPoint;
67  unsigned char controlByte;
68  unsigned int points_to_scan;
69  struct timeval tv;
70  timeval timeStamp;
72  public:
73 
74  //Claser(ClogMsg *lgMsg, bool *laser_ON, char dir_name[80]); /**<Opens serial port*/
75  Claser(int scan_points);
76  ~Claser();
77  void closeLaser();
78  unsigned char readByte();
79  void sync();
80  //void readScan(); /**<Sets to scanData array values of last laser scanner*/
81  void writeConfig();
82  int scanRead();
83  void runLaser();
84  void closeSerial();
85  void openSerial(bool *laser_ON,int Baud_rate, const char * Port);
87 
88 };
89 
90 #endif
91 
92 
termios ttyset
termios variable to configure serial port
Definition: RS4Leuze_laser.h:57
#define PLAYER_BUMPER_REQ_GET_GEOM
Data: state (PLAYER_BUMPER_DATA_GEOM)
Definition: player_interfaces.h:1916
position 2d velocity command
Definition: player_interfaces.h:617
uint32_t bumpers_count
the number of valid bumper readings
Definition: player_interfaces.h:1925
uint32_t data_count
Size of data as stored in buffer (bytes)
Definition: player_interfaces.h:3452
#define PLAYER_POWER_MASK_JOULES
Data subtype: voltage.
Definition: player_interfaces.h:284
#define PLAYER_IR_DATA_RANGES
Data subtype: ranges.
Definition: player_interfaces.h:2108
static bool MatchMessage(player_msghdr_t *hdr, int type, int subtype, player_devaddr_t addr)
Helper for message processing.
Definition: message.h:158
Definition: roomba_comms.h:88
int selectResult
Laser Message fields.
Definition: RS4Leuze_laser.h:59
~Claser()
Destructor.
Definition: RS4Leuze_laser.cc:46
uint32_t valid
Status bits.
Definition: player_interfaces.h:296
Claser implements functions to read data from a laser scanner ROTOSCAN RS4-4 (Leuze corp....
Definition: RS4Leuze_laser.h:52
void closeSerial()
Closes serial Port.
Definition: RS4Leuze_laser.cc:54
void openSerial(bool *laser_ON, int Baud_rate, const char *Port)
Opens serial Port and get the default paarameters or those given in the .cfg file.
Definition: RS4Leuze_laser.cc:59
Data AND Request/reply: bumper geometry.
Definition: player_interfaces.h:1948
Generic message header.
Definition: player.h:160
virtual int MainSetup(void)
Sets up the resources needed by the driver thread.
Definition: driver.h:657
virtual void MainQuit(void)
Cleanup method for driver thread (called when main exits)
Definition: driver.h:663
void sync()
sync function synchronizes with the start of the laser data
Definition: RS4Leuze_laser.cc:114
#define PLAYER_IR_REQ_POSE
Request/reply subtype: get pose.
Definition: player_interfaces.h:2102
const char * ReadString(int section, const char *name, const char *value)
Read a string value.
#define PLAYER_POSITION2D_REQ_MOTOR_POWER
Request/reply: Motor power.
Definition: player_interfaces.h:496
double px
X [m].
Definition: player.h:219
Request/reply: get pose.
Definition: player_interfaces.h:2130
#define PLAYER_POWER_DATA_STATE
Data subtype: voltage.
Definition: player_interfaces.h:274
#define PLAYER_POWER_MASK_VOLTS
bit masks for the player_power_data_t mask field
Definition: player_interfaces.h:282
#define PLAYER_POSITION2D_CMD_VEL
Command: velocity (PLAYER_POSITION2D_CMD_VEL)
Definition: player_interfaces.h:581
virtual void Main(void)=0
Main method for driver thread.
char * portName
Serial Port where laser is connected.
Definition: RS4Leuze_laser.h:55
int ReadInt(int section, const char *name, int value)
Read an integer value.
#define PLAYER_POWER_MASK_WATTS
Data subtype: voltage.
Definition: player_interfaces.h:283
#define PLAYER_OPAQUE_DATA_STATE
Data subtype: generic state.
Definition: player_interfaces.h:3434
#define PLAYER_MSGTYPE_DATA
A data message.
Definition: player.h:94
double py
Y [m].
Definition: player.h:221
uint8_t state
The gripper's state.
Definition: player_interfaces.h:421
#define PLAYER_MSGTYPE_RESP_ACK
A positive response message.
Definition: player.h:111
float * ranges
ranges [m]
Definition: player_interfaces.h:2124
Data: state (PLAYER_GRIPPER_DATA_STATE)
Definition: player_interfaces.h:418
#define PLAYER_GRIPPER_CMD_OPEN
Command: Open (PLAYER_GRIPPER_CMD_OPEN)
Definition: player_interfaces.h:373
#define PLAYER_OPAQUE_REQ
Data subtype: generic state.
Definition: player_interfaces.h:3445
#define PLAYER_POSITION2D_REQ_GET_GEOM
Request/reply: geometry.
Definition: player_interfaces.h:483
virtual int ProcessMessage(QueuePointer &resp_queue, player_msghdr *hdr, void *data)
Message handler.
bool ReadBool(int section, const char *name, bool value)
Read a boolean value (one of: yes, no, true, false, 1, 0)
#define PLAYER_OPAQUE_CMD
Data subtype: generic state.
Definition: player_interfaces.h:3446
Data: state (PLAYER_BUMPER_DATA_GEOM)
Definition: player_interfaces.h:1922
float watts
estimated current energy consumption (negative values) or aquisition (positive values) [W].
Definition: player_interfaces.h:306
#define PLAYER_MSGTYPE_REQ
A request message.
Definition: player.h:105
timeval timeStamp
Time in microseconds resolution.
Definition: RS4Leuze_laser.h:70
Definition: RS4Leuze_laser.h:44
Data: voltage (PLAYER_POWER_DATA_STATE)
Definition: player_interfaces.h:291
int serialFD
Serial port file descriptor.
Definition: RS4Leuze_laser.h:56
int ReadDeviceAddr(player_devaddr_t *addr, int section, const char *name, int code, int index, const char *key)
Read a device id.
#define PLAYER_BUMPER_DATA_STATE
Data: state (PLAYER_BUMPER_DATA_GEOM)
Definition: player_interfaces.h:1910
Class for loading configuration file information.
Definition: configfile.h:195
int32_t charging
charge exchange status: if 1, the device is currently receiving charge from another energy device.
Definition: player_interfaces.h:311
#define PLAYER_CAPABILITIES_REQ
Capability request message type.
Definition: player.h:396
A device address.
Definition: player.h:144
#define PLAYER_POSITION2D_REQ_RESET_ODOM
Request/reply: Reset odometry.
Definition: player_interfaces.h:541
An autopointer for the message queue.
Definition: message.h:72
uint8_t * bumpers
array of bumper values
Definition: player_interfaces.h:1927
position2d data
Definition: player_interfaces.h:606
position2d geom
Definition: player_interfaces.h:655
A pose in space.
Definition: player.h:227
#define PLAYER_POWER_MASK_CHARGING
Data subtype: voltage.
Definition: player_interfaces.h:286
void runLaser()
Return the scan reading from the laser.
Definition: RS4Leuze_laser.cc:219
uint8_t stored
Number of currently stored objects.
Definition: player_interfaces.h:425
#define PLAYER_ERROR(msg)
Error message macros.
Definition: error.h:80
Base class for drivers which oeprate with a thread.
Definition: driver.h:551
uint32_t ranges_count
number of samples
Definition: player_interfaces.h:2122
#define PLAYER_GRIPPER_CMD_CLOSE
Command: Close (PLAYER_GRIPPER_CMD_CLOSE)
Definition: player_interfaces.h:378
float joules
energy stored [J].
Definition: player_interfaces.h:303
#define PLAYER_POSITION2D_DATA_STATE
Data: state (PLAYER_POSITION2D_DATA_STATE)
Definition: player_interfaces.h:568
float percent
Percent of full charge [%].
Definition: player_interfaces.h:301
player_pose2d_t pos
position [m,m,rad] (x, y, yaw)
Definition: player_interfaces.h:609
Data: ranges (PLAYER_IR_DATA_RANGES)
Definition: player_interfaces.h:2115
uint32_t beams
The position of the object in the gripper.
Definition: player_interfaces.h:423
float volts
Battery voltage [V].
Definition: player_interfaces.h:299
Claser(int scan_points)
Opens serial port.
Definition: RS4Leuze_laser.cc:37
#define PLAYER_MSGTYPE_CMD
A command message.
Definition: player.h:98
data
Definition: player_interfaces.h:3449
double pa
yaw [rad]
Definition: player.h:223
Base class for all drivers.
Definition: driver.h:107
#define PLAYER_POWER_MASK_PERCENT
Data subtype: voltage.
Definition: player_interfaces.h:285
#define PLAYER_GRIPPER_DATA_STATE
Data subtype: state.
Definition: player_interfaces.h:365
int scanRead()
reads one scan and puts it in scanData array
Definition: RS4Leuze_laser.cc:131
#define PLAYER_MSG2(level, msg, a, b)
Error message macros.
Definition: error.h:106
uint8_t stall
Are the motors stalled?
Definition: player_interfaces.h:613
unsigned char readByte()
Reads one byte and updates checksum message.
Definition: RS4Leuze_laser.cc:103
The geometry of a single bumper.
Definition: player_interfaces.h:1931
#define PLAYER_MSGQUEUE_DEFAULT_MAXLEN
Default maximum length for a message queue.
Definition: player.h:75
struct timeval tv
termios variable time interval
Definition: RS4Leuze_laser.h:69
T max(T a, T b)
Return the maximum of a, b.
Definition: utility.h:122
#define PLAYER_POSITION2D_REQ_SET_ODOM
Request/reply: Set odometry.
Definition: player_interfaces.h:535
uint8_t * data
The data we will be sending.
Definition: player_interfaces.h:3454