yaml文件的加载

  • 1. yaml-cpp加载
    • (1)安装编译
    • (2)使用
    • (3)加载参数
  • 2. 使用rosparam
    • 补:添加参数的另一种方式

yaml文件为常用的参数文件,方便调参避免不必要的编译。最近发现了几种加载方法,逐个搜索学习了一下,并进行了实际操作。在此记录一下。

  1. yaml-cpp包加载
  2. 使用rosparam加载
    补: 在launch文件中直接设置参数

1. yaml-cpp加载

(1)安装编译

git clone https://github.com/jbeder/yaml-cpp.git
cd yaml-cpp
mkdir build
cd build
cmake ..  -D BUILD_SHARED_LIBS=ON
make -j
sudo make install

(2)使用

如果不想每次都到 copy 头文件到不同的工程中,那么你可以将整个文件夹 copy 到系统默认的头文件目录, ubuntu 的地址是 /usr/local/include/;将库文件libyaml-cpp.so拷贝到系统默认的 lib 文件夹,ubuntu 是 /usr/local/lib/。

# 复制文件夹
sudo cp -r yaml-cpp  /usr/local/include/
# 复制库文件
sudo cp libyaml-cpp.so  /usr/local/lib/

头文件添加

#include "yaml-cpp/yaml.h"

CMakeLists.txt中添加

target_link_libraries(${PROJECT_NAME} ${INTERFACE}libyaml-cpp.so)

(3)加载参数

举个梨子,配置一个这样的config.yaml文件

name: frank
sex: male
age: 18skills: c++: 1java: 1android: 1python: 1

yaml文件的编写要注意格式 参数名: 值,冒号后面一定要加一个空格。

加载,若相对路径不行,则需要使用绝对路径

YAML::Node config = YAML::LoadFile("path");
cout << "name:" << config["name"].as<string>() << endl;
cout << "age:" << config["age"].as<int>() << endl;
cout << "skills c++:" << config["skills"]["c++"].as<int>() << endl;

2. 使用rosparam

在launch文件中添加下面这句加载yaml文件,修改路径(功能包名、进入功能包后的文件的路径)

<rosparam command="load" file="$(find pkgname) /config/config.yaml" />

加载参数

ros::NodeHandle nh;
string name1;
int age1;
nh.setParam("name", tom);
nh.getParam("/name",name1);
nh.setParam("age", 20);
nh.getParam("/age",age1);
cout << "name1:" <<name1<< endl;
cout << "age1:" <<age1<< endl;

set为从服务器加载,若加载不到则自动生成一个并取默认值。然后再用get获取参数。也可以不用set直接用get去获取。

补:添加参数的另一种方式

在launch文件中用此句话添加参数

<param name="name" type="string" value="frank"/>

启动launch文件时就会自动加载参数到参数服务器中,此方法适用于少量参数的场景。
加载参数的方法与2相同使用get进行获取加载。

yaml文件的加载使用相关推荐

  1. Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战

    Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战 目录 Pandas将dataframe保存为pickle文件并加载保存后的pickl ...

  2. django-2 模板文件的加载

    django-2  模板文件的加载 1.创建模板文件 index.html 2.在django使用模板文件  需要在app下创建templates文件夹   此为django固定模板文件位置 3.编辑 ...

  3. centos uwsgi配置_centos下配置nginx+uwsgi运行py以及静态文件的加载

    其实不限于centos,个人觉得所有的linux都一样,就好像你喜欢把钱放在左边的口袋,我喜欢把钱放右边的口袋,还有的人喜欢把钱放里面的口袋,无非是配置文件的地方不一样 首先安装nginx,嗯,这个自 ...

  4. Django 1.11 bootstrap样式文件无法加载问题解决

    Django 1.11 bootstrap样式文件无法加载问题解决 参考文章: (1)Django 1.11 bootstrap样式文件无法加载问题解决 (2)https://www.cnblogs. ...

  5. ELF文件的加载和动态链接过程

    本文的目的:大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以 ...

  6. 导入Java文件还是class文件_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...

    这一块还没有深入了解,不敢误人子弟. 我知道的,虚拟机在运行的时候,会预先加载一个常用的class,比如java.lang包下面的. 至于你在程序中自己引用的class文件/jar包之类的,是有一个加 ...

  7. python bottle web框架上传静态文件与加载静态文件

    文章目录 1 上传文件 2 加载静态文件 1 上传文件 # 上传文件 @route('/upload', method=['POST','GET']) def upload():f = request ...

  8. java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)

    相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...

  9. VC从文件中加载图片

    用MFC做GDI开发的朋友肯定熟悉CBitmap类,该类封装了HBITMAP对象,简化了关于HBITMAP的API操作,如LoadBitmap方法可直接加载资源中指定ID的图片,但是很多情况下我们需要 ...

  10. 《R数据可视化手册》一1.4 从Excel文件中加载数据

    本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...

最新文章

  1. python正则表达式模块
  2. 筱玛爱游戏——线性基
  3. 2016年3月1日Android实习笔记
  4. Linux0.11内核剖析--内核体系结构
  5. 滚动条判断是否滑动到顶部底部
  6. 程序员内卷?连熬数夜肝出这份2021Java面试题核心知识点总结,近300页!
  7. FTP 编写 4:命令解析
  8. 兼容firstChild和firstElementChild
  9. C语言中的指针型函数值
  10. java 单例模式_谈谈Java中的单例模式
  11. Delta RPMs disabled because /usr/bin/applydeltarpm not installed解决办法
  12. 一个JAVA小虾米初入江湖
  13. Hadoop MR 分区(partition)和全排序(WritableComparable)
  14. mysql 64 免安装_MYSQL 免安装版(windows 7/64)
  15. 网速监测-window小应用
  16. Word页眉设置不同的文字,但是页码按照顺序不变
  17. 虎门大桥抖动,千亿级的物联网市场被打开
  18. 【07】QQ群管理公告小结:
  19. 《4DenoiseNet: Adverse Weather Denoising from Adjacent Point Clouds》
  20. 合并/拆分 Excel?Python、VBA轻松自动化

热门文章

  1. java 逃逸_Java 逃逸分析
  2. python画笔颜色_Python画图 plt.plot()函数细节颜色字符,风格字符,和标记字符
  3. 重启网卡 linux7.5,CentOS 7.5配置网络
  4. SAP 生产订单创建修改日期
  5. 如何在html页面集成markdown编辑器
  6. 送男孩子情人节礼物送什么?情人节必备礼物合集
  7. canvas绘图树状图
  8. Java 中获取Exception的详细信息
  9. IMO 双帐号同步API文档
  10. 中国移动光猫外接一个路由器的方法