热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在ROS中处理yaml文件

在ROS系统中,参数读写一般通过xml或者yaml格式的文件,其中yaml用得比较多。这是一种可读性高,轻量级的标记语言,简单好用。对于yaml文件,ros中用的较早版本的yaml-
在ROS系统中,参数读写一般通过xml或者yaml格式的文件,其中yaml用得比较多。这是一种可读性高,轻量级的标记语言,简单好用。
对于yaml文件,ros中用的较早版本的 yaml-cpp库,最新的可在github上下载,并按照readme中所述的方法编译安装。

特别留意的是,如果需要生成共享库,cmake的时候后面一定要加上 -DBUILD_SHARED_LIBS=ON 这句话。


有了yaml库,在CMakeLists.txt中加入,

link_directories(/usr/local/lib)
include_directories(/usr/local/include/yaml-cpp)
最后别忘了在链接库target_link_libraries时,加上yaml-cpp。
关于库的使用,github上有一些简单的 tutorial教程。

以下是简单的yaml文件读写操作示例。

#include 
#include 
#include 
#include 

int main(int argc, char **argv)
{
    std::string fin = "/home/user/param/param.yaml";       //yaml文件所在的路径
    YAML::Node yamlCOnfig= YAML::LoadFile(fin);
    int int_param = yamlConfig["int_param"].as();
    std::cout <<"  node size: " <() <<"\n";
    yamlConfig["bool_param"] = !yamlConfig["bool_param"].as();
    yamlConfig["str_param"] = "test";
    std::ofstream file;
    file.open(fin);
    file.flush();
    file < 
 

其中,yaml文件里的内容为:

bool_param: true
int_param: 2
double_param: 0.5
str_param: "123"

也可采用Emit来生成yaml文件,代码如下:

#include 
#include 
#include 
#include 

int main(int argc, char **argv)
{
    std::ofstream fout("/home/user/param/param.yaml");
    YAML::Emitter out(fout);
    out < 
 

推荐阅读
author-avatar
只被你耐_396
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有