在c++中使用yaml-cpp动态调参
在c++中使用yaml-cpp动态调参
使用yaml-cpp可以进行动态调参,无需重新编译,节省调试时间。
安装
安装yaml-cpp
1 | git clone https://github.com/jbeder/yaml-cpp.git |
头文件在/usr/local/include,库文件在/usr/local/lib
使用
CmakeLists.txt
1
2
3find_package(yaml-cpp REQUIRED)
include_directories(${YAML_CPP_INCLUDE_DIR})
target_link_libraries(your_file_name yaml-cpp)yaml文件
1
2
3
4
5
6
7
8kp:
a: 500
b: 300
c: 200
kd:
a: 30
b: 20
c: 10源文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Mat3 _Kp, _Kd;
void read_yaml()
{
YAML::Node config;
try
{
config = YAML::LoadFile(YAML_PATH);
} catch(YAML::BadFile &e)
{
std::cout << "read error, please change YAML_PATH in file State_Towr.cpp" << std::endl;
return;
}
_Kp = Vec3(config["kp"]["a"].as<int>(), config["kp"]["b"].as<int>(), config["kp"]["c"].as<int>()).asDiagonal();
_Kd = Vec3(config["kd"]["a"].as<int>(), config["kd"]["b"].as<int>(), config["kd"]["c"].as<int>()).asDiagonal();
std::cout << "Change kp to ["
<< config["kp"]["a"].as<int>() << ", "
<< config["kp"]["b"].as<int>() << ", "
<< config["kp"]["c"].as<int>() << ", "
<< "]" << std::endl;
std::cout << "Change kd to ["
<< config["kd"]["a"].as<int>() << ", "
<< config["kd"]["b"].as<int>() << ", "
<< config["kd"]["c"].as<int>() << ", "
<< "]" << std::endl;
}
void main()
{
read_yaml();
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 范子琦的博客!
评论