C++工程中使用yaml配置文件实例
主程序src/main.cpp内容如下:
#include <yaml-cpp/yaml.h> //yaml-cpp 头文件
#include <iostream>
int main(int argc, char** argv) {
YAML::Node config_node = YAML::LoadFile("../test.yaml");
std::cout << config_node["data_path"]["infer_data_path"].as<std::string>() << std::endl;
std::cout << config_node["data_path"]["single_path"].as<std::string>() << std::endl;
std::cout << config_node["data_path"]["rgb_pcd_path"].as<std::string>() << std::endl;
std::cout << config_node["imu_pre_integration"]["covariance"]["measurement"]["accel"].as<float>() << std::endl;
return 0;
}
文件CMakeLists.txt内容如下:
cmake_minimum_required(VERSION 3.0.2)
project(yaml_test)
find_package(yaml-cpp REQUIRED)
add_executable(main src/main.cpp)
include_directories(/usr/include/yaml-cpp)
target_link_libraries(main /usr/lib/x86_64-linux-gnu/libyaml-cpp.a)
测试配置文件test.yaml内容如下:
#
# data output path:
#
data_path:
infer_data_path: "/home/ws/Data/11/22/"
single_path: "/home/ws/Data/11/23/"
rgb_pcd_path: "/home/ws/Data/11/24/"
#
# key frame detection
#
key_frame:
# max. distance between two key frames:
max_distance: 0.25
# max. time interval between two key frames:
max_interval: 0.10
#
# sliding window size:
#
sliding_window_size: 20
#
# select measurements:
#
measurements:
map_matching: true
imu_pre_integration: true
#
# measurement configs:
#
lidar_odometry:
noise: [1.0, 1.0, 1.0, 0.01, 0.01, 0.01] # x y z yaw roll pitch
map_matching:
noise: [1.0, 1.0, 4.0, 0.01, 0.01, 0.01] # x y z yaw roll pitch
gnss_position:
noise: [1.0, 1.0, 4.0] # x y z
imu_pre_integration:
earth:
# gravity can be calculated from https://www.sensorsone.com/local-gravity-calculator/ using latitude and height:
gravity_magnitude: 9.80943
covariance:
measurement:
accel: 2.5e-3
gyro: 1.0e-4
random_walk:
accel: 1.0e-4
gyro: 1.0e-4
该文件包含各种类型数据,可根据实际应用修改。
工程内容文件如下: