40 std::lock_guard<std::mutex> lock(mutex_);
45 sensor_info_map_.clear();
46 distort_model_map_.clear();
47 undistort_model_map_.clear();
51 MultiSensorMeta sensor_list_proto;
52 if (!GetProtoFromASCIIFile(config_file, &sensor_list_proto)) {
53 AERROR <<
"Invalid MultiSensorMeta file: " << config_file;
57 auto AddSensorInfo = [
this](
const SensorMeta& sensor_meta_proto) {
59 sensor_info.
name = sensor_meta_proto.name();
60 sensor_info.
type =
static_cast<SensorType
>(sensor_meta_proto.type());
62 static_cast<SensorOrientation
>(sensor_meta_proto.orientation());
63 sensor_info.
frame_id = sensor_meta_proto.name();
66 auto pair = sensor_info_map_.insert(
67 make_pair(sensor_meta_proto.name(), sensor_info));
69 AERROR <<
"Duplicate sensor name error.";
74 std::shared_ptr<BrownCameraDistortionModel> distort_model(
77 auto intrinsic_file = IntrinsicPath(sensor_info.
frame_id);
79 AERROR <<
"Failed to load camera intrinsic:" << intrinsic_file;
82 distort_model_map_.insert(make_pair(
83 sensor_meta_proto.name(),
84 std::dynamic_pointer_cast<BaseCameraDistortionModel>(distort_model)));
85 undistort_model_map_.insert(make_pair(sensor_meta_proto.name(),
86 distort_model->get_camera_model()));
91 for (
const SensorMeta& sensor_meta_proto : sensor_list_proto.sensor_meta()) {
92 if (!AddSensorInfo(sensor_meta_proto)) {
93 AERROR <<
"Failed to add sensor_info: " << sensor_meta_proto.name();
99 AINFO <<
"Init sensor_manager success.";
bool GetProtoFromASCIIFile(const std::string &file_name, google::protobuf::Message *message)
Parses the content of the file specified by the file_name as ascii representation of protobufs,...