ROS中的订阅者错误

时间:2014-06-19 16:17:59

标签: boost publish-subscribe ros

这是我的订阅者声明,后跟回调函数

 message_filters::Subscriber<geometry_msgs::Point32>
point_sub(*nh, "tracked_point", 1);
    point_sub.registerCallback(&visualservoing3D::pointCallback);

回调声明是

void
visualservoing3D::pointCallback(const geometry_msgs::Point32ConstPtr& msg) 
{
    //Some functions 
}

但弹出以下错误。我知道它与我的订户有关。

/usr/include/boost/function/function_template.hpp:225:
error: no match for call to
‘(boost::_mfi::mf1<void,
visualservoing3D, const
boost::shared_ptr<const
geometry_msgs::Point32_<std::allocator<void>
> >&>) (const boost::shared_ptr<const geometry_msgs::Point32_<std::allocator<void>
>&)’

谢谢,

Nagsaver

1 个答案:

答案 0 :(得分:1)

point_sub.registerCallback(&visualservoing3D::pointCallback);

您需要将非静态成员函数绑定到对象实例:

#include <boost/bind.hpp>

point_sub.registerCallback(boost::bind(&visualservoing3D::pointCallback, p_vs, _1));

其中p_vs是指向visualservoing3D对象的(共享)指针。如果您需要/希望绑定到引用,请使用boost::ref(vs)