38
38
#include " tf/transform_listener.h"
39
39
#include " tf/message_filter.h"
40
40
#include " sensor_msgs/PointCloud.h"
41
+ #include " sensor_msgs/point_cloud_conversion.h"
41
42
#include " message_filters/subscriber.h"
42
43
43
44
#include < deque>
44
45
45
46
// Service
46
47
#include " laser_assembler/AssembleScans.h"
48
+ #include " laser_assembler/AssembleScans2.h"
47
49
48
50
#include " boost/thread.hpp"
49
51
#include " math.h"
@@ -99,6 +101,8 @@ class BaseAssembler
99
101
// ROS Input/Ouptut Handling
100
102
ros::ServiceServer build_cloud_server_;
101
103
ros::ServiceServer assemble_scans_server_;
104
+ ros::ServiceServer build_cloud_server2_;
105
+ ros::ServiceServer assemble_scans_server2_;
102
106
message_filters::Subscriber<T> scan_sub_;
103
107
message_filters::Connection tf_filter_connection_;
104
108
@@ -109,7 +113,8 @@ class BaseAssembler
109
113
// ! \brief Service Callback function called whenever we need to build a cloud
110
114
bool buildCloud (AssembleScans::Request& req, AssembleScans::Response& resp) ;
111
115
bool assembleScans (AssembleScans::Request& req, AssembleScans::Response& resp) ;
112
-
116
+ bool buildCloud2 (AssembleScans2::Request& req, AssembleScans2::Response& resp) ;
117
+ bool assembleScans2 (AssembleScans2::Request& req, AssembleScans2::Response& resp) ;
113
118
114
119
// ! \brief Stores history of scans
115
120
std::deque<sensor_msgs::PointCloud> scan_hist_ ;
@@ -175,6 +180,8 @@ BaseAssembler<T>::BaseAssembler(const std::string& max_size_param_name) : privat
175
180
// ***** Start Services *****
176
181
build_cloud_server_ = n_.advertiseService (" build_cloud" , &BaseAssembler<T>::buildCloud, this );
177
182
assemble_scans_server_ = n_.advertiseService (" assemble_scans" , &BaseAssembler<T>::assembleScans, this );
183
+ build_cloud_server2_ = n_.advertiseService (" build_cloud2" , &BaseAssembler<T>::buildCloud2, this );
184
+ assemble_scans_server2_ = n_.advertiseService (" assemble_scans2" , &BaseAssembler<T>::assembleScans2, this );
178
185
179
186
// ***** Start Listening to Data *****
180
187
// (Well, don't start listening just yet. Keep this as null until we actually start listening, when start() is called)
@@ -341,4 +348,26 @@ bool BaseAssembler<T>::assembleScans(AssembleScans::Request& req, AssembleScans:
341
348
return true ;
342
349
}
343
350
351
+ template <class T >
352
+ bool BaseAssembler<T>::buildCloud2(AssembleScans2::Request& req, AssembleScans2::Response& resp)
353
+ {
354
+ ROS_WARN (" Service 'build_cloud' is deprecated. Call 'assemble_scans' instead" );
355
+ return assembleScans2 (req, resp);
356
+ }
357
+
358
+ template <class T >
359
+ bool BaseAssembler<T>::assembleScans2(AssembleScans2::Request& req, AssembleScans2::Response& resp)
360
+ {
361
+ AssembleScans::Request tmp_req;
362
+ AssembleScans::Response tmp_res;
363
+ tmp_req.begin = req.begin ;
364
+ tmp_req.end = req.end ;
365
+ bool ret = assembleScans (tmp_req, tmp_res);
366
+
367
+ if ( ret )
368
+ {
369
+ sensor_msgs::convertPointCloudToPointCloud2 (tmp_res.cloud , resp.cloud );
370
+ }
371
+ return ret;
372
+ }
344
373
}
0 commit comments