Rosanswers logo


I’m trying to create a subscriber using python for this package, following the tutorials that ros provide. The package already contains a subscriber in c++. It uses geometry_msgs/Twist.h

I just want to publish in terminal the values from x, y, width and height. However when I run the code I receive nothing.

This is the code that Im using

 #!/usr/bin/env python
 import rospy
 from geometry_msgs.msg import Twist

 def callback(data):
   rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)

 def listener():

# In ROS, nodes are uniquely named. If two nodes with the same
# node are launched, the previous one is kicked off. The
# anonymous=True flag means that rospy will choose a unique
# name for our 'listener' node so that multiple listeners can
# run simultaneously.
    rospy.init_node('listener', anonymous=True)

    rospy.Subscriber("commands", Twist, callback)

  # spin() simply keeps python from exiting until this node is stopped

 if __name__ == '__main__':

Hope you could give me a hand thanks

Originally posted by G212 on ROS Answers with karma: 5 on 2016-01-11

Post score: 0

Original comments

Comment by nickw on 2016-01-11:
Check the format of the commands topic - is it a Twist message


1 Answer 1


Rosanswers logo

The Twist message as no field named data. I know that you took this example from the python tutorial on subscribers. That tutorial use a String.msg as you can see this as a field named data. The Twist.msg as two data fields, linear and angular. which are Vector3.msg which contain 3 float64 numbers. So to clear it up to get the 'X' value, you would do the following.


Originally posted by ngoldfarb with karma: 127 on 2016-01-11

This answer was ACCEPTED on the original site

Post score: 2

Original comments

Comment by s.vaichu on 2019-05-14:
thanks a lot, it really helped me


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.