Example #1
0
    private void Evaluate(CarSensorData sensorData)
    {
        var outputs = neuralNetwork.CalculateOutputs(new List <decimal>
        {
            sensorData.FrontDistance,
            sensorData.FrontLeftDistance,
            sensorData.FrontRightDistance,
            sensorData.LeftDistance,
            sensorData.RightDistance,
            sensorData.Speed
        });
        var speedUp   = outputs[0];
        var speedDown = outputs[1];
        var turnLeft  = outputs[2];
        var turnRight = outputs[3];

        SpeedOutput = 0;
        if (speedUp + speedDown != 0)
        {
            SpeedOutput = (speedUp - speedDown) / (speedUp + speedDown);
        }

        TurnOutput = 0;
        if (turnLeft + turnRight != 0)
        {
            TurnOutput = (turnRight - turnLeft) / (turnRight + turnLeft);
        }
    }
Example #2
0
    public CarSensorData GetSensorData()
    {
        var data           = new CarSensorData();
        var frontDist      = float.MaxValue;
        var frontLeftDist  = float.MaxValue;
        var frontRightDist = float.MaxValue;
        var leftDist       = float.MaxValue;
        var rightDist      = float.MaxValue;
        var currentSpeed   = float.MaxValue;

        var forwardVector      = transform.TransformVector(Vector3.forward);
        var forwardLeftVector  = transform.TransformVector(new Vector3(-1, 0, 2));
        var forwardRightVector = transform.TransformVector(new Vector3(1, 0, 2));
        var leftVector         = transform.TransformVector(new Vector3(-2, 0, 1));
        var rightVector        = transform.TransformVector(new Vector3(2, 0, 1));

        CastRay(forwardVector, ref frontDist);
        CastRay(forwardLeftVector, ref frontLeftDist);
        CastRay(forwardRightVector, ref frontRightDist);
        CastRay(leftVector, ref leftDist);
        CastRay(rightVector, ref rightDist);

        data.FrontDistance      = (decimal)frontDist;
        data.FrontLeftDistance  = (decimal)frontLeftDist;
        data.FrontRightDistance = (decimal)frontRightDist;
        data.LeftDistance       = (decimal)leftDist;
        data.RightDistance      = (decimal)rightDist;
        data.Speed = (decimal)currentSpeed;
        return(data);
    }
Example #3
0
 public void SetSensorData(CarSensorData sensorData, string formatString)
 {
     speedText.text          = sensorData.Speed.ToString(formatString);
     frontDistText.text      = sensorData.FrontDistance.ToString(formatString);
     frontLeftDistText.text  = sensorData.FrontLeftDistance.ToString(formatString);
     frontRightDistText.text = sensorData.FrontRightDistance.ToString(formatString);
     leftDistText.text       = sensorData.LeftDistance.ToString(formatString);
     rightDistText.text      = sensorData.RightDistance.ToString(formatString);
 }