Mercurial Hosting > traffic-intelligence
annotate scripts/safety-analysis.py @ 1156:f7fbe624fff7
added helper functions for categorical variables
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Fri, 25 Sep 2020 11:56:59 -0400 |
parents | 14140b55e580 |
children | fe35473acee3 |
rev | line source |
---|---|
998
933670761a57
updated code to python 3 (tests pass and scripts run, but non-executed parts of code are probably still not correct)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
974
diff
changeset
|
1 #! /usr/bin/env python3 |
328
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
3 import sys, argparse, random |
949
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
4 from multiprocessing import Pool |
328
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 |
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
6 import matplotlib.pyplot as plt |
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 import numpy as np |
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
8 |
1028
cc5cb04b04b0
major update using the trafficintelligence package name and install through pip
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
998
diff
changeset
|
9 from trafficintelligence import storage, prediction, events, moving |
cc5cb04b04b0
major update using the trafficintelligence package name and install through pip
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
998
diff
changeset
|
10 |
357
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
11 # todo: very slow if too many predicted trajectories |
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
12 # add computation of probality of unsucessful evasive action |
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
13 |
337
dc2e68e936c7
work in progress
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
335
diff
changeset
|
14 parser = argparse.ArgumentParser(description='The program processes indicators for all pairs of road users in the scene') |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
15 parser.add_argument('--cfg', dest = 'configFilename', help = 'name of the configuration file', required = True) |
1128
e5c43496d9d8
added -d optional argument
Etienne Beauchamp <etienne-2.beauchamp@polymtl.ca>
parents:
1028
diff
changeset
|
16 parser.add_argument('-d', dest = 'databaseFilename', help = 'name of the Sqlite database file (overrides the configuration file)') |
857
6d89520e269f
minor modifications to safety-analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
559
diff
changeset
|
17 parser.add_argument('-n', dest = 'nObjects', help = 'number of objects to analyse', type = int) |
6d89520e269f
minor modifications to safety-analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
559
diff
changeset
|
18 # TODO analyze only |
943
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
19 parser.add_argument('--prediction-method', dest = 'predictionMethod', help = 'prediction method (constant velocity (cvd: vector computation (approximate); cve: equation solving; cv: discrete time (approximate)), normal adaptation, point set prediction)', choices = ['cvd', 'cve', 'cv', 'na', 'ps', 'mp']) |
974
eb42f2f51490
minor argument rename
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
949
diff
changeset
|
20 parser.add_argument('-p', dest = 'prototypeDatabaseFilename', help = 'name of the database containing the prototypes') |
1150
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
21 parser.add_argument('-c', dest = 'minPrototypeNMatchings', help = 'minimum number of matchings per prototype', type = int, default = 1) |
1147 | 22 # parser.add_argument('--categorize', dest = 'categorize', help = 'computes interaction categories', action = 'store_true') TODO, add angle parameters in tracking.cfg - the safety analysis parameters should probably be spun off tracking.cfg |
946
e5970606066f
bug fix on list filtering (cannot remove while iterating) and motion prediction keeping the same features
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
945
diff
changeset
|
23 parser.add_argument('--no-motion-prediction', dest = 'noMotionPrediction', help = 'does not compute indicators like TTC depending on motion prediction', action = 'store_true') |
881
8ba82b371eea
work on storing PET
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
857
diff
changeset
|
24 parser.add_argument('--pet', dest = 'computePET', help = 'computes PET', action = 'store_true') |
482
f6415f012640
adding functionalities (save images directly to display trajectories to create movies
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
476
diff
changeset
|
25 parser.add_argument('--display-cp', dest = 'displayCollisionPoints', help = 'display collision points', action = 'store_true') |
857
6d89520e269f
minor modifications to safety-analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
559
diff
changeset
|
26 parser.add_argument('--nthreads', dest = 'nProcesses', help = 'number of processes to run in parallel', type = int, default = 1) |
337
dc2e68e936c7
work in progress
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
335
diff
changeset
|
27 args = parser.parse_args() |
348
c64a4f889b97
added safety analysis options to feature tracking (with default values for backward compatibility)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
344
diff
changeset
|
28 |
536
95276d310972
renamed TrackingParameters to ProcessParameters
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
533
diff
changeset
|
29 params = storage.ProcessParameters(args.configFilename) |
1129
e257643b1d0e
forgot the conditional case
Etienne Beauchamp <etienne-2.beauchamp@polymtl.ca>
parents:
1128
diff
changeset
|
30 |
e257643b1d0e
forgot the conditional case
Etienne Beauchamp <etienne-2.beauchamp@polymtl.ca>
parents:
1128
diff
changeset
|
31 # selected database to overide the configuration file |
e257643b1d0e
forgot the conditional case
Etienne Beauchamp <etienne-2.beauchamp@polymtl.ca>
parents:
1128
diff
changeset
|
32 if args.databaseFilename is not None: |
e257643b1d0e
forgot the conditional case
Etienne Beauchamp <etienne-2.beauchamp@polymtl.ca>
parents:
1128
diff
changeset
|
33 params.databaseFilename = args.databaseFilename |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
34 |
350
7e9ad2d9d79c
added new parameters in safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
348
diff
changeset
|
35 # parameters for prediction methods |
857
6d89520e269f
minor modifications to safety-analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
559
diff
changeset
|
36 if args.predictionMethod is not None: |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
37 predictionMethod = args.predictionMethod |
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
38 else: |
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
39 predictionMethod = params.predictionMethod |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
40 |
559
806df5f61c03
adapted safety-analysis script to use multi-threading
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
558
diff
changeset
|
41 def accelerationDistribution(): |
806df5f61c03
adapted safety-analysis script to use multi-threading
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
558
diff
changeset
|
42 return random.triangular(-params.maxNormalAcceleration, params.maxNormalAcceleration, 0.) |
806df5f61c03
adapted safety-analysis script to use multi-threading
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
558
diff
changeset
|
43 def steeringDistribution(): |
806df5f61c03
adapted safety-analysis script to use multi-threading
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
558
diff
changeset
|
44 return random.triangular(-params.maxNormalSteering, params.maxNormalSteering, 0.) |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
45 |
881
8ba82b371eea
work on storing PET
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
857
diff
changeset
|
46 if predictionMethod == 'cvd': |
387
91679eb2ff2c
cleaning up safety analysis and the new traditional constant velocity method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
359
diff
changeset
|
47 predictionParameters = prediction.CVDirectPredictionParameters() |
881
8ba82b371eea
work on storing PET
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
857
diff
changeset
|
48 if predictionMethod == 'cve': |
8ba82b371eea
work on storing PET
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
857
diff
changeset
|
49 predictionParameters = prediction.CVExactPredictionParameters() |
359
619ae9a9a788
implemented prediction method at constant velocity with direct intersection computation
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
357
diff
changeset
|
50 elif predictionMethod == 'cv': |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
51 predictionParameters = prediction.ConstantPredictionParameters(params.maxPredictedSpeed) |
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
52 elif predictionMethod == 'na': |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
53 predictionParameters = prediction.NormalAdaptationPredictionParameters(params.maxPredictedSpeed, |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
54 params.nPredictedTrajectories, |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
55 accelerationDistribution, |
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
56 steeringDistribution, |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
57 params.useFeaturesForPrediction) |
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
58 elif predictionMethod == 'ps': |
489
000bddf84ad0
corrected bugs in safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
485
diff
changeset
|
59 predictionParameters = prediction.PointSetPredictionParameters(params.maxPredictedSpeed) |
943
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
60 elif predictionMethod == 'mp': |
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
61 if args.prototypeDatabaseFilename is None: |
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
62 prototypes = storage.loadPrototypesFromSqlite(params.databaseFilename) |
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
63 else: |
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
64 prototypes = storage.loadPrototypesFromSqlite(args.prototypeDatabaseFilename) |
1150
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
65 if args.minPrototypeNMatchings > 0: |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
66 prototypes = [p for p in prototypes if p.getNMatchings() >= args.minPrototypeNMatchings] |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
67 else: |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
68 nProto0Matching = 0 |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
69 for p in prototypes: |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
70 if p.getNMatchings() == 0: |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
71 nProto0Matching += 1 |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
72 print("Prototype {} has 0 matchings".format(p)) |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
73 if len(prototypes) == 0 or nProto0Matching > 0: |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
74 print('Database has {} prototypes without any matching. Exiting'.format(nProto0Matching)) |
14140b55e580
corrected issue with motion pattern for motion prediction for safety analysis (to few matches)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
1147
diff
changeset
|
75 sys.exit() |
939
a2f3f3ca241e
work in progress
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
928
diff
changeset
|
76 for p in prototypes: |
943
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
77 p.getMovingObject().computeCumulativeDistances() |
948
584b9405e494
added safety analysis parameters for motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
946
diff
changeset
|
78 predictionParameters = prediction.PrototypePredictionParameters(prototypes, params.nPredictedTrajectories, params.maxLcssDistance, params.minLcssSimilarity, params.lcssMetric, params.minFeatureTime, params.constantSpeedPrototypePrediction, params.useFeaturesForPrediction) |
943
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
79 # else: |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
80 # no else required, since parameters is required as argument |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
81 |
476
6551a3cf1750
modified compute-homography to work with argparse
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
387
diff
changeset
|
82 # evasiveActionPredictionParameters = prediction.EvasiveActionPredictionParameters(params.maxPredictedSpeed, |
6551a3cf1750
modified compute-homography to work with argparse
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
387
diff
changeset
|
83 # params.nPredictedTrajectories, |
483
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
84 # params.minExtremeAcceleration, |
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
85 # params.maxExtremeAcceleration, |
30b3455978d9
Corrected issues with safety-analysis script, variable names are changed and tracking.cfg accordingly
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
482
diff
changeset
|
86 # params.maxExtremeSteering, |
476
6551a3cf1750
modified compute-homography to work with argparse
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
387
diff
changeset
|
87 # params.useFeaturesForPrediction) |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
88 |
943
b1e8453c207c
work on motion prediction using motion patterns
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
939
diff
changeset
|
89 objects = storage.loadTrajectoriesFromSqlite(params.databaseFilename, 'object', args.nObjects, withFeatures = (params.useFeaturesForPrediction or predictionMethod == 'ps' or predictionMethod == 'mp')) |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
90 |
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
91 interactions = events.createInteractions(objects) |
949
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
92 if args.nProcesses == 1: |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
93 processed = events.computeIndicators(interactions, not args.noMotionPrediction, args.computePET, predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, False, None) |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
94 else: |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
95 pool = Pool(processes = args.nProcesses) |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
96 nInteractionPerProcess = int(np.ceil(len(interactions)/float(args.nProcesses))) |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
97 jobs = [pool.apply_async(events.computeIndicators, args = (interactions[i*nInteractionPerProcess:(i+1)*nInteractionPerProcess], not args.noMotionPrediction, args.computePET, predictionParameters, params.collisionDistance, params.predictionTimeHorizon, params.crossingZones, False, None)) for i in range(args.nProcesses)] |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
98 processed = [] |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
99 for job in jobs: |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
100 processed += job.get() |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
101 pool.close() |
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
102 storage.saveIndicatorsToSqlite(params.databaseFilename, processed) |
338
f3aceea2afbb
first safety analysis script
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
337
diff
changeset
|
103 |
357
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
104 if args.displayCollisionPoints: |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
105 plt.figure() |
357
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
106 allCollisionPoints = [] |
949
d6c1c05d11f5
modified multithreading at the interaction level for safety computations
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
948
diff
changeset
|
107 for inter in processed: |
352
72aa44072093
safety analysis script with option for prediction method
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
351
diff
changeset
|
108 for collisionPoints in inter.collisionPoints.values(): |
357
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
109 allCollisionPoints += collisionPoints |
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
110 moving.Point.plotAll(allCollisionPoints) |
e5fe0e6d48a1
corrected bug computing TTC (resp. pPET) if there is no collision point (resp. crossing zone)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
352
diff
changeset
|
111 plt.axis('equal') |
328
5e43b7389c25
script for safety analysis
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
112 |