diff --git a/selfdrive/common/modeldata.h b/selfdrive/common/modeldata.h index 9a9414cfa3..8d91f7be10 100644 --- a/selfdrive/common/modeldata.h +++ b/selfdrive/common/modeldata.h @@ -10,33 +10,19 @@ const int LON_MPC_N = 32; const float MIN_DRAW_DISTANCE = 10.0; const float MAX_DRAW_DISTANCE = 100.0; -template -const std::array convert_array_to_type(const std::array &src) { - std::array dst = {}; - for (int i=0; i +constexpr std::array build_idxs(float max_val) { + std::array result{}; + for (int i = 0; i < size; ++i) { + result[i] = max_val * ((i / (double)(size - 1)) * (i / (double)(size - 1))); } - return dst; + return result; } -const std::array T_IDXS = { - 0. , 0.00976562, 0.0390625 , 0.08789062, 0.15625 , - 0.24414062, 0.3515625 , 0.47851562, 0.625 , 0.79101562, - 0.9765625 , 1.18164062, 1.40625 , 1.65039062, 1.9140625 , - 2.19726562, 2.5 , 2.82226562, 3.1640625 , 3.52539062, - 3.90625 , 4.30664062, 4.7265625 , 5.16601562, 5.625 , - 6.10351562, 6.6015625 , 7.11914062, 7.65625 , 8.21289062, - 8.7890625 , 9.38476562, 10.}; -const auto T_IDXS_FLOAT = convert_array_to_type(T_IDXS); - -const std::array X_IDXS = { - 0. , 0.1875, 0.75 , 1.6875, 3. , 4.6875, - 6.75 , 9.1875, 12. , 15.1875, 18.75 , 22.6875, - 27. , 31.6875, 36.75 , 42.1875, 48. , 54.1875, - 60.75 , 67.6875, 75. , 82.6875, 90.75 , 99.1875, - 108. , 117.1875, 126.75 , 136.6875, 147. , 157.6875, - 168.75 , 180.1875, 192.}; -const auto X_IDXS_FLOAT = convert_array_to_type(X_IDXS); +constexpr auto T_IDXS = build_idxs(10.0); +constexpr auto T_IDXS_FLOAT = build_idxs(10.0); +constexpr auto X_IDXS = build_idxs(192.0); +constexpr auto X_IDXS_FLOAT = build_idxs(192.0); const int TICI_CAM_WIDTH = 1928;