void Awake()
    {
        if (instance != null && instance != this)
        {
            Debug.LogError("Too many ROSControllers! Only one must exist.");
            Destroy(gameObject);
            return;
        }

        GetConfigFile();

        Debug.LogWarning("Main thread ID " + System.Threading.Thread.CurrentThread.ManagedThreadId);

        status = ROSStatus.Disconnected;

//		Application.targetFrameRate = 0;
        if (QualitySettings.vSyncCount == 2)
        {
            Application.targetFrameRate = 30;
        }
        else
        {
            Application.targetFrameRate = 60;
        }

//		Debug.Log ( "ros master is " + ROS.ROS_MASTER_URI );
        if ((string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ROS_MASTER_URI", EnvironmentVariableTarget.User)) &&
             string.IsNullOrEmpty(Environment.GetEnvironmentVariable("ROS_MASTER_URI", EnvironmentVariableTarget.Machine))) || overrideURI)
        {
            ROS.ROS_MASTER_URI = rosMasterURI;
        }

        if (overrideIP)
        {
            if (rosIP == "0.0.0.0")
            {
                Debug.LogError("host IP is set to override but address is set to 0.0.0.0");
            }
            else
            {
                ROS.ROS_IP = rosIP;
            }
        }

//			delayedStart = true;
        instance     = this;
        initComplete = false;
        StartROS();
        new Thread(new ThreadStart(UpdateMasterConnection)).Start();
    }
 void Update()
 {
     if (ROS.isStarted() && ROS.ok && connectedToMaster)
     {
         status = ROSStatus.Connected;
     }
     else
     if (ROS.shutting_down || !ROS.isStarted() || !ROS.ok)
     {
         status = ROSStatus.Disconnected;
     }
     else
     {
         status = ROSStatus.Connecting;
     }
 }
 void Update()
 {
     status = ROSController.Status;
     if (status != lastStatus)
     {
         if (status == ROSStatus.Connected)
         {
             connectionStatus.color    = Color.green;
             connectionStatusText.text = "Connected to ROS";
         }
         else
         if (status == ROSStatus.Connecting)
         {
             connectionStatus.color    = orange;
             connectionStatusText.text = "Connecting to ROS";
         }
         else
         {
             connectionStatus.color    = Color.red;
             connectionStatusText.text = "Disconnected from ROS";
         }
         lastStatus = status;
     }
 }
 void Awake()
 {
     instance   = this;
     lastStatus = ROSStatus.Unknown;
 }