merged master->ros2 (diagnostics, #1046)

This commit is contained in:
matlabbe
2023-10-14 15:22:56 -07:00
34 changed files with 393 additions and 288 deletions
+25 -46
View File
@@ -31,10 +31,9 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
CommonDataSubscriber::CommonDataSubscriber(rclcpp::Node & node, bool gui) :
SyncDiagnostic(&node, 0.5),
queueSize_(10),
approxSync_(true),
warningThread_(0),
callbackCalled_(false),
subscribedToDepth_(!gui),
subscribedToStereo_(false),
subscribedToRGB_(!gui),
@@ -510,21 +509,8 @@ void CommonDataSubscriber::setupCallbacks(rclcpp::Node & node)
}
else if(subscribedToRGBD_)
{
if(rgbdCameras_ == 0)
{
setupRGBDXCallbacks(
node,
subscribedToOdom_,
subscribedToUserData_,
subscribedToScan2d_,
subscribedToScan3d_,
subscribedToScanDescriptor_,
subscribedToOdomInfo_,
queueSize_,
approxSync_);
}
#ifdef RTABMAP_SYNC_MULTI_RGBD
else if(rgbdCameras_ >= 6)
if(rgbdCameras_ >= 6)
{
if(rgbdCameras_ > 6)
{
@@ -605,6 +591,19 @@ void CommonDataSubscriber::setupCallbacks(rclcpp::Node & node)
"but you will have to synchronize RGBDImage topics yourself.");
}
#endif
else if(rgbdCameras_ == 0)
{
setupRGBDXCallbacks(
node,
subscribedToOdom_,
subscribedToUserData_,
subscribedToScan2d_,
subscribedToScan3d_,
subscribedToScanDescriptor_,
subscribedToOdomInfo_,
queueSize_,
approxSync_);
}
else
{
setupRGBDCallbacks(
@@ -643,40 +642,22 @@ void CommonDataSubscriber::setupCallbacks(rclcpp::Node & node)
if(subscribedToDepth_ || subscribedToStereo_ || subscribedToRGBD_ || subscribedToScan2d_ || subscribedToScan3d_ || subscribedToScanDescriptor_ || subscribedToRGB_ || subscribedToOdom_)
{
warningThread_ = new std::thread([&](){
rclcpp::Rate r(1/5.0);
while(!callbackCalled_)
{
r.sleep();
if(!callbackCalled_)
{
RCLCPP_WARN(node.get_logger(),
"%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. If topics are coming from different computers, make sure "
"the clocks of the computers are synchronized (\"ntpdate\"). If topics are "
"not published at the same rate, you could increase \"queue_size\" parameter "
"(current=%d). %s%s",
name_.c_str(),
queueSize_,
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());
}
}
});
RCLCPP_INFO(node.get_logger(), "%s", subscribedTopicsMsg_.c_str());
initDiagnostic("",
uFormat("%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. If topics are coming from different computers, make sure "
"the clocks of the computers are synchronized (\"ntpdate\"). %s%s",
name_.c_str(),
approxSync_?
uFormat("If topics are not published at the same rate, you could increase \"queue_size\" parameter (current=%d).", queueSize_).c_str():
"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()));
}
}
CommonDataSubscriber::~CommonDataSubscriber()
{
if(warningThread_)
{
callbackCalled();
warningThread_->join();
delete warningThread_;
}
// RGB + Depth
SYNC_DEL(depth);
SYNC_DEL(depthScan2d);
@@ -1007,8 +988,6 @@ void CommonDataSubscriber::commonSingleCameraCallback(
const std::vector<rtabmap_msgs::msg::Point3f> & localPoints3d,
const cv::Mat & localDescriptors)
{
callbackCalled();
std::vector<std::vector<rtabmap_msgs::msg::KeyPoint> > localKeyPointsMsgs;
localKeyPointsMsgs.push_back(localKeyPoints);
std::vector<std::vector<rtabmap_msgs::msg::Point3f> > localPoints3dMsgs;
@@ -32,7 +32,6 @@ namespace rtabmap_sync {
void CommonDataSubscriber::odomCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
sensor_msgs::msg::PointCloud2::SharedPtr scan3dMsg; // Null
rtabmap_msgs::msg::OdomInfo::SharedPtr odomInfoMsg; // null
@@ -42,7 +41,6 @@ void CommonDataSubscriber::odomInfoCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan::SharedPtr scan2dMsg; // Null
commonOdomCallback(odomMsg, userDataMsg, odomInfoMsg);
@@ -52,7 +50,6 @@ void CommonDataSubscriber::odomDataCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg,
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg)
{
callbackCalled();
rtabmap_msgs::msg::OdomInfo::SharedPtr odomInfoMsg; // null
commonOdomCallback(odomMsg, userDataMsg, odomInfoMsg);
}
@@ -61,7 +58,6 @@ void CommonDataSubscriber::odomDataInfoCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
sensor_msgs::msg::PointCloud2::SharedPtr scan3dMsg; // Null
commonOdomCallback(odomMsg, userDataMsg, odomInfoMsg);
}
@@ -34,7 +34,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
#define IMAGE_CONVERSION() \
callbackCalled(); \
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(2); \
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(2); \
rtabmap_conversions::toCvShare(image1Msg, imageMsgs[0], depthMsgs[0]); \
@@ -34,7 +34,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
#define IMAGE_CONVERSION() \
callbackCalled(); \
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(3); \
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(3); \
rtabmap_conversions::toCvShare(image1Msg, imageMsgs[0], depthMsgs[0]); \
@@ -34,7 +34,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
#define IMAGE_CONVERSION() \
callbackCalled(); \
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(4); \
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(4); \
rtabmap_conversions::toCvShare(image1Msg, imageMsgs[0], depthMsgs[0]); \
@@ -34,7 +34,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
#define IMAGE_CONVERSION() \
callbackCalled(); \
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(5); \
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(5); \
rtabmap_conversions::toCvShare(image1Msg, imageMsgs[0], depthMsgs[0]); \
@@ -34,7 +34,6 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
namespace rtabmap_sync {
#define IMAGE_CONVERSION() \
callbackCalled(); \
std::vector<cv_bridge::CvImageConstPtr> imageMsgs(6); \
std::vector<cv_bridge::CvImageConstPtr> depthMsgs(6); \
rtabmap_conversions::toCvShare(image1Msg, imageMsgs[0], depthMsgs[0]); \
@@ -35,7 +35,6 @@ namespace rtabmap_sync {
#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::msg::CameraInfo> cameraInfoMsgs; \
@@ -32,7 +32,6 @@ namespace rtabmap_sync {
void CommonDataSubscriber::scan2dCallback(
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
@@ -42,7 +41,6 @@ void CommonDataSubscriber::scan2dCallback(
void CommonDataSubscriber::scan3dCallback(
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
@@ -52,7 +50,6 @@ void CommonDataSubscriber::scan3dCallback(
void CommonDataSubscriber::scanDescCallback(
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
@@ -62,7 +59,6 @@ void CommonDataSubscriber::scan2dInfoCallback(
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
@@ -72,7 +68,6 @@ void CommonDataSubscriber::scan3dInfoCallback(
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
@@ -82,7 +77,6 @@ void CommonDataSubscriber::scanDescInfoCallback(
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // Null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
@@ -92,7 +86,6 @@ void CommonDataSubscriber::odomScan2dCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg,
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
@@ -102,7 +95,6 @@ void CommonDataSubscriber::odomScan3dCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg,
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
@@ -112,7 +104,6 @@ void CommonDataSubscriber::odomScanDescCallback(
const nav_msgs::msg::Odometry::ConstSharedPtr odomMsg,
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
@@ -122,7 +113,6 @@ void CommonDataSubscriber::odomScan2dInfoCallback(
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, *scanMsg, scan3dMsg, odomInfoMsg);
@@ -132,7 +122,6 @@ void CommonDataSubscriber::odomScan3dInfoCallback(
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
commonLaserScanCallback(odomMsg, userDataMsg, scan2dMsg, *scanMsg, odomInfoMsg);
@@ -142,7 +131,6 @@ void CommonDataSubscriber::odomScanDescInfoCallback(
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg; // Null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
}
@@ -152,7 +140,6 @@ void CommonDataSubscriber::dataScan2dCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
@@ -162,7 +149,6 @@ void CommonDataSubscriber::dataScan3dCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
@@ -172,7 +158,6 @@ void CommonDataSubscriber::dataScanDescCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
@@ -182,7 +167,6 @@ void CommonDataSubscriber::dataScan2dInfoCallback(
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, *scanMsg, scan3dMsg, odomInfoMsg);
@@ -192,7 +176,6 @@ void CommonDataSubscriber::dataScan3dInfoCallback(
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
commonLaserScanCallback(odomMsg, userDataMsg, scan2dMsg, *scanMsg, odomInfoMsg);
@@ -202,7 +185,6 @@ void CommonDataSubscriber::dataScanDescInfoCallback(
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::ConstSharedPtr odomMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
}
@@ -212,7 +194,6 @@ void CommonDataSubscriber::odomDataScan2dCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg)
{
callbackCalled();
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, *scanMsg, scan3dMsg, odomInfoMsg);
@@ -222,7 +203,6 @@ void CommonDataSubscriber::odomDataScan3dCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg)
{
callbackCalled();
sensor_msgs::msg::LaserScan scan2dMsg; // Null
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, scan2dMsg, *scanMsg, odomInfoMsg);
@@ -232,7 +212,6 @@ void CommonDataSubscriber::odomDataScanDescCallback(
const rtabmap_msgs::msg::UserData::ConstSharedPtr userDataMsg,
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg)
{
callbackCalled();
rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
}
@@ -242,7 +221,6 @@ void CommonDataSubscriber::odomDataScan2dInfoCallback(
const sensor_msgs::msg::LaserScan::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
sensor_msgs::msg::PointCloud2 scan3dMsg; // null
commonLaserScanCallback(odomMsg, userDataMsg, *scanMsg, scan3dMsg, odomInfoMsg);
}
@@ -252,7 +230,6 @@ void CommonDataSubscriber::odomDataScan3dInfoCallback(
const sensor_msgs::msg::PointCloud2::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
sensor_msgs::msg::LaserScan scan2dMsg; // Null
commonLaserScanCallback(odomMsg, userDataMsg, scan2dMsg, *scanMsg, odomInfoMsg);
}
@@ -262,7 +239,6 @@ void CommonDataSubscriber::odomDataScanDescInfoCallback(
const rtabmap_msgs::msg::ScanDescriptor::ConstSharedPtr scanMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
commonLaserScanCallback(odomMsg, userDataMsg, scanMsg->scan, scanMsg->scan_cloud, odomInfoMsg, scanMsg->global_descriptor);
}
#endif
@@ -32,9 +32,9 @@ namespace rtabmap_sync {
// Stereo
void CommonDataSubscriber::stereoCallback(
const sensor_msgs::msg::Image::ConstSharedPtr leftImageMsg,
const sensor_msgs::msg::Image::ConstSharedPtr rightImageMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr leftCamInfoMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg)
const sensor_msgs::msg::Image::ConstSharedPtr rightImageMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr leftCamInfoMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg)
{
nav_msgs::msg::Odometry::SharedPtr odomMsg; // Null
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
@@ -45,12 +45,11 @@ void CommonDataSubscriber::stereoCallback(
}
void CommonDataSubscriber::stereoInfoCallback(
const sensor_msgs::msg::Image::ConstSharedPtr leftImageMsg,
const sensor_msgs::msg::Image::ConstSharedPtr rightImageMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr leftCamInfoMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
const sensor_msgs::msg::Image::ConstSharedPtr rightImageMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr leftCamInfoMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
nav_msgs::msg::Odometry::SharedPtr odomMsg; // Null
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
@@ -66,7 +65,6 @@ void CommonDataSubscriber::stereoOdomCallback(
const sensor_msgs::msg::CameraInfo::ConstSharedPtr leftCamInfoMsg,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan scanMsg; // null
sensor_msgs::msg::PointCloud2 scan3dMsg; // Null
@@ -81,7 +79,6 @@ void CommonDataSubscriber::stereoOdomInfoCallback(
const sensor_msgs::msg::CameraInfo::ConstSharedPtr rightCamInfoMsg,
const rtabmap_msgs::msg::OdomInfo::ConstSharedPtr odomInfoMsg)
{
callbackCalled();
rtabmap_msgs::msg::UserData::SharedPtr userDataMsg; // Null
sensor_msgs::msg::LaserScan scan2dMsg; // Null
sensor_msgs::msg::PointCloud2 scan3dMsg; // Null
+12 -30
View File
@@ -43,9 +43,8 @@ namespace rtabmap_sync
RGBSync::RGBSync(const rclcpp::NodeOptions & options) :
Node("rgbd_sync", options),
SyncDiagnostic(this),
compressedRate_(0),
warningThread_(0),
callbackCalled_(false),
approxSync_(0),
exactSync_(0)
{
@@ -88,33 +87,23 @@ RGBSync::RGBSync(const rclcpp::NodeOptions & options) :
imageSub_.subscribe(this, "rgb/image", hints.getTransport(), rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qos).get_rmw_qos_profile());
cameraInfoSub_.subscribe(this, "rgb/camera_info", rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qosCaminfo).get_rmw_qos_profile());
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s",
std::string subscribedTopicsMsg = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s",
get_name(),
approxSync?"approx":"exact",
approxSync&&approxSyncMaxInterval!=std::numeric_limits<double>::max()?uFormat(", max interval=%fs", approxSyncMaxInterval).c_str():"",
imageSub_.getSubscriber().getTopic().c_str(),
cameraInfoSub_.getSubscriber()->get_topic_name());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg_.c_str());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg.c_str());
warningThread_ = new std::thread([&](){
rclcpp::Rate r(1/5.0);
while(!callbackCalled_)
{
r.sleep();
if(!callbackCalled_)
{
RCLCPP_WARN(this->get_logger(),
"%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. %s%s",
this->get_name(),
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());
}
}
});
initDiagnostic(imageSub_.getSubscriber().getTopic(),
uFormat("%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. %s%s",
this->get_name(),
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()));
}
@@ -124,20 +113,13 @@ RGBSync::~RGBSync()
delete approxSync_;
if(exactSync_)
delete exactSync_;
if(warningThread_)
{
callbackCalled_=true;
warningThread_->join();
delete warningThread_;
}
}
void RGBSync::callback(
const sensor_msgs::msg::Image::ConstSharedPtr image,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr cameraInfo)
{
callbackCalled_ = true;
tick(image->header.stamp);
if(rgbdImagePub_->get_subscription_count() || rgbdImageCompressedPub_->get_subscription_count())
{
double stamp = rtabmap_conversions::timestampFromROS(image->header.stamp);
+9 -23
View File
@@ -43,11 +43,10 @@ namespace rtabmap_sync
RGBDSync::RGBDSync(const rclcpp::NodeOptions & options) :
Node("rgbd_sync", options),
SyncDiagnostic(this),
depthScale_(1.0),
decimation_(1),
compressedRate_(0),
warningThread_(0),
callbackCalled_(false),
approxSyncDepth_(0),
exactSyncDepth_(0)
{
@@ -100,7 +99,7 @@ RGBDSync::RGBDSync(const rclcpp::NodeOptions & options) :
imageDepthSub_.subscribe(this, "depth/image", hints.getTransport(), rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qos).get_rmw_qos_profile());
cameraInfoSub_.subscribe(this, "rgb/camera_info", rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qosCamInfo).get_rmw_qos_profile());
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s,\n %s",
std::string subscribedTopicsMsg = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s,\n %s",
get_name(),
approxSync?"approx":"exact",
approxSync&&approxSyncMaxInterval!=0.0?uFormat(", max interval=%fs", approxSyncMaxInterval).c_str():"",
@@ -108,35 +107,22 @@ RGBDSync::RGBDSync(const rclcpp::NodeOptions & options) :
imageDepthSub_.getSubscriber().getTopic().c_str(),
cameraInfoSub_.getSubscriber()->get_topic_name());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg_.c_str());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg.c_str());
warningThread_ = new std::thread([&](){
rclcpp::Rate r(1/5.0);
while(!callbackCalled_)
{
r.sleep();
if(!callbackCalled_)
{
RCLCPP_WARN(this->get_logger(),
"%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
initDiagnostic(imageSub_.getSubscriber().getTopic(),
uFormat("%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",
this->get_name(),
get_name(),
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());
}
}
});
subscribedTopicsMsg.c_str()));
}
RGBDSync::~RGBDSync()
{
delete approxSyncDepth_;
delete exactSyncDepth_;
callbackCalled_ = true;
warningThread_->join();
delete warningThread_;
}
void RGBDSync::callback(
@@ -144,7 +130,7 @@ void RGBDSync::callback(
const sensor_msgs::msg::Image::ConstSharedPtr depth,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr cameraInfo)
{
callbackCalled_ = true;
tick(image->header.stamp);
if(rgbdImagePub_->get_subscription_count() || rgbdImageCompressedPub_->get_subscription_count())
{
double rgbStamp = rtabmap_conversions::timestampFromROS(image->header.stamp);
+18 -35
View File
@@ -34,15 +34,14 @@ namespace rtabmap_sync
RGBDXSync::RGBDXSync(const rclcpp::NodeOptions & options) :
Node("rgbd_sync", options),
SyncDiagnostic(this),
SYNC_INIT(rgbd2),
SYNC_INIT(rgbd3),
SYNC_INIT(rgbd4),
SYNC_INIT(rgbd5),
SYNC_INIT(rgbd6),
SYNC_INIT(rgbd7),
SYNC_INIT(rgbd8),
warningThread_(0),
callbackCalled_(false)
SYNC_INIT(rgbd8)
{
int queueSize = 10;
bool approxSync = true;
@@ -135,24 +134,15 @@ RGBDXSync::RGBDXSync(const rclcpp::NodeOptions & options) :
RCLCPP_INFO(this->get_logger(), "%s%s", subscribedTopicsMsg_.c_str(),
approxSync&&approxSyncMaxInterval!=0.0?uFormat(" (approx sync max interval=%fs)", approxSyncMaxInterval).c_str():"");
warningThread_ = new std::thread([&](){
rclcpp::Rate r(1/5.0);
while(!callbackCalled_)
{
r.sleep();
if(!callbackCalled_)
{
RCLCPP_WARN(this->get_logger(),
"%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. %s%s",
this->get_name(),
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());
}
}
});
// Setup diagnostic
initDiagnostic("",
uFormat("%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",
get_name(),
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()));
}
RGBDXSync::~RGBDXSync()
@@ -164,20 +154,13 @@ RGBDXSync::~RGBDXSync()
SYNC_DEL(rgbd6);
SYNC_DEL(rgbd7);
SYNC_DEL(rgbd8);
if(warningThread_)
{
callbackCalled_=true;
warningThread_->join();
delete warningThread_;
}
}
void RGBDXSync::rgbd2Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image0,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image1)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(2);
@@ -191,7 +174,7 @@ void RGBDXSync::rgbd3Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image1,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image2)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(3);
@@ -207,7 +190,7 @@ void RGBDXSync::rgbd4Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image2,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image3)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(4);
@@ -225,7 +208,7 @@ void RGBDXSync::rgbd5Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image3,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image4)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(5);
@@ -245,7 +228,7 @@ void RGBDXSync::rgbd6Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image4,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image5)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(6);
@@ -267,7 +250,7 @@ void RGBDXSync::rgbd7Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image5,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image6)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(7);
@@ -291,7 +274,7 @@ void RGBDXSync::rgbd8Callback(
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image6,
const rtabmap_msgs::msg::RGBDImage::ConstSharedPtr image7)
{
callbackCalled_ = true;
tick(image0->header.stamp);
rtabmap_msgs::msg::RGBDImages output;
output.header = image0->header;
output.rgbd_images.resize(8);
+12 -27
View File
@@ -42,9 +42,8 @@ namespace rtabmap_sync
StereoSync::StereoSync(const rclcpp::NodeOptions & options) :
Node("stereo_sync", options),
SyncDiagnostic(this),
compressedRate_(0),
warningThread_(0),
callbackCalled_(false),
approxSync_(0),
exactSync_(0)
{
@@ -88,7 +87,7 @@ StereoSync::StereoSync(const rclcpp::NodeOptions & options) :
cameraInfoLeftSub_.subscribe(this, "left/camera_info"), rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qosCamInfo).get_rmw_qos_profile();
cameraInfoRightSub_.subscribe(this, "right/camera_info", rclcpp::QoS(1).reliability((rmw_qos_reliability_policy_t)qosCamInfo).get_rmw_qos_profile());
subscribedTopicsMsg_ = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s,\n %s,\n %s",
std::string subscribedTopicsMsg = uFormat("\n%s subscribed to (%s sync%s):\n %s,\n %s,\n %s,\n %s",
get_name(),
approxSync?"approx":"exact",
approxSync&&approxSyncMaxInterval!=0.0?uFormat(", max interval=%fs", approxSyncMaxInterval).c_str():"",
@@ -97,36 +96,22 @@ StereoSync::StereoSync(const rclcpp::NodeOptions & options) :
cameraInfoLeftSub_.getSubscriber()->get_topic_name(),
cameraInfoRightSub_.getSubscriber()->get_topic_name());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg_.c_str());
RCLCPP_INFO(this->get_logger(), "%s", subscribedTopicsMsg.c_str());
warningThread_ = new std::thread([&](){
rclcpp::Rate r(1/5.0);
while(!callbackCalled_)
{
r.sleep();
if(!callbackCalled_)
{
RCLCPP_WARN(this->get_logger(),
"%s: Did not receive data since 5 seconds! Make sure the input topics are "
"published (\"$ ros2 topic hz my_topic\") and the timestamps in their "
"header are set. %s%s",
get_name(),
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());
}
}
});
initDiagnostic(imageLeftSub_.getSubscriber().getTopic(),
uFormat("%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",
get_name(),
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()));
}
StereoSync::~StereoSync()
{
delete approxSync_;
delete exactSync_;
callbackCalled_=true;
warningThread_->join();
delete warningThread_;
}
void StereoSync::callback(
@@ -135,7 +120,7 @@ void StereoSync::callback(
const sensor_msgs::msg::CameraInfo::ConstSharedPtr cameraInfoLeft,
const sensor_msgs::msg::CameraInfo::ConstSharedPtr cameraInfoRight)
{
callbackCalled_ = true;
tick(imageLeft->header.stamp);
if(rgbdImagePub_->get_subscription_count() || rgbdImageCompressedPub_->get_subscription_count())
{
double leftStamp = rtabmap_conversions::timestampFromROS(imageLeft->header.stamp);