@@ -35,3 +35,71 @@ sysinfo.txt | |||
*.apk | |||
*.unitypackage | |||
envs/ | |||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm | |||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 | |||
# User-specific stuff | |||
.idea/**/workspace.xml | |||
.idea/**/tasks.xml | |||
.idea/**/usage.statistics.xml | |||
.idea/**/dictionaries | |||
.idea/**/shelf | |||
# Generated files | |||
.idea/**/contentModel.xml | |||
# Sensitive or high-churn files | |||
.idea/**/dataSources/ | |||
.idea/**/dataSources.ids | |||
.idea/**/dataSources.local.xml | |||
.idea/**/sqlDataSources.xml | |||
.idea/**/dynamic.xml | |||
.idea/**/uiDesigner.xml | |||
.idea/**/dbnavigator.xml | |||
# Gradle | |||
.idea/**/gradle.xml | |||
.idea/**/libraries | |||
# Gradle and Maven with auto-import | |||
# When using Gradle or Maven with auto-import, you should exclude module files, | |||
# since they will be recreated, and may cause churn. Uncomment if using | |||
# auto-import. | |||
# .idea/modules.xml | |||
# .idea/*.iml | |||
# .idea/modules | |||
# CMake | |||
cmake-build-*/ | |||
# Mongo Explorer plugin | |||
.idea/**/mongoSettings.xml | |||
# File-based project format | |||
*.iws | |||
# IntelliJ | |||
out/ | |||
# mpeltonen/sbt-idea plugin | |||
.idea_modules/ | |||
# JIRA plugin | |||
atlassian-ide-plugin.xml | |||
# Cursive Clojure plugin | |||
.idea/replstate.xml | |||
# Crashlytics plugin (for Android Studio and IntelliJ) | |||
com_crashlytics_export_strings.xml | |||
crashlytics.properties | |||
crashlytics-build.properties | |||
fabric.properties | |||
# Editor-based Rest Client | |||
.idea/httpRequests | |||
# Android studio 3.1+ serialized cache file | |||
.idea/caches/build_file_checksums.ser |
@@ -10,19 +10,19 @@ MonoBehaviour: | |||
m_Enabled: 1 | |||
m_EditorHideFlags: 0 | |||
m_Script: {fileID: 11500000, guid: 8b23992c8eb17439887f5e944bf04a40, type: 3} | |||
m_Name: CozmoLearning | |||
m_Name: CozmoLearningBrain | |||
m_EditorClassIdentifier: | |||
brainParameters: | |||
vectorObservationSize: 0 | |||
numStackedVectorObservations: 1 | |||
vectorActionSize: 0300000003000000 | |||
vectorActionSize: 0200000002000000 | |||
cameraResolutions: | |||
- width: 84 | |||
height: 84 | |||
blackAndWhite: 1 | |||
blackAndWhite: 0 | |||
vectorActionDescriptions: | |||
- forward | |||
- rotate | |||
- rotation | |||
vectorActionSpaceType: 0 | |||
model: {fileID: 0} | |||
inferenceDevice: 0 |
@@ -1,5 +1,5 @@ | |||
fileFormatVersion: 2 | |||
guid: 94e62c225e4fe8148a7543c5fd1acfd4 | |||
guid: 0d9d5ce547064a648b466ad7f208cf3d | |||
NativeFormatImporter: | |||
externalObjects: {} | |||
mainObjectFileID: 11400000 |
@@ -1,8 +0,0 @@ | |||
fileFormatVersion: 2 | |||
guid: 7c777442467e245108558a5155153927 | |||
timeCreated: 1502222754 | |||
licenseType: Free | |||
DefaultImporter: | |||
userData: | |||
assetBundleName: | |||
assetBundleVariant: |
@@ -506,7 +506,7 @@ MonoBehaviour: | |||
agentCameras: | |||
- {fileID: 589453882} | |||
agentRenderTextures: [] | |||
maxStep: 1000 | |||
maxStep: 0 | |||
resetOnDone: 1 | |||
onDemandDecision: 0 | |||
numberOfActionsBetweenDecisions: 1 | |||
@@ -560,7 +560,7 @@ MonoBehaviour: | |||
m_PrefabInstance: {fileID: 0} | |||
m_PrefabAsset: {fileID: 0} | |||
m_GameObject: {fileID: 7570006596986120123} | |||
m_Enabled: 0 | |||
m_Enabled: 1 | |||
m_EditorHideFlags: 0 | |||
m_Script: {fileID: 11500000, guid: 4265d0764c65d26409f0f920e5293c82, type: 3} | |||
m_Name: |
@@ -24,7 +24,7 @@ public class CozmoMovement : MonoBehaviour | |||
private void OnEnable() | |||
{ | |||
// When the tank is turned on, make sure it's not kinematic. | |||
// When the cozmo is turned on, make sure it's not kinematic. | |||
m_Rigidbody.isKinematic = false; | |||
// Also reset the input values. | |||
@@ -35,17 +35,15 @@ public class CozmoMovement : MonoBehaviour | |||
private void OnDisable() | |||
{ | |||
// When the tank is turned off, set it to kinematic so it stops moving. | |||
// When the cozmo is turned off, set it to kinematic so it stops moving. | |||
m_Rigidbody.isKinematic = true; | |||
} | |||
private void Start() | |||
{ | |||
// The axes names are based on player number. | |||
m_MovementAxisName = "Vertical"; | |||
m_TurnAxisName = "Horizontal"; | |||
} | |||
@@ -66,7 +64,7 @@ public class CozmoMovement : MonoBehaviour | |||
public void Move(float directionValue) | |||
{ | |||
// Create a vector in the direction the tank is facing with a magnitude based on the input, speed and the time between frames. | |||
// Create a vector in the direction the cozmo is facing with a magnitude based on the input, speed and the time between frames. | |||
Vector3 movement = directionValue * transform.forward * m_Speed * Time.deltaTime; | |||
// Apply this movement to the rigidbody's position. |
@@ -4,7 +4,7 @@ using System.Collections.Generic; | |||
using System.Diagnostics; | |||
using UnityEngine; | |||
public enum TestStates { MovementSpeed, RotationSpeed } | |||
public enum TestStates { MovementSpeed, RotationSpeed } // enum to determine test scenarios | |||
[RequireComponent(typeof(CozmoMovement))] | |||
public class CozmoMovementTester : MonoBehaviour | |||
@@ -16,7 +16,6 @@ public class CozmoMovementTester : MonoBehaviour | |||
private CozmoMovement movement; // Reference to the movement script of cozmo | |||
private Vector3 startPositionCozmo; // Original position of cozmo | |||
private float lastY; // Last Y of cozmo | |||
private float curAngleX = 0; // Current angle in the x axis of cozmo | |||
private Stopwatch movementWatch; // Stopwatch to measure the time for the movement usecase | |||
private Stopwatch rotationWatch; // Stopwatch to measure the time for the rotation usecase | |||
@@ -31,7 +30,7 @@ public class CozmoMovementTester : MonoBehaviour | |||
startPositionCozmo = movement.transform.position; // Cache the starting position of Cozmo | |||
lastY = movement.transform.rotation.y; // Cache the rotation Vector of Cozmo | |||
lastY = movement.transform.rotation.y; // Cache the rotation Vector of Cozmo | |||
} | |||
private void FixedUpdate() | |||
@@ -58,7 +57,7 @@ public class CozmoMovementTester : MonoBehaviour | |||
{ | |||
rotationWatch.Stop(); | |||
UnityEngine.Debug.Log("Cozmo: " + gameObject.name + | |||
"/nElapsed time in milliseconds (Rotation): " + rotationWatch.ElapsedMilliseconds); | |||
"\nElapsed time in milliseconds (Rotation): " + rotationWatch.ElapsedMilliseconds); | |||
} | |||
return; |
@@ -1,5 +1,5 @@ | |||
fileFormatVersion: 2 | |||
guid: 7dc1ce4b31c63e34da34775dd888c0dc | |||
guid: cab51972497b97040814f06bb409e7c0 | |||
folderAsset: yes | |||
DefaultImporter: | |||
externalObjects: {} |
@@ -1,5 +1,5 @@ | |||
fileFormatVersion: 2 | |||
guid: 239a923e346c7564eab507004b9293df | |||
guid: fa7ea7fa4ff2dea4eaf717b9f695b516 | |||
folderAsset: yes | |||
DefaultImporter: | |||
externalObjects: {} |
@@ -1,5 +1,5 @@ | |||
fileFormatVersion: 2 | |||
guid: 48abdf8d850ee0b4890625559ec6f520 | |||
guid: a667ec11dafd88c4882174cec99ff9bd | |||
folderAsset: yes | |||
DefaultImporter: | |||
externalObjects: {} |
@@ -28,9 +28,16 @@ namespace MLAgents | |||
"agentParameters.onDemandDecision"); | |||
SerializedProperty cameras = serializedAgent.FindProperty( | |||
"agentParameters.agentCameras"); | |||
SerializedProperty renderTextures = serializedAgent.FindProperty( | |||
"agentParameters.agentRenderTextures"); | |||
EditorGUILayout.PropertyField(brain); | |||
if (cameras.arraySize > 0 && renderTextures.arraySize > 0) | |||
{ | |||
EditorGUILayout.HelpBox("Brain visual observations created by first getting all cameras then all render textures.", MessageType.Info); | |||
} | |||
EditorGUILayout.LabelField("Agent Cameras"); | |||
for (int i = 0; i < cameras.arraySize; i++) | |||
{ | |||
@@ -51,6 +58,28 @@ namespace MLAgents | |||
} | |||
EditorGUILayout.EndHorizontal(); | |||
EditorGUILayout.LabelField("Agent RenderTextures"); | |||
for (int i = 0; i < renderTextures.arraySize; i++) | |||
{ | |||
EditorGUILayout.PropertyField( | |||
renderTextures.GetArrayElementAtIndex(i), | |||
new GUIContent("RenderTexture " + (i + 1).ToString() + ": ")); | |||
} | |||
EditorGUILayout.BeginHorizontal(); | |||
if (GUILayout.Button("Add RenderTextures", EditorStyles.miniButton)) | |||
{ | |||
renderTextures.arraySize++; | |||
} | |||
if (GUILayout.Button("Remove RenderTextures", EditorStyles.miniButton)) | |||
{ | |||
renderTextures.arraySize--; | |||
} | |||
EditorGUILayout.EndHorizontal(); | |||
EditorGUILayout.PropertyField( | |||
maxSteps, |
@@ -97,7 +97,7 @@ namespace MLAgents | |||
property.FindPropertyRelative(NumVecObsPropName), | |||
new GUIContent("Stacked Vectors", | |||
"Number of states that will be stacked before " + | |||
"beeing fed to the neural network.")); | |||
"being fed to the neural network.")); | |||
position.y += LineHeight; | |||
EditorGUI.indentLevel--; | |||
} |
@@ -0,0 +1,37 @@ | |||
using UnityEngine; | |||
using NUnit.Framework; | |||
namespace MLAgents.Tests | |||
{ | |||
public class RayPerceptionTests : MonoBehaviour | |||
{ | |||
[Test] | |||
public void TestPerception3D() | |||
{ | |||
var angles = new[] {0f, 90f, 180f}; | |||
var tags = new[] {"test", "test_1"}; | |||
var go = new GameObject("MyGameObject"); | |||
RayPerception3D rayPer3D = go.AddComponent<RayPerception3D>(); | |||
var result = rayPer3D.Perceive(1f, angles , | |||
tags, 0f, 0f); | |||
Debug.Log(result.Count); | |||
Assert.IsTrue(result.Count == angles.Length * (tags.Length + 2)); | |||
} | |||
[Test] | |||
public void TestPerception2D() | |||
{ | |||
var angles = new[] {0f, 90f, 180f}; | |||
var tags = new[] {"test", "test_1"}; | |||
var go = new GameObject("MyGameObject"); | |||
RayPerception2D rayPer2D = go.AddComponent<RayPerception2D>(); | |||
var result = rayPer2D.Perceive(1f, angles, | |||
tags); | |||
Debug.Log(result.Count); | |||
Assert.IsTrue(result.Count == angles.Length * (tags.Length + 2)); | |||
} | |||
} | |||
} |
@@ -0,0 +1,3 @@ | |||
fileFormatVersion: 2 | |||
guid: 29010426d01b4569830a85795f4f345b | |||
timeCreated: 1552498773 |