ROS:订阅功能无法识别我的回调方法

时间:2012-02-26 01:21:03

标签: c++ publish-subscribe robot ros

我收到此错误“错误:没有匹配函数来调用‘ros::NodeHandle::subscribe(const char [24], int, <unresolved overloaded function type>)’

这是我班级BangBangControlUnit中的回调功能

// on message reciept: 'current_maintained_temp' void current_maintained_temp_callback(const std_msgs::Int32::ConstPtr& msg){ temp_to_maintain = msg->data;
}

这就是我在主函数中使用subscribe的方式

// subscribe to 'current_maintained_temp' ros::Subscriber current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, control.current_maintained_temp_callback);

有人可以告诉我我做错了吗?

1 个答案:

答案 0 :(得分:7)

使用类方法作为回调创建订阅者的正确签名如下:

ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);

所以在你的情况下你应该使用:

current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, &BangBangControlUnit::current_maintained_temp_callback, &control);

您可以在C ++ here中详细了解发布商和订阅者。