網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
yaml文件的加載
- 1. yaml-cpp加載
- (1)安裝編譯
- (2)使用
- (3)加載參數(shù)
- 2. 使用rosparam
- 補(bǔ):添加參數(shù)的另一種方式
yaml文件為常用的參數(shù)文件,方便調(diào)參避免不必要的編譯。最近發(fā)現(xiàn)了幾種加載方法,逐個(gè)搜索學(xué)習(xí)了一下,并進(jìn)行了實(shí)際操作。在此記錄一下。
- yaml-cpp包加載
- 使用rosparam加載
補(bǔ): 在launch文件中直接設(shè)置參數(shù)
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 頭文件到不同的工程中,那么你可以將整個(gè)文件夾 copy 到系統(tǒng)默認(rèn)的頭文件目錄, ubuntu 的地址是 /usr/local/include/;將庫(kù)文件libyaml-cpp.so拷貝到系統(tǒng)默認(rèn)的 lib 文件夾,ubuntu 是 /usr/local/lib/。
# 復(fù)制文件夾
sudo cp -r yaml-cpp /usr/local/include/
# 復(fù)制庫(kù)文件
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)加載參數(shù)
舉個(gè)梨子,配置一個(gè)這樣的config.yaml文件
name: frank
sex: male
age: 18
skills:
c++: 1
java: 1
android: 1
python: 1
yaml文件的編寫要注意格式 參數(shù)名: 值,冒號(hào)后面一定要加一個(gè)空格。
加載,若相對(duì)路徑不行,則需要使用絕對(duì)路徑
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文件,修改路徑(功能包名、進(jìn)入功能包后的文件的路徑)
<rosparam command="load" file="$(find pkgname) /config/config.yaml" />
加載參數(shù)
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為從服務(wù)器加載,若加載不到則自動(dòng)生成一個(gè)并取默認(rèn)值。然后再用get獲取參數(shù)。也可以不用set直接用get去獲取。
補(bǔ):添加參數(shù)的另一種方式
在launch文件中用此句話添加參數(shù)
<param name="name" type="string" value="frank"/>
啟動(dòng)launch文件時(shí)就會(huì)自動(dòng)加載參數(shù)到參數(shù)服務(wù)器中,此方法適用于少量參數(shù)的場(chǎng)景。
加載參數(shù)的方法與2相同使用get進(jìn)行獲取加載。
原文鏈接:https://blog.csdn.net/weixin_51498169/article/details/125914795
相關(guān)推薦
- 2022-05-12 python遍歷文件夾內(nèi)文件并檢索文件中的中文內(nèi)容
- 2024-03-09 【Redis】RedisTemplate和StringRedisTemplate的區(qū)別
- 2022-10-08 PostgreSQL12.5中分區(qū)表的一些操作實(shí)例_PostgreSQL
- 2022-04-11 Linux系統(tǒng)?Centos7.4手動(dòng)在線升級(jí)到Centos7.7_Linux
- 2024-02-25 layer.open加上時(shí)間
- 2023-01-21 python?flask自定義404錯(cuò)誤頁(yè)面方式_python
- 2022-11-04 詳解linux命令查看服務(wù)器上的實(shí)時(shí)日志_服務(wù)器其它
- 2022-04-09 idea解決sun.misc.BASE64Encoder 類找不到報(bào)錯(cuò)
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支