annotate scripts/safety-analysis.py @ 1240:bb14f919d1cb

cleaned use of centile (np only) and added info in classify-objects
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Mon, 05 Feb 2024 14:14:14 -0500
parents 14140b55e580
children fe35473acee3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1129
diff changeset
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