diff --git a/selfdrive/modeld/models/driving.cc b/selfdrive/modeld/models/driving.cc index e0421e8cca..6f635cd8ee 100644 --- a/selfdrive/modeld/models/driving.cc +++ b/selfdrive/modeld/models/driving.cc @@ -228,19 +228,24 @@ void fill_plan(cereal::ModelDataV2::Builder &framed, const ModelOutputPlanPredic void fill_lane_lines(cereal::ModelDataV2::Builder &framed, const std::array &plan_t, const ModelOutputLaneLines &lanes) { + + const auto &left_far = lanes.get_lane_idx(0); + const auto &left_near = lanes.get_lane_idx(1); + const auto &right_near = lanes.get_lane_idx(2); + const auto &right_far = lanes.get_lane_idx(3); std::array left_far_y, left_far_z; std::array left_near_y, left_near_z; std::array right_near_y, right_near_z; std::array right_far_y, right_far_z; for (int j=0; j left_far; - std::array left_near; - std::array right_near; - std::array right_far; -}; -static_assert(sizeof(ModelOutputLinesXY) == sizeof(ModelOutputYZ)*TRAJECTORY_SIZE*4); - struct ModelOutputLineProbVal { float val_deprecated; float val; @@ -99,12 +93,28 @@ struct ModelOutputLinesProb { }; static_assert(sizeof(ModelOutputLinesProb) == sizeof(ModelOutputLineProbVal)*4); +struct ModelOutputLaneLinesElement { + std::array mean; + std::array std; + std::array prob; +}; +static_assert(sizeof(ModelOutputLaneLinesElement) == (sizeof(ModelOutputYZ)*TRAJECTORY_SIZE*2) + sizeof(float)*LANELINES_MHP_N); + struct ModelOutputLaneLines { - ModelOutputLinesXY mean; - ModelOutputLinesXY std; + std::array prediction; ModelOutputLinesProb prob; + + constexpr const ModelOutputLaneLinesElement &get_lane_idx(int lane_idx) const { + int max_idx = 0; + for (int i = 1; i < prediction.size(); i++) { + if (prediction[i].prob[lane_idx] > prediction[max_idx].prob[lane_idx]) { + max_idx = i; + } + } + return prediction[max_idx]; + } }; -static_assert(sizeof(ModelOutputLaneLines) == (sizeof(ModelOutputLinesXY)*2) + sizeof(ModelOutputLinesProb)); +static_assert(sizeof(ModelOutputLaneLines) == (sizeof(ModelOutputLaneLinesElement)*LANELINES_MHP_N) + (sizeof(ModelOutputLinesProb))); struct ModelOutputEdgessXY { std::array left; diff --git a/selfdrive/modeld/models/supercombo.dlc b/selfdrive/modeld/models/supercombo.dlc index a27e3d1180..df9ff4f7e7 100644 --- a/selfdrive/modeld/models/supercombo.dlc +++ b/selfdrive/modeld/models/supercombo.dlc @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ba3fe3e61853cc1434e3e220f40c8e9d1f1b9bab8458196ba3bea6a10b82c6ed -size 72718099 +oid sha256:c67435e36760a0335154d784d880baf10f3be3c16dd9de53cf20a85d43813c17 +size 76722695 diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index 3039035fbc..aa72618929 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bda57c1a66944f5a633ecd739a24d62702c717a234f2fdcc499dfa1d61c3c19e -size 73147489 +oid sha256:a83fd5f6ce4bba18d18491341f916492414fa012552ecaa8bca3d1273292b0ec +size 77115165 diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index bf4e1eadb8..d4ae01287f 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -5fb5cd71a6e878cf45593ecea22c93e932f70c31 \ No newline at end of file +0c93e2e8951a249ebdae55bb49354d918b5e7f85