38 const rtabmap_ros::RGBDImageConstPtr& image1Msg)
43 rtabmap_ros::UserDataConstPtr userDataMsg;
44 nav_msgs::OdometryConstPtr odomMsg;
45 sensor_msgs::LaserScan scanMsg;
46 sensor_msgs::PointCloud2 scan3dMsg;
47 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
49 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
50 if(!image1Msg->global_descriptor.data.empty())
52 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
56 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
57 scanMsg, scan3dMsg, odomInfoMsg,
58 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
61 void CommonDataSubscriber::rgbdScan2dCallback(
62 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
63 const sensor_msgs::LaserScanConstPtr& scanMsg)
68 rtabmap_ros::UserDataConstPtr userDataMsg;
69 nav_msgs::OdometryConstPtr odomMsg;
70 sensor_msgs::PointCloud2 scan3dMsg;
71 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
73 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
74 if(!image1Msg->global_descriptor.data.empty())
76 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
80 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
81 *scanMsg, scan3dMsg, odomInfoMsg,
82 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
85 void CommonDataSubscriber::rgbdScan3dCallback(
86 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
87 const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
92 rtabmap_ros::UserDataConstPtr userDataMsg;
93 nav_msgs::OdometryConstPtr odomMsg;
94 sensor_msgs::LaserScan scanMsg;
95 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
97 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
98 if(!image1Msg->global_descriptor.data.empty())
100 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
104 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
105 scanMsg, *scan3dMsg, odomInfoMsg,
106 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
109 void CommonDataSubscriber::rgbdScanDescCallback(
110 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
111 const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
116 rtabmap_ros::UserDataConstPtr userDataMsg;
117 nav_msgs::OdometryConstPtr odomMsg;
118 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
120 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
121 if(!image1Msg->global_descriptor.data.empty())
123 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
127 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
128 scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg,
129 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
132 void CommonDataSubscriber::rgbdInfoCallback(
133 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
134 const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
139 rtabmap_ros::UserDataConstPtr userDataMsg;
140 nav_msgs::OdometryConstPtr odomMsg;
141 sensor_msgs::LaserScan scanMsg;
142 sensor_msgs::PointCloud2 scan3dMsg;
144 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
145 if(!image1Msg->global_descriptor.data.empty())
147 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
151 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
152 scanMsg, scan3dMsg, odomInfoMsg,
153 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
158 void CommonDataSubscriber::rgbdOdomCallback(
159 const nav_msgs::OdometryConstPtr & odomMsg,
160 const rtabmap_ros::RGBDImageConstPtr& image1Msg)
165 rtabmap_ros::UserDataConstPtr userDataMsg;
166 sensor_msgs::LaserScan scanMsg;
167 sensor_msgs::PointCloud2 scan3dMsg;
168 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
170 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
171 if(!image1Msg->global_descriptor.data.empty())
173 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
177 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
178 scanMsg, scan3dMsg, odomInfoMsg,
179 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
182 void CommonDataSubscriber::rgbdOdomScan2dCallback(
183 const nav_msgs::OdometryConstPtr & odomMsg,
184 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
185 const sensor_msgs::LaserScanConstPtr& scanMsg)
190 rtabmap_ros::UserDataConstPtr userDataMsg;
191 sensor_msgs::PointCloud2 scan3dMsg;
192 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
194 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
195 if(!image1Msg->global_descriptor.data.empty())
197 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
201 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
202 *scanMsg, scan3dMsg, odomInfoMsg,
203 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
206 void CommonDataSubscriber::rgbdOdomScan3dCallback(
207 const nav_msgs::OdometryConstPtr & odomMsg,
208 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
209 const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
214 rtabmap_ros::UserDataConstPtr userDataMsg;
215 sensor_msgs::LaserScan scanMsg;
216 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
218 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
219 if(!image1Msg->global_descriptor.data.empty())
221 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
225 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
226 scanMsg, *scan3dMsg, odomInfoMsg,
227 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
230 void CommonDataSubscriber::rgbdOdomScanDescCallback(
231 const nav_msgs::OdometryConstPtr & odomMsg,
232 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
233 const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
238 rtabmap_ros::UserDataConstPtr userDataMsg;
239 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
241 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
242 if(!image1Msg->global_descriptor.data.empty())
244 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
246 if(!scanDescMsg->global_descriptor.data.empty())
248 globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
252 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
253 scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg,
254 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
257 void CommonDataSubscriber::rgbdOdomInfoCallback(
258 const nav_msgs::OdometryConstPtr & odomMsg,
259 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
260 const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
265 rtabmap_ros::UserDataConstPtr userDataMsg;
266 sensor_msgs::LaserScan scanMsg;
267 sensor_msgs::PointCloud2 scan3dMsg;
269 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
270 if(!image1Msg->global_descriptor.data.empty())
272 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
276 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
277 scanMsg, scan3dMsg, odomInfoMsg,
278 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
282 #ifdef RTABMAP_SYNC_USER_DATA 284 void CommonDataSubscriber::rgbdDataCallback(
285 const rtabmap_ros::UserDataConstPtr & userDataMsg,
286 const rtabmap_ros::RGBDImageConstPtr& image1Msg)
291 nav_msgs::OdometryConstPtr odomMsg;
292 sensor_msgs::LaserScan scanMsg;
293 sensor_msgs::PointCloud2 scan3dMsg;
294 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
296 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
297 if(!image1Msg->global_descriptor.data.empty())
299 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
303 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
304 scanMsg, scan3dMsg, odomInfoMsg,
305 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
308 void CommonDataSubscriber::rgbdDataScan2dCallback(
309 const rtabmap_ros::UserDataConstPtr & userDataMsg,
310 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
311 const sensor_msgs::LaserScanConstPtr& scanMsg)
316 nav_msgs::OdometryConstPtr odomMsg;
317 sensor_msgs::PointCloud2 scan3dMsg;
318 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
320 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
321 if(!image1Msg->global_descriptor.data.empty())
323 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
327 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
328 *scanMsg, scan3dMsg, odomInfoMsg,
329 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
332 void CommonDataSubscriber::rgbdDataScan3dCallback(
333 const rtabmap_ros::UserDataConstPtr & userDataMsg,
334 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
335 const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
340 nav_msgs::OdometryConstPtr odomMsg;
341 sensor_msgs::LaserScan scanMsg;
342 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
344 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
345 if(!image1Msg->global_descriptor.data.empty())
347 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
351 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
352 scanMsg, *scan3dMsg, odomInfoMsg,
353 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
356 void CommonDataSubscriber::rgbdDataScanDescCallback(
357 const rtabmap_ros::UserDataConstPtr & userDataMsg,
358 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
359 const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
364 nav_msgs::OdometryConstPtr odomMsg;
365 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
367 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
368 if(!image1Msg->global_descriptor.data.empty())
370 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
372 if(!scanDescMsg->global_descriptor.data.empty())
374 globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
378 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
379 scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg,
380 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
383 void CommonDataSubscriber::rgbdDataInfoCallback(
384 const rtabmap_ros::UserDataConstPtr & userDataMsg,
385 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
386 const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
391 nav_msgs::OdometryConstPtr odomMsg;
392 sensor_msgs::LaserScan scanMsg;
393 sensor_msgs::PointCloud2ConstPtr scan3dMsg;
395 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
396 if(!image1Msg->global_descriptor.data.empty())
398 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
402 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
403 scanMsg, *scan3dMsg, odomInfoMsg,
404 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
409 void CommonDataSubscriber::rgbdOdomDataCallback(
410 const nav_msgs::OdometryConstPtr & odomMsg,
411 const rtabmap_ros::UserDataConstPtr & userDataMsg,
412 const rtabmap_ros::RGBDImageConstPtr& image1Msg)
417 sensor_msgs::LaserScan scanMsg;
418 sensor_msgs::PointCloud2 scan3dMsg;
419 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
421 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
422 if(!image1Msg->global_descriptor.data.empty())
424 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
428 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
429 scanMsg, scan3dMsg, odomInfoMsg,
430 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
433 void CommonDataSubscriber::rgbdOdomDataScan2dCallback(
434 const nav_msgs::OdometryConstPtr & odomMsg,
435 const rtabmap_ros::UserDataConstPtr & userDataMsg,
436 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
437 const sensor_msgs::LaserScanConstPtr& scanMsg)
442 sensor_msgs::PointCloud2 scan3dMsg;
443 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
445 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
446 if(!image1Msg->global_descriptor.data.empty())
448 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
452 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
453 *scanMsg, scan3dMsg, odomInfoMsg,
454 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
457 void CommonDataSubscriber::rgbdOdomDataScan3dCallback(
458 const nav_msgs::OdometryConstPtr & odomMsg,
459 const rtabmap_ros::UserDataConstPtr & userDataMsg,
460 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
461 const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
466 sensor_msgs::LaserScan scanMsg;
467 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
469 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
470 if(!image1Msg->global_descriptor.data.empty())
472 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
476 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
477 scanMsg, *scan3dMsg, odomInfoMsg,
478 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
481 void CommonDataSubscriber::rgbdOdomDataScanDescCallback(
482 const nav_msgs::OdometryConstPtr & odomMsg,
483 const rtabmap_ros::UserDataConstPtr & userDataMsg,
484 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
485 const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
490 rtabmap_ros::OdomInfoConstPtr odomInfoMsg;
492 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
493 if(!image1Msg->global_descriptor.data.empty())
495 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
497 if(!scanDescMsg->global_descriptor.data.empty())
499 globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
503 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
504 scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg,
505 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
508 void CommonDataSubscriber::rgbdOdomDataInfoCallback(
509 const nav_msgs::OdometryConstPtr & odomMsg,
510 const rtabmap_ros::UserDataConstPtr & userDataMsg,
511 const rtabmap_ros::RGBDImageConstPtr& image1Msg,
512 const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
517 sensor_msgs::LaserScan scanMsg;
518 sensor_msgs::PointCloud2 scan3dMsg;
520 std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs;
521 if(!image1Msg->global_descriptor.data.empty())
523 globalDescriptorMsgs.push_back(image1Msg->global_descriptor);
527 depth, image1Msg->rgb_camera_info, image1Msg->depth_camera_info,
528 scanMsg, scan3dMsg, odomInfoMsg,
529 globalDescriptorMsgs, image1Msg->key_points, image1Msg->points,
538 bool subscribeUserData,
539 bool subscribeScan2d,
540 bool subscribeScan3d,
541 bool subscribeScanDesc,
542 bool subscribeOdomInfo,
549 #ifdef RTABMAP_SYNC_USER_DATA
559 rgbdSubs_[0]->subscribe(nh,
"rgbd_image", queueSize);
561 #ifdef RTABMAP_SYNC_USER_DATA 562 if(subscribeOdom && subscribeUserData)
566 if(subscribeScanDesc)
570 if(subscribeOdomInfo)
573 ROS_WARN(
"subscribe_odom_info ignored...");
577 else if(subscribeScan2d)
581 if(subscribeOdomInfo)
584 ROS_WARN(
"subscribe_odom_info ignored...");
588 else if(subscribeScan3d)
592 if(subscribeOdomInfo)
595 ROS_WARN(
"subscribe_odom_info ignored...");
599 else if(subscribeOdomInfo)
615 if(subscribeScanDesc)
619 if(subscribeOdomInfo)
622 ROS_WARN(
"subscribe_odom_info ignored...");
626 else if(subscribeScan2d)
630 if(subscribeOdomInfo)
633 ROS_WARN(
"subscribe_odom_info ignored...");
637 else if(subscribeScan3d)
641 if(subscribeOdomInfo)
644 ROS_WARN(
"subscribe_odom_info ignored...");
648 else if(subscribeOdomInfo)
659 #ifdef RTABMAP_SYNC_USER_DATA 660 else if(subscribeUserData)
663 if(subscribeScanDesc)
667 if(subscribeOdomInfo)
670 ROS_WARN(
"subscribe_odom_info ignored...");
674 else if(subscribeScan2d)
678 if(subscribeOdomInfo)
681 ROS_WARN(
"subscribe_odom_info ignored...");
685 else if(subscribeScan3d)
689 if(subscribeOdomInfo)
692 ROS_WARN(
"subscribe_odom_info ignored...");
696 else if(subscribeOdomInfo)
710 if(subscribeScanDesc)
714 if(subscribeOdomInfo)
717 ROS_WARN(
"subscribe_odom_info ignored...");
721 else if(subscribeScan2d)
725 if(subscribeOdomInfo)
728 ROS_WARN(
"subscribe_odom_info ignored...");
732 else if(subscribeScan3d)
736 if(subscribeOdomInfo)
739 ROS_WARN(
"subscribe_odom_info ignored...");
743 else if(subscribeOdomInfo)
760 uFormat(
"\n%s subscribed to:\n %s",
void rgbdCallback(const rtabmap_ros::RGBDImageConstPtr &)
cv::Mat RTABMAP_EXP uncompressData(const cv::Mat &bytes)
std::string uFormat(const char *fmt,...)
std::string getTopic() const
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
#define SYNC_DECL3(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2)
ROSCPP_DECL const std::string & getName()
message_filters::Subscriber< rtabmap_ros::UserData > userDataSub_
bool subscribedToOdomInfo_
message_filters::Subscriber< rtabmap_ros::OdomInfo > odomInfoSub_
bool subscribedToScanDescriptor_
message_filters::Subscriber< sensor_msgs::LaserScan > scanSub_
message_filters::Subscriber< rtabmap_ros::ScanDescriptor > scanDescSub_
message_filters::Subscriber< nav_msgs::Odometry > odomSub_
message_filters::Subscriber< sensor_msgs::PointCloud2 > scan3dSub_
void subscribe(ros::NodeHandle &nh, const std::string &topic, uint32_t queue_size, const ros::TransportHints &transport_hints=ros::TransportHints(), ros::CallbackQueueInterface *callback_queue=0)
void toCvShare(const rtabmap_ros::RGBDImageConstPtr &image, cv_bridge::CvImageConstPtr &rgb, cv_bridge::CvImageConstPtr &depth)
void setupRGBDCallbacks(ros::NodeHandle &nh, ros::NodeHandle &pnh, bool subscribeOdom, bool subscribeUserData, bool subscribeScan2d, bool subscribeScan3d, bool subscribeScanDesc, bool subscribeOdomInfo, int queueSize, bool approxSync)
std::string subscribedTopicsMsg_
std::vector< message_filters::Subscriber< rtabmap_ros::RGBDImage > * > rgbdSubs_
#define SYNC_DECL4(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3)
#define SYNC_DECL2(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1)
void commonSingleCameraCallback(const nav_msgs::OdometryConstPtr &odomMsg, const rtabmap_ros::UserDataConstPtr &userDataMsg, const cv_bridge::CvImageConstPtr &imageMsg, const cv_bridge::CvImageConstPtr &depthMsg, const sensor_msgs::CameraInfo &rgbCameraInfoMsg, const sensor_msgs::CameraInfo &depthCameraInfoMsg, const sensor_msgs::LaserScan &scanMsg, const sensor_msgs::PointCloud2 &scan3dMsg, const rtabmap_ros::OdomInfoConstPtr &odomInfoMsg, const std::vector< rtabmap_ros::GlobalDescriptor > &globalDescriptorMsgs=std::vector< rtabmap_ros::GlobalDescriptor >(), const std::vector< rtabmap_ros::KeyPoint > &localKeyPoints=std::vector< rtabmap_ros::KeyPoint >(), const std::vector< rtabmap_ros::Point3f > &localPoints3d=std::vector< rtabmap_ros::Point3f >(), const cv::Mat &localDescriptors=cv::Mat())