kitt_platform
 All Classes Namespaces Files Functions Variables Typedefs Enumerator Macros
LaserScan.h
Go to the documentation of this file.
1 #ifndef _ROS_sensor_msgs_LaserScan_h
2 #define _ROS_sensor_msgs_LaserScan_h
3 
4 #include <stdint.h>
5 #include <string.h>
6 #include <stdlib.h>
7 #include "ros/msg.h"
8 #include "std_msgs/Header.h"
9 
10 namespace sensor_msgs
11 {
12 
13  class LaserScan : public ros::Msg
14  {
15  public:
17  float angle_min;
18  float angle_max;
21  float scan_time;
22  float range_min;
23  float range_max;
24  uint8_t ranges_length;
25  float st_ranges;
26  float * ranges;
29  float * intensities;
30 
32  header(),
33  angle_min(0),
34  angle_max(0),
35  angle_increment(0),
36  time_increment(0),
37  scan_time(0),
38  range_min(0),
39  range_max(0),
40  ranges_length(0), ranges(NULL),
42  {
43  }
44 
45  virtual int serialize(unsigned char *outbuffer) const
46  {
47  int offset = 0;
48  offset += this->header.serialize(outbuffer + offset);
49  union {
50  float real;
51  uint32_t base;
52  } u_angle_min;
53  u_angle_min.real = this->angle_min;
54  *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
55  *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
56  *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
57  *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
58  offset += sizeof(this->angle_min);
59  union {
60  float real;
61  uint32_t base;
62  } u_angle_max;
63  u_angle_max.real = this->angle_max;
64  *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
65  *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
66  *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
67  *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
68  offset += sizeof(this->angle_max);
69  union {
70  float real;
71  uint32_t base;
72  } u_angle_increment;
73  u_angle_increment.real = this->angle_increment;
74  *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
75  *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
76  *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
77  *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
78  offset += sizeof(this->angle_increment);
79  union {
80  float real;
81  uint32_t base;
82  } u_time_increment;
83  u_time_increment.real = this->time_increment;
84  *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
85  *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
86  *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
87  *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
88  offset += sizeof(this->time_increment);
89  union {
90  float real;
91  uint32_t base;
92  } u_scan_time;
93  u_scan_time.real = this->scan_time;
94  *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
95  *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
96  *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
97  *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
98  offset += sizeof(this->scan_time);
99  union {
100  float real;
101  uint32_t base;
102  } u_range_min;
103  u_range_min.real = this->range_min;
104  *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
105  *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
106  *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
107  *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
108  offset += sizeof(this->range_min);
109  union {
110  float real;
111  uint32_t base;
112  } u_range_max;
113  u_range_max.real = this->range_max;
114  *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
115  *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
116  *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
117  *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
118  offset += sizeof(this->range_max);
119  *(outbuffer + offset++) = ranges_length;
120  *(outbuffer + offset++) = 0;
121  *(outbuffer + offset++) = 0;
122  *(outbuffer + offset++) = 0;
123  for( uint8_t i = 0; i < ranges_length; i++){
124  union {
125  float real;
126  uint32_t base;
127  } u_rangesi;
128  u_rangesi.real = this->ranges[i];
129  *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF;
130  *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF;
131  *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF;
132  *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF;
133  offset += sizeof(this->ranges[i]);
134  }
135  *(outbuffer + offset++) = intensities_length;
136  *(outbuffer + offset++) = 0;
137  *(outbuffer + offset++) = 0;
138  *(outbuffer + offset++) = 0;
139  for( uint8_t i = 0; i < intensities_length; i++){
140  union {
141  float real;
142  uint32_t base;
143  } u_intensitiesi;
144  u_intensitiesi.real = this->intensities[i];
145  *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF;
146  *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF;
147  *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF;
148  *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF;
149  offset += sizeof(this->intensities[i]);
150  }
151  return offset;
152  }
153 
154  virtual int deserialize(unsigned char *inbuffer)
155  {
156  int offset = 0;
157  offset += this->header.deserialize(inbuffer + offset);
158  union {
159  float real;
160  uint32_t base;
161  } u_angle_min;
162  u_angle_min.base = 0;
163  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
164  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
165  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
166  u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
167  this->angle_min = u_angle_min.real;
168  offset += sizeof(this->angle_min);
169  union {
170  float real;
171  uint32_t base;
172  } u_angle_max;
173  u_angle_max.base = 0;
174  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
175  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
176  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
177  u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
178  this->angle_max = u_angle_max.real;
179  offset += sizeof(this->angle_max);
180  union {
181  float real;
182  uint32_t base;
183  } u_angle_increment;
184  u_angle_increment.base = 0;
185  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
186  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
187  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
188  u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
189  this->angle_increment = u_angle_increment.real;
190  offset += sizeof(this->angle_increment);
191  union {
192  float real;
193  uint32_t base;
194  } u_time_increment;
195  u_time_increment.base = 0;
196  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
197  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
198  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
199  u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
200  this->time_increment = u_time_increment.real;
201  offset += sizeof(this->time_increment);
202  union {
203  float real;
204  uint32_t base;
205  } u_scan_time;
206  u_scan_time.base = 0;
207  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
208  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
209  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
210  u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
211  this->scan_time = u_scan_time.real;
212  offset += sizeof(this->scan_time);
213  union {
214  float real;
215  uint32_t base;
216  } u_range_min;
217  u_range_min.base = 0;
218  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
219  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
220  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
221  u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
222  this->range_min = u_range_min.real;
223  offset += sizeof(this->range_min);
224  union {
225  float real;
226  uint32_t base;
227  } u_range_max;
228  u_range_max.base = 0;
229  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
230  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
231  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
232  u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
233  this->range_max = u_range_max.real;
234  offset += sizeof(this->range_max);
235  uint8_t ranges_lengthT = *(inbuffer + offset++);
236  if(ranges_lengthT > ranges_length)
237  this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float));
238  offset += 3;
239  ranges_length = ranges_lengthT;
240  for( uint8_t i = 0; i < ranges_length; i++){
241  union {
242  float real;
243  uint32_t base;
244  } u_st_ranges;
245  u_st_ranges.base = 0;
246  u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
247  u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
248  u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
249  u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
250  this->st_ranges = u_st_ranges.real;
251  offset += sizeof(this->st_ranges);
252  memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float));
253  }
254  uint8_t intensities_lengthT = *(inbuffer + offset++);
255  if(intensities_lengthT > intensities_length)
256  this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float));
257  offset += 3;
258  intensities_length = intensities_lengthT;
259  for( uint8_t i = 0; i < intensities_length; i++){
260  union {
261  float real;
262  uint32_t base;
263  } u_st_intensities;
264  u_st_intensities.base = 0;
265  u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
266  u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
267  u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
268  u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
269  this->st_intensities = u_st_intensities.real;
270  offset += sizeof(this->st_intensities);
271  memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float));
272  }
273  return offset;
274  }
275 
276  const char * getType(){ return "sensor_msgs/LaserScan"; };
277  const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; };
278 
279  };
280 
281 }
282 #endif
float range_min
Definition: LaserScan.h:22
virtual int deserialize(unsigned char *inbuffer)
Definition: Header.h:53
float scan_time
Definition: LaserScan.h:21
Definition: LaserScan.h:13
virtual int deserialize(unsigned char *inbuffer)
Definition: LaserScan.h:154
const char * getMD5()
Definition: LaserScan.h:277
uint8_t ranges_length
Definition: LaserScan.h:24
float time_increment
Definition: LaserScan.h:20
virtual int serialize(unsigned char *outbuffer) const
Definition: Header.h:27
float * intensities
Definition: LaserScan.h:29
float st_ranges
Definition: LaserScan.h:25
float * ranges
Definition: LaserScan.h:26
Definition: Header.h:13
float angle_min
Definition: LaserScan.h:17
uint8_t intensities_length
Definition: LaserScan.h:27
float angle_increment
Definition: LaserScan.h:19
float range_max
Definition: LaserScan.h:23
const char * getType()
Definition: LaserScan.h:276
float angle_max
Definition: LaserScan.h:18
float st_intensities
Definition: LaserScan.h:28
LaserScan()
Definition: LaserScan.h:31
virtual int serialize(unsigned char *outbuffer) const
Definition: LaserScan.h:45
Definition: msg.h:43
std_msgs::Header header
Definition: LaserScan.h:16