Explorar o código

Read calibration file from config

Nick Steyer %!s(int64=2) %!d(string=hai) anos
pai
achega
0d2d48c1eb

+ 1 - 2
Assets/CalibrationRecorderBehavior.cs

@@ -30,14 +30,13 @@ namespace Assets
         void Start()
         {
             taskQueue = new BlockingCollection<Action>();
-            calibrationFileName = Path.Combine(Configuration.Instance.CalibrationFilesDirectory, $"{DateTime.Now:yyyy-dd-M_HH-mm-ss}.csv");
+            calibrationFileName = Path.Combine(Configuration.Instance.OutputCalibrationFilesDirectory, $"{DateTime.Now:yyyy-dd-M_HH-mm-ss}.csv");
             if (!File.Exists(calibrationFileName))
             {
                 File.WriteAllLines(calibrationFileName, new string[] { "Time,WorldX,WorldY,WorldZ,UnityX,UnityY,UnityZ" });
             }
         }
 
-        // Update is called once per frame
         void Update()
         {
             var persons = PersonManager.Persons;

+ 1 - 2
Assets/Scenes/Calibration.unity

@@ -280,7 +280,6 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 9113063bb18312e4e8212e4124aab528, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
-  calibrationCsvPath: C:\Users\nick.steyer\SmartStreetLight\StreetLight\Calibration.csv
 --- !u!4 &1915020870
 Transform:
   m_ObjectHideFlags: 0
@@ -480,7 +479,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 114491592745282986, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
       propertyPath: inputType
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
     - target: {fileID: 114491592745282986, guid: 76db3eb81fd21ae45bab5204e324ae42, type: 3}
       propertyPath: svoInputFileName

+ 4 - 1
Assets/StreamingAssets/Configuration.json

@@ -1 +1,4 @@
-{"CalibrationFilesDirectory":"C:\\Users\\nick.steyer\\SmartStreetLight\\Calibration"}
+{
+	"OutputCalibrationFilesDirectory" : "C:\\Users\\nick.steyer\\SmartStreetLight\\Calibration",
+	"InputCalibrationFilePath" : "C:\\Users\\nick.steyer\\SmartStreetLight\\StreetLight\\Calibration.csv"
+}

+ 36 - 1
Assets/StreetLight/Configuration.cs

@@ -7,7 +7,42 @@ namespace Assets.StreetLight
 {
     public sealed class Configuration
     {
-        public string CalibrationFilesDirectory { get; set; }
+        private string outputCalibrationFilesDirectory;
+
+        /// <summary>
+        /// The directory path where new calibration files are saved when the calibration is run.
+        /// </summary>
+        [JsonRequired]
+        public string OutputCalibrationFilesDirectory
+        {
+            get => outputCalibrationFilesDirectory;
+            set
+            {
+                if (!Directory.Exists(value))
+                {
+                    throw new InvalidOperationException($"Directory \"{value}\" does not exist.");
+                }
+                outputCalibrationFilesDirectory = value;
+            }
+        }
+
+        private string inputCalibrationFilePath;
+        /// <summary>
+        /// The file path to the calibration file that is used as input for the actual calibration.
+        /// </summary>
+        [JsonRequired]
+        public string InputCalibrationFilePath
+        {
+            get => inputCalibrationFilePath;
+            set
+            {
+                if (!File.Exists(value))
+                {
+                    throw new InvalidOperationException($"File \"{value}\" does not exist.");
+                }
+                inputCalibrationFilePath = value;
+            }
+        }
 
         private static readonly Lazy<Configuration> lazy = new(() => JsonConvert.DeserializeObject<Configuration>(File.ReadAllText(Path.Combine(Application.streamingAssetsPath, "Configuration.json"))));
 

+ 4 - 4
Assets/StreetLight/Scripts/PersonManager.cs

@@ -1,12 +1,13 @@
 using Assets.StreetLight.Adapters;
 using Assets.StreetLight.Interfaces;
 using Assets.StreetLight.Poco;
+using Newtonsoft.Json;
+using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Globalization;
 using System.IO;
 using System.Linq;
-using UnityEditor;
 using UnityEngine;
 
 namespace Assets.StreetLight.Scripts
@@ -16,15 +17,14 @@ namespace Assets.StreetLight.Scripts
         public ObservableCollection<Person> Persons { get; private set; }
         public PositionCalculator PositionCalculator { get; private set; }
 
-        public string calibrationCsvPath;
-
         private IPersonDetector personDetector;
 
         void Start()
         {
+            var lines = File.ReadAllLines(Configuration.Instance.InputCalibrationFilePath);
+
             var calibrationPoints = new List<CalibrationPoint>();
 
-            var lines = File.ReadAllLines(calibrationCsvPath);
             foreach (var line in lines.Skip(1))
             {
                 var coordinates = line.Split(',').Skip(1).ToArray();