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 that you have read and understand our privacy policy and code of conduct.