poll carState without conflate

pull/32380/head
Shane Smiskol 1 year ago
parent 411667df99
commit 06754cffbd
  1. 15
      selfdrive/car/card.py
  2. 16
      selfdrive/controls/controlsd.py

@ -136,13 +136,14 @@ class Car:
CS.events = self.events.to_msg() CS.events = self.events.to_msg()
def state_transition(self, CS: car.CarState): def state_transition(self, CS: car.CarState):
self.v_cruise_helper.update_v_cruise(CS, self.sm['controlsState'].enabled, self.is_metric) pass
# self.v_cruise_helper.update_v_cruise(CS, self.sm['controlsState'].enabled, self.is_metric)
controlsState = self.sm['controlsState'] #
if self.controlsState_prev.state == State.disabled: # controlsState = self.sm['controlsState']
# TODO: use ENABLED_STATES from controlsd? it includes softDisabling which isn't possible here # if self.controlsState_prev.state == State.disabled:
if controlsState.state in (State.preEnabled, State.overriding, State.enabled): # # TODO: use ENABLED_STATES from controlsd? it includes softDisabling which isn't possible here
self.v_cruise_helper.initialize_v_cruise(CS, controlsState.experimentalMode) # if controlsState.state in (State.preEnabled, State.overriding, State.enabled):
# self.v_cruise_helper.initialize_v_cruise(CS, controlsState.experimentalMode)
def state_publish(self, CS: car.CarState): def state_publish(self, CS: car.CarState):
"""carState and carParams publish loop""" """carState and carParams publish loop"""

@ -85,16 +85,17 @@ class Controls:
self.camera_packets = ["roadCameraState", "driverCameraState", "wideRoadCameraState"] self.camera_packets = ["roadCameraState", "driverCameraState", "wideRoadCameraState"]
self.log_sock = messaging.sub_sock('androidLog') self.log_sock = messaging.sub_sock('androidLog')
self.car_state_sock = messaging.sub_sock('carState', timeout=20)
ignore = self.sensor_packets + ['testJoystick'] ignore = self.sensor_packets + ['testJoystick']
if SIMULATION: if SIMULATION:
ignore += ['driverCameraState', 'managerState'] ignore += ['driverCameraState', 'managerState']
self.sm = messaging.SubMaster(['carState', 'deviceState', 'pandaStates', 'peripheralState', 'modelV2', 'liveCalibration', self.sm = messaging.SubMaster(['deviceState', 'pandaStates', 'peripheralState', 'modelV2', 'liveCalibration',
'carOutput', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'carOutput', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman',
'managerState', 'liveParameters', 'radarState', 'liveTorqueParameters', 'managerState', 'liveParameters', 'radarState', 'liveTorqueParameters',
'testJoystick'] + self.camera_packets + self.sensor_packets, 'testJoystick'] + self.camera_packets + self.sensor_packets,
poll='carState', ignore_alive=ignore, ignore_avg_freq=ignore+['radarState', 'testJoystick'], ignore_valid=['testJoystick', ],
ignore_alive=ignore, ignore_avg_freq=ignore+['radarState', 'testJoystick'], ignore_valid=['testJoystick', ]) frequency=int(1/DT_CTRL))
# read params # read params
self.joystick_mode = self.params.get_bool("JoystickDebugMode") self.joystick_mode = self.params.get_bool("JoystickDebugMode")
@ -112,6 +113,7 @@ class Controls:
if not self.CP.openpilotLongitudinalControl: if not self.CP.openpilotLongitudinalControl:
self.params.remove("ExperimentalMode") self.params.remove("ExperimentalMode")
self.CS_prev = car.CarState.new_message()
self.AM = AlertManager() self.AM = AlertManager()
self.events = Events() self.events = Events()
@ -384,10 +386,12 @@ class Controls:
def data_sample(self): def data_sample(self):
"""Receive data from sockets""" """Receive data from sockets"""
self.sm.update(20) CS = messaging.recv_one(self.car_state_sock)
if CS is None:
CS = self.CS_prev
cloudlog.timestamp('Got carState') cloudlog.timestamp('Got carState')
CS = self.sm['carState'] self.sm.update(0)
if not self.initialized: if not self.initialized:
all_valid = CS.canValid and self.sm.all_checks() all_valid = CS.canValid and self.sm.all_checks()
@ -811,6 +815,8 @@ class Controls:
self.publish_logs(CS, start_time, CC, lac_log) self.publish_logs(CS, start_time, CC, lac_log)
cloudlog.timestamp("Logs published") cloudlog.timestamp("Logs published")
self.CS_prev = CS
def read_personality_param(self): def read_personality_param(self):
try: try:
return int(self.params.get('LongitudinalPersonality')) return int(self.params.get('LongitudinalPersonality'))

Loading…
Cancel
Save