2016年10月26日水曜日

【備忘録】callbackでstd_msgs/Emptyの使い方を間違えたメモ

こんにちは。

ROSのcallbackを使う際に、特に受け取ったデータを使わないのでstd_msgs/Emptyを使ったら使い方を間違っていたので今後のためにメモ。

あるノードの開始を/hogestartで通知するのに、特に開始するという情報だけで情報自体は必要なかったので、std_msgs/Emptyを使ってこんな感じで書いてた。(途中省略)

from std_msgs.msg import Empty
...

subscribe ( "/hogestart" Empty, callback)
...

def callback(self):
    rospy.loginfo("start called")
    self._is_start = True


ためしにrosrunをした後、他のターミナルからトピックを送ると、以下のエラーが出て落ちてしまった。

TypeError:  callback() takes exactly 1 argument (2 given)


エラーメッセージから引数が違いそう、ということで、callbackの定義でselfだけでなく引数を以下のように追加したら 無事想定通り動きました。

def callback(self, data):



しょーもないミスでしたけど10分くらい悩んだのでメモがてら残しておきます。。

0 件のコメント:

コメントを投稿