sick_scan_api_converter.cpp
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2022, Ing.-Buero Dr. Michael Lehning, Hildesheim
3 * Copyright (C) 2022, SICK AG, Waldkirch
4 * All rights reserved.
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 *
18 *
19 * All rights reserved.
20 *
21 * Redistribution and use in source and binary forms, with or without
22 * modification, are permitted provided that the following conditions are met:
23 *
24 * * Redistributions of source code must retain the above copyright
25 * notice, this list of conditions and the following disclaimer.
26 * * Redistributions in binary form must reproduce the above copyright
27 * notice, this list of conditions and the following disclaimer in the
28 * documentation and/or other materials provided with the distribution.
29 * * Neither the name of Osnabrueck University nor the names of its
30 * contributors may be used to endorse or promote products derived from
31 * this software without specific prior written permission.
32 * * Neither the name of SICK AG nor the names of its
33 * contributors may be used to endorse or promote products derived from
34 * this software without specific prior written permission
35 * * Neither the name of Ing.-Buero Dr. Michael Lehning nor the names of its
36 * contributors may be used to endorse or promote products derived from
37 * this software without specific prior written permission
38 *
39 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
40 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
43 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
44 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
45 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
46 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49 * POSSIBILITY OF SUCH DAMAGE.
50 *
51 * Authors:
52 * Michael Lehning <michael.lehning@lehning.de>
53 *
54 */
56 
57 #if __ROS_VERSION == 1
58 
59 /* Convert a cartesian SickScanPointCloudMsg to sensor_msgs::PointCloud2 (ROS-1 only) */
61 {
62  sensor_msgs::PointCloud2 pointcloud;
63  // Copy header and pointcloud dimension
64  pointcloud.header.seq = msg.header.seq;
65  pointcloud.header.stamp.sec = msg.header.timestamp_sec;
66  pointcloud.header.stamp.nsec = msg.header.timestamp_nsec;
67  pointcloud.header.frame_id = msg.header.frame_id;
68  pointcloud.width = msg.width;
69  pointcloud.height = msg.height;
70  pointcloud.is_bigendian = msg.is_bigendian;
71  pointcloud.is_dense = msg.is_dense;
72  pointcloud.point_step = msg.point_step;
73  pointcloud.row_step = msg.row_step;
74  // Copy field descriptions
75  int num_fields = msg.fields.size;
76  SickScanPointFieldMsg* msg_fields_buffer = (SickScanPointFieldMsg*)msg.fields.buffer;
77  pointcloud.fields.resize(num_fields);
78  for(int n = 0; n < num_fields; n++)
79  {
80  pointcloud.fields[n].name = msg_fields_buffer[n].name;
81  pointcloud.fields[n].offset = msg_fields_buffer[n].offset;
82  pointcloud.fields[n].count = msg_fields_buffer[n].count;
83  pointcloud.fields[n].datatype = msg_fields_buffer[n].datatype;
84  }
85  // Copy pointcloud data
86  pointcloud.data.resize(msg.row_step * msg.height, 0);
87  memcpy(&pointcloud.data[0], msg.data.buffer, msg.row_step * msg.height);
88  // Return converted pointcloud
89  return pointcloud;
90 }
91 
92 /* Convert a polar SickScanPointCloudMsg to sensor_msgs::PointCloud2 (ROS-1 only) */
93 sensor_msgs::PointCloud2 SickScanApiConverter::convertPolarPointCloudMsg(const SickScanPointCloudMsg & msg)
94 {
95  sensor_msgs::PointCloud2 pointcloud;
96  // Copy header and pointcloud dimension
97  pointcloud.header.seq = msg.header.seq;
98  pointcloud.header.stamp.sec = msg.header.timestamp_sec;
99  pointcloud.header.stamp.nsec = msg.header.timestamp_nsec;
100  pointcloud.header.frame_id = msg.header.frame_id;
101  pointcloud.width = msg.width;
102  pointcloud.height = msg.height;
103  pointcloud.is_bigendian = msg.is_bigendian;
104  pointcloud.is_dense = msg.is_dense;
105  // Create field descriptions
106  int num_fields = msg.fields.size;
107  SickScanPointFieldMsg* msg_fields_buffer = (SickScanPointFieldMsg*)msg.fields.buffer;
108  int field_offset_range = -1, field_offset_azimuth = -1, field_offset_elevation = -1, field_offset_intensity = -1;
109  for(int n = 0; n < num_fields; n++)
110  {
111  if (strcmp(msg_fields_buffer[n].name, "range") == 0 && msg_fields_buffer[n].datatype == SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32)
112  field_offset_range = msg_fields_buffer[n].offset;
113  else if (strcmp(msg_fields_buffer[n].name, "azimuth") == 0 && msg_fields_buffer[n].datatype == SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32)
114  field_offset_azimuth = msg_fields_buffer[n].offset;
115  else if (strcmp(msg_fields_buffer[n].name, "elevation") == 0 && msg_fields_buffer[n].datatype == SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32)
116  field_offset_elevation = msg_fields_buffer[n].offset;
117  else if (strcmp(msg_fields_buffer[n].name, "intensity") == 0 && msg_fields_buffer[n].datatype == SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32)
118  field_offset_intensity = msg_fields_buffer[n].offset;
119  }
120  pointcloud.fields.resize(4);
121  for (int i = 0; i < pointcloud.fields.size(); i++)
122  {
123  std::string channelId[] = {"x", "y", "z", "intensity"};
124  pointcloud.fields[i].name = channelId[i];
125  pointcloud.fields[i].offset = i * sizeof(float);
126  pointcloud.fields[i].count = 1;
127  pointcloud.fields[i].datatype = sensor_msgs::PointField::FLOAT32;
128  }
129  pointcloud.point_step = pointcloud.fields.size() * sizeof(float); // i.e. point_step := 16 byte
130  pointcloud.row_step = pointcloud.point_step * pointcloud.width;
131  // Convert pointcloud data
132  pointcloud.data.resize(pointcloud.row_step * pointcloud.height, 0);
133  int cartesian_point_cloud_offset = 0;
134  float* cartesian_point_cloud_buffer = (float*)pointcloud.data.data();
135  for (int row_idx = 0; row_idx < msg.height; row_idx++)
136  {
137  for (int col_idx = 0; col_idx < msg.width; col_idx++, cartesian_point_cloud_offset+=4)
138  {
139  // Get lidar point in polar coordinates (range, azimuth and elevation)
140  int polar_point_offset = row_idx * msg.row_step + col_idx * msg.point_step;
141  float point_range = ((float*)(msg.data.buffer + polar_point_offset + field_offset_range))[0];
142  float point_azimuth = ((float*)(msg.data.buffer + polar_point_offset + field_offset_azimuth))[0];
143  float point_elevation = ((float*)(msg.data.buffer + polar_point_offset + field_offset_elevation))[0];
144  float point_intensity = 0;
145  if (field_offset_intensity >= 0)
146  point_intensity = ((float*)(msg.data.buffer + polar_point_offset + field_offset_intensity))[0];
147  // Convert from polar to cartesian coordinates
148  float point_x = point_range * cosf(point_elevation) * cosf(point_azimuth);
149  float point_y = point_range * cosf(point_elevation) * sinf(point_azimuth);
150  float point_z = point_range * sinf(point_elevation);
151  // printf("point %d,%d: offset=%d, range=%f, azimuth=%f, elevation=%f, intensity=%f, x=%f, y=%f, z=%f\n", col_idx, row_idx, polar_point_offset,
152  // point_range, point_azimuth * 180 / M_PI, point_elevation * 180 / M_PI, point_intensity, point_x, point_y, point_z);
153  cartesian_point_cloud_buffer[cartesian_point_cloud_offset + 0] = point_x;
154  cartesian_point_cloud_buffer[cartesian_point_cloud_offset + 1] = point_y;
155  cartesian_point_cloud_buffer[cartesian_point_cloud_offset + 2] = point_z;
156  cartesian_point_cloud_buffer[cartesian_point_cloud_offset + 3] = point_intensity;
157  }
158  }
159  return pointcloud;
160 }
161 
162 /* Convert a SickScanImuMsg to sensor_msgs::Imu (ROS-1 only) */
164 {
165  sensor_msgs::Imu dst_msg;
166  // Copy header
167  dst_msg.header.seq = src_msg.header.seq;
168  dst_msg.header.stamp.sec = src_msg.header.timestamp_sec;
169  dst_msg.header.stamp.nsec = src_msg.header.timestamp_nsec;
170  dst_msg.header.frame_id = src_msg.header.frame_id;
171  // Copy imu data
172  dst_msg.orientation.x = src_msg.orientation.x;
173  dst_msg.orientation.y = src_msg.orientation.y;
174  dst_msg.orientation.z = src_msg.orientation.z;
175  dst_msg.orientation.w = src_msg.orientation.w;
176  for(int n = 0; n < 9; n++)
177  dst_msg.orientation_covariance[n] = src_msg.orientation_covariance[n];
178  dst_msg.angular_velocity.x = src_msg.angular_velocity.x;
179  dst_msg.angular_velocity.y = src_msg.angular_velocity.y;
180  dst_msg.angular_velocity.z = src_msg.angular_velocity.z;
181  for(int n = 0; n < 9; n++)
183  dst_msg.linear_acceleration.x = src_msg.linear_acceleration.x;
184  dst_msg.linear_acceleration.y = src_msg.linear_acceleration.y;
185  dst_msg.linear_acceleration.z = src_msg.linear_acceleration.z;
186  for(int n = 0; n < 9; n++)
188  return dst_msg;
189 }
190 
191 /* Convert a SickScanLFErecMsg to sick_scan_msg::LFErecMsg (ROS-1 only) */
193 {
194  sick_scan_xd::LFErecMsg dst_msg;
195  // Copy header
196  dst_msg.header.seq = src_msg.header.seq;
197  dst_msg.header.stamp.sec = src_msg.header.timestamp_sec;
198  dst_msg.header.stamp.nsec = src_msg.header.timestamp_nsec;
199  dst_msg.header.frame_id = src_msg.header.frame_id;
200  // Copy LFErec data
201  dst_msg.fields_number = src_msg.fields_number;
202  dst_msg.fields.resize(dst_msg.fields_number);
203  for(int n = 0; n < dst_msg.fields_number; n++)
204  {
205  dst_msg.fields[n].version_number = src_msg.fields[n].version_number;
206  dst_msg.fields[n].field_index = src_msg.fields[n].field_index;
207  dst_msg.fields[n].sys_count = src_msg.fields[n].sys_count;
208  dst_msg.fields[n].dist_scale_factor = src_msg.fields[n].dist_scale_factor;
209  dst_msg.fields[n].dist_scale_offset = src_msg.fields[n].dist_scale_offset;
210  dst_msg.fields[n].angle_scale_factor = src_msg.fields[n].angle_scale_factor;
211  dst_msg.fields[n].angle_scale_offset = src_msg.fields[n].angle_scale_offset;
212  dst_msg.fields[n].field_result_mrs = src_msg.fields[n].field_result_mrs;
213  dst_msg.fields[n].time_state = src_msg.fields[n].time_state;
214  dst_msg.fields[n].year = src_msg.fields[n].year;
215  dst_msg.fields[n].month = src_msg.fields[n].month;
216  dst_msg.fields[n].day = src_msg.fields[n].day;
217  dst_msg.fields[n].hour = src_msg.fields[n].hour;
218  dst_msg.fields[n].minute = src_msg.fields[n].minute;
219  dst_msg.fields[n].second = src_msg.fields[n].second;
220  dst_msg.fields[n].microsecond = src_msg.fields[n].microsecond;
221  }
222  return dst_msg;
223 }
224 
225 /* Convert a SickScanLIDoutputstateMsg to sick_scan_xd::LIDoutputstateMsg (ROS-1 only) */
227 {
229  // Copy header
230  dst_msg.header.seq = src_msg.header.seq;
231  dst_msg.header.stamp.sec = src_msg.header.timestamp_sec;
232  dst_msg.header.stamp.nsec = src_msg.header.timestamp_nsec;
233  dst_msg.header.frame_id = src_msg.header.frame_id;
234  // Copy LIDoutputstate data
235  dst_msg.version_number = src_msg.version_number;
236  dst_msg.system_counter = src_msg.system_counter;
237  int max_states = (int)(sizeof(src_msg.output_state) / sizeof(src_msg.output_state[0]));
238  int max_counts = (int)(sizeof(src_msg.output_count) / sizeof(src_msg.output_count[0]));
239  dst_msg.output_state.resize(max_states);
240  dst_msg.output_count.resize(max_counts);
241  for(int n = 0; n < max_states; n++)
242  dst_msg.output_state[n] = src_msg.output_state[n];
243  for(int n = 0; n < max_counts; n++)
244  dst_msg.output_count[n] = src_msg.output_count[n];
245  dst_msg.time_state = src_msg.time_state;
246  dst_msg.year = src_msg.year;
247  dst_msg.month = src_msg.month;
248  dst_msg.day = src_msg.day;
249  dst_msg.hour = src_msg.hour;
250  dst_msg.minute = src_msg.minute;
251  dst_msg.second = src_msg.second;
252  dst_msg.microsecond = src_msg.microsecond;
253  return dst_msg;
254 }
255 
256 /* Convert a SickScanLIDoutputstateMsg to sick_scan_xd::RadarScan (ROS-1 only) */
258 {
259  sick_scan_xd::RadarScan dst_msg;
260  // Copy header
261  dst_msg.header.seq = src_msg.header.seq;
262  dst_msg.header.stamp.sec = src_msg.header.timestamp_sec;
263  dst_msg.header.stamp.nsec = src_msg.header.timestamp_nsec;
264  dst_msg.header.frame_id = src_msg.header.frame_id;
265  // Copy radarpreheader data
281  for(int n = 0; n < src_msg.radarpreheader.numencoder; n++)
282  {
283  dst_msg.radarpreheader.radarpreheaderarrayencoderblock[n].udiencoderpos = src_msg.radarpreheader.udiencoderpos[n];
284  dst_msg.radarpreheader.radarpreheaderarrayencoderblock[n].iencoderspeed = src_msg.radarpreheader.iencoderspeed[n];
285  }
286  // Copy radar target pointcloud data
287  dst_msg.targets = convertPointCloudMsg(src_msg.targets);
288  // Copy radar object data
289  dst_msg.objects.resize(src_msg.objects.size);
290  for(int n = 0; n < src_msg.objects.size; n++)
291  {
292  const SickScanRadarObject& src_object = src_msg.objects.buffer[n];
293  dst_msg.objects[n].id = src_object.id;
294  dst_msg.objects[n].tracking_time.sec = src_object.tracking_time_sec;
295  dst_msg.objects[n].tracking_time.nsec = src_object.tracking_time_nsec;
296  dst_msg.objects[n].last_seen.sec = src_object.last_seen_sec;
297  dst_msg.objects[n].last_seen.nsec = src_object.last_seen_nsec;
298  dst_msg.objects[n].velocity.twist.linear.x = src_object.velocity_linear.x;
299  dst_msg.objects[n].velocity.twist.linear.y = src_object.velocity_linear.y;
300  dst_msg.objects[n].velocity.twist.linear.y = src_object.velocity_linear.z;
301  dst_msg.objects[n].velocity.twist.angular.x = src_object.velocity_angular.x;
302  dst_msg.objects[n].velocity.twist.angular.y = src_object.velocity_angular.y;
303  dst_msg.objects[n].velocity.twist.angular.y = src_object.velocity_angular.z;
304  for(int m = 0; m < 36; m++)
305  dst_msg.objects[n].velocity.covariance[m] = src_object.velocity_covariance[m];
306  dst_msg.objects[n].bounding_box_center.position.x = src_object.bounding_box_center_position.x;
307  dst_msg.objects[n].bounding_box_center.position.y = src_object.bounding_box_center_position.y;
308  dst_msg.objects[n].bounding_box_center.position.z = src_object.bounding_box_center_position.z;
309  dst_msg.objects[n].bounding_box_center.orientation.x = src_object.bounding_box_center_orientation.x;
310  dst_msg.objects[n].bounding_box_center.orientation.y = src_object.bounding_box_center_orientation.y;
311  dst_msg.objects[n].bounding_box_center.orientation.z = src_object.bounding_box_center_orientation.z;
312  dst_msg.objects[n].bounding_box_center.orientation.w = src_object.bounding_box_center_orientation.w;
313  dst_msg.objects[n].bounding_box_size.x = src_object.bounding_box_size.x;
314  dst_msg.objects[n].bounding_box_size.y = src_object.bounding_box_size.y;
315  dst_msg.objects[n].bounding_box_size.z = src_object.bounding_box_size.z;
316  dst_msg.objects[n].object_box_center.pose.position.x = src_object.object_box_center_position.x;
317  dst_msg.objects[n].object_box_center.pose.position.y = src_object.object_box_center_position.y;
318  dst_msg.objects[n].object_box_center.pose.position.z = src_object.object_box_center_position.z;
319  dst_msg.objects[n].object_box_center.pose.orientation.x = src_object.object_box_center_orientation.x;
320  dst_msg.objects[n].object_box_center.pose.orientation.y = src_object.object_box_center_orientation.y;
321  dst_msg.objects[n].object_box_center.pose.orientation.z = src_object.object_box_center_orientation.z;
322  dst_msg.objects[n].object_box_center.pose.orientation.w = src_object.object_box_center_orientation.w;
323  for(int m = 0; m < 36; m++)
324  dst_msg.objects[n].object_box_center.covariance[m] = src_object.object_box_center_covariance[m];
325  dst_msg.objects[n].object_box_size.x = src_object.object_box_size.x;
326  dst_msg.objects[n].object_box_size.y = src_object.object_box_size.y;
327  dst_msg.objects[n].object_box_size.z = src_object.object_box_size.z;
328  dst_msg.objects[n].contour_points.resize(src_object.contour_points.size);
329  for(int m = 0; m < src_object.contour_points.size; m++)
330  {
331  dst_msg.objects[n].contour_points[m].x = src_object.contour_points.buffer[m].x;
332  dst_msg.objects[n].contour_points[m].y = src_object.contour_points.buffer[m].y;
333  dst_msg.objects[n].contour_points[m].z = src_object.contour_points.buffer[m].z;
334  }
335  }
336  return dst_msg;
337 }
338 
339 /* Convert a RadarScan objects to sensor_msgs::PointCloud2 (ROS-1 only) */
340 sensor_msgs::PointCloud2 SickScanApiConverter::convertRadarObjectsToPointCloud(const SickScanHeader& header, const sick_scan_xd::RadarObject* radar_objects, int num_objects)
341 {
342  sensor_msgs::PointCloud2 ros_pointcloud;
343  // Copy pointcloud header
344  ros_pointcloud.header.seq = header.seq;
345  ros_pointcloud.header.stamp.sec = header.timestamp_sec;
346  ros_pointcloud.header.stamp.nsec = header.timestamp_nsec;
347  ros_pointcloud.header.frame_id = header.frame_id;
348  ros_pointcloud.width = num_objects;
349  ros_pointcloud.height = 1;
350  ros_pointcloud.is_bigendian = false;
351  ros_pointcloud.is_dense = true;
352  // Set field description
353  std::vector<std::string> field_names = {"x", "y", "z", "vx", "vy", "vz"};
354  ros_pointcloud.fields.resize(field_names.size());
355  for(int n = 0; n < ros_pointcloud.fields.size(); n++)
356  {
357  ros_pointcloud.fields[n].name = field_names[n];
358  ros_pointcloud.fields[n].offset = n * sizeof(float);
359  ros_pointcloud.fields[n].datatype = sensor_msgs::PointField::FLOAT32;
360  ros_pointcloud.fields[n].count = 1;
361  }
362  ros_pointcloud.point_step = ros_pointcloud.fields.size() * sizeof(float);
363  ros_pointcloud.row_step = ros_pointcloud.point_step * ros_pointcloud.width;
364  // Copy radar object data
365  ros_pointcloud.data.resize(ros_pointcloud.row_step * ros_pointcloud.height, 0);
366  float* dst_data_p = (float*)ros_pointcloud.data.data();
367  for(int n = 0; n < num_objects; n++, dst_data_p+=6)
368  {
369  dst_data_p[0] = radar_objects[n].object_box_center.pose.position.x;
370  dst_data_p[1] = radar_objects[n].object_box_center.pose.position.y;
371  dst_data_p[2] = radar_objects[n].object_box_center.pose.position.z;
372  dst_data_p[3] = radar_objects[n].velocity.twist.linear.x;
373  dst_data_p[4] = radar_objects[n].velocity.twist.linear.y;
374  dst_data_p[5] = radar_objects[n].velocity.twist.linear.z;
375  }
376  return ros_pointcloud;
377 }
378 
379 /* Convert a SickScanLdmrsObjectArray to sensor_msgs::SickLdmrsObjectArray (ROS-1 only) */
380 sick_scan_xd::SickLdmrsObjectArray SickScanApiConverter::convertLdmrsObjectArray(const SickScanLdmrsObjectArray& src_msg)
381 {
383  // Copy header
384  dst_msg.header.seq = src_msg.header.seq;
385  dst_msg.header.stamp.sec = src_msg.header.timestamp_sec;
386  dst_msg.header.stamp.nsec = src_msg.header.timestamp_nsec;
387  dst_msg.header.frame_id = src_msg.header.frame_id;
388  // Copy ldmrs objects
389  dst_msg.objects.resize(src_msg.objects.size);
390  for(int n = 0; n < src_msg.objects.size; n++)
391  {
392  const SickScanLdmrsObject& src_object = src_msg.objects.buffer[n];
393  dst_msg.objects[n].id = src_object.id;
394  dst_msg.objects[n].tracking_time.sec = src_object.tracking_time_sec;
395  dst_msg.objects[n].tracking_time.nsec = src_object.tracking_time_nsec;
396  dst_msg.objects[n].last_seen.sec = src_object.last_seen_sec;
397  dst_msg.objects[n].last_seen.nsec = src_object.last_seen_nsec;
398  dst_msg.objects[n].velocity.twist.linear.x = src_object.velocity_linear.x;
399  dst_msg.objects[n].velocity.twist.linear.y = src_object.velocity_linear.y;
400  dst_msg.objects[n].velocity.twist.linear.y = src_object.velocity_linear.z;
401  dst_msg.objects[n].velocity.twist.angular.x = src_object.velocity_angular.x;
402  dst_msg.objects[n].velocity.twist.angular.y = src_object.velocity_angular.y;
403  dst_msg.objects[n].velocity.twist.angular.y = src_object.velocity_angular.z;
404  for(int m = 0; m < 36; m++)
405  dst_msg.objects[n].velocity.covariance[m] = src_object.velocity_covariance[m];
406  dst_msg.objects[n].bounding_box_center.position.x = src_object.bounding_box_center_position.x;
407  dst_msg.objects[n].bounding_box_center.position.y = src_object.bounding_box_center_position.y;
408  dst_msg.objects[n].bounding_box_center.position.z = src_object.bounding_box_center_position.z;
409  dst_msg.objects[n].bounding_box_center.orientation.x = src_object.bounding_box_center_orientation.x;
410  dst_msg.objects[n].bounding_box_center.orientation.y = src_object.bounding_box_center_orientation.y;
411  dst_msg.objects[n].bounding_box_center.orientation.z = src_object.bounding_box_center_orientation.z;
412  dst_msg.objects[n].bounding_box_center.orientation.w = src_object.bounding_box_center_orientation.w;
413  dst_msg.objects[n].bounding_box_size.x = src_object.bounding_box_size.x;
414  dst_msg.objects[n].bounding_box_size.y = src_object.bounding_box_size.y;
415  dst_msg.objects[n].bounding_box_size.z = src_object.bounding_box_size.z;
416  dst_msg.objects[n].object_box_center.pose.position.x = src_object.object_box_center_position.x;
417  dst_msg.objects[n].object_box_center.pose.position.y = src_object.object_box_center_position.y;
418  dst_msg.objects[n].object_box_center.pose.position.z = src_object.object_box_center_position.z;
419  dst_msg.objects[n].object_box_center.pose.orientation.x = src_object.object_box_center_orientation.x;
420  dst_msg.objects[n].object_box_center.pose.orientation.y = src_object.object_box_center_orientation.y;
421  dst_msg.objects[n].object_box_center.pose.orientation.z = src_object.object_box_center_orientation.z;
422  dst_msg.objects[n].object_box_center.pose.orientation.w = src_object.object_box_center_orientation.w;
423  for(int m = 0; m < 36; m++)
424  dst_msg.objects[n].object_box_center.covariance[m] = src_object.object_box_center_covariance[m];
425  dst_msg.objects[n].object_box_size.x = src_object.object_box_size.x;
426  dst_msg.objects[n].object_box_size.y = src_object.object_box_size.y;
427  dst_msg.objects[n].object_box_size.z = src_object.object_box_size.z;
428  dst_msg.objects[n].contour_points.resize(src_object.contour_points.size);
429  for(int m = 0; m < src_object.contour_points.size; m++)
430  {
431  dst_msg.objects[n].contour_points[m].x = src_object.contour_points.buffer[m].x;
432  dst_msg.objects[n].contour_points[m].y = src_object.contour_points.buffer[m].y;
433  dst_msg.objects[n].contour_points[m].z = src_object.contour_points.buffer[m].z;
434  }
435  }
436  return dst_msg;
437 }
438 
439 /* Convert a SickScanVisualizationMarkerMsg to visualization_msgs::MarkerArray (ROS-1 only) */
441 {
443  if (src_msg.markers.size > 0)
444  {
445  // Copy markers
446  dst_msg.markers.resize(src_msg.markers.size);
447  for(int n = 0; n < src_msg.markers.size; n++)
448  {
449  const SickScanVisualizationMarker& src_marker = src_msg.markers.buffer[n];
450  visualization_msgs::Marker& dst_marker = dst_msg.markers[n];
451  // Copy header
452  dst_marker.header.seq = src_marker.header.seq;
453  dst_marker.header.stamp.sec = src_marker.header.timestamp_sec;
454  dst_marker.header.stamp.nsec = src_marker.header.timestamp_nsec;
455  dst_marker.header.frame_id = src_marker.header.frame_id;
456  // Copy data
457  dst_marker.ns = src_marker.ns;
458  dst_marker.id = src_marker.id;
459  dst_marker.type = src_marker.type;
460  dst_marker.action = src_marker.action;
461  dst_marker.pose.position.x = src_marker.pose_position.x;
462  dst_marker.pose.position.y = src_marker.pose_position.y;
463  dst_marker.pose.position.z = src_marker.pose_position.z;
464  dst_marker.pose.orientation.x = src_marker.pose_orientation.x;
465  dst_marker.pose.orientation.y = src_marker.pose_orientation.y;
466  dst_marker.pose.orientation.z = src_marker.pose_orientation.z;
467  dst_marker.pose.orientation.w = src_marker.pose_orientation.w;
468  dst_marker.scale.x = src_marker.scale.x;
469  dst_marker.scale.y = src_marker.scale.y;
470  dst_marker.scale.z = src_marker.scale.z;
471  dst_marker.color.r = src_marker.color.r;
472  dst_marker.color.g = src_marker.color.g;
473  dst_marker.color.b = src_marker.color.b;
474  dst_marker.color.a = src_marker.color.a;
475  dst_marker.lifetime.sec = src_marker.lifetime_sec;
476  dst_marker.lifetime.nsec = src_marker.lifetime_nsec;
477  dst_marker.frame_locked = src_marker.frame_locked;
478  dst_marker.text = src_marker.text;
479  dst_marker.mesh_resource = src_marker.mesh_resource;
481  dst_marker.points.resize(src_marker.points.size);
482  for(int m = 0; m < src_marker.points.size; m++)
483  {
484  dst_marker.points[m].x = src_marker.points.buffer[m].x;
485  dst_marker.points[m].y = src_marker.points.buffer[m].y;
486  dst_marker.points[m].z = src_marker.points.buffer[m].z;
487  }
488  dst_marker.colors.resize(src_marker.colors.size);
489  for(int m = 0; m < src_marker.colors.size; m++)
490  {
491  dst_marker.colors[m].r = src_marker.colors.buffer[m].r;
492  dst_marker.colors[m].g = src_marker.colors.buffer[m].g;
493  dst_marker.colors[m].b = src_marker.colors.buffer[m].b;
494  dst_marker.colors[m].a = src_marker.colors.buffer[m].a;
495  }
496  }
497  }
498  return dst_msg;
499 }
500 
501 #endif // __ROS_VERSION == 1
SickScanQuaternionMsgType::z
double z
Definition: sick_scan_api.h:168
sick_scan_xd::LIDoutputstateMsg_::header
_header_type header
Definition: LIDoutputstateMsg.h:63
geometry_msgs::Pose_::orientation
_orientation_type orientation
Definition: Pose.h:45
std_msgs::Header_::stamp
_stamp_type stamp
Definition: Header.h:45
SickScanLFErecFieldMsgType::field_index
uint8_t field_index
Definition: sick_scan_api.h:193
SickScanLIDoutputstateMsgType::output_count
uint32_t output_count[8]
Definition: sick_scan_api.h:223
SickScanLFErecFieldMsgType::minute
uint8_t minute
Definition: sick_scan_api.h:205
SickScanHeaderType::timestamp_sec
uint32_t timestamp_sec
Definition: sick_scan_api.h:87
sick_scan_xd::LIDoutputstateMsg_::system_counter
_system_counter_type system_counter
Definition: LIDoutputstateMsg.h:69
SickScanLIDoutputstateMsgType::microsecond
uint32_t microsecond
Definition: sick_scan_api.h:231
SickScanRadarObjectType::contour_points
SickScanPointArray contour_points
Definition: sick_scan_api.h:282
SickScanHeaderType::seq
uint32_t seq
Definition: sick_scan_api.h:86
visualization_msgs::Marker_::id
_id_type id
Definition: Marker.h:78
SickScanLdmrsObjectBufferType::buffer
SickScanLdmrsObject * buffer
Definition: sick_scan_api.h:306
SickScanVisualizationMarkerMsgType::markers
SickScanVisualizationMarkerBuffer markers
Definition: sick_scan_api.h:360
sensor_msgs::Imu_
Definition: Imu.h:28
convertPointCloudMsg
static SickScanPointCloudMsg convertPointCloudMsg(const sick_scan_xd::PointCloud2withEcho &msg_with_echo)
Definition: api_impl.cpp:58
sensor_msgs::PointCloud2_::row_step
_row_step_type row_step
Definition: PointCloud2.h:74
SickScanColorRGBAType::b
float b
Definition: sick_scan_api.h:319
SickScanRadarObjectType::last_seen_sec
uint32_t last_seen_sec
Definition: sick_scan_api.h:264
msg
msg
sensor_msgs::PointCloud2_::width
_width_type width
Definition: PointCloud2.h:62
sensor_msgs::Imu_::linear_acceleration
_linear_acceleration_type linear_acceleration
Definition: Imu.h:80
sick_scan_xd::RadarPreHeaderDeviceBlock_::udiserialno
_udiserialno_type udiserialno
Definition: RadarPreHeaderDeviceBlock.h:49
SickScanLFErecFieldMsgType::month
uint8_t month
Definition: sick_scan_api.h:202
SickScanRadarPreHeaderType::udiencoderpos
uint32_t udiencoderpos[3]
Definition: sick_scan_api.h:255
sensor_msgs::PointCloud2_::point_step
_point_step_type point_step
Definition: PointCloud2.h:71
SickScanPointArrayType::size
uint64_t size
Definition: sick_scan_api.h:175
visualization_msgs::Marker_::header
_header_type header
Definition: Marker.h:72
sick_scan_xd::LIDoutputstateMsg_::minute
_minute_type minute
Definition: LIDoutputstateMsg.h:93
SickScanQuaternionMsgType::w
double w
Definition: sick_scan_api.h:169
SickScanRadarPreHeaderType::udiserialno
uint32_t udiserialno
Definition: sick_scan_api.h:239
sensor_msgs::Imu_::orientation_covariance
_orientation_covariance_type orientation_covariance
Definition: Imu.h:71
SickScanImuMsgType::linear_acceleration
SickScanVector3Msg linear_acceleration
Definition: sick_scan_api.h:186
sensor_msgs::Imu_::orientation
_orientation_type orientation
Definition: Imu.h:68
SickScanLFErecFieldMsgType::microsecond
uint32_t microsecond
Definition: sick_scan_api.h:207
SickScanRadarPreHeaderType::uiinputs
uint16_t uiinputs
Definition: sick_scan_api.h:248
std_msgs::ColorRGBA_::g
_g_type g
Definition: ColorRGBA.h:47
sick_scan_xd::RadarPreHeader_::uiversionno
_uiversionno_type uiversionno
Definition: RadarPreHeader.h:50
sick_scan_xd::RadarScan_::targets
_targets_type targets
Definition: RadarScan.h:54
SickScanLFErecFieldMsgType::year
uint16_t year
Definition: sick_scan_api.h:201
SickScanVisualizationMarkerType::mesh_resource
char mesh_resource[1024]
Definition: sick_scan_api.h:347
SickScanRadarObjectType::velocity_covariance
double velocity_covariance[36]
Definition: sick_scan_api.h:269
SickScanRadarPreHeaderType::uitelegramcount
uint32_t uitelegramcount
Definition: sick_scan_api.h:244
sick_scan_xd::LIDoutputstateMsg_::month
_month_type month
Definition: LIDoutputstateMsg.h:84
SickScanRadarObjectArrayType::size
uint64_t size
Definition: sick_scan_api.h:288
sick_scan_xd::RadarObject_
Definition: RadarObject.h:29
SickScanRadarPreHeaderType::bdeviceerror
uint8_t bdeviceerror
Definition: sick_scan_api.h:240
SickScanRadarPreHeaderType::uicyclecount
uint32_t uicyclecount
Definition: sick_scan_api.h:245
SickScanLFErecFieldMsgType::dist_scale_factor
float dist_scale_factor
Definition: sick_scan_api.h:195
sick_scan_xd::LIDoutputstateMsg_
Definition: LIDoutputstateMsg.h:24
geometry_msgs::PoseWithCovariance_::pose
_pose_type pose
Definition: PoseWithCovariance.h:44
SickScanVisualizationMarkerType::points
SickScanPointArray points
Definition: sick_scan_api.h:344
SickScanLIDoutputstateMsgType::month
uint8_t month
Definition: sick_scan_api.h:226
visualization_msgs::Marker_::colors
_colors_type colors
Definition: Marker.h:105
DurationBase< Duration >::nsec
int32_t nsec
SickScanRadarObjectType::velocity_linear
SickScanVector3Msg velocity_linear
Definition: sick_scan_api.h:267
SickScanLIDoutputstateMsgType::system_counter
uint32_t system_counter
Definition: sick_scan_api.h:221
sick_scan_xd::RadarPreHeader_::radarpreheaderarrayencoderblock
_radarpreheaderarrayencoderblock_type radarpreheaderarrayencoderblock
Definition: RadarPreHeader.h:62
SickScanLIDoutputstateMsgType::version_number
uint16_t version_number
Definition: sick_scan_api.h:220
SickScanImuMsgType::orientation
SickScanQuaternionMsg orientation
Definition: sick_scan_api.h:182
SickScanPointFieldMsgType::offset
uint32_t offset
Definition: sick_scan_api.h:125
SickScanRadarPreHeaderType::numencoder
uint16_t numencoder
Definition: sick_scan_api.h:254
SickScanRadarObjectType::velocity_angular
SickScanVector3Msg velocity_angular
Definition: sick_scan_api.h:268
SickScanRadarPreHeaderType::uiident
uint32_t uiident
Definition: sick_scan_api.h:238
sensor_msgs::PointCloud2_::fields
_fields_type fields
Definition: PointCloud2.h:65
sick_scan_xd::SickLdmrsObjectArray_::header
_header_type header
Definition: SickLdmrsObjectArray.h:42
SickScanVector3MsgType::y
double y
Definition: sick_scan_api.h:160
visualization_msgs::Marker_::mesh_resource
_mesh_resource_type mesh_resource
Definition: Marker.h:111
SickScanPointArrayType::buffer
SickScanVector3Msg * buffer
Definition: sick_scan_api.h:176
SickScanImuMsgType::linear_acceleration_covariance
double linear_acceleration_covariance[9]
Definition: sick_scan_api.h:187
std_msgs::ColorRGBA_::b
_b_type b
Definition: ColorRGBA.h:50
SickScanRadarObjectType
Definition: sick_scan_api.h:259
SickScanRadarPreHeaderType::udisystemcounttransmit
uint32_t udisystemcounttransmit
Definition: sick_scan_api.h:247
sick_scan_xd::LIDoutputstateMsg_::second
_second_type second
Definition: LIDoutputstateMsg.h:96
sensor_msgs::PointCloud2_::height
_height_type height
Definition: PointCloud2.h:59
sick_scan_xd::RadarObject_::velocity
_velocity_type velocity
Definition: RadarObject.h:69
visualization_msgs::Marker_
Definition: Marker.h:29
SickScanLFErecFieldMsgType::hour
uint8_t hour
Definition: sick_scan_api.h:204
SickScanVisualizationMarkerType::type
int32_t type
Definition: sick_scan_api.h:335
SickScanRadarObjectType::tracking_time_nsec
uint32_t tracking_time_nsec
Definition: sick_scan_api.h:263
SickScanRadarObjectType::bounding_box_size
SickScanVector3Msg bounding_box_size
Definition: sick_scan_api.h:274
SickScanRadarScanType
Definition: sick_scan_api.h:292
sick_scan_xd::RadarPreHeaderStatusBlock_::uiinputs
_uiinputs_type uiinputs
Definition: RadarPreHeaderStatusBlock.h:60
visualization_msgs::Marker_::lifetime
_lifetime_type lifetime
Definition: Marker.h:96
SickScanVisualizationMarkerType::lifetime_sec
uint32_t lifetime_sec
Definition: sick_scan_api.h:341
sick_scan_xd::SickLdmrsObjectArray_
Definition: SickLdmrsObjectArray.h:25
sick_scan_xd::RadarPreHeaderStatusBlock_::udisystemcounttransmit
_udisystemcounttransmit_type udisystemcounttransmit
Definition: RadarPreHeaderStatusBlock.h:57
geometry_msgs::Pose_::position
_position_type position
Definition: Pose.h:42
sick_scan_xd::LFErecMsg_::fields
_fields_type fields
Definition: LFErecMsg.h:50
sensor_msgs::PointCloud2_::data
_data_type data
Definition: PointCloud2.h:77
convertImuMsg
static SickScanImuMsg convertImuMsg(const ros_sensor_msgs::Imu &src_msg)
Definition: api_impl.cpp:118
SickScanQuaternionMsgType::x
double x
Definition: sick_scan_api.h:166
sick_scan_xd::LFErecMsg_
Definition: LFErecMsg.h:25
SickScanRadarObjectType::bounding_box_center_position
SickScanVector3Msg bounding_box_center_position
Definition: sick_scan_api.h:271
SickScanVisualizationMarkerType::text
char text[1024]
Definition: sick_scan_api.h:346
SickScanColorRGBAArrayType::size
uint64_t size
Definition: sick_scan_api.h:326
SickScanRadarScanType::objects
SickScanRadarObjectArray objects
Definition: sick_scan_api.h:297
convertVisualizationMarkerMsg
static SickScanVisualizationMarkerMsg convertVisualizationMarkerMsg(const ros_visualization_msgs::MarkerArray &src_msg)
Definition: api_impl.cpp:418
SickScanLFErecFieldMsgType::day
uint8_t day
Definition: sick_scan_api.h:203
SickScanRadarObjectType::tracking_time_sec
uint32_t tracking_time_sec
Definition: sick_scan_api.h:262
SickScanImuMsgType::angular_velocity
SickScanVector3Msg angular_velocity
Definition: sick_scan_api.h:184
sick_scan_xd::RadarScan_::header
_header_type header
Definition: RadarScan.h:48
visualization_msgs::MarkerArray_::markers
_markers_type markers
Definition: MarkerArray.h:39
SickScanPointCloudMsgType
Definition: sick_scan_api.h:137
SickScanVisualizationMarkerType::lifetime_nsec
uint32_t lifetime_nsec
Definition: sick_scan_api.h:342
api.setup.name
name
Definition: python/api/setup.py:12
visualization_msgs::Marker_::pose
_pose_type pose
Definition: Marker.h:87
std_msgs::ColorRGBA_::r
_r_type r
Definition: ColorRGBA.h:44
sick_scan_xd::RadarPreHeaderMeasurementParam1Block_::uicycleduration
_uicycleduration_type uicycleduration
Definition: RadarPreHeaderMeasurementParam1Block.h:40
SickScanVisualizationMarkerType::color
SickScanColorRGBA color
Definition: sick_scan_api.h:340
sick_scan_xd::RadarPreHeaderStatusBlock_::uicyclecount
_uicyclecount_type uicyclecount
Definition: RadarPreHeaderStatusBlock.h:51
SickScanLFErecMsgType::header
SickScanHeader header
Definition: sick_scan_api.h:212
SickScanVisualizationMarkerType::pose_position
SickScanVector3Msg pose_position
Definition: sick_scan_api.h:337
SickScanVector3MsgType::z
double z
Definition: sick_scan_api.h:161
SickScanImuMsgType::orientation_covariance
double orientation_covariance[9]
Definition: sick_scan_api.h:183
SickScanVisualizationMarkerType::action
int32_t action
Definition: sick_scan_api.h:336
SickScanLFErecFieldMsgType::angle_scale_offset
int32_t angle_scale_offset
Definition: sick_scan_api.h:198
SickScanRadarPreHeaderType::uiversionno
uint16_t uiversionno
Definition: sick_scan_api.h:236
sick_scan_xd::RadarScan_
Definition: RadarScan.h:27
SickScanRadarObjectType::object_box_size
SickScanVector3Msg object_box_size
Definition: sick_scan_api.h:280
sick_scan_xd::RadarPreHeaderStatusBlock_::uitelegramcount
_uitelegramcount_type uitelegramcount
Definition: RadarPreHeaderStatusBlock.h:48
sensor_msgs::Imu_::angular_velocity_covariance
_angular_velocity_covariance_type angular_velocity_covariance
Definition: Imu.h:77
geometry_msgs::TwistWithCovariance_::twist
_twist_type twist
Definition: TwistWithCovariance.h:43
sick_scan_api_converter.h
geometry_msgs::Quaternion_::y
_y_type y
Definition: kinetic/include/geometry_msgs/Quaternion.h:47
SickScanVisualizationMarkerType::frame_locked
uint8_t frame_locked
Definition: sick_scan_api.h:343
SickScanColorRGBAType::r
float r
Definition: sick_scan_api.h:317
sick_scan_xd::RadarPreHeaderMeasurementParam1Block_::uinoiselevel
_uinoiselevel_type uinoiselevel
Definition: RadarPreHeaderMeasurementParam1Block.h:43
std_msgs::Header_::seq
_seq_type seq
Definition: Header.h:42
SickScanLFErecFieldMsgType::dist_scale_offset
float dist_scale_offset
Definition: sick_scan_api.h:196
sensor_msgs::Imu_::linear_acceleration_covariance
_linear_acceleration_covariance_type linear_acceleration_covariance
Definition: Imu.h:83
geometry_msgs::Quaternion_::z
_z_type z
Definition: kinetic/include/geometry_msgs/Quaternion.h:50
sick_scan_xd::LIDoutputstateMsg_::output_count
_output_count_type output_count
Definition: LIDoutputstateMsg.h:75
sensor_msgs::PointCloud2_::is_bigendian
_is_bigendian_type is_bigendian
Definition: PointCloud2.h:68
sick_scan_xd::LIDoutputstateMsg_::day
_day_type day
Definition: LIDoutputstateMsg.h:87
SickScanRadarScanType::targets
SickScanPointCloudMsg targets
Definition: sick_scan_api.h:296
visualization_msgs::Marker_::scale
_scale_type scale
Definition: Marker.h:90
SickScanLIDoutputstateMsgType::day
uint8_t day
Definition: sick_scan_api.h:227
geometry_msgs::Vector3_::x
_x_type x
Definition: kinetic/include/geometry_msgs/Vector3.h:42
SickScanRadarObjectType::object_box_center_orientation
SickScanQuaternionMsg object_box_center_orientation
Definition: sick_scan_api.h:277
SickScanLIDoutputstateMsgType::hour
uint8_t hour
Definition: sick_scan_api.h:228
SickScanVisualizationMarkerType::ns
char ns[1024]
Definition: sick_scan_api.h:333
sick_scan_xd::RadarPreHeader_::radarpreheaderdeviceblock
_radarpreheaderdeviceblock_type radarpreheaderdeviceblock
Definition: RadarPreHeader.h:53
TimeBase< Time, Duration >::sec
uint32_t sec
sick_scan_xd::RadarPreHeaderDeviceBlock_::bdeviceerror
_bdeviceerror_type bdeviceerror
Definition: RadarPreHeaderDeviceBlock.h:52
SickScanHeaderType::timestamp_nsec
uint32_t timestamp_nsec
Definition: sick_scan_api.h:88
SickScanLFErecFieldMsgType::version_number
uint16_t version_number
Definition: sick_scan_api.h:192
SickScanLFErecMsgType::fields_number
uint16_t fields_number
Definition: sick_scan_api.h:213
TimeBase< Time, Duration >::nsec
uint32_t nsec
sick_scan_xd::RadarPreHeaderStatusBlock_::uioutputs
_uioutputs_type uioutputs
Definition: RadarPreHeaderStatusBlock.h:63
sensor_msgs::PointField_::FLOAT32
@ FLOAT32
Definition: PointField.h:62
sick_scan_xd::RadarScan_::objects
_objects_type objects
Definition: RadarScan.h:57
visualization_msgs::Marker_::color
_color_type color
Definition: Marker.h:93
SickScanImuMsgType::angular_velocity_covariance
double angular_velocity_covariance[9]
Definition: sick_scan_api.h:185
geometry_msgs::Point_::y
_y_type y
Definition: Point.h:45
SickScanVisualizationMarkerType::pose_orientation
SickScanQuaternionMsg pose_orientation
Definition: sick_scan_api.h:338
SickScanLIDoutputstateMsgType::second
uint8_t second
Definition: sick_scan_api.h:230
SickScanVisualizationMarkerBufferType::size
uint64_t size
Definition: sick_scan_api.h:354
SickScanVisualizationMarkerBufferType::buffer
SickScanVisualizationMarker * buffer
Definition: sick_scan_api.h:355
visualization_msgs::Marker_::type
_type_type type
Definition: Marker.h:81
SickScanVector3MsgType::x
double x
Definition: sick_scan_api.h:159
SickScanRadarPreHeaderType::bcontaminationwarning
uint8_t bcontaminationwarning
Definition: sick_scan_api.h:241
SickScanVisualizationMarkerType
Definition: sick_scan_api.h:330
sick_scan_xd::SickLdmrsObjectArray_::objects
_objects_type objects
Definition: SickLdmrsObjectArray.h:45
std_msgs::Header_::frame_id
_frame_id_type frame_id
Definition: Header.h:48
sensor_msgs::PointCloud2_
Definition: PointCloud2.h:25
SickScanLdmrsObjectArrayType
Definition: sick_scan_api.h:309
geometry_msgs::Point_::x
_x_type x
Definition: Point.h:42
SickScanLFErecFieldMsgType::time_state
uint16_t time_state
Definition: sick_scan_api.h:200
SickScanRadarObjectArrayType::buffer
SickScanRadarObject * buffer
Definition: sick_scan_api.h:289
visualization_msgs::Marker_::points
_points_type points
Definition: Marker.h:102
visualization_msgs::MarkerArray_
Definition: MarkerArray.h:24
SickScanRadarObjectType::last_seen_nsec
uint32_t last_seen_nsec
Definition: sick_scan_api.h:265
sick_scan_xd::RadarPreHeaderDeviceBlock_::uiident
_uiident_type uiident
Definition: RadarPreHeaderDeviceBlock.h:46
convertLIDoutputstateMsg
static SickScanLIDoutputstateMsg convertLIDoutputstateMsg(const sick_scan_msg::LIDoutputstateMsg &src_msg)
Definition: api_impl.cpp:191
SickScanQuaternionMsgType::y
double y
Definition: sick_scan_api.h:167
SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32
@ SICK_SCAN_POINTFIELD_DATATYPE_FLOAT32
Definition: sick_scan_api.h:107
SickScanLdmrsObjectArrayType::header
SickScanHeader header
Definition: sick_scan_api.h:311
visualization_msgs::Marker_::frame_locked
_frame_locked_type frame_locked
Definition: Marker.h:99
convertRadarScanMsg
static SickScanRadarScan convertRadarScanMsg(const sick_scan_msg::RadarScan &src_msg)
Definition: api_impl.cpp:225
sick_scan_xd::RadarPreHeader_::radarpreheadermeasurementparam1block
_radarpreheadermeasurementparam1block_type radarpreheadermeasurementparam1block
Definition: RadarPreHeader.h:59
sick_scan_xd::LIDoutputstateMsg_::output_state
_output_state_type output_state
Definition: LIDoutputstateMsg.h:72
SickScanLFErecFieldMsgType::second
uint8_t second
Definition: sick_scan_api.h:206
visualization_msgs::Marker_::mesh_use_embedded_materials
_mesh_use_embedded_materials_type mesh_use_embedded_materials
Definition: Marker.h:114
SickScanRadarPreHeaderType::uinoiselevel
uint32_t uinoiselevel
Definition: sick_scan_api.h:252
SickScanPointFieldMsgType
Definition: sick_scan_api.h:111
SickScanVisualizationMarkerType::id
int32_t id
Definition: sick_scan_api.h:334
visualization_msgs::Marker_::ns
_ns_type ns
Definition: Marker.h:75
SickScanColorRGBAType::a
float a
Definition: sick_scan_api.h:320
SickScanRadarPreHeaderType::udisystemcountscan
uint32_t udisystemcountscan
Definition: sick_scan_api.h:246
SickScanLIDoutputstateMsgType::year
uint16_t year
Definition: sick_scan_api.h:225
SickScanColorRGBAType::g
float g
Definition: sick_scan_api.h:318
geometry_msgs::Twist_::linear
_linear_type linear
Definition: Twist.h:42
sick_scan_xd::RadarPreHeaderDeviceBlock_::bcontaminationwarning
_bcontaminationwarning_type bcontaminationwarning
Definition: RadarPreHeaderDeviceBlock.h:55
geometry_msgs::Quaternion_::x
_x_type x
Definition: kinetic/include/geometry_msgs/Quaternion.h:44
SickScanVisualizationMarkerType::header
SickScanHeader header
Definition: sick_scan_api.h:332
SickScanColorRGBAArrayType::buffer
SickScanColorRGBA * buffer
Definition: sick_scan_api.h:327
SickScanHeaderType::frame_id
char frame_id[256]
Definition: sick_scan_api.h:89
SickScanImuMsgType::header
SickScanHeader header
Definition: sick_scan_api.h:181
sick_scan_xd::RadarPreHeaderStatusBlock_::udisystemcountscan
_udisystemcountscan_type udisystemcountscan
Definition: RadarPreHeaderStatusBlock.h:54
SickScanLFErecMsgType
Definition: sick_scan_api.h:210
convertLFErecMsg
static SickScanLFErecMsg convertLFErecMsg(const sick_scan_msg::LFErecMsg &src_msg)
Definition: api_impl.cpp:152
visualization_msgs::Marker_::text
_text_type text
Definition: Marker.h:108
sensor_msgs::Imu_::header
_header_type header
Definition: Imu.h:65
sensor_msgs::PointCloud2_::header
_header_type header
Definition: PointCloud2.h:56
SickScanPointFieldMsgType::datatype
uint8_t datatype
Definition: sick_scan_api.h:126
SickScanVisualizationMarkerType::colors
SickScanColorRGBAArray colors
Definition: sick_scan_api.h:345
SickScanLdmrsObjectArrayType::objects
SickScanLdmrsObjectBuffer objects
Definition: sick_scan_api.h:312
geometry_msgs::Vector3_::y
_y_type y
Definition: kinetic/include/geometry_msgs/Vector3.h:45
SickScanLIDoutputstateMsgType::minute
uint8_t minute
Definition: sick_scan_api.h:229
sensor_msgs::Imu_::angular_velocity
_angular_velocity_type angular_velocity
Definition: Imu.h:74
SickScanLFErecFieldMsgType::field_result_mrs
uint8_t field_result_mrs
Definition: sick_scan_api.h:199
SickScanVisualizationMarkerType::mesh_use_embedded_materials
uint8_t mesh_use_embedded_materials
Definition: sick_scan_api.h:348
SickScanLIDoutputstateMsgType::header
SickScanHeader header
Definition: sick_scan_api.h:219
SickScanRadarScanType::header
SickScanHeader header
Definition: sick_scan_api.h:294
SickScanRadarObjectType::id
int32_t id
Definition: sick_scan_api.h:261
sick_scan_xd::RadarObject_::object_box_center
_object_box_center_type object_box_center
Definition: RadarObject.h:78
SickScanRadarPreHeaderType::uioutputs
uint16_t uioutputs
Definition: sick_scan_api.h:249
sick_scan_xd::LIDoutputstateMsg_::hour
_hour_type hour
Definition: LIDoutputstateMsg.h:90
SickScanVisualizationMarkerMsgType
Definition: sick_scan_api.h:358
visualization_msgs::Marker_::action
_action_type action
Definition: Marker.h:84
SickScanRadarObjectType::bounding_box_center_orientation
SickScanQuaternionMsg bounding_box_center_orientation
Definition: sick_scan_api.h:272
SickScanVisualizationMarkerType::scale
SickScanVector3Msg scale
Definition: sick_scan_api.h:339
SickScanRadarPreHeaderType::uicycleduration
uint32_t uicycleduration
Definition: sick_scan_api.h:251
geometry_msgs::Vector3_::z
_z_type z
Definition: kinetic/include/geometry_msgs/Vector3.h:48
roswrap::message_traits::header
std_msgs::Header * header(M &m)
returns Header<M>::pointer(m);
Definition: message_traits.h:281
sick_scan_xd::LIDoutputstateMsg_::year
_year_type year
Definition: LIDoutputstateMsg.h:81
SickScanLIDoutputstateMsgType::output_state
uint8_t output_state[8]
Definition: sick_scan_api.h:222
SickScanLFErecMsgType::fields
SickScanLFErecFieldMsg fields[3]
Definition: sick_scan_api.h:214
geometry_msgs::Point_::z
_z_type z
Definition: Point.h:48
SickScanLFErecFieldMsgType::sys_count
uint32_t sys_count
Definition: sick_scan_api.h:194
SickScanRadarPreHeaderType::bcontaminationerror
uint8_t bcontaminationerror
Definition: sick_scan_api.h:242
SickScanLdmrsObjectBufferType::size
uint64_t size
Definition: sick_scan_api.h:305
sick_scan_xd::LFErecMsg_::fields_number
_fields_number_type fields_number
Definition: LFErecMsg.h:47
SickScanRadarScanType::radarpreheader
SickScanRadarPreHeader radarpreheader
Definition: sick_scan_api.h:295
sick_scan_xd::LFErecMsg_::header
_header_type header
Definition: LFErecMsg.h:44
sick_scan_xd::LIDoutputstateMsg_::version_number
_version_number_type version_number
Definition: LIDoutputstateMsg.h:66
SickScanLIDoutputstateMsgType::time_state
uint16_t time_state
Definition: sick_scan_api.h:224
SickScanLIDoutputstateMsgType
Definition: sick_scan_api.h:217
SickScanRadarObjectType::object_box_center_covariance
double object_box_center_covariance[36]
Definition: sick_scan_api.h:278
SickScanImuMsgType
Definition: sick_scan_api.h:179
sick_scan_xd::RadarPreHeader_::radarpreheaderstatusblock
_radarpreheaderstatusblock_type radarpreheaderstatusblock
Definition: RadarPreHeader.h:56
SickScanLFErecFieldMsgType::angle_scale_factor
uint32_t angle_scale_factor
Definition: sick_scan_api.h:197
SickScanPointFieldMsgType::count
uint32_t count
Definition: sick_scan_api.h:127
DurationBase< Duration >::sec
int32_t sec
geometry_msgs::Quaternion_::w
_w_type w
Definition: kinetic/include/geometry_msgs/Quaternion.h:53
sensor_msgs::PointCloud2_::is_dense
_is_dense_type is_dense
Definition: PointCloud2.h:80
sick_scan_xd::LIDoutputstateMsg_::microsecond
_microsecond_type microsecond
Definition: LIDoutputstateMsg.h:99
SickScanRadarPreHeaderType::iencoderspeed
int16_t iencoderspeed[3]
Definition: sick_scan_api.h:256
SickScanPointFieldMsgType::name
char name[256]
Definition: sick_scan_api.h:124
sick_scan_xd::RadarScan_::radarpreheader
_radarpreheader_type radarpreheader
Definition: RadarScan.h:51
sick_scan_xd::RadarPreHeaderDeviceBlock_::bcontaminationerror
_bcontaminationerror_type bcontaminationerror
Definition: RadarPreHeaderDeviceBlock.h:58
SickScanHeaderType
Definition: sick_scan_api.h:84
sick_scan_xd::LIDoutputstateMsg_::time_state
_time_state_type time_state
Definition: LIDoutputstateMsg.h:78
std_msgs::ColorRGBA_::a
_a_type a
Definition: ColorRGBA.h:53
SickScanRadarObjectType::object_box_center_position
SickScanVector3Msg object_box_center_position
Definition: sick_scan_api.h:276


sick_scan_xd
Author(s): Michael Lehning , Jochen Sprickerhof , Martin Günther
autogenerated on Fri Oct 25 2024 02:47:10