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 package tfjava;
00031 
00032 import ros.*;
00033 import ros.communication.*;
00034 
00035 import javax.vecmath.Vector3d;
00036 import javax.vecmath.Quat4d;
00037 
00038 import ros.pkg.tf.msg.tfMessage;
00039 
00040 import ros.pkg.geometry_msgs.msg.TransformStamped;
00041 import ros.pkg.geometry_msgs.msg.Vector3;
00042 import ros.pkg.geometry_msgs.msg.Quaternion;
00043 
00044 import java.util.ArrayList;
00045 
00054 public class TFBroadcaster {
00055 
00059     public static void sendTransform(Vector3d transl, Quat4d rot, Time time, String parentFrame, String childFrame) {
00060         
00061         Ros ros = Ros.getInstance();
00062         NodeHandle node = ros.createNodeHandle();
00063         
00064         try {
00065             
00066             Vector3 tMsg = new Vector3();
00067             Quaternion rMsg = new Quaternion();
00068             tMsg.x = transl.x; tMsg.y = transl.y; tMsg.z = transl.z;
00069             rMsg.x = rot.x; rMsg.y = rot.y; rMsg.z = rot.z; rMsg.w = rot.w;
00070                 
00071             
00072             TransformStamped tfMsg = new TransformStamped();        
00073             tfMsg.header.frame_id = parentFrame;
00074             tfMsg.header.stamp = time;
00075             tfMsg.child_frame_id = childFrame;
00076             tfMsg.transform.translation = tMsg;
00077             tfMsg.transform.rotation = rMsg;
00078             
00079             
00080             tfMessage msg = new tfMessage();
00081             msg.transforms = new ArrayList();
00082             msg.transforms.add(tfMsg);
00083             
00084             
00085             Publisher<tfMessage> pub = node.advertise("/tf", new tfMessage(), 10);
00086             pub.publish(msg);
00087         } catch (Exception e) {
00088             ros.logError("TFBroadcaster: " + e.toString());
00089         }
00090     }
00091     
00092     public static void sendTransform(StampedTransform t) {
00093         sendTransform(t.getTranslation(), t.getRotation(), t.timeStamp, t.frameID, t.childFrameID);
00094     }
00095 
00096 }