annotate trafficintelligence/tests/prediction.txt @ 1030:aafbc0bab925

moved method around to avoid cross-dependencies
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 19 Jun 2018 10:04:52 -0400
parents cc5cb04b04b0
children a095d4fbb2ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1030
aafbc0bab925 moved method around to avoid cross-dependencies
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1028
diff changeset
1 >>> from trafficintelligence.prediction import *
aafbc0bab925 moved method around to avoid cross-dependencies
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1028
diff changeset
2 >>> from trafficintelligence import moving, storage, utils
aafbc0bab925 moved method around to avoid cross-dependencies
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 1028
diff changeset
3 >>> from numpy import absolute, array, max
255
13ec22bec5d4 corrected typos and bugs and added a test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
4
662
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
5 >>> et = PredictedTrajectoryConstant(moving.Point(0,0), moving.Point(1,0))
255
13ec22bec5d4 corrected typos and bugs and added a test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
6 >>> et.predictPosition(4) # doctest:+ELLIPSIS
271
bbd9c09e6869 changed the names to prediction methods and predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 256
diff changeset
7 (4.0...,0.0...)
255
13ec22bec5d4 corrected typos and bugs and added a test
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff changeset
8 >>> et.predictPosition(1) # doctest:+ELLIPSIS
271
bbd9c09e6869 changed the names to prediction methods and predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 256
diff changeset
9 (1.0...,0.0...)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
10
662
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
11 >>> et = PredictedTrajectoryConstant(moving.Point(0,0), moving.Point(1,0), moving.NormAngle(0.1,0), maxSpeed = 2)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
12 >>> et.predictPosition(10) # doctest:+ELLIPSIS
271
bbd9c09e6869 changed the names to prediction methods and predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 256
diff changeset
13 (15.5...,0.0...)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
14 >>> et.predictPosition(11) # doctest:+ELLIPSIS
271
bbd9c09e6869 changed the names to prediction methods and predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 256
diff changeset
15 (17.5...,0.0...)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
16 >>> et.predictPosition(12) # doctest:+ELLIPSIS
271
bbd9c09e6869 changed the names to prediction methods and predicted trajectories
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 256
diff changeset
17 (19.5...,0.0...)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
18
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
19 >>> import random
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
20 >>> acceleration = lambda: random.uniform(-0.5,0.5)
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
21 >>> steering = lambda: random.uniform(-0.1,0.1)
662
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
22 >>> et = PredictedTrajectoryRandomControl(moving.Point(0,0),moving.Point(1,1), acceleration, steering, maxSpeed = 2)
256
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
23 >>> p = et.predictPosition(500)
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
24 >>> max(et.getPredictedSpeeds()) <= 2.
dc1faa7287bd added the normal adaptation class
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 255
diff changeset
25 True
289
e56c34c1ebac refactored and commented functions (saving data is now outside of the computation functions)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 271
diff changeset
26
e56c34c1ebac refactored and commented functions (saving data is now outside of the computation functions)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 271
diff changeset
27 >>> p = moving.Point(3,4)
662
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
28 >>> sp = SafetyPoint(p, 0.1, 0)
289
e56c34c1ebac refactored and commented functions (saving data is now outside of the computation functions)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 271
diff changeset
29 >>> print(sp)
e56c34c1ebac refactored and commented functions (saving data is now outside of the computation functions)
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 271
diff changeset
30 3 4 0.1 0
662
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
31
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
32 >>> et1 = PredictedTrajectoryConstant(moving.Point(-5.,0.), moving.Point(1.,0.))
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
33 >>> et2 = PredictedTrajectoryConstant(moving.Point(0.,-5.), moving.Point(0.,1.))
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
34 >>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 10)
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
35 >>> collision
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
36 True
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
37 >>> t
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
38 5
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
39 >>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 5)
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
40 >>> collision
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
41 True
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
42 >>> t
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
43 5
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
44 >>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 4)
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
45 >>> collision
72174e66aba5 corrected bug that increased TTC by 1 frame and structure to store collision points and crossing zones
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 466
diff changeset
46 False
941
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
47
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
48 >>> proto = storage.loadTrajectoriesFromSqlite('../samples/laurier.sqlite', 'feature', [1204])[0]
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
49 >>> proto.getPositions().computeCumulativeDistances()
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
50 >>> et = PredictedTrajectoryPrototype(proto.getPositionAt(10)+moving.Point(0.5, 0.5), proto.getVelocityAt(10)*0.9, proto, True)
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
51 >>> absolute(et.initialSpeed - proto.getVelocityAt(10).norm2()*0.9) < 1e-5
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
52 True
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: 945
diff changeset
53 >>> for t in range(int(proto.length())): x=et.predictPosition(t)
941
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
54 >>> traj = et.getPredictedTrajectory()
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
55 >>> traj.computeCumulativeDistances()
945
05d4302bf67e working motion pattern prediction with rotation and features
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 942
diff changeset
56 >>> absolute(array(traj.distances).mean() - et.initialSpeed < 1e-3)
941
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
57 True
c5191acb025f added test for motion prediction at constant speed with prototype
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 662
diff changeset
58
942
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
59 >>> et = PredictedTrajectoryPrototype(proto.getPositionAt(10)+moving.Point(0.6, 0.6), proto.getVelocityAt(10)*0.7, proto, False)
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
60 >>> absolute(et.initialSpeed - proto.getVelocityAt(10).norm2()*0.7) < 1e-5
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
61 True
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
62 >>> proto = moving.MovingObject.generate(1, moving.Point(-5.,0.), moving.Point(1.,0.), moving.TimeInterval(0,10))
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
63 >>> et = PredictedTrajectoryPrototype(proto.getPositionAt(0)+moving.Point(0., 1.), proto.getVelocityAt(0)*0.5, proto, False)
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: 945
diff changeset
64 >>> for t in range(int(proto.length()/0.5)): x=et.predictPosition(t)
942
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
65 >>> et.predictPosition(10) # doctest:+ELLIPSIS
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
66 (0.0...,1.0...)
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
67 >>> et.predictPosition(12) # doctest:+ELLIPSIS
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
68 (1.0...,1.0...)
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
69
ab13aaf41432 implemented motion prediction with prototypes at constant ratio, with tests
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents: 941
diff changeset
70