From 83e08fa10dccaa3d1ed02c9d2c2ac118f3277839 Mon Sep 17 00:00:00 2001 From: Ciakon Date: Thu, 11 Apr 2024 14:31:24 +0200 Subject: [PATCH] small AI changes --- Assets/Brains.meta | 8 + Assets/Brains/BensonImitationV1.onnx | Bin 0 -> 79914 bytes Assets/Brains/BensonImitationV1.onnx.meta | 16 ++ .../ML-Agents/Timers/AI training_timers.json | 2 +- Assets/Prefabs/TrainingArea.prefab | 33 +++- Assets/Scenes/AI Training.unity | 156 ++++++++++-------- Assets/{ => Scripts}/AgentController.cs | 39 +++-- Assets/{ => Scripts}/AgentController.cs.meta | 0 8 files changed, 166 insertions(+), 88 deletions(-) create mode 100644 Assets/Brains.meta create mode 100644 Assets/Brains/BensonImitationV1.onnx create mode 100644 Assets/Brains/BensonImitationV1.onnx.meta rename Assets/{ => Scripts}/AgentController.cs (90%) rename Assets/{ => Scripts}/AgentController.cs.meta (100%) diff --git a/Assets/Brains.meta b/Assets/Brains.meta new file mode 100644 index 0000000..b1f30cd --- /dev/null +++ b/Assets/Brains.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: acae344fdaa8c094dbeb437aeb9679b3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Brains/BensonImitationV1.onnx b/Assets/Brains/BensonImitationV1.onnx new file mode 100644 index 0000000000000000000000000000000000000000..709ce2ebe7e6d18da46fe38bfcf44f731337cb43 GIT binary patch literal 79914 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 Oxtsp8x0RTZ?EeAOU?rFU literal 0 HcmV?d00001 diff --git a/Assets/Brains/BensonImitationV1.onnx.meta b/Assets/Brains/BensonImitationV1.onnx.meta new file mode 100644 index 0000000..1d56eef --- /dev/null +++ b/Assets/Brains/BensonImitationV1.onnx.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: c125e980a0ef6a94e9310d21891ba601 +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 683b6cb6d0a474744822c888b46772c9, type: 3} + optimizeModel: 1 + forceArbitraryBatchSize: 1 + treatErrorsAsWarnings: 0 + importMode: 1 + weightsTypeMode: 0 + activationTypeMode: 0 diff --git a/Assets/ML-Agents/Timers/AI training_timers.json b/Assets/ML-Agents/Timers/AI training_timers.json index 53c4648..4c5f4ce 100644 --- a/Assets/ML-Agents/Timers/AI training_timers.json +++ b/Assets/ML-Agents/Timers/AI training_timers.json @@ -1 +1 @@ -{"count":1,"self":7.2964823999999995,"total":60.9954573,"children":{"InitializeActuators":{"count":3,"self":0.001513,"total":0.001513,"children":null},"InitializeSensors":{"count":3,"self":0.0010095,"total":0.0010095,"children":null},"AgentSendState":{"count":2184,"self":0.0263912,"total":0.1014805,"children":{"CollectObservations":{"count":6552,"self":0.0160938,"total":0.0160938,"children":null},"WriteActionMask":{"count":6552,"self":0.0020112,"total":0.0020112,"children":null},"RequestDecision":{"count":6552,"self":0.019229899999999998,"total":0.056984299999999995,"children":{"AgentInfo.ToProto":{"count":6552,"self":0.016433299999999998,"total":0.0377544,"children":{"GenerateSensorData":{"count":6552,"self":0.0213211,"total":0.0213211,"children":null}}}}}}},"DecideAction":{"count":2184,"self":53.5099136,"total":53.509915199999995,"children":null},"AgentAct":{"count":2184,"self":0.0840575,"total":0.0840575,"children":{"AgentInfo.ToProto":{"count":21,"self":0,"total":0,"children":{"GenerateSensorData":{"count":21,"self":0,"total":0,"children":null}}}}}},"gauges":{"BensonImitationV1.CumulativeReward":{"count":21,"max":0,"min":0,"runningAverage":0,"value":0,"weightedAverage":0}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1712357698","unity_version":"2022.3.11f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2022.3.11f1\\Editor\\Unity.exe -projectpath C:\\Users\\noahk\\Documents\\Unity projects\\Racesm -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-noahk -hubSessionId 61390a08-deee-455b-9b78-7c702050fabf -accessToken HPacrWVInUHR0G5x93m6zxWFWNrjAqy08EExnpTeleY005f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"AI training","end_time_seconds":"1712357759"}} \ No newline at end of file +{"count":1,"self":54.6100928,"total":437.0681204,"children":{"InitializeActuators":{"count":1,"self":0.0015050999999999999,"total":0.0015050999999999999,"children":null},"InitializeSensors":{"count":1,"self":0.0010000999999999999,"total":0.0010000999999999999,"children":null},"AgentSendState":{"count":106517,"self":2.4229472,"total":4.9875248,"children":{"CollectObservations":{"count":106517,"self":0.5592851,"total":0.5592851,"children":null},"WriteActionMask":{"count":106517,"self":0.10856139999999999,"total":0.10856139999999999,"children":null},"RequestDecision":{"count":106517,"self":0.3979184,"total":1.8967311,"children":{"AgentInfo.ToProto":{"count":106517,"self":0.41538549999999996,"total":1.4988127,"children":{"GenerateSensorData":{"count":106517,"self":0.93811329999999993,"total":1.0834272,"children":{"RayPerceptionSensor.Perceive":{"count":106517,"self":0.1453139,"total":0.1453139,"children":null}}}}}}}}},"DecideAction":{"count":106517,"self":375.577856,"total":375.5778655,"children":null},"AgentAct":{"count":106517,"self":1.8830943999999998,"total":1.8901329,"children":{"AgentInfo.ToProto":{"count":282,"self":0.0035242999999999997,"total":0.0070383999999999993,"children":{"GenerateSensorData":{"count":282,"self":0.0020112,"total":0.0035141,"children":{"RayPerceptionSensor.Perceive":{"count":282,"self":0.0015029,"total":0.0015029,"children":null}}}}}}}},"gauges":{"BensonImitationV2.CumulativeReward":{"count":282,"max":3.594984,"min":0.06999996,"runningAverage":0.676435947,"value":2.39199162,"weightedAverage":2.00654221}},"metadata":{"timer_format_version":"0.1.0","start_time_seconds":"1712838172","unity_version":"2022.3.11f1","command_line_arguments":"C:\\Program Files\\Unity\\Hub\\Editor\\2022.3.11f1\\Editor\\Unity.exe -projectpath C:\\Users\\noahk\\Documents\\Unity projects\\Racesm -useHub -hubIPC -cloudEnvironment production -licensingIpc LicenseClient-noahk -hubSessionId 6a5e8087-82e2-4dd3-a01c-49b3c989d73e -accessToken rm0_kOgxM-hVgLTEQcJOmvx7-NTfQijYXSBtuUfKLQM005f","communication_protocol_version":"1.5.0","com.unity.ml-agents_version":"2.0.1","scene_name":"AI training","end_time_seconds":"1712838609"}} \ No newline at end of file diff --git a/Assets/Prefabs/TrainingArea.prefab b/Assets/Prefabs/TrainingArea.prefab index e3579ab..ed72827 100644 --- a/Assets/Prefabs/TrainingArea.prefab +++ b/Assets/Prefabs/TrainingArea.prefab @@ -2010,7 +2010,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &4626743643629164319 Transform: m_ObjectHideFlags: 0 @@ -4167,6 +4167,9 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 5711380006811689493, guid: 5851f609a58dc884a99030da0105c6db, type: 3} insertIndex: -1 addedObject: {fileID: 8031066805216850976} + - targetCorrespondingSourceObject: {fileID: 5711380006811689493, guid: 5851f609a58dc884a99030da0105c6db, type: 3} + insertIndex: -1 + addedObject: {fileID: 6288636727627254098} m_SourcePrefab: {fileID: 100100000, guid: 5851f609a58dc884a99030da0105c6db, type: 3} --- !u!1 &4107100509094881531 stripped GameObject: @@ -4225,7 +4228,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_BrainParameters: - VectorObservationSize: 6 + VectorObservationSize: 2 NumStackedVectorObservations: 1 m_ActionSpec: m_NumContinuousActions: 0 @@ -4272,6 +4275,32 @@ MonoBehaviour: NumStepsToRecord: 0 DemonstrationName: BensonYouRetard DemonstrationDirectory: +--- !u!114 &6288636727627254098 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4107100509094881531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6bb6b867a41448888c1cd4f99643ad71, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SensorName: RayPerceptionSensor + m_DetectableTags: [] + m_RaysPerDirection: 2 + m_MaxRayDegrees: 150 + m_SphereCastRadius: 0 + m_RayLength: 30 + m_RayLayerMask: + serializedVersion: 2 + m_Bits: 4294967291 + m_ObservationStacks: 1 + rayHitColor: {r: 1, g: 0, b: 0, a: 1} + rayMissColor: {r: 1, g: 1, b: 1, a: 1} + m_StartVerticalOffset: 0.5 + m_EndVerticalOffset: 1 --- !u!4 &4361687674892069559 stripped Transform: m_CorrespondingSourceObject: {fileID: 5420764024659664985, guid: 5851f609a58dc884a99030da0105c6db, type: 3} diff --git a/Assets/Scenes/AI Training.unity b/Assets/Scenes/AI Training.unity index 079cd6e..320de17 100644 --- a/Assets/Scenes/AI Training.unity +++ b/Assets/Scenes/AI Training.unity @@ -123,6 +123,71 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1001 &96007651 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalPosition.x + value: 66.6 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5284110061588260334, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_Name + value: TrainingArea (1) + objectReference: {fileID: 0} + - target: {fileID: 5284110061588260334, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8262033930960634649, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} --- !u!1 &765367128 GameObject: m_ObjectHideFlags: 0 @@ -140,7 +205,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!81 &765367129 AudioListener: m_ObjectHideFlags: 0 @@ -209,13 +274,13 @@ Transform: m_GameObject: {fileID: 765367128} serializedVersion: 2 m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 140, y: 120, z: -40} + m_LocalPosition: {x: 135, y: 170, z: -43} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1001 &880668635 +--- !u!1001 &851810722 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 @@ -225,7 +290,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} propertyPath: m_LocalPosition.x - value: 154.5 + value: 147.6 objectReference: {fileID: 0} - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} propertyPath: m_LocalPosition.y @@ -268,6 +333,10 @@ PrefabInstance: value: TrainingArea (2) objectReference: {fileID: 0} - target: {fileID: 5284110061588260334, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8262033930960634649, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} propertyPath: m_IsActive value: 1 objectReference: {fileID: 0} @@ -380,7 +449,7 @@ PrefabInstance: m_Modifications: - target: {fileID: 320316327550477191, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: m_LocalPosition.x - value: 39.51581 + value: 28.615808 objectReference: {fileID: 0} - target: {fileID: 320316327550477191, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: m_LocalPosition.y @@ -428,7 +497,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1387890555408215438, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: m_IsActive - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 2100622393876020061, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: CameraSide @@ -500,7 +569,7 @@ PrefabInstance: objectReference: {fileID: 1673238739} - target: {fileID: 8890610309520933432, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: m_LocalPosition.x - value: 39.51581 + value: 28.615808 objectReference: {fileID: 0} - target: {fileID: 8890610309520933432, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} propertyPath: m_LocalPosition.y @@ -544,67 +613,6 @@ Transform: m_CorrespondingSourceObject: {fileID: 4361687674892069559, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} m_PrefabInstance: {fileID: 3696992500355286030} m_PrefabAsset: {fileID: 0} ---- !u!1001 &1919317728 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalPosition.x - value: 71.1 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 494913253421693338, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5284110061588260334, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_Name - value: TrainingArea (1) - objectReference: {fileID: 0} - - target: {fileID: 5284110061588260334, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} - propertyPath: m_IsActive - value: 1 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} --- !u!1 &2015283366 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4840733166066636179, guid: 80c5f8bcfe7e033419638b39d9a278c4, type: 3} @@ -674,6 +682,14 @@ PrefabInstance: propertyPath: m_Name value: TrainingArea objectReference: {fileID: 0} + - target: {fileID: 8242215082626919376, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_BehaviorName + value: BensonImitationV2 + objectReference: {fileID: 0} + - target: {fileID: 8262033930960634649, guid: 3664a8beed80ac848a9377d9ee14cb9b, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -687,5 +703,5 @@ SceneRoots: - {fileID: 1574695326} - {fileID: 765367131} - {fileID: 3696992500355286030} - - {fileID: 1919317728} - - {fileID: 880668635} + - {fileID: 851810722} + - {fileID: 96007651} diff --git a/Assets/AgentController.cs b/Assets/Scripts/AgentController.cs similarity index 90% rename from Assets/AgentController.cs rename to Assets/Scripts/AgentController.cs index c7b294e..50b5a25 100644 --- a/Assets/AgentController.cs +++ b/Assets/Scripts/AgentController.cs @@ -9,6 +9,7 @@ using System.Linq; using Unity.Mathematics; using Unity.VisualScripting; using System.Reflection; +using System; public class AgentController : Agent { @@ -41,7 +42,7 @@ public class AgentController : Agent public override void OnEpisodeBegin() { - int stepsSinceCheckpoint = 0; + stepsSinceCheckpoint = 0; // reset wheels foreach (var wheel in wheels) { @@ -79,14 +80,9 @@ public class AgentController : Agent } } - sensor.AddObservation(currentCheckpoint.localPosition.x); - sensor.AddObservation(currentCheckpoint.localPosition.z); + float checkpointDistance = distanceToCheckpoint(currentCheckpoint); - - // agent - sensor.AddObservation(transform.localPosition.x); - sensor.AddObservation(transform.localPosition.z); - sensor.AddObservation(transform.rotation.eulerAngles.y); + sensor.AddObservation(checkpointDistance); // Agent velocity var FullVelocityMagnitude = rigidBody.velocity.magnitude; // Velocity including angular velocity @@ -130,6 +126,11 @@ public class AgentController : Agent if (actions.DiscreteActions[1] == 1) hInput = 1f; + if (vInput == 1f) + { + AddReward(0.001f); + } + float forwardSpeed = Vector3.Dot(transform.forward, rigidBody.velocity); @@ -210,12 +211,14 @@ public class AgentController : Agent } } - var closestPoint = currentCheckpoint.GetComponent().ClosestPointOnBounds(transform.localPosition); - var distanceToCheckpoint = Vector3.Distance(transform.localPosition, closestPoint); + float checkpintDistance = distanceToCheckpoint(currentCheckpoint); - if (distanceToCheckpoint < 0.3f) + // float reward = (1 - Mathf.InverseLerp(0, 20, checkpintDistance)) / 1000; + + // AddReward(reward); + + if (checkpintDistance < 0.1f) { - Debug.Log(currentCheckpoint.name); currentCheckpoint.GetComponent().isCollected = true; @@ -223,13 +226,12 @@ public class AgentController : Agent if (currentCheckpoint == checkpoints[checkpoints.Count - 1].transform) { - SetReward(10f); + AddReward(10f); EndEpisode(); Debug.Log("END"); } - - SetReward(1.0f); + AddReward(1.0f); } currentStep += 1; @@ -259,4 +261,11 @@ public class AgentController : Agent if (Input.GetAxis("Horizontal") > 0.5) discreteActionsOut[1] = 1; } + + float distanceToCheckpoint(Transform checkpoint) + { + var closestPoint = checkpoint.GetComponent().ClosestPointOnBounds(transform.position); + var distanceToCheckpoint = Vector3.Distance(transform.position, closestPoint); + return distanceToCheckpoint; + } } \ No newline at end of file diff --git a/Assets/AgentController.cs.meta b/Assets/Scripts/AgentController.cs.meta similarity index 100% rename from Assets/AgentController.cs.meta rename to Assets/Scripts/AgentController.cs.meta