ロス:サブスクライブ関数がコールバック メソッドを認識しない
-
13-11-2019 - |
質問
このエラーが表示されます。「エラー:呼び出しに一致する関数がありません ‘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);
誰か私が何を間違えたのか教えてもらえますか?
解決
クラス メソッドをコールバックとして使用してサブスクライバを作成するための適切なシグネチャは次のとおりです。
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++ のパブリッシャーとサブスクライバーについて詳しく読むことができます。 ここ.
所属していません StackOverflow