mirror of
https://github.com/infiniteCable2/openpilot.git
synced 2026-08-05 00:05:57 +08:00
0c506c868d
* Controls: Pause lateral control based on blinker state and vehicle speed * in its own module * tests * cleanup tests * ui * always refresh on show panel * remove default * change to 20 default * need to update params live * shorter * off by default * lol lint * use ExpandableToggleRow * not needed * shorter * ci ui preview delay for all offroad * more * Revert "more" This reverts commit 809cfd99dac4183e318f3f7dff8e7c14f8223d62. * Revert "ci ui preview delay for all offroad" This reverts commit ab38292fa84165081e32fcfc7b44f7f7afdfe791. --------- Co-authored-by: nayan8teen <nayan8teen@gmail.com>
131 lines
3.6 KiB
Python
131 lines
3.6 KiB
Python
"""
|
|
Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors.
|
|
|
|
This file is part of sunnypilot and is licensed under the MIT License.
|
|
See the LICENSE.md file in the root directory for more details.
|
|
"""
|
|
from cereal import car
|
|
|
|
from openpilot.common.conversions import Conversions as CV
|
|
from openpilot.sunnypilot.selfdrive.controls.lib.blinker_pause_lateral import BlinkerPauseLateral
|
|
|
|
|
|
class TestBlinkerPauseLateral:
|
|
|
|
def setup_method(self):
|
|
self.blinker_pause_lateral = BlinkerPauseLateral()
|
|
self._reset_states()
|
|
|
|
def _reset_states(self):
|
|
self.blinker_pause_lateral.enabled = True
|
|
self.blinker_pause_lateral.is_metric = False
|
|
self.blinker_pause_lateral.min_speed = 20 # MPH
|
|
|
|
self.CS = car.CarState.new_message()
|
|
self.CS.vEgo = 0
|
|
self.CS.leftBlinker = False
|
|
self.CS.rightBlinker = False
|
|
|
|
def _test_should_blinker_pause_lateral(self, expected_results) -> None:
|
|
for left in (True, False):
|
|
for right in (True, False):
|
|
self.CS.leftBlinker = left
|
|
self.CS.rightBlinker = right
|
|
|
|
result = self.blinker_pause_lateral.update(self.CS)
|
|
assert result == expected_results[(left, right)]
|
|
|
|
def test_below_min_speed_blinker(self):
|
|
self.CS.vEgo = 4.5 # ~10 MPH
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): True,
|
|
(False, True): True,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_above_min_speed_blinker(self):
|
|
self.CS.vEgo = 13.4 # ~30 MPH
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): False,
|
|
(False, True): False,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_just_below_min_speed(self):
|
|
self.CS.vEgo = (20 * CV.MPH_TO_MS) - 0.01
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): True,
|
|
(False, True): True,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_disabled(self):
|
|
self.blinker_pause_lateral.enabled = False
|
|
self.CS.vEgo = 4.5 # ~10 MPH
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): False,
|
|
(False, True): False,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_metric_units_below_min_speed(self):
|
|
self.blinker_pause_lateral.is_metric = True
|
|
self.CS.vEgo = 5.0 # ~18 km/h
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): True,
|
|
(False, True): True,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_metric_units_above_threshold(self):
|
|
self.blinker_pause_lateral.is_metric = True
|
|
self.CS.vEgo = 6.0 # ~21.6 km/h
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): False,
|
|
(False, True): False,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
def test_change_min_speed_threshold(self):
|
|
self.blinker_pause_lateral.min_speed = 30 # MPH
|
|
|
|
# below min speed
|
|
self.CS.vEgo = 11.2 # ~25 MPH
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): True,
|
|
(False, True): True,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|
|
|
|
# above min speed
|
|
self.CS.vEgo = 15.6 # ~35 MPH
|
|
|
|
expected_results = {
|
|
(False, False): False,
|
|
(True, False): False,
|
|
(False, True): False,
|
|
(True, True): False
|
|
}
|
|
self._test_should_blinker_pause_lateral(expected_results)
|