Advertisement
ZdenekM

Untitled

Nov 29th, 2011
1,589
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.06 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import roslib
  4. roslib.load_manifest('cob_fit')
  5. import rospy
  6. import tf
  7. import tf.msg
  8. import geometry_msgs.msg
  9. import gazebo_msgs.srv
  10.  
  11. class FixedTFBroadcaster:
  12.  
  13.   def __init__(self):
  14.     self.pub_tf = rospy.Publisher("/tf", tf.msg.tfMessage)
  15.    
  16.     # publish transform from world to kitchen
  17.     t = geometry_msgs.msg.TransformStamped()
  18.     t.header.frame_id = "world"
  19.     t.header.stamp = rospy.Time.now()
  20.     t.child_frame_id = "/dummy_link"
  21.     t.transform.translation.x = 0.0
  22.     t.transform.translation.y = 0.0
  23.     t.transform.translation.z = 0.0
  24.  
  25.     t.transform.rotation.x = 0.0
  26.     t.transform.rotation.y = 0.0
  27.     t.transform.rotation.z = 0.0
  28.     t.transform.rotation.w = 1.0
  29.    
  30.     t2 = geometry_msgs.msg.TransformStamped()
  31.     t2.header.frame_id = "world"
  32.     t2.child_frame_id = "/base_footprint"
  33.    
  34.     r = rospy.Rate(10)
  35.    
  36.     while not rospy.is_shutdown():
  37.  
  38.       tfm = tf.msg.tfMessage([t])
  39.       self.pub_tf.publish(tfm)
  40.      
  41.       try:      
  42.         response=model_state('cob3','world')
  43.       except rospy.ServiceException, e:
  44.         rospy.loginfo("Service call failed: %s", e)
  45.            
  46.       if response.success:
  47.            
  48.         # transform from world to cabinet
  49.  
  50.         t2.header.stamp = rospy.Time.now()
  51.         t2.transform.translation = response.pose.position
  52.         t2.transform.rotation = response.pose.orientation
  53.        
  54.         tfm2 = tf.msg.tfMessage([t2])
  55.         self.pub_tf.publish(tfm2)
  56.      
  57.       # sleep for 0.1s
  58.       r.sleep()
  59.  
  60.  
  61. if __name__ == '__main__':
  62.  
  63.     rospy.loginfo("Starting my_tf_broadcaster...")
  64.     rospy.init_node('my_tf_broadcaster')
  65.    
  66.     rospy.sleep(5)
  67.    
  68.     rospy.loginfo("Waiting for service gazebo/get_model_state...")
  69.     rospy.wait_for_service('gazebo/get_model_state')
  70.    
  71.     # maybe this should be persistent connection....
  72.     model_state = rospy.ServiceProxy('gazebo/get_model_state', gazebo_msgs.srv.GetModelState)
  73.    
  74.     tfb = FixedTFBroadcaster()
  75.     rospy.spin()
  76.     rospy.loginfo("my_tf_broadcaster died...")
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement