27 {
28 const std::string params_dir = params_path;
29
30 try {
31 YAML::Node lidar_height =
32 YAML::LoadFile(params_dir + "/" + "velodyne128_height.yaml");
33 Eigen::Affine3d trans;
34 trans.linear() = Eigen::Matrix3d::Identity();
35 AINFO << trans.translation() <<
" "
36 << lidar_height["vehicle"]["parameters"]["height"];
37 trans.translation() << 0.0, 0.0,
38 lidar_height["vehicle"]["parameters"]["height"].as<double>();
40 } catch (YAML::InvalidNode &in) {
41 AERROR <<
"load velodyne128 extrisic file error"
42 << " YAML::InvalidNode exception";
43 return false;
44 } catch (YAML::TypedBadConversion<float> &bc) {
45 AERROR <<
"load velodyne128 extrisic file error, "
46 << "YAML::TypedBadConversion exception";
47 return false;
48 } catch (YAML::Exception &e) {
49 AERROR <<
"load velodyne128 extrisic file "
50 << " error, YAML exception:" << e.what();
51 return false;
52 }
53
54 std::vector<std::string> extrinsic_filelist;
55 extrinsic_filelist.push_back(params_dir +
56 "/velodyne128_novatel_extrinsics.yaml");
57 for (const auto &camera_name : camera_names) {
58 extrinsic_filelist.push_back(params_dir + "/" + camera_name +
59 "_extrinsics.yaml");
60 }
61
62 for (const auto &yaml_file : extrinsic_filelist) {
63 try {
64 YAML::Node node = YAML::LoadFile(yaml_file);
65 if (node.IsNull()) {
66 AINFO <<
"Load " << yaml_file <<
" failed! please check!";
67 return false;
68 }
69 std::string child_frame_id = node["child_frame_id"].as<std::string>();
70 std::string
frame_id = node[
"header"][
"frame_id"].as<std::string>();
71 double q[4] = {node["transform"]["rotation"]["w"].as<double>(),
72 node["transform"]["rotation"]["x"].as<double>(),
73 node["transform"]["rotation"]["y"].as<double>(),
74 node["transform"]["rotation"]["z"].as<double>()};
75 double t[3] = {node["transform"]["translation"]["x"].as<double>(),
76 node["transform"]["translation"]["y"].as<double>(),
77 node["transform"]["translation"]["z"].as<double>()};
78 Eigen::Quaterniond qq(q[0], q[1], q[2], q[3]);
79 Eigen::Affine3d trans;
80 trans.linear() = qq.matrix();
81 trans.translation() << t[0], t[1], t[2];
83 AINFO <<
"failed to add transform from " << child_frame_id <<
" to "
85 }
86 } catch (YAML::InvalidNode &in) {
87 AERROR <<
"load camera extrisic file " << yaml_file
88 << " with error, YAML::InvalidNode exception";
89 return false;
90 } catch (YAML::TypedBadConversion<double> &bc) {
91 AERROR <<
"load camera extrisic file " << yaml_file
92 << " with error, YAML::TypedBadConversion exception";
93 return false;
94 } catch (YAML::Exception &e) {
95 AERROR <<
"load camera extrisic file " << yaml_file
96 << " with error, YAML exception:" << e.what();
97 return false;
98 }
99 }
100 return true;
101}