ROS:assine função não reconhece o meu método de retorno de chamada
-
13-11-2019 - |
Pergunta
Eu estou recebendo este erro "erro:sem a correspondente função de chamada para ‘ros::NodeHandle::subscribe(const char [24], int, <unresolved overloaded function type>)’
Esta é a minha função de retorno de chamada na minha classe BangBangControlUnit
// on message reciept: 'current_maintained_temp'
void current_maintained_temp_callback(const std_msgs::Int32::ConstPtr& msg){
temp_to_maintain = msg->data;
}
e isso é como eu estou usando subscrever na minha função principal
// subscribe to 'current_maintained_temp'
ros::Subscriber current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, control.current_maintained_temp_callback);
alguém pode me dizer o que eu fiz de errado?
Solução
A assinatura apropriada para a criação de um assinante com um método de classe como de retorno de chamada é o seguinte:
ros::Subscriber sub = nh.subscribe("my_topic", 1, &Foo::callback, &foo_object);
Assim, no seu caso, você deve usar:
current_maintained_temp_sub = n.subscribe("current_maintained_temp", 1000, &BangBangControlUnit::current_maintained_temp_callback, &control);
Você pode ler mais sobre os editores e os assinantes em C++ aqui.