diff --git a/src/datalink/abstractobject.h b/src/datalink/abstractobject.h
index 327492b91853e846be48570e0463f081c831402b..06127326636f94abbb6c70d586a9ad46a9d9249b 100644
--- a/src/datalink/abstractobject.h
+++ b/src/datalink/abstractobject.h
@@ -1,9 +1,12 @@
 #include <vector>
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/worldobject.h>
+#ifndef ROBOT_MODELS_AO_H
+#define ROBOT_MODELS_AO_H
+
 class abstractobject:public worldobject
 {
     public:
-    std::string name;
+
     vector<int> size;
 
 //no need of constructor here
@@ -11,4 +14,5 @@ class abstractobject:public worldobject
 //{
 //}
 
-};
\ No newline at end of file
+};
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/graspobject.h b/src/datalink/graspobject.h
index 4f0e0959027851d63b9c5b6a46be5c87eafadc1d..e15791a8555c081ae53bc3a7978e83af8d73b453 100644
--- a/src/datalink/graspobject.h
+++ b/src/datalink/graspobject.h
@@ -1,5 +1,6 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/abstractobject.h>
-
+#ifndef ROBOT_MODELS_GO_H
+#define ROBOT_MODELS_GO_H
 class graspobject : public abstractobject
 {
 
@@ -7,3 +8,4 @@ class graspobject : public abstractobject
 
 
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/hand.h b/src/datalink/hand.h
index 1465f80b3e7f7ce525a9c9e2ef10ea97b7c024d9..d6b32caa005633efb84f8f5060808a9b42058d7b 100644
--- a/src/datalink/hand.h
+++ b/src/datalink/hand.h
@@ -1,7 +1,10 @@
 #include <vector>
+#ifndef ROBOT_MODELS_H_H
+#define ROBOT_MODELS_H_H
 using namespace std;
 class hand
 {
 public:
 vector<int> grippos;
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/humanspace.h b/src/datalink/humanspace.h
index 038a2e2e574efc1612126599596c99ff010182f0..82c2e5291114062afc66028b409888cbeea7d5f0 100644
--- a/src/datalink/humanspace.h
+++ b/src/datalink/humanspace.h
@@ -1,3 +1,10 @@
+
+#include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/world.h>
+#ifndef ROBOT_MODELS_HS_H
+#define ROBOT_MODELS_HS_H
+
+
+
 class humanspace : public world
 {
 public:
@@ -6,3 +13,4 @@ int humannum;
 //constructor
 
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/joint.h b/src/datalink/joint.h
index a95bc3db8d9a5b9e6077cef804a32be7d35bea53..479af8cd6b65d6e38a6aaf31f5fe795ef935c30c 100644
--- a/src/datalink/joint.h
+++ b/src/datalink/joint.h
@@ -1,11 +1,8 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/worldobject.h>
-
+#ifndef ROBOT_MODELS_J_H
+#define ROBOT_MODELS_J_H
 class joint : public worldobject
-{ public:
- int j1=0;
-
-
-
-
+{
 
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/obstacle.h b/src/datalink/obstacle.h
index a82c0dbf3e3db603011b962c3b4ce2f96d7f70e8..36c30b38673fd027766336bd492426af1641b377 100644
--- a/src/datalink/obstacle.h
+++ b/src/datalink/obstacle.h
@@ -1,7 +1,10 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/abstractobject.h>
+#ifndef ROBOT_MODELS_O_H
+#define ROBOT_MODELS_O_H
 class obstacle : public abstractobject
 {
 
 //constructor
 
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/quaternion.h b/src/datalink/quaternion.h
new file mode 100644
index 0000000000000000000000000000000000000000..1bf6f40056a3213f118b0c01deb2bbf81462d1a5
--- /dev/null
+++ b/src/datalink/quaternion.h
@@ -0,0 +1,14 @@
+#include <vector>
+#ifndef ROBOT_MODELS_Q_H
+#define ROBOT_MODELS_Q_H
+
+class quaternion
+{
+public:
+     float x,y,z,w;
+
+
+     //no need of constructor here
+
+};
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/robot.h b/src/datalink/robot.h
index fdb1627473e23040aee5e6ac48b24cdd7b9bd8c7..d6a045d3576993eadc11475d9df98203fbaecf7f 100644
--- a/src/datalink/robot.h
+++ b/src/datalink/robot.h
@@ -1,9 +1,12 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/worldobject.h>
-
 #include <vector>
+#ifndef ROBOT_MODELS_R_H
+#define ROBOT_MODELS_R_H
 using namespace std;
 class robot : public worldobject
 {
 public:
-    vector<char> robname;
+    std::string robname;
+
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/robotfpe.h b/src/datalink/robotfpe.h
index f253c2371b50a1f12d2fa831f9bafda0909298c0..8958cc712a8474e0541a36eea345fa892d6f4de8 100644
--- a/src/datalink/robotfpe.h
+++ b/src/datalink/robotfpe.h
@@ -1,10 +1,14 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/robot.h>
 #include <vector>
-#include <stdbool.h>
+#include<string>
+#ifndef ROBOT_MODELS_RF_H
+#define ROBOT_MODELS_RF_H
 using namespace std;
 class robotfpe : public robot
 {
 public:
 bool of,moving,grasppos;
-    vector<char> planninggrp;
+
+    std::string planninggrp;
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/datalink/world.h b/src/datalink/world.h
index f306874d92479fa9d76b66fb534ae16fc39bf700..113f8aee390b3ea0fa4d31b5f8d5885c0e1daf3e 100644
--- a/src/datalink/world.h
+++ b/src/datalink/world.h
@@ -1,7 +1,7 @@
+#ifndef ROBOT_MODELS_W_H
+#define ROBOT_MODELS_W_H
 class world
 {
 
-
-
 };
-
+#endif //ROBOT_MODELS_TEST_H
diff --git a/src/datalink/worldobject.h b/src/datalink/worldobject.h
index eb8a1865af5a4939ed41788b9528ccc2071b4823..11484d8a3995065d180d99709d0485ff76c0e545 100644
--- a/src/datalink/worldobject.h
+++ b/src/datalink/worldobject.h
@@ -1,11 +1,16 @@
 #include <vector>
+#ifndef ROBOT_MODELS_WO_H
+#define ROBOT_MODELS_WO_H
+#include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/quaternion.h>
 using namespace std;
-class worldobject
+class worldobject : public quaternion
 {
 public:
-     vector<int> p1,or2,h3;
-
+     vector<int> p1,h3;// saw no purpose of using h3 here in WO ,its used seperately in hand class
+     std::string name;
+     quaternion or2;
 
      //no need of constructor here
 
 };
+#endif //ROBOT_MODELS_TEST_H
\ No newline at end of file
diff --git a/src/robot_models_node.cpp b/src/robot_models_node.cpp
index 1a52f6c90ed6d295596f82feee05570bff0328aa..7c759c5d32bb7537079f7794f90d40b84009b88f 100644
--- a/src/robot_models_node.cpp
+++ b/src/robot_models_node.cpp
@@ -9,54 +9,121 @@
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/robotfpe.h>
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/world.h>
 #include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/worldobject.h>
+#include </home/nikhil/panda_gazebo_workspace/src/zero/src/datalink/quaternion.h>
 #include <vector>
 #include <iostream>
-int main(int argc, char** argv)
-{    int x=0,y=0,z=0;
-    ros::init(argc, argv, "ROS NODE 1");
-    ros::NodeHandle node_handle("namespace_name");
-    ros::AsyncSpinner spinner(1);
-    spinner.start();
+#include <tf2_ros/transform_listener.h>
+#include <geometry_msgs/TransformStamped.h>
+#include <geometry_msgs/PoseStamped.h>
+#include <tf2_ros/static_transform_broadcaster.h>
+#include <cstdio>
+#include <tf2/LinearMath/Quaternion.h>
+#include "tf2_ros/message_filter.h"
+#include "message_filters/subscriber.h"
+#include "tf2_geometry_msgs/tf2_geometry_msgs.h"
+#include "geometry_msgs/PointStamped.h"
+#include <tf2_ros/transform_broadcaster.h>
+#include <tf2/LinearMath/Quaternion.h>
 
+    int main(int argc, char** argv) {
+        ros::init(argc, argv, "ROSNODE1");
+        ros::NodeHandle node_handle("namespace_name");
+        ros::AsyncSpinner spinner(1);
+        spinner.start();
 
-    ROS_INFO("HELLO, WORLD");
-    abstractobject o1;
-    graspobject o2;
-    hand o3;
-    humanspace o4;
-    joint o5;
-    obstacle o6;
-    robot o7;
-    robotfpe o8;
-    world o9;
-    worldobject o10;
 
+        ROS_INFO("HELLO, WORLD");
 
 
-    o5.j1.p1.push_back(12,11,9,18);
+        abstractobject o1;
+        graspobject o2;
+        hand o3;
+        humanspace o4;
 
+        joint o5a;
+        joint o5b;
+        joint o5c;
+        joint o5d;
+        joint o5e;
+        joint o5f;
+        joint o5g;
 
-    o8.robname.push_back("Robot FPE");
-    o8.of.push_back(1);
-    o8.moving.push_back(0);
-    o8.grasppos.push_back(1);
-    o8.planninggrp.push_back("Panda Teaching");
+        obstacle o6;
+        robot o7;
+        robotfpe o8;
+        world o9;
+        worldobject o10;
 
-    o3.grippos.push_back(12,14,18);
 
-    o4.humannum=1;
+        o5a.name = "panda_joint1";
+        o5b.name = "panda_joint2";
+        o5c.name = "panda_joint3";
+        o5d.name = "panda_joint4";
+        o5e.name = "panda_joint5";
+        o5f.name = "panda_joint6";
+        o5g.name = "panda_joint7";
+        o5a.x = 1.7;
+        o5b.y = 1.8;
+        o5c.z = 1.9;
+        o5d.w = 2.0;
+        o5a.p1 = {12, 11, 9, 18};
 
-    o2.name="Cube";
-    o2.size.push_back(5,7,9);
-    o2.p1;
-    o2.or2;
 
+        o8.robname = "Robot FPE";
+        o8.of = true;
+        o8.moving = false;
+        o8.grasppos = true;
+        o8.planninggrp = "Panda Teaching";
 
-    o6.name="Ball";
-    o6.size.push_back(4,9,6);
-    o6.p1;
-    o6.or2;
+        o3.grippos = {12, 14, 18};
+
+        o4.humannum = 1;
+
+        o2.name = "Cube";
+        o2.size = {5, 7, 9};
+        o2.p1 = {13, 14, 17};
+        o2.x = 2.3;
+        o2.y = 1.2;
+        o2.z = 0.2;
+        o2.w = 0.1;
+
+
+        o6.name = "Ball";
+        o6.size = {1, 2, 3};
+        o6.p1 = {12, 16, 17};
+        o6.x = 1.1;
+        o6.y = 1.4;
+        o6.z = 1.6;
+        o6.w = 1.9;
 
-}
 
+        tf2_ros::Buffer tfBuffer;
+        tf2_ros::TransformListener tfListener(tfBuffer);
 
+        ros::Rate rate(10);
+
+        while (node_handle.ok()) {
+            //for (const auto &topic : ROSNODE1::topics)
+            {
+                geometry_msgs::TransformStamped transformStamped;
+                try {
+                    transformStamped = tfBuffer.lookupTransform("panda_joint1", tfBuffer.o5a, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint2", tfBuffer.o5b, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint3", o5c, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint4", o5d, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint5", o5e, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint6", o5f, ros::Time(0));
+                    transformStamped = tfBuffer.lookupTransform("panda_joint7", To5g, ros::Time(0));
+                } catch (tf2::TransformException &ex) {
+                    ROS_WARN("%s", ex.what());
+                    ros::Duration(0.1).sleep();
+                    continue;
+
+                }
+            }
+            rate.sleep();
+        }
+
+
+return 0;
+}