IEnumerator SetCamConfig(int iCamera, float fov, float offset_x, float offset_y, float offset_z, float rot_x,
                                 int img_w, int img_h, int img_d, string img_enc, float fish_eye_x, float fish_eye_y)
        {
            CameraSensor cam = null;

            if (iCamera == 0)
            {
                cam = camSensor;
            }
            else
            {
                cam = camSensorB;

                if (cam != null && !cam.gameObject.activeInHierarchy)
                {
                    cam.gameObject.SetActive(true);
                }
            }

            if (cam)
            {
                cam.SetConfig(fov, offset_x, offset_y, offset_z, rot_x, img_w, img_h, img_d, img_enc);

                Fisheye fe = cam.gameObject.GetComponent <Fisheye>();

                if (fe != null && (fish_eye_x != 0.0f || fish_eye_y != 0.0f))
                {
                    fe.enabled   = true;
                    fe.strengthX = fish_eye_x;
                    fe.strengthY = fish_eye_y;
                }
            }

            yield return(null);
        }
    void Start()
    {
        cameraSensor  = GetComponentInChildren <CameraSensor>();
        carState      = GetComponent <CarState>();
        carController = GetComponent <CarController>();

        IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, DeterminePort());

        listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        checkpoints = new Checkpoints();
        reward      = new Reward(checkpoints);



        // foreach (GameObject gameObject in checkpoints.checkpointsArray) {
        //  Debug.Log(gameObject.name);
        // }

        try {
            listener.Bind(localEndPoint);
            listener.Listen(1);

            BeginAccept();
        } catch (Exception e) {
            Debug.LogException(e);
        }
    }
        public void TestStackingMapping()
        {
            // Test grayscale stacked mapping with CameraSensor
            var cameraSensor = new CameraSensor(new Camera(), 64, 64,
                                                true, "grayscaleCamera", SensorCompressionType.PNG);
            var stackedCameraSensor = new StackingSensor(cameraSensor, 2);

            Assert.AreEqual(stackedCameraSensor.GetCompressionSpec().CompressedChannelMapping, new[] { 0, 0, 0, 1, 1, 1 });

            // Test RGB stacked mapping with RenderTextureSensor
            var renderTextureSensor = new RenderTextureSensor(new RenderTexture(24, 16, 0),
                                                              false, "renderTexture", SensorCompressionType.PNG);
            var stackedRenderTextureSensor = new StackingSensor(renderTextureSensor, 2);

            Assert.AreEqual(stackedRenderTextureSensor.GetCompressionSpec().CompressedChannelMapping, new[] { 0, 1, 2, 3, 4, 5 });

            // Test mapping with number of layers not being multiple of 3
            var dummySensor = new Dummy3DSensor();

            dummySensor.ObservationSpec = ObservationSpec.Visual(2, 2, 4);
            dummySensor.Mapping         = new[] { 0, 1, 2, 3 };
            var stackedDummySensor = new StackingSensor(dummySensor, 2);

            Assert.AreEqual(stackedDummySensor.GetCompressionSpec().CompressedChannelMapping, new[] { 0, 1, 2, 3, -1, -1, 4, 5, 6, 7, -1, -1 });

            // Test mapping with dummy layers that should be dropped
            var paddedDummySensor = new Dummy3DSensor();

            paddedDummySensor.ObservationSpec = ObservationSpec.Visual(2, 2, 4);
            paddedDummySensor.Mapping         = new[] { 0, 1, 2, 3, -1, -1 };
            var stackedPaddedDummySensor = new StackingSensor(paddedDummySensor, 2);

            Assert.AreEqual(stackedPaddedDummySensor.GetCompressionSpec().CompressedChannelMapping, new[] { 0, 1, 2, 3, -1, -1, 4, 5, 6, 7, -1, -1 });
        }
示例#4
0
        public void TestCameraSensor()
        {
            foreach (var grayscale in new[] { true, false })
            {
                foreach (SensorCompressionType compression in Enum.GetValues(typeof(SensorCompressionType)))
                {
                    var width  = 24;
                    var height = 16;
                    var camera = Camera.main;
                    var c      = new GameObject();
                    if (ReferenceEquals(null, camera))
                    {
                        camera = c.AddComponent <Camera>();
                    }
                    var sensor = new CameraSensor(camera, width, height, grayscale, "TestCameraSensor", compression);

                    var obsWriter = new ObservationWriter();
                    var obs       = sensor.GetObservationProto(obsWriter);

                    Assert.AreEqual((int)compression, (int)obs.CompressionType);
                    var expectedShape = new[] { height, width, grayscale ? 1 : 3 };
                    Assert.AreEqual(expectedShape, obs.Shape);
                    UnityEngine.Object.DestroyImmediate(c);
                }
            }
        }
    /***************************************************/
    /***  METHODS               ************************/
    /***************************************************/

    /********  UNITY MESSAGES   ************************/

    // Use this for initialization
    void Start()
    {
        m_cameraSensor = GetComponent <CameraSensor>();

        m_turretSelector = transform.Find("T.O.W.E.L");

        m_pew.GetComponent <InflictDamageParticle>().m_damage = SettingsManager.Inst.m_gunDamage;

        m_gameStateUi = 1;
        DisplayGameState();
    }
示例#6
0
    void DisableAllCamerasExSensors()
    {
        Camera[] cameras = GameObject.FindObjectsOfType <Camera>();

        foreach (Camera cam in cameras)
        {
            CameraSensor sensor = cam.gameObject.GetComponent <CameraSensor>();

            if (sensor != null)
            {
                continue;
            }

            cam.gameObject.SetActive(false);
        }
    }
示例#7
0
        public void TestObservationType()
        {
            var width  = 24;
            var height = 16;
            var camera = Camera.main;
            var sensor = new CameraSensor(camera, width, height, true, "TestCameraSensor", SensorCompressionType.None);
            var spec   = sensor.GetObservationSpec();

            Assert.AreEqual((int)spec.ObservationType, (int)ObservationType.Default);
            sensor = new CameraSensor(camera, width, height, true, "TestCameraSensor", SensorCompressionType.None, ObservationType.Default);
            spec   = sensor.GetObservationSpec();
            Assert.AreEqual((int)spec.ObservationType, (int)ObservationType.Default);
            sensor = new CameraSensor(camera, width, height, true, "TestCameraSensor", SensorCompressionType.None, ObservationType.GoalSignal);
            spec   = sensor.GetObservationSpec();
            Assert.AreEqual((int)spec.ObservationType, (int)ObservationType.GoalSignal);
        }
示例#8
0
    // Update is called once per frame
    void Update()
    {
        if (vehicle != null)
        {
            if (!isConnected && vehicle.Connected)
            {
                Debug.Log("VehicleAvailable");
                Vehicle.INSTANCE = vehicle;

                if (SpriteToggle.INSTANCE != null)
                {
                    SpriteToggle.INSTANCE.Appear();
                }

                if (PedalButton.instance != null)
                {
                    PedalButton.instance.Appear();
                }

                isConnected = true;
            }

            if (vehicle.Connected)
            {
                pedalInputController.Update();
                steeringInputController.Update();
                vehicle.SetThrottle(pedalInputController.GetThrottleLevel());
                vehicle.SetBrake(pedalInputController.GetBrakeLevel());
                vehicle.SetSteeringAngle(steeringInputController.getSteeringAngle());
                vehicle.Update();


                CameraSensor s = (CameraSensor)vehicle.Sensor(SensorType.SENSOR_TYPE_CAMERA_FRONT);
                if (s != null)
                {
                    CameraSensorData d = (CameraSensorData)s.Data;
                    if (d != null)
                    {
                        imageTexture.LoadImage(d.ImageData);
                        cameraDisplay.material.mainTexture = imageTexture;
                    }
                }
            }
        }
    }
示例#9
0
    //Save the camera sensor to an image. Use the suffix to distinguish between cameras.
    void SaveCamSensor(CameraSensor cs, string prefix, string suffix)
    {
        if (cs != null)
        {
            Texture2D image = cs.GetImage();

            ImageSaveJob ij = new ImageSaveJob();

            if (UdacityStyle)
            {
                ij.filename = GetUdacityStyleImageFilename();

                ij.bytes = image.EncodeToJPG();
            }
            else if (DonkeyStyle)
            {
                ij.filename = GetDonkeyStyleImageFilename();

                ij.bytes = image.EncodeToJPG();
            }
            else if (DonkeyStyle2)
            {
                ij.filename = GetDonkey2StyleImageFilename();

                ij.bytes = image.EncodeToJPG();
            }
            else if (SharkStyle)
            {
                ij.filename = GetSharkStyleImageFilename();

                ij.bytes = image.EncodeToJPG();
            }
            else
            {
                ij.filename = Application.dataPath + string.Format("/../log/{0}_{1,8:D8}{2}.png", prefix, frameCounter, suffix);

                ij.bytes = image.EncodeToPNG();
            }

            lock (this)
            {
                imagesToSave.Add(ij);
            }
        }
    }
示例#10
0
    //Save the camera sensor to an image. Use the suffix to distinguish between cameras.
    void SaveCamSensor(CameraSensor cs, string prefix, string suffix)
    {
        if (cs != null)
        {
            Texture2D image = cs.GetImage();

            ImageSaveJob ij = new ImageSaveJob();

            ij.filename = Application.dataPath + string.Format("/../log/{0}_{1,8:D8}{2}.png", prefix, frameCounter, suffix);

            ij.bytes = image.EncodeToPNG();

            lock (this)
            {
                imagesToSave.Add(ij);
            }
        }
    }
示例#11
0
    //Save the camera sensor to an image. Use the suffix to distinguish between cameras.
    void SaveCamSensor(CameraSensor cs, string prefix, string suffix)
    {
        if (cs != null)
        {
            Texture2D image = cs.GetImage();

            ImageSaveJob ij = new ImageSaveJob();

            ij.filename = GetImageFileName();

            ij.bytes = image.EncodeToJPG();

            lock (this)
            {
                imagesToSave.Add(ij);
            }
        }
    }
    void Start()
    {
        cameraSensor  = GetComponentInChildren <CameraSensor>();
        carState      = GetComponent <CarState>();
        carController = GetComponent <CarController>();

        IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, DeterminePort());

        listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        try {
            listener.Bind(localEndPoint);
            listener.Listen(1);

            BeginAccept();
        } catch (Exception e) {
            Debug.LogException(e);
        }
    }
        void Start()
        {
            agent = GetComponent <ITankAgent>();
            if (cameraSensor == null)
            {
                cameraSensor = GetComponent <CameraSensor>();
            }

            // wire up to UI images normal/segmented based on player 1 or 2
            // yeah this isn't pretty, but we just need something quick.
            int playerNumber = agent.GetPlayerNumber() - 1;

            // might not need to use this, might be better off manually wiring up for visual agents

            normalRenderTexture    = normalRTs[playerNumber];
            segmentedRenderTexture = segmentedRTs[playerNumber];

            normalCam.targetTexture = normalRenderTexture;
            cameraSensor.Camera     = normalCam;
        }
        public void TestCameraSensor()
        {
            foreach (var grayscale in new[] { true, false })
            {
                foreach (SensorCompressionType compression in Enum.GetValues(typeof(SensorCompressionType)))
                {
                    var width  = 24;
                    var height = 16;
                    var camera = Camera.main;
                    var sensor = new CameraSensor(camera, width, height, grayscale, "TestCameraSensor", compression);

                    var obsWriter = new ObservationWriter();
                    var obs       = sensor.GetObservationProto(obsWriter);

                    Assert.AreEqual((int)compression, (int)obs.CompressionType);
                    var expectedShape = new[] { height, width, grayscale ? 1 : 3 };
                    Assert.AreEqual(expectedShape, obs.Shape);
                }
            }
        }
示例#15
0
        IEnumerator SetCamConfig(float fov, float offset_x, float offset_y, float offset_z, float rot_x,
                                 int img_w, int img_h, int img_d, string img_enc, float fish_eye_x, float fish_eye_y)
        {
            CameraSensor camSensor = carObj.transform.GetComponentInChildren <CameraSensor>();

            if (camSensor)
            {
                camSensor.SetConfig(fov, offset_x, offset_y, offset_z, rot_x, img_w, img_h, img_d, img_enc);

                Fisheye fe = camSensor.gameObject.GetComponent <Fisheye>();

                if (fe != null && (fish_eye_x != 0.0f || fish_eye_y != 0.0f))
                {
                    fe.enabled   = true;
                    fe.strengthX = fish_eye_x;
                    fe.strengthY = fish_eye_y;
                }
            }

            yield return(null);
        }
        public PhotoBoothViewModel()
        {
            this.cameraSensor               = new CameraSensor(KinectSensor.GetDefault());
            this.CameraImageSource          = this.cameraSensor.Camera;
            this.cameraSensor.PersonEnters += (s, e) =>
            {
                this.peoplePresentCount++;
                if (this.peoplePresentCount == 1)
                {
                    this.stateMachine.EnterFirstPerson();
                }
            };

            this.cameraSensor.PersonLeaves += (s, e) =>
            {
                this.peoplePresentCount--;
                if (this.peoplePresentCount == 0)
                {
                    this.stateMachine.LeaveLastPerson();
                }
            };

            this.stateMachine.EnteredWaitingForPresence += (s, e) =>
            {
                this.OverlayImageSource          = null;
                this.cameraSensor.IsCameraPaused = false;
            };

            this.stateMachine.EnteredCountdown += (s, e) =>
            {
                SetOverlayImage();
                StartCountdownTimer();
            };

            this.stateMachine.LeftCountdown += (s, e) =>
            {
                EnsureStoppedCountdownTimer();
            };

            this.stateMachine.EnteredTakeSnapshot += (s, e) =>
            {
                this.cameraSensor.IsCameraPaused = true;
                this.FlashingBackground          = true;
                ImageSaver.SaveImage(this.CameraImageSource, this.OverlayImageSource);
            };

            this.stateMachine.LeftTakeSnapshot += (s, e) =>
            {
                this.FlashingBackground = false;
            };

            this.stateMachine.EnteredFinished += (s, e) =>
            {
                this.FullScreenMessage = Properties.Resources.FinishedMessage;
            };

            this.stateMachine.LeftFinished += (s, e) =>
            {
                this.FullScreenMessage           = string.Empty;
                this.cameraSensor.IsCameraPaused = false;
            };
        }
示例#17
0
    // Update is called once per frame
    void Update()
    {
        if (vehicle != null)
        {
            if (!isConnected && vehicle.Connected)
            {
                Debug.Log("VehicleAvailable");
                isConnected = true;
                vehicle.SetGear(GearDirection.GEAR_DIRECTION_FORWARD);
            }

            if (vehicle.Connected)
            {
                changeUItoDriveMode();

                if (Input.GetKeyDown(KeyCode.Q))
                {
                    vehicle.SetGear(GearDirection.GEAR_DIRECTION_NEUTRAL);
                }
                else if (Input.GetKeyDown(KeyCode.W))
                {
                    vehicle.SetGear(GearDirection.GEAR_DIRECTION_FORWARD);
                }
                else if (Input.GetKeyDown(KeyCode.E))
                {
                    vehicle.SetGear(GearDirection.GEAR_DIRECTION_BACKWARD);
                }

                turningAngle = Input.acceleration.x;
                vehicle.SetSteeringAngle(turningAngle);


                //vehicle.SetThrottle(Input.GetAxis("Vertical"));
                //vehicle.SetBrake(Mathf.Clamp01(-Input.GetAxis("Vertical")));
                vehicle.SetThrottle(throttle);
                vehicle.SetBrake(brake);
                //vehicle.SetSteeringAngle(Input.GetAxis("Horizontal"));
                vehicle.Update();

                CameraSensor s = (CameraSensor)vehicle.Sensor(SensorType.SENSOR_TYPE_CAMERA_FRONT);
                if (s != null)
                {
                    CameraSensorData d = (CameraSensorData)s.Data;
                    if (d != null)
                    {
                        imageTexture.LoadImage(d.ImageData);
                        cameraDisplay.material.mainTexture = imageTexture;
                    }
                }

                status = vehicle.Status;
                updateSpeedDisplay();
            }
        }
        else
        {
            setGear.gameObject.SetActive(false);
            brakeSlider.gameObject.SetActive(false);
            throtleSlider.gameObject.SetActive(false);
            shownGear.gameObject.SetActive(false);
            speed.gameObject.SetActive(false);;
        }
    }