diff c/Parameters.cpp @ 348:c64a4f889b97

added safety analysis options to feature tracking (with default values for backward compatibility)
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Wed, 26 Jun 2013 18:40:31 -0400
parents f21ef87f98f1
children e3f910c26fae
line wrap: on
line diff
--- a/c/Parameters.cpp	Wed Jun 26 17:28:45 2013 -0400
+++ b/c/Parameters.cpp	Wed Jun 26 18:40:31 2013 -0400
@@ -18,7 +18,7 @@
     ("help,h", "displays this help message")
     ("tf", "tracks features")
     ("gf", "groups features")
-    ("config-file", po::value<string>(&configurationFilename)->default_value("tracking.cfg"), "configuration file")
+    ("config-file", po::value<string>(&configurationFilename), "configuration file")
     ;
 
   po::positional_options_description p;
@@ -56,11 +56,15 @@
     ("max-distance", po::value<float>(&maxDistance), "maximum distance between features for grouping")
     ("min-velocity-cosine", po::value<float>(&minVelocityCosine), "minimum cosine of the angle between the velocity vectors for grouping")
     ("min-nfeatures-group", po::value<float>(&minNFeaturesPerGroup), "minimum average number of features per frame to create a vehicle hypothesis")
-    ;
     // ("max-uturn-cosine", po::value<float>(&maxUTurnCosine), "maximum cosine value to detect U-turn")
     // ("nframes-avoid-uturn", po::value<int>(&nFramesAvoidUTurn), "number of frames over which a feature should not make a U-turn")
-
-
+    // Safety Analysis
+    ("max-predicted-speed", po::value<float>(&maxPredictedSpeed)->default_value(50.), "maximum speed when predicting future motion (km/h)")
+    ("prediction-time-horizon", po::value<float>(&predictionTimeHorizon)->default_value(5.), "time horizon for collision prediction (s)")
+    ("collision-distance", po::value<float>(&collisionDistance)->default_value(1.8), "collision distance threshold (m)")
+    ("crossing-zones", po::value<bool>(&crossingZones)->default_value(false), "option to compute crossing zones and predicted PET")
+    ;
+  
   po::options_description cmdLine;
   cmdLine.add(onlyCmdLine).add(cmdLineAndFile);
   try {
@@ -69,10 +73,16 @@
 	  options(cmdLine).positional(p).allow_unregistered().run(), vm);
     notify(vm);
 
+    if (vm.count("config-file") == 0) {
+      cout << "Missing configuration file" << endl;
+      cout << cmdLine << endl;
+      exit(0);      
+    }
+      
     cout << "Using configuration file " << configurationFilename << endl;
 
     ifstream configurationFile(configurationFilename.c_str());
-    store(po::parse_config_file(configurationFile, cmdLineAndFile), vm);
+    store(po::parse_config_file(configurationFile, cmdLineAndFile, true), vm);
     notify(vm);
 
     parameterDescription = getParameterDescription(cmdLineAndFile, vm);