diff --git a/selfdrive/modeld/constants.py b/selfdrive/modeld/constants.py index cf5157591e..1cf00b583e 100644 --- a/selfdrive/modeld/constants.py +++ b/selfdrive/modeld/constants.py @@ -15,7 +15,7 @@ class ModelConstants: # model inputs constants MODEL_FREQ = 20 FEATURE_LEN = 512 - FULL_HISTORY_BUFFER_LEN = 99 + FULL_HISTORY_BUFFER_LEN = 24 DESIRE_LEN = 8 TRAFFIC_CONVENTION_LEN = 2 LAT_PLANNER_STATE_LEN = 4 diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index 82a2ef1597..f93d5c9572 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -60,6 +60,8 @@ class ModelState: self.frames = {'input_imgs': DrivingModelFrame(context), 'big_input_imgs': DrivingModelFrame(context)} self.prev_desire = np.zeros(ModelConstants.DESIRE_LEN, dtype=np.float32) + self.last_feat_age = 0 + # img buffers are managed in openCL transform code self.numpy_inputs = { 'desire': np.zeros((1, (ModelConstants.FULL_HISTORY_BUFFER_LEN+1), ModelConstants.DESIRE_LEN), dtype=np.float32), @@ -125,8 +127,12 @@ class ModelState: outputs = self.parser.parse_outputs(self.slice_outputs(self.output)) - self.numpy_inputs['features_buffer'][0,:-1] = self.numpy_inputs['features_buffer'][0,1:] - self.numpy_inputs['features_buffer'][0,-1] = outputs['hidden_state'][0, :] + if self.last_feat_age == 4: + print("rotating features") + self.numpy_inputs['features_buffer'][0,:-1] = self.numpy_inputs['features_buffer'][0,1:] + self.numpy_inputs['features_buffer'][0,-1] = outputs['hidden_state'][0, :] + self.last_feat_age = 0 + self.last_feat_age += 1 # TODO model only uses last value now @@ -277,6 +283,7 @@ def main(demo=False): } mt1 = time.perf_counter() + print("running main at", meta_main.frame_id) model_output = model.run(buf_main, buf_extra, model_transform_main, model_transform_extra, inputs, prepare_only) mt2 = time.perf_counter() model_execution_time = mt2 - mt1