|
|
|
@ -102,15 +102,12 @@ class ModelState: |
|
|
|
|
|
|
|
|
|
self.full_features_buffer = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.FEATURE_LEN), dtype=np.float32) |
|
|
|
|
self.full_desire = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.DESIRE_LEN), dtype=np.float32) |
|
|
|
|
self.full_prev_desired_curv = np.zeros((1, ModelConstants.FULL_HISTORY_BUFFER_LEN, ModelConstants.PREV_DESIRED_CURV_LEN), dtype=np.float32) |
|
|
|
|
self.temporal_idxs = slice(-1-(ModelConstants.TEMPORAL_SKIP*(ModelConstants.INPUT_HISTORY_BUFFER_LEN-1)), None, ModelConstants.TEMPORAL_SKIP) |
|
|
|
|
|
|
|
|
|
# policy inputs |
|
|
|
|
self.numpy_inputs = { |
|
|
|
|
'desire': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.DESIRE_LEN), dtype=np.float32), |
|
|
|
|
'traffic_convention': np.zeros((1, ModelConstants.TRAFFIC_CONVENTION_LEN), dtype=np.float32), |
|
|
|
|
'lateral_control_params': np.zeros((1, ModelConstants.LATERAL_CONTROL_PARAMS_LEN), dtype=np.float32), |
|
|
|
|
'prev_desired_curv': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.PREV_DESIRED_CURV_LEN), dtype=np.float32), |
|
|
|
|
'features_buffer': np.zeros((1, ModelConstants.INPUT_HISTORY_BUFFER_LEN, ModelConstants.FEATURE_LEN), dtype=np.float32), |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -143,7 +140,6 @@ class ModelState: |
|
|
|
|
self.numpy_inputs['desire'][:] = self.full_desire.reshape((1,ModelConstants.INPUT_HISTORY_BUFFER_LEN,ModelConstants.TEMPORAL_SKIP,-1)).max(axis=2) |
|
|
|
|
|
|
|
|
|
self.numpy_inputs['traffic_convention'][:] = inputs['traffic_convention'] |
|
|
|
|
self.numpy_inputs['lateral_control_params'][:] = inputs['lateral_control_params'] |
|
|
|
|
imgs_cl = {name: self.frames[name].prepare(bufs[name], transforms[name].flatten()) for name in self.vision_input_names} |
|
|
|
|
|
|
|
|
|
if TICI and not USBGPU: |
|
|
|
@ -169,11 +165,6 @@ class ModelState: |
|
|
|
|
self.policy_output = self.policy_run(**self.policy_inputs).contiguous().realize().uop.base.buffer.numpy() |
|
|
|
|
policy_outputs_dict = self.parser.parse_policy_outputs(self.slice_outputs(self.policy_output, self.policy_output_slices)) |
|
|
|
|
|
|
|
|
|
# TODO model only uses last value now |
|
|
|
|
self.full_prev_desired_curv[0,:-1] = self.full_prev_desired_curv[0,1:] |
|
|
|
|
self.full_prev_desired_curv[0,-1,:] = policy_outputs_dict['desired_curvature'][0, :] |
|
|
|
|
self.numpy_inputs['prev_desired_curv'][:] = 0*self.full_prev_desired_curv[0, self.temporal_idxs] |
|
|
|
|
|
|
|
|
|
combined_outputs_dict = {**vision_outputs_dict, **policy_outputs_dict} |
|
|
|
|
if SEND_RAW_PRED: |
|
|
|
|
combined_outputs_dict['raw_pred'] = np.concatenate([self.vision_output.copy(), self.policy_output.copy()]) |
|
|
|
@ -292,7 +283,6 @@ def main(demo=False): |
|
|
|
|
frame_id = sm["roadCameraState"].frameId |
|
|
|
|
v_ego = max(sm["carState"].vEgo, 0.) |
|
|
|
|
lat_delay = sm["liveDelay"].lateralDelay + LAT_SMOOTH_SECONDS |
|
|
|
|
lateral_control_params = np.array([v_ego, lat_delay], dtype=np.float32) |
|
|
|
|
if sm.updated["liveCalibration"] and sm.seen['roadCameraState'] and sm.seen['deviceState']: |
|
|
|
|
device_from_calib_euler = np.array(sm["liveCalibration"].rpyCalib, dtype=np.float32) |
|
|
|
|
dc = DEVICE_CAMERAS[(str(sm['deviceState'].deviceType), str(sm['roadCameraState'].sensor))] |
|
|
|
@ -325,7 +315,6 @@ def main(demo=False): |
|
|
|
|
inputs:dict[str, np.ndarray] = { |
|
|
|
|
'desire': vec_desire, |
|
|
|
|
'traffic_convention': traffic_convention, |
|
|
|
|
'lateral_control_params': lateral_control_params, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
mt1 = time.perf_counter() |
|
|
|
|