t0 = time.time() sim.run(TIME_DELAY) # The EGO should start moving first POV.follow_closest_lane(True, MAX_POV_SPEED, False) while True: sim.run(0.5) egoCurrentState = ego.state if egoCurrentState.speed > MAX_EGO_SPEED + SPEED_VARIANCE: raise evaluator.TestException("Ego speed exceeded limit, {} > {} m/s".format(egoCurrentState.speed, MAX_EGO_SPEED + SPEED_VARIANCE)) POVCurrentState = POV.state if POVCurrentState.speed > MAX_POV_SPEED + SPEED_VARIANCE: raise evaluator.TestException("POV speed exceeded limit, {} > {} m/s".format(POVCurrentState.speed, MAX_POV_SPEED + SPEED_VARIANCE)) if POVCurrentState.angular_velocity.y > MAX_POV_ROTATION: raise evaluator.TestException("POV angular rotation exceeded limit, {} > {} deg/s".format(POVCurrentState.angular_velocity, MAX_POV_ROTATION)) if evaluator.separation(POVCurrentState.position, lgsvl.Vector(1.8, 0, 125)) < 5: break if time.time() - t0 > TIME_LIMIT: break except evaluator.TestException as e: print("FAILED: " + repr(e)) exit() separation = evaluator.separation(egoCurrentState.position, POVCurrentState.position) if separation > MAX_FOLLOWING_DISTANCE: print("FAILED: EGO following distance was not maintained, {} > {}".format(separation, MAX_FOLLOWING_DISTANCE)) else: print("PASSED")
sim.run(0.5) egoCurrentState = ego.state if egoCurrentState.speed > MAX_EGO_SPEED + SPEED_VARIANCE: raise evaluator.TestException( "Ego speed exceeded limit, {} > {} m/s".format( egoCurrentState.speed, MAX_EGO_SPEED + SPEED_VARIANCE)) POVCurrentState = POV.state if POVCurrentState.speed > MAX_POV_SPEED + SPEED_VARIANCE: raise evaluator.TestException( "POV speed exceeded limit, {} > {} m/s".format( POVCurrentState.speed, MAX_POV_SPEED + SPEED_VARIANCE)) if POVCurrentState.angular_velocity.y > MAX_POV_ROTATION: raise evaluator.TestException( "POV angular rotation exceeded limit, {} > {} deg/s".format( POVCurrentState.angular_velocity, MAX_POV_ROTATION)) if time.time() - t0 > TIME_LIMIT: break except evaluator.TestException as e: print("FAILED: " + repr(e)) exit() separation = evaluator.separation(egoCurrentState.position, POVCurrentState.position) if separation > MAX_FOLLOWING_DISTANCE: print("FAILED: EGO following distance was not maintained, {} > {}".format( separation, MAX_FOLLOWING_DISTANCE)) else: print("PASSED")
ego.on_collision(on_collision) POV1.on_collision(on_collision) POV2.on_collision(on_collision) POV3.on_collision(on_collision) try: t0 = time.time() while True: egoCurrentState = ego.state if egoCurrentState.speed > MAX_SPEED + SPEED_VARIANCE: raise evaluator.TestException("Ego speed exceeded limit, {} > {} m/s".format(egoCurrentState.speed, MAX_SPEED + SPEED_VARIANCE)) POV1CurrentState = POV1.state POV2CurrentState = POV2.state POV3CurrentState = POV3.state POVSeparation = evaluator.separation(POV1CurrentState.position, POV2CurrentState.position) if POVSeparation > MAX_POV_SEPARATION + SEPARATION_VARIANCE: raise evaluator.TestException("POV1 and POV2 are too far apart: {} > {}".format(POVSeparation, MAX_POV_SEPARATION + SEPARATION_VARIANCE)) if POV1CurrentState.speed > MAX_SPEED + SPEED_VARIANCE: raise evaluator.TestException("POV1 speed exceeded limit, {} > {} m/s".format(POV1CurrentState.speed, MAX_SPEED + SPEED_VARIANCE)) if POV2CurrentState.speed > MAX_SPEED + SPEED_VARIANCE: raise evaluator.TestException("POV2 speed exceeded limit, {} > {} m/s".format(POV2CurrentState.speed, MAX_SPEED + SPEED_VARIANCE)) if POV3CurrentState.speed > MAX_SPEED + SPEED_VARIANCE: raise evaluator.TestException("POV3 speed exceeded limit, {} > {} m/s".format(POV3CurrentState.speed, MAX_SPEED + SPEED_VARIANCE)) sim.run(0.5) if time.time() - t0 > TIME_LIMIT: