Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 import roslib
00035 roslib.load_manifest('vicon_mocap')
00036 import rospy
00037 from starmac_roslib.timers import Timer
00038
00039
00040 from geometry_msgs.msg import TransformStamped
00041 from tf.broadcaster import TransformBroadcaster
00042
00043 class DummyViconNode(object):
00044 """
00045 Example python node including reading parameters, publishers and subscribers, and timer.
00046 """
00047 def __init__(self):
00048
00049
00050 pass
00051
00052 def start(self):
00053 rospy.init_node('python_node_example')
00054 self.tfb = TransformBroadcaster()
00055 self.init_params()
00056 self.init_publishers()
00057 self.init_timers()
00058 rospy.spin()
00059
00060 def init_params(self):
00061 pass
00062 self.tf_ref_frame_id = rospy.get_param("~tf_ref_frame_id", "/enu")
00063 self.tf_tracked_frame_id = rospy.get_param("~tf_tracked_frame_id", "/pelican1/flyer_vicon")
00064 self.dummy_position = rospy.get_param("~dummy_position", (0.0, -0.3593, -0.05))
00065 self.dummy_orientation = rospy.get_param("~dummy_orientation", (0.5, 0.5, -0.5, 0.5))
00066 self.enable_tf_broadcast = rospy.get_param("~enable_tf_broadcast", False)
00067
00068
00069
00070 def init_publishers(self):
00071 self.pub = rospy.Publisher('vicon_recv_direct/output', TransformStamped)
00072
00073 def init_timers(self):
00074 self.vicon_timer = Timer(rospy.Duration(1/120.0), self.vicon_timer_callback)
00075
00076 def vicon_timer_callback(self, event):
00077 msg = TransformStamped()
00078 msg.header.stamp = rospy.Time.now()
00079 msg.header.frame_id = self.tf_ref_frame_id
00080 msg.child_frame_id = self.tf_tracked_frame_id
00081 msg.transform.translation.x, msg.transform.translation.y, msg.transform.translation.z = self.dummy_position
00082 (msg.transform.rotation.x, msg.transform.rotation.y,
00083 msg.transform.rotation.z, msg.transform.rotation.w) = self.dummy_orientation
00084 self.pub.publish(msg)
00085 if self.enable_tf_broadcast:
00086 self.tfb.sendTransform(self.dummy_position, self.dummy_orientation,
00087 rospy.Time.now(), self.tf_tracked_frame_id, self.tf_ref_frame_id)
00088
00089
00090
00091
00092 if __name__ == "__main__":
00093 self = DummyViconNode()
00094 self.start()