public static void CallBack(ROSBridgeMsg msg)
    {
        Debug.Log("callback");
        Vector3     tablePos = GameObject.FindWithTag("Table").transform.position;
        ObstacleMsg pose     = (ObstacleMsg)msg;

        if (!WorldProperties.obstacleids.Contains(pose.id) && pose.id != 0)
        {
            WorldProperties.obstacleids.Add(pose.id);
            GameObject world    = GameObject.FindWithTag("World");
            GameObject torus    = (GameObject)WorldProperties.worldObject.GetComponent <WorldProperties>().torus;
            GameObject newTorus = Object.Instantiate(torus);
            //newTorus.name = pose.id + "";
            newTorus.transform.parent        = world.transform;
            newTorus.transform.localPosition = new Vector3(-pose._x, pose._z + tablePos.z + 0.148f, -pose._y);
            newTorus.transform.localScale    = new Vector3(pose.scale_x, pose.scale_x, pose.scale_x) * 5;
            WorldProperties.obstacles.Add(newTorus);

/*
 *          var radius = newTorus.GetComponent<MeshFilter>().mesh.bounds.extents.x;
 *          Vector3 start = new Vector3(newTorus.transform.localPosition.x, newTorus.transform.localPosition.y - radius, newTorus.transform.localPosition.z);
 *          Vector3 end = new Vector3(newTorus.transform.localPosition.x, tablePos.z, newTorus.transform.localPosition.z);
 *          Vector3 offset = start - end;
 *          var scale = new Vector3(1, offset.magnitude / 2, 1);
 *          var position = start + (offset / 2);
 *
 *          GameObject pole = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
 *          pole.transform.localPosition = position;
 *          pole.transform.up = offset;
 *          pole.transform.localScale = scale;*/

            //Debug.Log("making torus id: " + newTorus.name);
        }
    }
    public static void CallBack(ROSBridgeMsg msg)

    {
        Debug.Log("callback");

        Vector3 tablePos = GameObject.FindWithTag("Table").transform.position;

        ObstacleMsg pose = (ObstacleMsg)msg;

        Debug.Log("obstacle callback");
        if (!ids.Contains(pose.id) && pose.id != 0)

        {
            ids.Add(pose.id);

            GameObject world = GameObject.FindWithTag("World");

            GameObject torus = (GameObject)world.GetComponent <WorldScript>().torus;

            GameObject newTorus = Object.Instantiate(torus);

            //newTorus.name = pose.id + "";

            newTorus.transform.parent = world.transform;

            newTorus.transform.localPosition = new Vector3(-pose._x, pose._z + tablePos.z + 0.148f, -pose._y);

            newTorus.transform.localScale = new Vector3(pose.scale_x, pose.scale_x, pose.scale_x) * 5;

            WorldScript.obstacles.Add(newTorus);
        }
    }