Mercurial Hosting > traffic-intelligence
view scripts/safety-analysis.py @ 399:c389fae9689a
Added a class to read list of image instead of video. This is controlled by the use of the database-filename and folder-data parameters in the config file.
author | Jean-Philippe Jodoin <jpjodoin@gmail.com> |
---|---|
date | Mon, 29 Jul 2013 17:12:45 -0400 |
parents | 91679eb2ff2c |
children | 6551a3cf1750 |
line wrap: on
line source
#! /usr/bin/env python import utils, storage, prediction, events, moving import sys, argparse import matplotlib.pyplot as plt import numpy as np # todo: very slow if too many predicted trajectories # add computation of probality of unsucessful evasive action parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file') parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (vector computation), constant velocity, normal adaptation, point set prediction)', choices = ['cvd', 'cv', 'na', 'ps']) parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points') args = parser.parse_args() params = utils.TrackingParameters() params.loadConfigFile(args.configFilename) # parameters for prediction methods if args.predictionMethod: predictionMethod = args.predictionMethod else: predictionMethod = params.predictionMethod if predictionMethod == 'cvd': predictionParameters = prediction.CVDirectPredictionParameters() elif predictionMethod == 'cv': predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) elif predictionMethod == 'na': predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, params.nPredictedTrajectories, params.maxAcceleration, params.maxSteering, params.useFeaturesForPrediction) elif predictionMethod == 'ps': predictionParameters = prediction.PointSetPredictionParameters(params.nPredictedTrajectories, params.maxPredictedSpeed) else: print('Prediction method {} is not valid. See help.'.format(predictionMethod)) sys.exit() evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, params.nPredictedTrajectories, params.minAcceleration, params.maxAcceleration, params.maxSteering, params.useFeaturesForPrediction) objects = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'object') if params.useFeaturesForPrediction: features = storage.loadTrajectoriesFromSqlite(params.databaseFilename,'feature') # needed if normal adaptation for obj in objects: obj.setFeatures(features) interactions = events.createInteractions(objects) for inter in interactions: inter.computeIndicators() inter.computeCrossingsCollisions(predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones) storage.saveIndicators(params.databaseFilename, interactions) if args.displayCollisionPoints: plt.figure() allCollisionPoints = [] for inter in interactions: for collisionPoints in inter.collisionPoints.values(): allCollisionPoints += collisionPoints moving.Point.plotAll(allCollisionPoints) plt.axis('equal')