diff --git a/nebula_common/include/nebula_common/hesai/hesai_common.hpp b/nebula_common/include/nebula_common/hesai/hesai_common.hpp index a0e9e9bfd..c08ed53a6 100644 --- a/nebula_common/include/nebula_common/hesai/hesai_common.hpp +++ b/nebula_common/include/nebula_common/hesai/hesai_common.hpp @@ -18,12 +18,14 @@ #include "nebula_common/nebula_common.hpp" #include "nebula_common/nebula_status.hpp" +#include #include #include #include #include #include #include +#include #include namespace nebula { @@ -67,6 +69,8 @@ struct HesaiCalibrationConfigurationBase : public CalibrationConfigurationBase virtual nebula::Status LoadFromFile(const std::string & calibration_file) = 0; virtual nebula::Status SaveToFileFromBytes( const std::string & calibration_file, const std::vector & buf) = 0; + + virtual std::tuple getFovPadding() = 0; }; /// @brief struct for Hesai calibration configuration @@ -168,6 +172,19 @@ struct HesaiCalibrationConfiguration : public HesaiCalibrationConfigurationBase ofs.close(); return Status::OK; } + + std::tuple getFovPadding() override + { + float min = INFINITY; + float max = -INFINITY; + + for (const auto & item : azimuth_offset_map) { + min = std::min(min, item.second); + max = std::max(max, item.second); + } + + return {-max, -min}; + } }; /// @brief struct for Hesai correction configuration (for AT) @@ -370,6 +387,12 @@ struct HesaiCorrection : public HesaiCalibrationConfigurationBase float k = 1.f * l / STEP3; return round((1 - k) * elevationOffset[ch * 180 + i] + k * elevationOffset[ch * 180 + i + 1]); } + + std::tuple getFovPadding() override + { + // TODO(mojomex): calculate instead of hard-coding + return {-5, 5}; + } }; /*