view python/tests/prediction.txt @ 941:c5191acb025f

added test for motion prediction at constant speed with prototype
author Nicolas Saunier <nicolas.saunier@polymtl.ca>
date Tue, 18 Jul 2017 16:21:39 -0400
parents 72174e66aba5
children ab13aaf41432
line wrap: on
line source

>>> from prediction import *
>>> import moving, storage
>>> from numpy import absolute, array

>>> et = PredictedTrajectoryConstant(moving.Point(0,0), moving.Point(1,0))
>>> et.predictPosition(4) # doctest:+ELLIPSIS
(4.0...,0.0...)
>>> et.predictPosition(1) # doctest:+ELLIPSIS
(1.0...,0.0...)

>>> et = PredictedTrajectoryConstant(moving.Point(0,0), moving.Point(1,0), moving.NormAngle(0.1,0), maxSpeed = 2)
>>> et.predictPosition(10) # doctest:+ELLIPSIS
(15.5...,0.0...)
>>> et.predictPosition(11) # doctest:+ELLIPSIS
(17.5...,0.0...)
>>> et.predictPosition(12) # doctest:+ELLIPSIS
(19.5...,0.0...)

>>> import random
>>> acceleration = lambda: random.uniform(-0.5,0.5)
>>> steering = lambda: random.uniform(-0.1,0.1)
>>> et = PredictedTrajectoryRandomControl(moving.Point(0,0),moving.Point(1,1), acceleration, steering, maxSpeed = 2)
>>> p = et.predictPosition(500)
>>> from numpy import max
>>> max(et.getPredictedSpeeds()) <= 2.
True

>>> p = moving.Point(3,4)
>>> sp = SafetyPoint(p, 0.1, 0)
>>> print(sp)
3 4 0.1 0

>>> et1 = PredictedTrajectoryConstant(moving.Point(-5.,0.), moving.Point(1.,0.))
>>> et2 = PredictedTrajectoryConstant(moving.Point(0.,-5.), moving.Point(0.,1.))
>>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 10)
>>> collision
True
>>> t
5
>>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 5)
>>> collision
True
>>> t
5
>>> collision, t, cp1, cp2 = computeCollisionTime(et1, et2, 0.1, 4)
>>> collision
False

>>> proto = storage.loadTrajectoriesFromSqlite('../samples/laurier.sqlite', 'feature', [1204])[0]
>>> proto.getPositions().computeCumulativeDistances()
>>> et = PredictedTrajectoryPrototype(proto.getPositionAt(10)+moving.Point(0.5, 0.5), proto.getVelocityAt(10)*0.9, proto, True)
>>> absolute(et.initialSpeed - proto.getVelocityAt(10).norm2()*0.9) < 1e-5
True
>>> for t in xrange(int(proto.length())): x=et.predictPosition(t)
>>> traj = et.getPredictedTrajectory()
>>> traj.computeCumulativeDistances()
>>> (absolute(array(traj.distances) - et.initialSpeed) < 1e-5).all()
True