yaml文件的加载使用
yaml文件的加载
- 1. yaml-cpp加载
- (1)安装编译
- (2)使用
- (3)加载参数
- 2. 使用rosparam
- 补:添加参数的另一种方式
yaml文件为常用的参数文件,方便调参避免不必要的编译。最近发现了几种加载方法,逐个搜索学习了一下,并进行了实际操作。在此记录一下。
- yaml-cpp包加载
- 使用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文件的加载使用相关推荐
- Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战
Pandas将dataframe保存为pickle文件并加载保存后的pickle文件查看dataframe数据实战 目录 Pandas将dataframe保存为pickle文件并加载保存后的pickl ...
- django-2 模板文件的加载
django-2 模板文件的加载 1.创建模板文件 index.html 2.在django使用模板文件 需要在app下创建templates文件夹 此为django固定模板文件位置 3.编辑 ...
- centos uwsgi配置_centos下配置nginx+uwsgi运行py以及静态文件的加载
其实不限于centos,个人觉得所有的linux都一样,就好像你喜欢把钱放在左边的口袋,我喜欢把钱放右边的口袋,还有的人喜欢把钱放里面的口袋,无非是配置文件的地方不一样 首先安装nginx,嗯,这个自 ...
- Django 1.11 bootstrap样式文件无法加载问题解决
Django 1.11 bootstrap样式文件无法加载问题解决 参考文章: (1)Django 1.11 bootstrap样式文件无法加载问题解决 (2)https://www.cnblogs. ...
- ELF文件的加载和动态链接过程
本文的目的:大家对于Hello World程序应该非常熟悉,随便使用哪一种语言,即使还不熟悉的语言,写出一个Hello World程序应该毫不费力,但是如果让大家详细的说明这个程序加载和链接的过程,以 ...
- 导入Java文件还是class文件_java程序运行的时候,是把所有的class文件都加载到内存吗?还是用的什么加载什么?...
这一块还没有深入了解,不敢误人子弟. 我知道的,虚拟机在运行的时候,会预先加载一个常用的class,比如java.lang包下面的. 至于你在程序中自己引用的class文件/jar包之类的,是有一个加 ...
- python bottle web框架上传静态文件与加载静态文件
文章目录 1 上传文件 2 加载静态文件 1 上传文件 # 上传文件 @route('/upload', method=['POST','GET']) def upload():f = request ...
- java web配置dll文件_JavaWeb项目中dll文件动态加载方法解析(详细步骤)
相信很多做Java的朋友都有过用Java调用JNI实现调用C或C++方法的经历,那么Java Web中又如何实现DLL/SO文件的动态加载方法呢.今天就给大家带来一篇JAVA Web项目中DLL/SO ...
- VC从文件中加载图片
用MFC做GDI开发的朋友肯定熟悉CBitmap类,该类封装了HBITMAP对象,简化了关于HBITMAP的API操作,如LoadBitmap方法可直接加载资源中指定ID的图片,但是很多情况下我们需要 ...
- 《R数据可视化手册》一1.4 从Excel文件中加载数据
本节书摘来自异步社区<R数据可视化手册>一书中的第1章,第1.4节,作者 [美]Winston Chang,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 ...
最新文章
- python正则表达式模块
- 筱玛爱游戏——线性基
- 2016年3月1日Android实习笔记
- Linux0.11内核剖析--内核体系结构
- 滚动条判断是否滑动到顶部底部
- 程序员内卷?连熬数夜肝出这份2021Java面试题核心知识点总结,近300页!
- FTP 编写 4:命令解析
- 兼容firstChild和firstElementChild
- C语言中的指针型函数值
- java 单例模式_谈谈Java中的单例模式
- Delta RPMs disabled because /usr/bin/applydeltarpm not installed解决办法
- 一个JAVA小虾米初入江湖
- Hadoop MR 分区(partition)和全排序(WritableComparable)
- mysql 64 免安装_MYSQL 免安装版(windows 7/64)
- 网速监测-window小应用
- Word页眉设置不同的文字,但是页码按照顺序不变
- 虎门大桥抖动,千亿级的物联网市场被打开
- 【07】QQ群管理公告小结:
- 《4DenoiseNet: Adverse Weather Denoising from Adjacent Point Clouds》
- 合并/拆分 Excel?Python、VBA轻松自动化