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); } }
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); }
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); }