fix the tests

pull/31792/head
Shane Smiskol 1 year ago
parent a46abef677
commit e10a3a1008
  1. 8
      selfdrive/controls/tests/test_cruise_speed.py
  2. 8
      selfdrive/controls/tests/test_following_distance.py
  3. 2
      selfdrive/test/longitudinal_maneuvers/maneuver.py
  4. 4
      selfdrive/test/longitudinal_maneuvers/plant.py

@ -5,7 +5,6 @@ import unittest
from parameterized import parameterized_class from parameterized import parameterized_class
from cereal import log from cereal import log
from openpilot.common.params import Params
from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, V_CRUISE_MIN, V_CRUISE_MAX, V_CRUISE_INITIAL, IMPERIAL_INCREMENT from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, V_CRUISE_MIN, V_CRUISE_MAX, V_CRUISE_INITIAL, IMPERIAL_INCREMENT
from cereal import car from cereal import car
from openpilot.common.conversions import Conversions as CV from openpilot.common.conversions import Conversions as CV
@ -15,7 +14,7 @@ ButtonEvent = car.CarState.ButtonEvent
ButtonType = car.CarState.ButtonEvent.Type ButtonType = car.CarState.ButtonEvent.Type
def run_cruise_simulation(cruise, e2e, t_end=20.): def run_cruise_simulation(cruise, e2e, personality, t_end=20.):
man = Maneuver( man = Maneuver(
'', '',
duration=t_end, duration=t_end,
@ -26,6 +25,7 @@ def run_cruise_simulation(cruise, e2e, t_end=20.):
prob_lead_values=[0.0], prob_lead_values=[0.0],
breakpoints=[0.], breakpoints=[0.],
e2e=e2e, e2e=e2e,
personality=personality,
) )
valid, output = man.evaluate() valid, output = man.evaluate()
assert valid assert valid
@ -38,12 +38,10 @@ def run_cruise_simulation(cruise, e2e, t_end=20.):
[5,35])) # speed [5,35])) # speed
class TestCruiseSpeed(unittest.TestCase): class TestCruiseSpeed(unittest.TestCase):
def test_cruise_speed(self): def test_cruise_speed(self):
params = Params()
params.put("LongitudinalPersonality", str(self.personality))
print(f'Testing {self.speed} m/s') print(f'Testing {self.speed} m/s')
cruise_speed = float(self.speed) cruise_speed = float(self.speed)
simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e) simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e, self.personality)
self.assertAlmostEqual(simulation_steady_state, cruise_speed, delta=.01, msg=f'Did not reach {self.speed} m/s') self.assertAlmostEqual(simulation_steady_state, cruise_speed, delta=.01, msg=f'Did not reach {self.speed} m/s')

@ -3,14 +3,13 @@ import unittest
import itertools import itertools
from parameterized import parameterized_class from parameterized import parameterized_class
from openpilot.common.params import Params
from cereal import log from cereal import log
from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import desired_follow_distance, get_T_FOLLOW from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import desired_follow_distance, get_T_FOLLOW
from openpilot.selfdrive.test.longitudinal_maneuvers.maneuver import Maneuver from openpilot.selfdrive.test.longitudinal_maneuvers.maneuver import Maneuver
def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False, personality=0):
man = Maneuver( man = Maneuver(
'', '',
duration=t_end, duration=t_end,
@ -20,6 +19,7 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False):
speed_lead_values=[v_lead], speed_lead_values=[v_lead],
breakpoints=[0.], breakpoints=[0.],
e2e=e2e, e2e=e2e,
personality=personality,
) )
valid, output = man.evaluate() valid, output = man.evaluate()
assert valid assert valid
@ -34,10 +34,8 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False):
[0,10,35])) # speed [0,10,35])) # speed
class TestFollowingDistance(unittest.TestCase): class TestFollowingDistance(unittest.TestCase):
def test_following_distance(self): def test_following_distance(self):
params = Params()
params.put("LongitudinalPersonality", str(self.personality))
v_lead = float(self.speed) v_lead = float(self.speed)
simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e) simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e, personality=self.personality)
correct_steady_state = desired_follow_distance(v_lead, v_lead, get_T_FOLLOW(self.personality)) correct_steady_state = desired_follow_distance(v_lead, v_lead, get_T_FOLLOW(self.personality))
err_ratio = 0.2 if self.e2e else 0.1 err_ratio = 0.2 if self.e2e else 0.1
self.assertAlmostEqual(simulation_steady_state, correct_steady_state, delta=(err_ratio * correct_steady_state + .5)) self.assertAlmostEqual(simulation_steady_state, correct_steady_state, delta=(err_ratio * correct_steady_state + .5))

@ -19,6 +19,7 @@ class Maneuver:
self.ensure_start = kwargs.get("ensure_start", False) self.ensure_start = kwargs.get("ensure_start", False)
self.enabled = kwargs.get("enabled", True) self.enabled = kwargs.get("enabled", True)
self.e2e = kwargs.get("e2e", False) self.e2e = kwargs.get("e2e", False)
self.personality = kwargs.get("personality", 0)
self.force_decel = kwargs.get("force_decel", False) self.force_decel = kwargs.get("force_decel", False)
self.duration = duration self.duration = duration
@ -33,6 +34,7 @@ class Maneuver:
only_lead2=self.only_lead2, only_lead2=self.only_lead2,
only_radar=self.only_radar, only_radar=self.only_radar,
e2e=self.e2e, e2e=self.e2e,
personality=self.personality,
force_decel=self.force_decel, force_decel=self.force_decel,
) )

@ -15,7 +15,7 @@ class Plant:
messaging_initialized = False messaging_initialized = False
def __init__(self, lead_relevancy=False, speed=0.0, distance_lead=2.0, def __init__(self, lead_relevancy=False, speed=0.0, distance_lead=2.0,
enabled=True, only_lead2=False, only_radar=False, e2e=False, force_decel=False): enabled=True, only_lead2=False, only_radar=False, e2e=False, personality=0, force_decel=False):
self.rate = 1. / DT_MDL self.rate = 1. / DT_MDL
if not Plant.messaging_initialized: if not Plant.messaging_initialized:
@ -39,6 +39,7 @@ class Plant:
self.only_lead2 = only_lead2 self.only_lead2 = only_lead2
self.only_radar = only_radar self.only_radar = only_radar
self.e2e = e2e self.e2e = e2e
self.personality = personality
self.force_decel = force_decel self.force_decel = force_decel
self.rk = Ratekeeper(self.rate, print_delay_threshold=100.0) self.rk = Ratekeeper(self.rate, print_delay_threshold=100.0)
@ -112,6 +113,7 @@ class Plant:
control.controlsState.longControlState = LongCtrlState.pid if self.enabled else LongCtrlState.off control.controlsState.longControlState = LongCtrlState.pid if self.enabled else LongCtrlState.off
control.controlsState.vCruise = float(v_cruise * 3.6) control.controlsState.vCruise = float(v_cruise * 3.6)
control.controlsState.experimentalMode = self.e2e control.controlsState.experimentalMode = self.e2e
control.controlsState.personality = self.personality
control.controlsState.forceDecel = self.force_decel control.controlsState.forceDecel = self.force_decel
car_state.carState.vEgo = float(self.speed) car_state.carState.vEgo = float(self.speed)
car_state.carState.standstill = self.speed < 0.01 car_state.carState.standstill = self.speed < 0.01

Loading…
Cancel
Save