18#include "modules/perception/radar_detection/proto/preprocessor.pb.h"
30int ContiArsPreprocessor::current_idx_ = 0;
31std::unordered_map<int, int> ContiArsPreprocessor::local2global_;
34 std::string config_file =
49 SkipObjects(raw_obstacles, corrected_obstacles);
50 ExpandIds(corrected_obstacles);
51 CorrectTime(corrected_obstacles);
55void ContiArsPreprocessor::SkipObjects(
58 corrected_obstacles->mutable_header()->CopyFrom(raw_obstacles.
header());
60 for (
const auto& contiobs : raw_obstacles.contiobs()) {
61 double object_timestamp = contiobs.header().timestamp_sec();
62 if (object_timestamp > timestamp &&
68 if (raw_obstacles.contiobs_size() > corrected_obstacles->contiobs_size()) {
69 AINFO <<
"skip objects: " << raw_obstacles.contiobs_size() <<
"-> "
70 << corrected_obstacles->contiobs_size();
74void ContiArsPreprocessor::ExpandIds(drivers::ContiRadar* corrected_obstacles) {
75 for (
int iobj = 0; iobj < corrected_obstacles->contiobs_size(); ++iobj) {
76 const auto& contiobs = corrected_obstacles->
contiobs(iobj);
79 auto ob = local2global_.find(
id);
80 if (ob != local2global_.end()) {
82 corrected_id = GetNextId();
83 ob->second = corrected_id;
85 corrected_id = ob->second;
88 corrected_id = GetNextId();
89 local2global_.insert({id, corrected_id});
91 corrected_obstacles->mutable_contiobs(iobj)->set_obstacle_id(corrected_id);
95void ContiArsPreprocessor::CorrectTime(
96 drivers::ContiRadar* corrected_obstacles) {
97 double correct_timestamp =
98 corrected_obstacles->header().timestamp_sec() - delay_time_;
99 corrected_obstacles->mutable_header()->set_timestamp_sec(correct_timestamp);
102int ContiArsPreprocessor::GetNextId() {
bool Init(const PreprocessorInitOptions &options) override
Init ContiArsPreprocessor config
bool Preprocess(const drivers::ContiRadar &raw_obstacles, const PreprocessorOptions &options, drivers::ContiRadar *corrected_obstacles) override
Correct radar raw obstacles.
bool GetProtoFromFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as a representation of protobufs,...
const double CONTI_ARS_INTERVAL
std::string GetConfigFile(const std::string &config_path, const std::string &config_file)
#define PERF_FUNCTION(...)
#define PERCEPTION_REGISTER_PREPROCESSOR(name)
optional int32 obstacle_id
optional apollo::common::Header header
repeated ContiRadarObs contiobs
optional double delay_time