#pragma once #include #include "common/mat.h" #include "system/hardware/hw.h" const int TRAJECTORY_SIZE = 33; const int LAT_MPC_N = 16; const int LON_MPC_N = 32; const float MIN_DRAW_DISTANCE = 10.0; const float MAX_DRAW_DISTANCE = 100.0; template 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 result; } 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; namespace tici_dm_crop { const int x_offset = -72; const int y_offset = -144; const int width = 954; }; const mat3 fcam_intrinsic_matrix = Hardware::EON() ? (mat3){{910., 0., 1164.0 / 2, 0., 910., 874.0 / 2, 0., 0., 1.}} : (mat3){{2648.0, 0.0, 1928.0 / 2, 0.0, 2648.0, 1208.0 / 2, 0.0, 0.0, 1.0}}; // tici ecam focal probably wrong? magnification is not consistent across frame // Need to retrain model before this can be changed const mat3 ecam_intrinsic_matrix = (mat3){{567.0, 0.0, 1928.0 / 2, 0.0, 567.0, 1208.0 / 2, 0.0, 0.0, 1.0}}; static inline mat3 get_model_yuv_transform(bool bayer = true) { float db_s = Hardware::EON() ? 0.5 : 1.0; // debayering does a 2x downscale on EON const mat3 transform = (mat3){{ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }}; return bayer ? transform_scale_buffer(transform, db_s) : transform; }