mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 16:57:46 +08:00
Added RGBDImages msg. Added rgbdx_sync to sync up to 8 cameras. For rtabmap node, rgbd_cameras=0 means subscribing to a rgbd_images topic (containing N cameras).
This commit is contained in:
@@ -103,6 +103,7 @@ add_message_files(
|
|||||||
Point3f.msg
|
Point3f.msg
|
||||||
Goal.msg
|
Goal.msg
|
||||||
RGBDImage.msg
|
RGBDImage.msg
|
||||||
|
RGBDImages.msg
|
||||||
UserData.msg
|
UserData.msg
|
||||||
GPS.msg
|
GPS.msg
|
||||||
Path.msg
|
Path.msg
|
||||||
@@ -200,6 +201,7 @@ SET(rtabmap_sync_lib_src
|
|||||||
src/impl/CommonDataSubscriberStereo.cpp
|
src/impl/CommonDataSubscriberStereo.cpp
|
||||||
src/impl/CommonDataSubscriberRGB.cpp
|
src/impl/CommonDataSubscriberRGB.cpp
|
||||||
src/impl/CommonDataSubscriberRGBD.cpp
|
src/impl/CommonDataSubscriberRGBD.cpp
|
||||||
|
src/impl/CommonDataSubscriberRGBDX.cpp
|
||||||
src/impl/CommonDataSubscriberScan.cpp
|
src/impl/CommonDataSubscriberScan.cpp
|
||||||
src/impl/CommonDataSubscriberOdom.cpp
|
src/impl/CommonDataSubscriberOdom.cpp
|
||||||
src/CoreWrapper.cpp # we put CoreWrapper here instead of plugins lib to avoid long compilation time on plugins lib
|
src/CoreWrapper.cpp # we put CoreWrapper here instead of plugins lib to avoid long compilation time on plugins lib
|
||||||
@@ -240,6 +242,7 @@ SET(rtabmap_plugins_lib_src
|
|||||||
src/nodelets/point_cloud_assembler.cpp
|
src/nodelets/point_cloud_assembler.cpp
|
||||||
src/nodelets/undistort_depth.cpp
|
src/nodelets/undistort_depth.cpp
|
||||||
src/nodelets/imu_to_tf.cpp
|
src/nodelets/imu_to_tf.cpp
|
||||||
|
src/nodelets/rgbdx_sync.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
IF(${cv_bridge_VERSION_MAJOR} GREATER 1 OR ${cv_bridge_VERSION_MINOR} GREATER 10)
|
IF(${cv_bridge_VERSION_MAJOR} GREATER 1 OR ${cv_bridge_VERSION_MINOR} GREATER 10)
|
||||||
@@ -322,6 +325,10 @@ add_executable(rtabmap_rgbd_sync src/RGBDSyncNode.cpp)
|
|||||||
target_link_libraries(rtabmap_rgbd_sync ${Libraries})
|
target_link_libraries(rtabmap_rgbd_sync ${Libraries})
|
||||||
set_target_properties(rtabmap_rgbd_sync PROPERTIES OUTPUT_NAME "rgbd_sync")
|
set_target_properties(rtabmap_rgbd_sync PROPERTIES OUTPUT_NAME "rgbd_sync")
|
||||||
|
|
||||||
|
add_executable(rtabmap_rgbdx_sync src/RGBDXSyncNode.cpp)
|
||||||
|
target_link_libraries(rtabmap_rgbdx_sync ${Libraries})
|
||||||
|
set_target_properties(rtabmap_rgbdx_sync PROPERTIES OUTPUT_NAME "rgbdx_sync")
|
||||||
|
|
||||||
add_executable(rtabmap_stereo_sync src/StereoSyncNode.cpp)
|
add_executable(rtabmap_stereo_sync src/StereoSyncNode.cpp)
|
||||||
target_link_libraries(rtabmap_stereo_sync ${Libraries})
|
target_link_libraries(rtabmap_stereo_sync ${Libraries})
|
||||||
set_target_properties(rtabmap_stereo_sync PROPERTIES OUTPUT_NAME "stereo_sync")
|
set_target_properties(rtabmap_stereo_sync PROPERTIES OUTPUT_NAME "stereo_sync")
|
||||||
@@ -555,6 +562,7 @@ install(TARGETS
|
|||||||
rtabmap_point_cloud_assembler
|
rtabmap_point_cloud_assembler
|
||||||
rtabmap_camera
|
rtabmap_camera
|
||||||
rtabmap_rgbd_sync
|
rtabmap_rgbd_sync
|
||||||
|
rtabmap_rgbdx_sync
|
||||||
rtabmap_rgbd_relay
|
rtabmap_rgbd_relay
|
||||||
rtabmap_wifi_signal_sub
|
rtabmap_wifi_signal_sub
|
||||||
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
#include <nav_msgs/Odometry.h>
|
#include <nav_msgs/Odometry.h>
|
||||||
|
|
||||||
#include <rtabmap_ros/RGBDImage.h>
|
#include <rtabmap_ros/RGBDImage.h>
|
||||||
|
#include <rtabmap_ros/RGBDImages.h>
|
||||||
#include <rtabmap_ros/UserData.h>
|
#include <rtabmap_ros/UserData.h>
|
||||||
#include <rtabmap_ros/OdomInfo.h>
|
#include <rtabmap_ros/OdomInfo.h>
|
||||||
#include <rtabmap_ros/ScanDescriptor.h>
|
#include <rtabmap_ros/ScanDescriptor.h>
|
||||||
@@ -176,6 +177,17 @@ private:
|
|||||||
bool subscribeOdomInfo,
|
bool subscribeOdomInfo,
|
||||||
int queueSize,
|
int queueSize,
|
||||||
bool approxSync);
|
bool approxSync);
|
||||||
|
void setupRGBDXCallbacks(
|
||||||
|
ros::NodeHandle & nh,
|
||||||
|
ros::NodeHandle & pnh,
|
||||||
|
bool subscribeOdom,
|
||||||
|
bool subscribeUserData,
|
||||||
|
bool subscribeScan2d,
|
||||||
|
bool subscribeScan3d,
|
||||||
|
bool subscribeScanDesc,
|
||||||
|
bool subscribeOdomInfo,
|
||||||
|
int queueSize,
|
||||||
|
bool approxSync);
|
||||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||||
void setupRGBD2Callbacks(
|
void setupRGBD2Callbacks(
|
||||||
ros::NodeHandle & nh,
|
ros::NodeHandle & nh,
|
||||||
@@ -278,6 +290,8 @@ private:
|
|||||||
//for rgbd callback
|
//for rgbd callback
|
||||||
ros::Subscriber rgbdSub_;
|
ros::Subscriber rgbdSub_;
|
||||||
std::vector<message_filters::Subscriber<rtabmap_ros::RGBDImage>*> rgbdSubs_;
|
std::vector<message_filters::Subscriber<rtabmap_ros::RGBDImage>*> rgbdSubs_;
|
||||||
|
ros::Subscriber rgbdXSubOnly_;
|
||||||
|
message_filters::Subscriber<rtabmap_ros::RGBDImages> rgbdXSub_;
|
||||||
|
|
||||||
//stereo callback
|
//stereo callback
|
||||||
image_transport::SubscriberFilter imageRectLeft_;
|
image_transport::SubscriberFilter imageRectLeft_;
|
||||||
@@ -419,6 +433,36 @@ private:
|
|||||||
DATA_SYNCS4(rgbdOdomDataInfo, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImage, rtabmap_ros::OdomInfo);
|
DATA_SYNCS4(rgbdOdomDataInfo, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImage, rtabmap_ros::OdomInfo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// X RGBD
|
||||||
|
void rgbdXCallback(const rtabmap_ros::RGBDImagesConstPtr&);
|
||||||
|
DATA_SYNCS2(rgbdXScan2d, rtabmap_ros::RGBDImages, sensor_msgs::LaserScan);
|
||||||
|
DATA_SYNCS2(rgbdXScan3d, rtabmap_ros::RGBDImages, sensor_msgs::PointCloud2)
|
||||||
|
DATA_SYNCS2(rgbdXScanDesc, rtabmap_ros::RGBDImages, rtabmap_ros::ScanDescriptor);
|
||||||
|
DATA_SYNCS2(rgbdXInfo, rtabmap_ros::RGBDImages, rtabmap_ros::OdomInfo);
|
||||||
|
|
||||||
|
// X RGBD + Odom
|
||||||
|
DATA_SYNCS2(rgbdXOdom, nav_msgs::Odometry, rtabmap_ros::RGBDImages);
|
||||||
|
DATA_SYNCS3(rgbdXOdomScan2d, nav_msgs::Odometry, rtabmap_ros::RGBDImages, sensor_msgs::LaserScan);
|
||||||
|
DATA_SYNCS3(rgbdXOdomScan3d, nav_msgs::Odometry, rtabmap_ros::RGBDImages, sensor_msgs::PointCloud2);
|
||||||
|
DATA_SYNCS3(rgbdXOdomScanDesc, nav_msgs::Odometry, rtabmap_ros::RGBDImages, rtabmap_ros::ScanDescriptor);
|
||||||
|
DATA_SYNCS3(rgbdXOdomInfo, nav_msgs::Odometry, rtabmap_ros::RGBDImages, rtabmap_ros::OdomInfo);
|
||||||
|
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
// X RGBD + User Data
|
||||||
|
DATA_SYNCS2(rgbdXData, rtabmap_ros::UserData, rtabmap_ros::RGBDImages);
|
||||||
|
DATA_SYNCS3(rgbdXDataScan2d, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, sensor_msgs::LaserScan);
|
||||||
|
DATA_SYNCS3(rgbdXDataScan3d, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, sensor_msgs::PointCloud2);
|
||||||
|
DATA_SYNCS3(rgbdXDataScanDesc, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, rtabmap_ros::ScanDescriptor);
|
||||||
|
DATA_SYNCS3(rgbdXDataInfo, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, rtabmap_ros::OdomInfo);
|
||||||
|
|
||||||
|
// X RGBD + Odom + User Data
|
||||||
|
DATA_SYNCS3(rgbdXOdomData, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImages);
|
||||||
|
DATA_SYNCS4(rgbdXOdomDataScan2d, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, sensor_msgs::LaserScan);
|
||||||
|
DATA_SYNCS4(rgbdXOdomDataScan3d, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, sensor_msgs::PointCloud2);
|
||||||
|
DATA_SYNCS4(rgbdXOdomDataScanDesc, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, rtabmap_ros::ScanDescriptor);
|
||||||
|
DATA_SYNCS4(rgbdXOdomDataInfo, nav_msgs::Odometry, rtabmap_ros::UserData, rtabmap_ros::RGBDImages, rtabmap_ros::OdomInfo);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||||
// 2 RGBD
|
// 2 RGBD
|
||||||
DATA_SYNCS2(rgbd2, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
DATA_SYNCS2(rgbd2, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
|||||||
@@ -105,18 +105,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
if(PREFIX##ExactSync_) delete PREFIX##ExactSync_;
|
if(PREFIX##ExactSync_) delete PREFIX##ExactSync_;
|
||||||
|
|
||||||
// Sync declarations
|
// Sync declarations
|
||||||
#define SYNC_DECL2(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1) \
|
#define SYNC_DECL2(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -124,18 +124,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB0.getTopic().c_str(), \
|
SUB0.getTopic().c_str(), \
|
||||||
SUB1.getTopic().c_str());
|
SUB1.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL3(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2) \
|
#define SYNC_DECL3(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -144,18 +144,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB1.getTopic().c_str(), \
|
SUB1.getTopic().c_str(), \
|
||||||
SUB2.getTopic().c_str());
|
SUB2.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL4(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3) \
|
#define SYNC_DECL4(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -165,18 +165,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB2.getTopic().c_str(), \
|
SUB2.getTopic().c_str(), \
|
||||||
SUB3.getTopic().c_str());
|
SUB3.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL5(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4) \
|
#define SYNC_DECL5(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -187,18 +187,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB3.getTopic().c_str(), \
|
SUB3.getTopic().c_str(), \
|
||||||
SUB4.getTopic().c_str());
|
SUB4.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL6(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5) \
|
#define SYNC_DECL6(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -210,18 +210,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB4.getTopic().c_str(), \
|
SUB4.getTopic().c_str(), \
|
||||||
SUB5.getTopic().c_str());
|
SUB5.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL7(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6) \
|
#define SYNC_DECL7(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
@@ -234,18 +234,18 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
SUB5.getTopic().c_str(), \
|
SUB5.getTopic().c_str(), \
|
||||||
SUB6.getTopic().c_str());
|
SUB6.getTopic().c_str());
|
||||||
|
|
||||||
#define SYNC_DECL8(PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7) \
|
#define SYNC_DECL8(CLASS, PREFIX, APPROX, QUEUE_SIZE, SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7) \
|
||||||
if(APPROX) \
|
if(APPROX) \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
PREFIX##ApproximateSync_ = new message_filters::Synchronizer<PREFIX##ApproximateSyncPolicy>( \
|
||||||
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7); \
|
PREFIX##ApproximateSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7); \
|
||||||
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7, _8)); \
|
PREFIX##ApproximateSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7, _8)); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
PREFIX##ExactSync_ = new message_filters::Synchronizer<PREFIX##ExactSyncPolicy>( \
|
||||||
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7); \
|
PREFIX##ExactSyncPolicy(QUEUE_SIZE), SUB0, SUB1, SUB2, SUB3, SUB4, SUB5, SUB6, SUB7); \
|
||||||
PREFIX##ExactSync_->registerCallback(boost::bind(&CommonDataSubscriber::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7, _8)); \
|
PREFIX##ExactSync_->registerCallback(boost::bind(&CLASS::PREFIX##Callback, this, _1, _2, _3, _4, _5, _6, _7, _8)); \
|
||||||
} \
|
} \
|
||||||
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync):\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s \\\n %s", \
|
||||||
name_.c_str(), \
|
name_.c_str(), \
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ rtabmap::Transform transformFromPoseMsg(const geometry_msgs::Pose & msg, bool ig
|
|||||||
|
|
||||||
void toCvCopy(const rtabmap_ros::RGBDImage & image, cv_bridge::CvImagePtr & rgb, cv_bridge::CvImagePtr & depth);
|
void toCvCopy(const rtabmap_ros::RGBDImage & image, cv_bridge::CvImagePtr & rgb, cv_bridge::CvImagePtr & depth);
|
||||||
void toCvShare(const rtabmap_ros::RGBDImageConstPtr & image, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth);
|
void toCvShare(const rtabmap_ros::RGBDImageConstPtr & image, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth);
|
||||||
|
void toCvShare(const rtabmap_ros::RGBDImage & image, const boost::shared_ptr<void const>& trackedObject, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth);
|
||||||
void rgbdImageToROS(const rtabmap::SensorData & data, rtabmap_ros::RGBDImage & msg, const std::string & sensorFrameId);
|
void rgbdImageToROS(const rtabmap::SensorData & data, rtabmap_ros::RGBDImage & msg, const std::string & sensorFrameId);
|
||||||
rtabmap::SensorData rgbdImageFromROS(const rtabmap_ros::RGBDImageConstPtr & image);
|
rtabmap::SensorData rgbdImageFromROS(const rtabmap_ros::RGBDImageConstPtr & image);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
|
||||||
|
Header header
|
||||||
|
|
||||||
|
rtabmap_ros/RGBDImage[] rgbd_images
|
||||||
@@ -128,6 +128,14 @@
|
|||||||
</description>
|
</description>
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
|
<class name="rtabmap_ros/rgbdx_sync"
|
||||||
|
type="rtabmap_ros::RGBDXSync"
|
||||||
|
base_class_type="nodelet::Nodelet">
|
||||||
|
<description>
|
||||||
|
This is my nodelet.
|
||||||
|
</description>
|
||||||
|
</class>
|
||||||
|
|
||||||
<class name="rtabmap_ros/rgbd_relay"
|
<class name="rtabmap_ros/rgbd_relay"
|
||||||
type="rtabmap_ros::RGBDRelay"
|
type="rtabmap_ros::RGBDRelay"
|
||||||
base_class_type="nodelet::Nodelet">
|
base_class_type="nodelet::Nodelet">
|
||||||
|
|||||||
@@ -163,6 +163,34 @@ CommonDataSubscriber::CommonDataSubscriber(bool gui) :
|
|||||||
SYNC_INIT(rgbdOdomDataScanDesc),
|
SYNC_INIT(rgbdOdomDataScanDesc),
|
||||||
SYNC_INIT(rgbdOdomDataInfo),
|
SYNC_INIT(rgbdOdomDataInfo),
|
||||||
#endif
|
#endif
|
||||||
|
// X RGBD
|
||||||
|
SYNC_INIT(rgbdXScan2d),
|
||||||
|
SYNC_INIT(rgbdXScan3d),
|
||||||
|
SYNC_INIT(rgbdXScanDesc),
|
||||||
|
SYNC_INIT(rgbdXInfo),
|
||||||
|
|
||||||
|
// X RGBD + Odom
|
||||||
|
SYNC_INIT(rgbdXOdom),
|
||||||
|
SYNC_INIT(rgbdXOdomScan2d),
|
||||||
|
SYNC_INIT(rgbdXOdomScan3d),
|
||||||
|
SYNC_INIT(rgbdXOdomScanDesc),
|
||||||
|
SYNC_INIT(rgbdXOdomInfo),
|
||||||
|
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
// X RGBD + User Data
|
||||||
|
SYNC_INIT(rgbdXData),
|
||||||
|
SYNC_INIT(rgbdXDataScan2d),
|
||||||
|
SYNC_INIT(rgbdXDataScan3d),
|
||||||
|
SYNC_INIT(rgbdXDataScanDesc),
|
||||||
|
SYNC_INIT(rgbdXDataInfo),
|
||||||
|
|
||||||
|
// X RGBD + Odom + User Data
|
||||||
|
SYNC_INIT(rgbdXOdomData),
|
||||||
|
SYNC_INIT(rgbdXOdomDataScan2d),
|
||||||
|
SYNC_INIT(rgbdXOdomDataScan3d),
|
||||||
|
SYNC_INIT(rgbdXOdomDataScanDesc),
|
||||||
|
SYNC_INIT(rgbdXOdomDataInfo),
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||||
// 2 RGBD
|
// 2 RGBD
|
||||||
@@ -438,11 +466,6 @@ void CommonDataSubscriber::setupCallbacks(
|
|||||||
pnh.param("approx_sync", approxSync_, approxSync_);
|
pnh.param("approx_sync", approxSync_, approxSync_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(rgbdCameras <= 0 && subscribedToRGBD_)
|
|
||||||
{
|
|
||||||
rgbdCameras = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
ROS_INFO("%s: subscribe_depth = %s", name.c_str(), subscribedToDepth_?"true":"false");
|
ROS_INFO("%s: subscribe_depth = %s", name.c_str(), subscribedToDepth_?"true":"false");
|
||||||
ROS_INFO("%s: subscribe_rgb = %s", name.c_str(), subscribedToRGB_?"true":"false");
|
ROS_INFO("%s: subscribe_rgb = %s", name.c_str(), subscribedToRGB_?"true":"false");
|
||||||
ROS_INFO("%s: subscribe_stereo = %s", name.c_str(), subscribedToStereo_?"true":"false");
|
ROS_INFO("%s: subscribe_stereo = %s", name.c_str(), subscribedToStereo_?"true":"false");
|
||||||
@@ -496,9 +519,30 @@ void CommonDataSubscriber::setupCallbacks(
|
|||||||
}
|
}
|
||||||
else if(subscribedToRGBD_)
|
else if(subscribedToRGBD_)
|
||||||
{
|
{
|
||||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
if(rgbdCameras == 0)
|
||||||
if(rgbdCameras == 6)
|
|
||||||
{
|
{
|
||||||
|
setupRGBDXCallbacks(
|
||||||
|
nh,
|
||||||
|
pnh,
|
||||||
|
subscribedToOdom_,
|
||||||
|
subscribeUserData,
|
||||||
|
subscribeScan2d,
|
||||||
|
subscribeScan3d,
|
||||||
|
subscribeScanDesc,
|
||||||
|
subscribeOdomInfo,
|
||||||
|
queueSize_,
|
||||||
|
approxSync_);
|
||||||
|
}
|
||||||
|
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||||
|
else if(rgbdCameras >= 6)
|
||||||
|
{
|
||||||
|
if(rgbdCameras > 6)
|
||||||
|
{
|
||||||
|
ROS_ERROR("Cannot synchronize more than 6 rgbd topics (rgbd_cameras is set to %d). Set "
|
||||||
|
"rgbd_cameras=0 to use RGBDImages interface instead, then "
|
||||||
|
"synchronize RGBDImage topics yourself.", rgbdCameras);
|
||||||
|
}
|
||||||
|
|
||||||
setupRGBD6Callbacks(
|
setupRGBD6Callbacks(
|
||||||
nh,
|
nh,
|
||||||
pnh,
|
pnh,
|
||||||
@@ -570,7 +614,10 @@ void CommonDataSubscriber::setupCallbacks(
|
|||||||
#else
|
#else
|
||||||
if(rgbdCameras>1)
|
if(rgbdCameras>1)
|
||||||
{
|
{
|
||||||
ROS_FATAL("Cannot synchronize more than 1 rgbd topic (rtabmap_ros has been built without RTABMAP_SYNC_MULTI_RGBD option)");
|
ROS_FATAL("Cannot synchronize more than 1 rgbd topic (rtabmap_ros has "
|
||||||
|
"been built without RTABMAP_SYNC_MULTI_RGBD option). Set rgbd_cameras=0 to "
|
||||||
|
"use RGBDImages interface instead without recompiling with RTABMAP_SYNC_MULTI_RGBD, "
|
||||||
|
"but you will have to synchronize RGBDImage topics yourself.");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else
|
else
|
||||||
@@ -749,6 +796,35 @@ CommonDataSubscriber::~CommonDataSubscriber()
|
|||||||
SYNC_DEL(rgbdOdomDataInfo);
|
SYNC_DEL(rgbdOdomDataInfo);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// X RGBD
|
||||||
|
SYNC_DEL(rgbdXScan2d);
|
||||||
|
SYNC_DEL(rgbdXScan3d);
|
||||||
|
SYNC_DEL(rgbdXScanDesc);
|
||||||
|
SYNC_DEL(rgbdXInfo);
|
||||||
|
|
||||||
|
// X RGBD + Odom
|
||||||
|
SYNC_DEL(rgbdXOdom);
|
||||||
|
SYNC_DEL(rgbdXOdomScan2d);
|
||||||
|
SYNC_DEL(rgbdXOdomScan3d);
|
||||||
|
SYNC_DEL(rgbdXOdomScanDesc);
|
||||||
|
SYNC_DEL(rgbdXOdomInfo);
|
||||||
|
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
// X RGBD + User Data
|
||||||
|
SYNC_DEL(rgbdXData);
|
||||||
|
SYNC_DEL(rgbdXDataScan2d);
|
||||||
|
SYNC_DEL(rgbdXDataScan3d);
|
||||||
|
SYNC_DEL(rgbdXDataScanDesc);
|
||||||
|
SYNC_DEL(rgbdXDataInfo);
|
||||||
|
|
||||||
|
// X RGBD + Odom + User Data
|
||||||
|
SYNC_DEL(rgbdXOdomData);
|
||||||
|
SYNC_DEL(rgbdXOdomDataScan2d);
|
||||||
|
SYNC_DEL(rgbdXOdomDataScan3d);
|
||||||
|
SYNC_DEL(rgbdXOdomDataScanDesc);
|
||||||
|
SYNC_DEL(rgbdXOdomDataInfo);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||||
// 2 RGBD
|
// 2 RGBD
|
||||||
SYNC_DEL(rgbd2);
|
SYNC_DEL(rgbd2);
|
||||||
|
|||||||
+16
-11
@@ -163,38 +163,43 @@ void toCvCopy(const rtabmap_ros::RGBDImage & image, cv_bridge::CvImagePtr & rgb,
|
|||||||
|
|
||||||
void toCvShare(const rtabmap_ros::RGBDImageConstPtr & image, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth)
|
void toCvShare(const rtabmap_ros::RGBDImageConstPtr & image, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth)
|
||||||
{
|
{
|
||||||
if(!image->rgb.data.empty())
|
toCvShare(*image, image, rgb, depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
void toCvShare(const rtabmap_ros::RGBDImage & image, const boost::shared_ptr<void const>& trackedObject, cv_bridge::CvImageConstPtr & rgb, cv_bridge::CvImageConstPtr & depth)
|
||||||
|
{
|
||||||
|
if(!image.rgb.data.empty())
|
||||||
{
|
{
|
||||||
rgb = cv_bridge::toCvShare(image->rgb, image);
|
rgb = cv_bridge::toCvShare(image.rgb, trackedObject);
|
||||||
}
|
}
|
||||||
else if(!image->rgb_compressed.data.empty())
|
else if(!image.rgb_compressed.data.empty())
|
||||||
{
|
{
|
||||||
#ifdef CV_BRIDGE_HYDRO
|
#ifdef CV_BRIDGE_HYDRO
|
||||||
ROS_ERROR("Unsupported compressed image copy, please upgrade at least to ROS Indigo to use this.");
|
ROS_ERROR("Unsupported compressed image copy, please upgrade at least to ROS Indigo to use this.");
|
||||||
#else
|
#else
|
||||||
rgb = cv_bridge::toCvCopy(image->rgb_compressed);
|
rgb = cv_bridge::toCvCopy(image.rgb_compressed);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!image->depth.data.empty())
|
if(!image.depth.data.empty())
|
||||||
{
|
{
|
||||||
depth = cv_bridge::toCvShare(image->depth, image);
|
depth = cv_bridge::toCvShare(image.depth, trackedObject);
|
||||||
}
|
}
|
||||||
else if(!image->depth_compressed.data.empty())
|
else if(!image.depth_compressed.data.empty())
|
||||||
{
|
{
|
||||||
if(image->depth_compressed.format.compare("jpg")==0)
|
if(image.depth_compressed.format.compare("jpg")==0)
|
||||||
{
|
{
|
||||||
#ifdef CV_BRIDGE_HYDRO
|
#ifdef CV_BRIDGE_HYDRO
|
||||||
ROS_ERROR("Unsupported compressed image copy, please upgrade at least to ROS Indigo to use this.");
|
ROS_ERROR("Unsupported compressed image copy, please upgrade at least to ROS Indigo to use this.");
|
||||||
#else
|
#else
|
||||||
depth = cv_bridge::toCvCopy(image->depth_compressed);
|
depth = cv_bridge::toCvCopy(image.depth_compressed);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
cv_bridge::CvImagePtr ptr = boost::make_shared<cv_bridge::CvImage>();
|
cv_bridge::CvImagePtr ptr = boost::make_shared<cv_bridge::CvImage>();
|
||||||
ptr->header = image->depth_compressed.header;
|
ptr->header = image.depth_compressed.header;
|
||||||
ptr->image = rtabmap::uncompressImage(image->depth_compressed.data);
|
ptr->image = rtabmap::uncompressImage(image.depth_compressed.data);
|
||||||
ROS_ASSERT(ptr->image.empty() || ptr->image.type() == CV_32FC1 || ptr->image.type() == CV_16UC1);
|
ROS_ASSERT(ptr->image.empty() || ptr->image.type() == CV_32FC1 || ptr->image.type() == CV_16UC1);
|
||||||
ptr->encoding = ptr->image.empty()?"":ptr->image.type() == CV_32FC1?sensor_msgs::image_encodings::TYPE_32FC1:sensor_msgs::image_encodings::TYPE_16UC1;
|
ptr->encoding = ptr->image.empty()?"":ptr->image.type() == CV_32FC1?sensor_msgs::image_encodings::TYPE_32FC1:sensor_msgs::image_encodings::TYPE_16UC1;
|
||||||
depth = ptr;
|
depth = ptr;
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Universite de Sherbrooke nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ros/ros.h"
|
||||||
|
#include "nodelet/loader.h"
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
ros::init(argc, argv, "rgbdx_sync");
|
||||||
|
|
||||||
|
nodelet::V_string nargv;
|
||||||
|
for(int i=1;i<argc;++i)
|
||||||
|
{
|
||||||
|
nargv.push_back(argv[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
nodelet::Loader nodelet;
|
||||||
|
nodelet::M_string remap(ros::names::getRemappings());
|
||||||
|
std::string nodelet_name = ros::this_node::getName();
|
||||||
|
nodelet.load(nodelet_name, "rtabmap_ros/rgbdx_sync", remap, nargv);
|
||||||
|
ros::spin();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -498,11 +498,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(depthOdomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, depthOdomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(depthOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -513,11 +513,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(depthOdomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, depthOdomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(depthOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -528,22 +528,22 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(depthOdomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, depthOdomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(depthOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthOdomData, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthOdomData, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -560,11 +560,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthOdomScanDescInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomScanDescInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthOdomScanDesc, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthOdomScanDesc, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -575,11 +575,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthOdomScan2dInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomScan2dInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthOdomScan2d, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthOdomScan2d, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -590,22 +590,22 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthOdomScan3dInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthOdomScan3dInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthOdomScan3d, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthOdomScan3d, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(depthOdomInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthOdomInfo, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(depthOdom, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthOdom, approxSync, queueSize, odomSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -622,11 +622,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthDataScanDescInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthDataScanDescInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthDataScanDesc, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthDataScanDesc, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -638,11 +638,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthDataScan2dInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthDataScan2dInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthDataScan2d, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthDataScan2d, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -653,22 +653,22 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(depthDataScan3dInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, depthDataScan3dInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(depthDataScan3d, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthDataScan3d, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(depthDataInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthDataInfo, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(depthData, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthData, approxSync, queueSize, userDataSub_, imageSub_, imageDepthSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -682,11 +682,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(depthScanDescInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthScanDescInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(depthScanDesc, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthScanDesc, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -697,11 +697,11 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(depthScan2dInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthScan2dInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(depthScan2d, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthScan2d, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -712,22 +712,22 @@ void CommonDataSubscriber::setupDepthCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(depthScan3dInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, depthScan3dInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(depthScan3d, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthScan3d, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(depthInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, depthInfo, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(depth, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, depth, approxSync, queueSize, imageSub_, imageDepthSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,11 +89,11 @@ void CommonDataSubscriber::setupOdomCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(odomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(odomData, approxSync, queueSize, odomSub_, userDataSub_);
|
SYNC_DECL2(CommonDataSubscriber, odomData, approxSync, queueSize, odomSub_, userDataSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -102,7 +102,7 @@ void CommonDataSubscriber::setupOdomCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL2(odomInfo, approxSync, queueSize, odomSub_, odomInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, odomInfo, approxSync, queueSize, odomSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -492,11 +492,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbOdomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbOdomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -507,11 +507,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbOdomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbOdomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -522,22 +522,22 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbOdomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbOdomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbOdomData, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbOdomData, approxSync, queueSize, odomSub_, userDataSub_, imageSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -554,11 +554,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbOdomScanDescInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomScanDescInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbOdomScanDesc, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbOdomScanDesc, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -569,11 +569,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbOdomScan2dInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomScan2dInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbOdomScan2d, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbOdomScan2d, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -584,22 +584,22 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbOdomScan3dInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbOdomScan3dInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbOdomScan3d, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbOdomScan3d, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbOdomInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbOdomInfo, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbOdom, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbOdom, approxSync, queueSize, odomSub_, imageSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -616,11 +616,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbDataScanDescInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbDataScanDescInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbDataScanDesc, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbDataScanDesc, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -632,11 +632,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbDataScan2dInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbDataScan2dInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbDataScan2d, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbDataScan2d, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -647,22 +647,22 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbDataScan3dInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbDataScan3dInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbDataScan3d, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbDataScan3d, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbDataInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbDataInfo, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbData, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbData, approxSync, queueSize, userDataSub_, imageSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -676,11 +676,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbScanDescInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbScanDescInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbScanDesc, approxSync, queueSize, imageSub_, cameraInfoSub_, scanDescSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbScanDesc, approxSync, queueSize, imageSub_, cameraInfoSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
@@ -691,11 +691,11 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbScan2dInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbScan2dInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbScan2d, approxSync, queueSize, imageSub_, cameraInfoSub_, scanSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbScan2d, approxSync, queueSize, imageSub_, cameraInfoSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
@@ -706,22 +706,22 @@ void CommonDataSubscriber::setupRGBCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbScan3dInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbScan3dInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbScan3d, approxSync, queueSize, imageSub_, cameraInfoSub_, scan3dSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbScan3d, approxSync, queueSize, imageSub_, cameraInfoSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(rgbInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbInfo, approxSync, queueSize, imageSub_, cameraInfoSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(rgb, approxSync, queueSize, imageSub_, cameraInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, rgb, approxSync, queueSize, imageSub_, cameraInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -565,7 +565,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbdOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbdOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -576,7 +576,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbdOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbdOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -587,17 +587,17 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbdOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbdOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbdOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbdOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbdOdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]));
|
SYNC_DECL3(CommonDataSubscriber, rgbdOdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -614,7 +614,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdOdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scanDescSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdOdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -625,7 +625,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdOdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scanSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdOdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -636,17 +636,17 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdOdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scan3dSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdOdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(rgbdOdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdOdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(rgbdOdom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]));
|
SYNC_DECL2(CommonDataSubscriber, rgbdOdom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -662,7 +662,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdDataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scanDescSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdDataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -673,7 +673,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdDataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scanSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdDataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -684,17 +684,17 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbdDataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scan3dSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdDataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(rgbdDataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbdDataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(rgbdData, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]));
|
SYNC_DECL2(CommonDataSubscriber, rgbdData, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -709,7 +709,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL2(rgbdScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), scanDescSub_);
|
SYNC_DECL2(CommonDataSubscriber, rgbdScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -720,7 +720,7 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL2(rgbdScan2d, approxSync, queueSize, (*rgbdSubs_[0]), scanSub_);
|
SYNC_DECL2(CommonDataSubscriber, rgbdScan2d, approxSync, queueSize, (*rgbdSubs_[0]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -731,13 +731,13 @@ void CommonDataSubscriber::setupRGBDCallbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL2(rgbdScan3d, approxSync, queueSize, (*rgbdSubs_[0]), scan3dSub_);
|
SYNC_DECL2(CommonDataSubscriber, rgbdScan3d, approxSync, queueSize, (*rgbdSubs_[0]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL2(rgbdInfo, approxSync, queueSize, (*rgbdSubs_[0]), odomInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, rgbdInfo, approxSync, queueSize, (*rgbdSubs_[0]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -374,7 +374,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd2OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd2OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -385,7 +385,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd2OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd2OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -396,17 +396,17 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd2OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd2OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbd2OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd2OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbd2OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
SYNC_DECL4(CommonDataSubscriber, rgbd2OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -423,7 +423,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -434,7 +434,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -445,17 +445,17 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbd2OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbd2Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
SYNC_DECL3(CommonDataSubscriber, rgbd2Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -471,7 +471,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -482,7 +482,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -493,17 +493,17 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd2DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbd2DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd2DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbd2Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
SYNC_DECL3(CommonDataSubscriber, rgbd2Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -518,7 +518,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbd2ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbd2ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -529,7 +529,7 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbd2Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbd2Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -540,17 +540,17 @@ void CommonDataSubscriber::setupRGBD2Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL3(rgbd2Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbd2Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(rgbd2Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, rgbd2Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(rgbd2, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
SYNC_DECL2(CommonDataSubscriber, rgbd2, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -461,7 +461,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd3OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd3OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -472,7 +472,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd3OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd3OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -483,17 +483,17 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd3OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd3OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbd3OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd3OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbd3OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
SYNC_DECL5(CommonDataSubscriber, rgbd3OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -510,7 +510,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -521,7 +521,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -532,17 +532,17 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbd3OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbd3Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
SYNC_DECL4(CommonDataSubscriber, rgbd3Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -558,7 +558,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_); }
|
SYNC_DECL5(CommonDataSubscriber, rgbd3DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_); }
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
subscribedToScan2d_ = true;
|
subscribedToScan2d_ = true;
|
||||||
@@ -568,7 +568,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -579,17 +579,17 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd3DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbd3DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd3DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbd3Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
SYNC_DECL4(CommonDataSubscriber, rgbd3Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -604,7 +604,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd3ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd3ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -615,7 +615,7 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd3Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd3Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -626,17 +626,17 @@ void CommonDataSubscriber::setupRGBD3Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL4(rgbd3Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd3Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(rgbd3Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, rgbd3Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(rgbd3, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
SYNC_DECL3(CommonDataSubscriber, rgbd3, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -429,7 +429,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd4OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd4OdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -440,7 +440,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd4OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd4OdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -451,17 +451,17 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd4OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd4OdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(rgbd4OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd4OdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(rgbd4OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
SYNC_DECL6(CommonDataSubscriber, rgbd4OdomData, approxSync, queueSize, odomSub_, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -478,7 +478,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -489,7 +489,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -500,17 +500,17 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbd4OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbd4Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
SYNC_DECL5(CommonDataSubscriber, rgbd4Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef RTABMAP_SYNC_USER_DATA
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
@@ -526,7 +526,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4DataScanDesc, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -537,7 +537,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4DataScan2d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -548,17 +548,17 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd4DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4DataScan3d, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbd4DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd4DataInfo, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbd4Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
SYNC_DECL5(CommonDataSubscriber, rgbd4Data, approxSync, queueSize, userDataSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -573,7 +573,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd4ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd4ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -584,7 +584,7 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd4Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd4Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -595,17 +595,17 @@ void CommonDataSubscriber::setupRGBD4Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL5(rgbd4Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd4Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(rgbd4Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, rgbd4Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(rgbd4, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
SYNC_DECL4(CommonDataSubscriber, rgbd4, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -282,7 +282,7 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd5OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanDescSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd5OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -293,7 +293,7 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd5OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd5OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -304,17 +304,17 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd5OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scan3dSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd5OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(rgbd5OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd5OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(rgbd5Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]));
|
SYNC_DECL6(CommonDataSubscriber, rgbd5Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -328,7 +328,7 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd5ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanDescSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd5ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -339,7 +339,7 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd5Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd5Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -350,17 +350,17 @@ void CommonDataSubscriber::setupRGBD5Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL6(rgbd5Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scan3dSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd5Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(rgbd5Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, rgbd5Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(rgbd5, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]));
|
SYNC_DECL5(CommonDataSubscriber, rgbd5, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -299,7 +299,7 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL8(rgbd6OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanDescSub_);
|
SYNC_DECL8(CommonDataSubscriber, rgbd6OdomScanDesc, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -310,7 +310,7 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL8(rgbd6OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanSub_);
|
SYNC_DECL8(CommonDataSubscriber, rgbd6OdomScan2d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -321,17 +321,17 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL8(rgbd6OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scan3dSub_);
|
SYNC_DECL8(CommonDataSubscriber, rgbd6OdomScan3d, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL8(rgbd6OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), odomInfoSub_);
|
SYNC_DECL8(CommonDataSubscriber, rgbd6OdomInfo, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL7(rgbd6Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]));
|
SYNC_DECL7(CommonDataSubscriber, rgbd6Odom, approxSync, queueSize, odomSub_, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -345,7 +345,7 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd6ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanDescSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd6ScanDesc, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanDescSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan2d)
|
else if(subscribeScan2d)
|
||||||
{
|
{
|
||||||
@@ -356,7 +356,7 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd6Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd6Scan2d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scanSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeScan3d)
|
else if(subscribeScan3d)
|
||||||
{
|
{
|
||||||
@@ -367,17 +367,17 @@ void CommonDataSubscriber::setupRGBD6Callbacks(
|
|||||||
subscribedToOdomInfo_ = false;
|
subscribedToOdomInfo_ = false;
|
||||||
ROS_WARN("subscribe_odom_info ignored...");
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
}
|
}
|
||||||
SYNC_DECL7(rgbd6Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scan3dSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd6Scan3d, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), scan3dSub_);
|
||||||
}
|
}
|
||||||
else if(subscribeOdomInfo)
|
else if(subscribeOdomInfo)
|
||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL7(rgbd6Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), odomInfoSub_);
|
SYNC_DECL7(CommonDataSubscriber, rgbd6Info, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL6(rgbd6, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]));
|
SYNC_DECL6(CommonDataSubscriber, rgbd6, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,535 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Universite de Sherbrooke nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <rtabmap_ros/CommonDataSubscriber.h>
|
||||||
|
#include <rtabmap/utilite/UConversion.h>
|
||||||
|
#include <rtabmap/core/Compression.h>
|
||||||
|
#include <rtabmap_ros/MsgConversion.h>
|
||||||
|
#include <cv_bridge/cv_bridge.h>
|
||||||
|
|
||||||
|
namespace rtabmap_ros {
|
||||||
|
|
||||||
|
#define IMAGE_CONVERSION() \
|
||||||
|
UASSERT(!imagesMsg->rgbd_images.empty()); \
|
||||||
|
callbackCalled(); \
|
||||||
|
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(imagesMsg->rgbd_images.size()); \
|
||||||
|
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(imagesMsg->rgbd_images.size()); \
|
||||||
|
std::vector<sensor_msgs::CameraInfo> cameraInfoMsgs; \
|
||||||
|
std::vector<rtabmap_ros::GlobalDescriptor> globalDescriptorMsgs; \
|
||||||
|
std::vector<std::vector<rtabmap_ros::KeyPoint> > localKeyPoints; \
|
||||||
|
std::vector<std::vector<rtabmap_ros::Point3f> > localPoints3d; \
|
||||||
|
std::vector<cv::Mat> localDescriptors; \
|
||||||
|
for(size_t i=0; i<imageMsgs.size(); ++i) \
|
||||||
|
{ \
|
||||||
|
rtabmap_ros::toCvShare(imagesMsg->rgbd_images[i], imagesMsg, imageMsgs[i], depthMsgs[i]); \
|
||||||
|
cameraInfoMsgs.push_back(imagesMsg->rgbd_images[i].rgb_camera_info); \
|
||||||
|
if(!imagesMsg->rgbd_images[i].global_descriptor.data.empty()) \
|
||||||
|
globalDescriptorMsgs.push_back(imagesMsg->rgbd_images[i].global_descriptor); \
|
||||||
|
localKeyPoints.push_back(imagesMsg->rgbd_images[i].key_points); \
|
||||||
|
localPoints3d.push_back(imagesMsg->rgbd_images[i].points); \
|
||||||
|
localDescriptors.push_back(rtabmap::uncompressData(imagesMsg->rgbd_images[i].descriptors)); \
|
||||||
|
} \
|
||||||
|
if(!depthMsgs[0].get()) \
|
||||||
|
depthMsgs.clear();
|
||||||
|
|
||||||
|
// X RGBD
|
||||||
|
void CommonDataSubscriber::rgbdXCallback(
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXScan2dCallback(
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::LaserScanConstPtr& scanMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, *scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXScan3dCallback(
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, *scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXScanDescCallback(
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
if(!scanDescMsg->global_descriptor.data.empty())
|
||||||
|
{
|
||||||
|
globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
|
||||||
|
}
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXInfoCallback(
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
// X RGBD + Odom
|
||||||
|
void CommonDataSubscriber::rgbdXOdomCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr & odomMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomScan2dCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr & odomMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::LaserScanConstPtr& scanMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, *scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomScan3dCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr & odomMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, *scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomScanDescCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr & odomMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
if(!scanDescMsg->global_descriptor.data.empty())
|
||||||
|
{
|
||||||
|
globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
|
||||||
|
}
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomInfoCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr & odomMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::UserDataConstPtr userDataMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
// X RGBD + User Data
|
||||||
|
void CommonDataSubscriber::rgbdXDataCallback(
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXDataScan2dCallback(
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::LaserScanConstPtr& scanMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, *scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXDataScan3dCallback(
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, *scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXDataScanDescCallback(
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
if(!scanDescMsg->global_descriptor.data.empty())
|
||||||
|
{
|
||||||
|
globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
|
||||||
|
}
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXDataInfoCallback(
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
nav_msgs::OdometryConstPtr odomMsg; // Null
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
|
||||||
|
// X RGBD + Odom + User Data
|
||||||
|
void CommonDataSubscriber::rgbdXOdomDataCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr& odomMsg,
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomDataScan2dCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr& odomMsg,
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::LaserScanConstPtr& scanMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, *scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomDataScan3dCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr& odomMsg,
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const sensor_msgs::PointCloud2ConstPtr& scan3dMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, *scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomDataScanDescCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr& odomMsg,
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::ScanDescriptorConstPtr& scanDescMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
rtabmap_ros::OdomInfoConstPtr odomInfoMsg; // null
|
||||||
|
if(!scanDescMsg->global_descriptor.data.empty())
|
||||||
|
{
|
||||||
|
globalDescriptorMsgs.push_back(scanDescMsg->global_descriptor);
|
||||||
|
}
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanDescMsg->scan, scanDescMsg->scan_cloud, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
void CommonDataSubscriber::rgbdXOdomDataInfoCallback(
|
||||||
|
const nav_msgs::OdometryConstPtr& odomMsg,
|
||||||
|
const rtabmap_ros::UserDataConstPtr& userDataMsg,
|
||||||
|
const rtabmap_ros::RGBDImagesConstPtr& imagesMsg,
|
||||||
|
const rtabmap_ros::OdomInfoConstPtr& odomInfoMsg)
|
||||||
|
{
|
||||||
|
IMAGE_CONVERSION();
|
||||||
|
|
||||||
|
sensor_msgs::LaserScan scanMsg; // Null
|
||||||
|
sensor_msgs::PointCloud2 scan3dMsg; // Null
|
||||||
|
commonDepthCallback(odomMsg, userDataMsg, imageMsgs, depthMsgs, cameraInfoMsgs, scanMsg, scan3dMsg, odomInfoMsg, globalDescriptorMsgs, localKeyPoints, localPoints3d, localDescriptors);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void CommonDataSubscriber::setupRGBDXCallbacks(
|
||||||
|
ros::NodeHandle & nh,
|
||||||
|
ros::NodeHandle & pnh,
|
||||||
|
bool subscribeOdom,
|
||||||
|
bool subscribeUserData,
|
||||||
|
bool subscribeScan2d,
|
||||||
|
bool subscribeScan3d,
|
||||||
|
bool subscribeScanDesc,
|
||||||
|
bool subscribeOdomInfo,
|
||||||
|
int queueSize,
|
||||||
|
bool approxSync)
|
||||||
|
{
|
||||||
|
ROS_INFO("Setup rgbdX callback");
|
||||||
|
|
||||||
|
rgbdXSub_.subscribe(nh, "rgbd_images", queueSize);
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
if(subscribeOdom && subscribeUserData)
|
||||||
|
{
|
||||||
|
odomSub_.subscribe(nh, "odom", queueSize);
|
||||||
|
userDataSub_.subscribe(nh, "user_data", queueSize);
|
||||||
|
if(subscribeScanDesc)
|
||||||
|
{
|
||||||
|
subscribedToScanDescriptor_ = true;
|
||||||
|
scanDescSub_.subscribe(nh, "scan_descriptor", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL4(CommonDataSubscriber, rgbdXOdomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, rgbdXSub_, scanDescSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan2d)
|
||||||
|
{
|
||||||
|
subscribedToScan2d_ = true;
|
||||||
|
scanSub_.subscribe(nh, "scan", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL4(CommonDataSubscriber, rgbdXOdomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, rgbdXSub_, scanSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan3d)
|
||||||
|
{
|
||||||
|
subscribedToScan3d_ = true;
|
||||||
|
scan3dSub_.subscribe(nh, "scan_cloud", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL4(CommonDataSubscriber, rgbdXOdomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, rgbdXSub_, scan3dSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = true;
|
||||||
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
|
SYNC_DECL4(CommonDataSubscriber, rgbdXOdomDataInfo, approxSync, queueSize, odomSub_, userDataSub_, rgbdXSub_, odomInfoSub_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXOdomData, approxSync, queueSize, odomSub_, userDataSub_, rgbdXSub_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
if(subscribeOdom)
|
||||||
|
{
|
||||||
|
odomSub_.subscribe(nh, "odom", queueSize);
|
||||||
|
if(subscribeScanDesc)
|
||||||
|
{
|
||||||
|
subscribedToScanDescriptor_ = true;
|
||||||
|
scanDescSub_.subscribe(nh, "scan_descriptor", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXOdomScanDesc, approxSync, queueSize, odomSub_, rgbdXSub_, scanDescSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan2d)
|
||||||
|
{
|
||||||
|
subscribedToScan2d_ = true;
|
||||||
|
scanSub_.subscribe(nh, "scan", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXOdomScan2d, approxSync, queueSize, odomSub_, rgbdXSub_, scanSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan3d)
|
||||||
|
{
|
||||||
|
subscribedToScan3d_ = true;
|
||||||
|
scan3dSub_.subscribe(nh, "scan_cloud", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXOdomScan3d, approxSync, queueSize, odomSub_, rgbdXSub_, scan3dSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = true;
|
||||||
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXOdomInfo, approxSync, queueSize, odomSub_, rgbdXSub_, odomInfoSub_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXOdom, approxSync, queueSize, odomSub_, rgbdXSub_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef RTABMAP_SYNC_USER_DATA
|
||||||
|
else if(subscribeUserData)
|
||||||
|
{
|
||||||
|
userDataSub_.subscribe(nh, "user_data", queueSize);
|
||||||
|
if(subscribeScanDesc)
|
||||||
|
{
|
||||||
|
subscribedToScanDescriptor_ = true;
|
||||||
|
scanDescSub_.subscribe(nh, "scan_descriptor", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXDataScanDesc, approxSync, queueSize, userDataSub_, rgbdXSub_, scanDescSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan2d)
|
||||||
|
{
|
||||||
|
subscribedToScan2d_ = true;
|
||||||
|
scanSub_.subscribe(nh, "scan", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXDataScan2d, approxSync, queueSize, userDataSub_, rgbdXSub_, scanSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan3d)
|
||||||
|
{
|
||||||
|
subscribedToScan3d_ = true;
|
||||||
|
scan3dSub_.subscribe(nh, "scan_cloud", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXDataScan3d, approxSync, queueSize, userDataSub_, rgbdXSub_, scan3dSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = true;
|
||||||
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
|
SYNC_DECL3(CommonDataSubscriber, rgbdXDataInfo, approxSync, queueSize, userDataSub_, rgbdXSub_, odomInfoSub_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXData, approxSync, queueSize, userDataSub_, rgbdXSub_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(subscribeScanDesc)
|
||||||
|
{
|
||||||
|
subscribedToScanDescriptor_ = true;
|
||||||
|
scanDescSub_.subscribe(nh, "scan_descriptor", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXScanDesc, approxSync, queueSize, rgbdXSub_, scanDescSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan2d)
|
||||||
|
{
|
||||||
|
subscribedToScan2d_ = true;
|
||||||
|
scanSub_.subscribe(nh, "scan", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXScan2d, approxSync, queueSize, rgbdXSub_, scanSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeScan3d)
|
||||||
|
{
|
||||||
|
subscribedToScan3d_ = true;
|
||||||
|
scan3dSub_.subscribe(nh, "scan_cloud", queueSize);
|
||||||
|
if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = false;
|
||||||
|
ROS_WARN("subscribe_odom_info ignored...");
|
||||||
|
}
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXScan3d, approxSync, queueSize, rgbdXSub_, scan3dSub_);
|
||||||
|
}
|
||||||
|
else if(subscribeOdomInfo)
|
||||||
|
{
|
||||||
|
subscribedToOdomInfo_ = true;
|
||||||
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
|
SYNC_DECL2(CommonDataSubscriber, rgbdXInfo, approxSync, queueSize, rgbdXSub_, odomInfoSub_);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rgbdXSubOnly_ = nh.subscribe("rgbd_images", queueSize, &CommonDataSubscriber::rgbdXCallback, this);
|
||||||
|
|
||||||
|
subscribedTopicsMsg_ =
|
||||||
|
uFormat("\n%s subscribed to:\n %s",
|
||||||
|
ros::this_node::getName().c_str(),
|
||||||
|
rgbdXSubOnly_.getTopic().c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} /* namespace rtabmap_ros */
|
||||||
@@ -310,11 +310,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(odomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, odomDataScanDescInfo, approxSync, queueSize, odomSub_, userDataSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(odomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, scanDescSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomDataScanDesc, approxSync, queueSize, odomSub_, userDataSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(scan2dTopic)
|
else if(scan2dTopic)
|
||||||
@@ -323,11 +323,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(odomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, odomDataScan2dInfo, approxSync, queueSize, odomSub_, userDataSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(odomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, scanSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomDataScan2d, approxSync, queueSize, odomSub_, userDataSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -336,11 +336,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL4(odomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL4(CommonDataSubscriber, odomDataScan3dInfo, approxSync, queueSize, odomSub_, userDataSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL3(odomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, scan3dSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomDataScan3d, approxSync, queueSize, odomSub_, userDataSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -356,11 +356,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(odomScanDescInfo, approxSync, queueSize, odomSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomScanDescInfo, approxSync, queueSize, odomSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(odomScanDesc, approxSync, queueSize, odomSub_, scanDescSub_);
|
SYNC_DECL2(CommonDataSubscriber, odomScanDesc, approxSync, queueSize, odomSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(scan2dTopic)
|
else if(scan2dTopic)
|
||||||
@@ -369,11 +369,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(odomScan2dInfo, approxSync, queueSize, odomSub_, scanSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomScan2dInfo, approxSync, queueSize, odomSub_, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(odomScan2d, approxSync, queueSize, odomSub_, scanSub_);
|
SYNC_DECL2(CommonDataSubscriber, odomScan2d, approxSync, queueSize, odomSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -382,11 +382,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(odomScan3dInfo, approxSync, queueSize, odomSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, odomScan3dInfo, approxSync, queueSize, odomSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(odomScan3d, approxSync, queueSize, odomSub_, scan3dSub_);
|
SYNC_DECL2(CommonDataSubscriber, odomScan3d, approxSync, queueSize, odomSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -401,11 +401,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(dataScanDescInfo, approxSync, queueSize, userDataSub_, scanDescSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, dataScanDescInfo, approxSync, queueSize, userDataSub_, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(dataScanDesc, approxSync, queueSize, userDataSub_, scanDescSub_);
|
SYNC_DECL2(CommonDataSubscriber, dataScanDesc, approxSync, queueSize, userDataSub_, scanDescSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(scan2dTopic)
|
else if(scan2dTopic)
|
||||||
@@ -418,7 +418,7 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(dataScan2d, approxSync, queueSize, userDataSub_, scanSub_);
|
SYNC_DECL2(CommonDataSubscriber, dataScan2d, approxSync, queueSize, userDataSub_, scanSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -427,11 +427,11 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL3(dataScan3dInfo, approxSync, queueSize, userDataSub_, scan3dSub_, odomInfoSub_);
|
SYNC_DECL3(CommonDataSubscriber, dataScan3dInfo, approxSync, queueSize, userDataSub_, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(dataScan3d, approxSync, queueSize, userDataSub_, scan3dSub_);
|
SYNC_DECL2(CommonDataSubscriber, dataScan3d, approxSync, queueSize, userDataSub_, scan3dSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -442,15 +442,15 @@ void CommonDataSubscriber::setupScanCallbacks(
|
|||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
if(scanDescTopic)
|
if(scanDescTopic)
|
||||||
{
|
{
|
||||||
SYNC_DECL2(scanDescInfo, approxSync, queueSize, scanDescSub_, odomInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, scanDescInfo, approxSync, queueSize, scanDescSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else if(scan2dTopic)
|
else if(scan2dTopic)
|
||||||
{
|
{
|
||||||
SYNC_DECL2(scan2dInfo, approxSync, queueSize, scanSub_, odomInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, scan2dInfo, approxSync, queueSize, scanSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL2(scan3dInfo, approxSync, queueSize, scan3dSub_, odomInfoSub_);
|
SYNC_DECL2(CommonDataSubscriber, scan3dInfo, approxSync, queueSize, scan3dSub_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -121,11 +121,11 @@ void CommonDataSubscriber::setupStereoCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL6(stereoOdomInfo, approxSync, queueSize, odomSub_, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_, odomInfoSub_);
|
SYNC_DECL6(CommonDataSubscriber, stereoOdomInfo, approxSync, queueSize, odomSub_, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL5(stereoOdom, approxSync, queueSize, odomSub_, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_);
|
SYNC_DECL5(CommonDataSubscriber, stereoOdom, approxSync, queueSize, odomSub_, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -134,11 +134,11 @@ void CommonDataSubscriber::setupStereoCallbacks(
|
|||||||
{
|
{
|
||||||
subscribedToOdomInfo_ = true;
|
subscribedToOdomInfo_ = true;
|
||||||
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
odomInfoSub_.subscribe(nh, "odom_info", queueSize);
|
||||||
SYNC_DECL5(stereoInfo, approxSync, queueSize, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_, odomInfoSub_);
|
SYNC_DECL5(CommonDataSubscriber, stereoInfo, approxSync, queueSize, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_, odomInfoSub_);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
SYNC_DECL4(stereo, approxSync, queueSize, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_);
|
SYNC_DECL4(CommonDataSubscriber, stereo, approxSync, queueSize, imageRectLeft_, imageRectRight_, cameraInfoLeft_, cameraInfoRight_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,307 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2010-2016, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Universite de Sherbrooke nor the
|
||||||
|
names of its contributors may be used to endorse or promote products
|
||||||
|
derived from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ros/ros.h>
|
||||||
|
#include <pluginlib/class_list_macros.h>
|
||||||
|
#include <nodelet/nodelet.h>
|
||||||
|
|
||||||
|
#include <message_filters/sync_policies/approximate_time.h>
|
||||||
|
#include <message_filters/sync_policies/exact_time.h>
|
||||||
|
#include <message_filters/subscriber.h>
|
||||||
|
|
||||||
|
#include <boost/thread.hpp>
|
||||||
|
|
||||||
|
#include "rtabmap_ros/RGBDImages.h"
|
||||||
|
#include "rtabmap_ros/CommonDataSubscriber.h"
|
||||||
|
|
||||||
|
namespace rtabmap_ros
|
||||||
|
{
|
||||||
|
|
||||||
|
class RGBDXSync : public nodelet::Nodelet
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RGBDXSync() :
|
||||||
|
warningThread_(0),
|
||||||
|
callbackCalled_(false),
|
||||||
|
SYNC_INIT(rgbd2),
|
||||||
|
SYNC_INIT(rgbd3),
|
||||||
|
SYNC_INIT(rgbd4),
|
||||||
|
SYNC_INIT(rgbd5),
|
||||||
|
SYNC_INIT(rgbd6),
|
||||||
|
SYNC_INIT(rgbd7),
|
||||||
|
SYNC_INIT(rgbd8)
|
||||||
|
{}
|
||||||
|
|
||||||
|
virtual ~RGBDXSync()
|
||||||
|
{
|
||||||
|
SYNC_DEL(rgbd2);
|
||||||
|
|
||||||
|
if(warningThread_)
|
||||||
|
{
|
||||||
|
callbackCalled_=true;
|
||||||
|
warningThread_->join();
|
||||||
|
delete warningThread_;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
virtual void onInit()
|
||||||
|
{
|
||||||
|
ros::NodeHandle & nh = getNodeHandle();
|
||||||
|
ros::NodeHandle & pnh = getPrivateNodeHandle();
|
||||||
|
|
||||||
|
int queueSize = 10;
|
||||||
|
bool approxSync = true;
|
||||||
|
int rgbdCameras = 2;
|
||||||
|
pnh.param("approx_sync", approxSync, approxSync);
|
||||||
|
pnh.param("queue_size", queueSize, queueSize);
|
||||||
|
pnh.param("rgbd_cameras", rgbdCameras, rgbdCameras);
|
||||||
|
|
||||||
|
NODELET_INFO("%s: approx_sync = %s", getName().c_str(), approxSync?"true":"false");
|
||||||
|
NODELET_INFO("%s: queue_size = %d", getName().c_str(), queueSize);
|
||||||
|
NODELET_INFO("%s: rgbd_cameras = %d", getName().c_str(), rgbdCameras);
|
||||||
|
|
||||||
|
rgbdImagesPub_ = nh.advertise<rtabmap_ros::RGBDImages>("rgbd_images", 1);
|
||||||
|
|
||||||
|
ROS_ASSERT(rgbdCameras>=2 && rgbdCameras<=8);
|
||||||
|
|
||||||
|
rgbdSubs_.resize(rgbdCameras);
|
||||||
|
for(int i=0; i<rgbdCameras; ++i)
|
||||||
|
{
|
||||||
|
rgbdSubs_[i] = new message_filters::Subscriber<rtabmap_ros::RGBDImage>;
|
||||||
|
rgbdSubs_[i]->subscribe(nh, uFormat("rgbd_image%d", i), queueSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string name_ = this->getName();
|
||||||
|
std::string subscribedTopicsMsg_;
|
||||||
|
if(rgbdCameras==2)
|
||||||
|
{
|
||||||
|
SYNC_DECL2(RGBDXSync, rgbd2, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==3)
|
||||||
|
{
|
||||||
|
SYNC_DECL3(RGBDXSync, rgbd3, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==4)
|
||||||
|
{
|
||||||
|
SYNC_DECL4(RGBDXSync, rgbd4, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==5)
|
||||||
|
{
|
||||||
|
SYNC_DECL5(RGBDXSync, rgbd5, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==6)
|
||||||
|
{
|
||||||
|
SYNC_DECL6(RGBDXSync, rgbd6, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==7)
|
||||||
|
{
|
||||||
|
SYNC_DECL7(RGBDXSync, rgbd7, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), (*rgbdSubs_[6]));
|
||||||
|
}
|
||||||
|
else if(rgbdCameras==8)
|
||||||
|
{
|
||||||
|
SYNC_DECL8(RGBDXSync, rgbd8, approxSync, queueSize, (*rgbdSubs_[0]), (*rgbdSubs_[1]), (*rgbdSubs_[2]), (*rgbdSubs_[3]), (*rgbdSubs_[4]), (*rgbdSubs_[5]), (*rgbdSubs_[6]), (*rgbdSubs_[7]));
|
||||||
|
}
|
||||||
|
|
||||||
|
warningThread_ = new boost::thread(boost::bind(&RGBDXSync::warningLoop, this, subscribedTopicsMsg_, approxSync));
|
||||||
|
NODELET_INFO("%s", subscribedTopicsMsg_.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
void warningLoop(const std::string & subscribedTopicsMsg, bool approxSync)
|
||||||
|
{
|
||||||
|
ros::Duration r(5.0);
|
||||||
|
while(!callbackCalled_)
|
||||||
|
{
|
||||||
|
r.sleep();
|
||||||
|
if(!callbackCalled_)
|
||||||
|
{
|
||||||
|
ROS_WARN("%s: Did not receive data since 5 seconds! Make sure the input topics are "
|
||||||
|
"published (\"$ rostopic hz my_topic\") and the timestamps in their "
|
||||||
|
"header are set. %s%s",
|
||||||
|
getName().c_str(),
|
||||||
|
approxSync?"":"Parameter \"approx_sync\" is false, which means that input "
|
||||||
|
"topics should have all the exact timestamp for the callback to be called.",
|
||||||
|
subscribedTopicsMsg.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DATA_SYNCS2(rgbd2, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS3(rgbd3, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS4(rgbd4, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS5(rgbd5, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS6(rgbd6, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS7(rgbd7, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
DATA_SYNCS8(rgbd8, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage, rtabmap_ros::RGBDImage);
|
||||||
|
|
||||||
|
private:
|
||||||
|
boost::thread * warningThread_;
|
||||||
|
bool callbackCalled_;
|
||||||
|
|
||||||
|
ros::Publisher rgbdImagesPub_;
|
||||||
|
|
||||||
|
std::vector<message_filters::Subscriber<rtabmap_ros::RGBDImage>*> rgbdSubs_;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd2Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(2);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd3Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(3);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd4Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image3)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(4);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
output.rgbd_images[3]=(*image3);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd5Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image3,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image4)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(5);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
output.rgbd_images[3]=(*image3);
|
||||||
|
output.rgbd_images[4]=(*image4);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd6Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image3,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image4,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image5)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(6);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
output.rgbd_images[3]=(*image3);
|
||||||
|
output.rgbd_images[4]=(*image4);
|
||||||
|
output.rgbd_images[5]=(*image5);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd7Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image3,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image4,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image5,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image6)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(7);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
output.rgbd_images[3]=(*image3);
|
||||||
|
output.rgbd_images[4]=(*image4);
|
||||||
|
output.rgbd_images[5]=(*image5);
|
||||||
|
output.rgbd_images[6]=(*image6);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBDXSync::rgbd8Callback(
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image0,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image1,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image2,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image3,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image4,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image5,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image6,
|
||||||
|
const rtabmap_ros::RGBDImageConstPtr& image7)
|
||||||
|
{
|
||||||
|
callbackCalled_ = true;
|
||||||
|
rtabmap_ros::RGBDImages output;
|
||||||
|
output.header = image0->header;
|
||||||
|
output.rgbd_images.resize(8);
|
||||||
|
output.rgbd_images[0]=(*image0);
|
||||||
|
output.rgbd_images[1]=(*image1);
|
||||||
|
output.rgbd_images[2]=(*image2);
|
||||||
|
output.rgbd_images[3]=(*image3);
|
||||||
|
output.rgbd_images[4]=(*image4);
|
||||||
|
output.rgbd_images[5]=(*image5);
|
||||||
|
output.rgbd_images[6]=(*image6);
|
||||||
|
output.rgbd_images[7]=(*image7);
|
||||||
|
rgbdImagesPub_.publish(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
PLUGINLIB_EXPORT_CLASS(rtabmap_ros::RGBDXSync, nodelet::Nodelet);
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user