image_proc not publishing image_rect data after synchronizing camera_info
I have a camera driver without the camerainfo topic. I am publishing this topic separately and synchronizing them with all the imageproc topics. I am getting data in imagemono and imagecolor but not in imagerect or imagerect_color topics. I am still getting a warning for non-synchronization.
[ WARN] [1512057285.359548566]: [image_transport] Topics '/camera/0/0/image_color' and '/camera/0/0/camera_info' do not appear to be synchronized. In the last 10s:
Image messages received: 297
CameraInfo messages received: 300
Synchronized pairs: 0
Below is the sync node.
#include <message_filters/subscriber.h>
#include <message_filters/synchronizer.h>
#include <message_filters/sync_policies/approximate_time.h>
#include <sensor_msgs/Image.h>
#include <sensor_msgs/CameraInfo.h>
#include <ros/callback_queue.h>
#include <boost/bind.hpp>
using namespace sensor_msgs;
using namespace message_filters;
ros::Publisher image_raw_pub;
ros::Publisher image_mono_pub;
ros::Publisher image_color_pub;
ros::Publisher image_rect_pub;
ros::Publisher image_rect_color_pub;
ros::Publisher camera_info_pub;
void callback(const Image::ConstPtr& image1, const Image::ConstPtr& image2, const Image::ConstPtr& image3, const Image::ConstPtr& image4, const Image::ConstPtr& image5, const CameraInfo::ConstPtr& info)
{
// Solve all of perception here...
ROS_INFO("Sync_Callback");
image_raw_pub.publish(image1);
image_mono_pub.publish(image2);
image_color_pub.publish(image3);
image_rect_pub.publish(image4);
image_rect_color_pub.publish(image5);
camera_info_pub.publish(info);
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "camera_info_node");
std::string img_raw_topic = "/camera/0/0/image_raw";
std::string img_mono_topic = "/camera/0/0/image_mono";
std::string img_color_topic = "/camera/0/0/image_color";
std::string img_rect_topic = "/camera/0/0/image_rect";
std::string img_rect_color_topic = "/camera/0/0/image_rect_color";
std::string camera_info_topic = "/camera/0/0/camera_info";
ros::NodeHandle nh;
message_filters::Subscriber<Image> image_raw_sub(nh, img_raw_topic, 100);
message_filters::Subscriber<Image> image_mono_sub(nh, img_mono_topic, 100);
message_filters::Subscriber<Image> image_color_sub(nh, img_color_topic, 100);
message_filters::Subscriber<Image> image_rect_sub(nh, img_rect_topic, 100);
message_filters::Subscriber<Image> image_rect_color_sub(nh, img_rect_color_topic, 100);
message_filters::Subscriber<CameraInfo> camera_info_sub(nh, camera_info_topic, 100);
image_raw_pub = nh.advertise<Image>(img_raw_topic, 1000);
image_mono_pub = nh.advertise<Image>(img_mono_topic, 1000);
image_color_pub = nh.advertise<Image>(img_color_topic, 1000);
image_rect_pub = nh.advertise<Image>(img_rect_topic, 1000);
image_rect_color_pub = nh.advertise<Image>(img_rect_color_topic, 1000);
camera_info_pub = nh.advertise<CameraInfo>(camera_info_topic, 1000);
typedef sync_policies::ApproximateTime<Image, Image, Image, Image, Image, CameraInfo> MySyncPolicy;
// ApproximateTime takes a queue size as its constructor argument, hence MySyncPolicy(10)
Synchronizer<MySyncPolicy> sync(MySyncPolicy(10), image_raw_sub, image_mono_sub, image_color_sub, image_rect_sub, image_rect_color_sub, camera_info_sub);
sync.registerCallback(boost::bind(&callback, _1, _2, _3, _4, _5, _6));
ros::spin();
return 0;
}
EDIT:
On synchronizing only imageraw, imagemono and camerainfo, the warning message is removed. However, the imagerect and imagerectcolor still does not publish anything. Note: The two topics are being subscribed but no messages are being published.
Asked by agog on 2017-11-30 11:17:36 UTC
Comments
I am facing the same issue with image_proc node
Asked by Nikhil_1001 on 2021-07-30 02:58:14 UTC
Hi, did you manage to solve this issue?
Asked by ThreeForElvenKings on 2022-05-01 12:30:36 UTC