在使用message_filters
做传感器融合时,在sync->registerCallback
中的boost::bind
出现报错
image_sub_left = new message_filters::Subscriber<sensor_msgs::Image>(nh_, "/mynteye/left/image_color",1,ros::TransportHints().tcpNoDelay());
image_sub_right = new message_filters::Subscriber<sensor_msgs::Image>(nh_, "/mynteye/right/image_color",1,ros::TransportHints().tcpNoDelay());
sync = new Synchronizer<syncPolicy> (syncPolicy(10), *image_sub_left, *image_sub_right);
sync->registerCallback(boost::bind(&mynteye::imageCallback,this, _1, _2));
出现以下报错
/usr/include/boost/bind/bind.hpp:392:35: error: no match for call to ‘(boost::_mfi::mf2<void, mynteye, const sensor_msgs::Image_<std::allocator<void> >&, const sensor_msgs::Image_<std::allocator<void> >&>) (mynteye*&, const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&, const boost::shared_ptr<const sensor_msgs::Image_<std::allocator<void> > >&)’
这是由于回调函数中的形参类型错误
导致错误的代码:
void imageCallback(const sensor_msgs::Image &left, const sensor_msgs::Image &right);
这里需要把sensor_msgs::Image
改为sensor_msgs::ImageConstPtr
即可
void imageCallback(const sensor_msgs::ImageConstPtr &left, const sensor_msgs::ImageConstPtr &right);