mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-07 18:27: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:
@@ -163,6 +163,34 @@ CommonDataSubscriber::CommonDataSubscriber(bool gui) :
|
||||
SYNC_INIT(rgbdOdomDataScanDesc),
|
||||
SYNC_INIT(rgbdOdomDataInfo),
|
||||
#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
|
||||
// 2 RGBD
|
||||
@@ -438,11 +466,6 @@ void CommonDataSubscriber::setupCallbacks(
|
||||
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_rgb = %s", name.c_str(), subscribedToRGB_?"true":"false");
|
||||
ROS_INFO("%s: subscribe_stereo = %s", name.c_str(), subscribedToStereo_?"true":"false");
|
||||
@@ -496,9 +519,30 @@ void CommonDataSubscriber::setupCallbacks(
|
||||
}
|
||||
else if(subscribedToRGBD_)
|
||||
{
|
||||
#ifdef RTABMAP_SYNC_MULTI_RGBD
|
||||
if(rgbdCameras == 6)
|
||||
if(rgbdCameras == 0)
|
||||
{
|
||||
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(
|
||||
nh,
|
||||
pnh,
|
||||
@@ -570,7 +614,10 @@ void CommonDataSubscriber::setupCallbacks(
|
||||
#else
|
||||
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
|
||||
else
|
||||
@@ -749,6 +796,35 @@ CommonDataSubscriber::~CommonDataSubscriber()
|
||||
SYNC_DEL(rgbdOdomDataInfo);
|
||||
#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
|
||||
// 2 RGBD
|
||||
SYNC_DEL(rgbd2);
|
||||
|
||||
Reference in New Issue
Block a user