mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 00:43:54 +08:00
use enabled flag from controlsState instead of carState (#2518)
* use enabled from controls instead of carstate
* update process replay
* rm
* fix long test
* update reff
Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: d8fea41b2a
This commit is contained in:
@@ -12,7 +12,7 @@ def dmonitoringd_thread(sm=None, pm=None):
|
||||
pm = messaging.PubMaster(['dMonitoringState'])
|
||||
|
||||
if sm is None:
|
||||
sm = messaging.SubMaster(['driverState', 'liveCalibration', 'carState', 'model'], poll=['driverState'])
|
||||
sm = messaging.SubMaster(['driverState', 'liveCalibration', 'carState', 'controlsState', 'model'], poll=['driverState'])
|
||||
|
||||
driver_status = DriverStatus()
|
||||
driver_status.is_rhd_region = Params().get("IsRHD") == b"1"
|
||||
@@ -22,7 +22,6 @@ def dmonitoringd_thread(sm=None, pm=None):
|
||||
sm['liveCalibration'].calStatus = Calibration.INVALID
|
||||
sm['liveCalibration'].rpyCalib = [0, 0, 0]
|
||||
sm['carState'].vEgo = 0.
|
||||
sm['carState'].cruiseState.enabled = False
|
||||
sm['carState'].cruiseState.speed = 0.
|
||||
sm['carState'].buttonEvents = []
|
||||
sm['carState'].steeringPressed = False
|
||||
@@ -47,7 +46,7 @@ def dmonitoringd_thread(sm=None, pm=None):
|
||||
sm['carState'].steeringPressed or \
|
||||
sm['carState'].gasPressed
|
||||
if driver_engaged:
|
||||
driver_status.update(Events(), True, sm['carState'].cruiseState.enabled, sm['carState'].standstill)
|
||||
driver_status.update(Events(), True, sm['controlsState'].enabled, sm['carState'].standstill)
|
||||
v_cruise_last = v_cruise
|
||||
|
||||
if sm.updated['model']:
|
||||
@@ -55,14 +54,14 @@ def dmonitoringd_thread(sm=None, pm=None):
|
||||
|
||||
# Get data from dmonitoringmodeld
|
||||
events = Events()
|
||||
driver_status.get_pose(sm['driverState'], sm['liveCalibration'].rpyCalib, sm['carState'].vEgo, sm['carState'].cruiseState.enabled)
|
||||
driver_status.get_pose(sm['driverState'], sm['liveCalibration'].rpyCalib, sm['carState'].vEgo, sm['controlsState'].enabled)
|
||||
|
||||
# Block engaging after max number of distrations
|
||||
if driver_status.terminal_alert_cnt >= MAX_TERMINAL_ALERTS or driver_status.terminal_time >= MAX_TERMINAL_DURATION:
|
||||
events.add(car.CarEvent.EventName.tooDistracted)
|
||||
|
||||
# Update events from driver state
|
||||
driver_status.update(events, driver_engaged, sm['carState'].cruiseState.enabled, sm['carState'].standstill)
|
||||
driver_status.update(events, driver_engaged, sm['controlsState'].enabled, sm['carState'].standstill)
|
||||
|
||||
# build dMonitoringState packet
|
||||
dat = messaging.new_message('dMonitoringState')
|
||||
|
||||
@@ -118,7 +118,7 @@ class Plant():
|
||||
Plant.live_location_kalman = messaging.pub_sock('liveLocationKalman')
|
||||
Plant.health = messaging.pub_sock('health')
|
||||
Plant.thermal = messaging.pub_sock('thermal')
|
||||
Plant.driverState = messaging.pub_sock('driverState')
|
||||
Plant.dMonitoringState = messaging.pub_sock('dMonitoringState')
|
||||
Plant.cal = messaging.pub_sock('liveCalibration')
|
||||
Plant.controls_state = messaging.sub_sock('controlsState')
|
||||
Plant.plan = messaging.sub_sock('plan')
|
||||
@@ -370,10 +370,9 @@ class Plant():
|
||||
live_parameters.liveParameters.stiffnessFactor = 1.0
|
||||
Plant.live_params.send(live_parameters.to_bytes())
|
||||
|
||||
driver_state = messaging.new_message('driverState')
|
||||
driver_state.driverState.faceOrientation = [0.] * 3
|
||||
driver_state.driverState.facePosition = [0.] * 2
|
||||
Plant.driverState.send(driver_state.to_bytes())
|
||||
dmon_state = messaging.new_message('dMonitoringState')
|
||||
dmon_state.dMonitoringState.isDistracted = False
|
||||
Plant.dMonitoringState.send(dmon_state.to_bytes())
|
||||
|
||||
health = messaging.new_message('health')
|
||||
health.health.safetyModel = car.CarParams.SafetyModel.hondaNidec
|
||||
|
||||
@@ -339,7 +339,6 @@ class LongitudinalControl(unittest.TestCase):
|
||||
manager.prepare_managed_process('radard')
|
||||
manager.prepare_managed_process('controlsd')
|
||||
manager.prepare_managed_process('plannerd')
|
||||
manager.prepare_managed_process('dmonitoringd')
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
@@ -362,7 +361,6 @@ def run_maneuver_worker(k):
|
||||
manager.start_managed_process('radard')
|
||||
manager.start_managed_process('controlsd')
|
||||
manager.start_managed_process('plannerd')
|
||||
manager.start_managed_process('dmonitoringd')
|
||||
|
||||
plot, valid = man.evaluate()
|
||||
plot.write_plot(output_dir, "maneuver" + str(k + 1).zfill(2))
|
||||
@@ -370,7 +368,6 @@ def run_maneuver_worker(k):
|
||||
manager.kill_managed_process('radard')
|
||||
manager.kill_managed_process('controlsd')
|
||||
manager.kill_managed_process('plannerd')
|
||||
manager.kill_managed_process('dmonitoringd')
|
||||
|
||||
if valid:
|
||||
break
|
||||
|
||||
@@ -266,7 +266,7 @@ CONFIGS = [
|
||||
proc_name="dmonitoringd",
|
||||
pub_sub={
|
||||
"driverState": ["dMonitoringState"],
|
||||
"liveCalibration": [], "carState": [], "model": [], "gpsLocation": [],
|
||||
"liveCalibration": [], "carState": [], "model": [], "controlsState": [],
|
||||
},
|
||||
ignore=["logMonoTime", "valid"],
|
||||
init_callback=get_car_params,
|
||||
|
||||
@@ -1 +1 @@
|
||||
7dde5eab03feb7e0801fe24e9fea0f3629987571
|
||||
aeb870b1d4f523506570f66e76dde0b036c58f40
|
||||
Reference in New Issue
Block a user