網站首頁 編程語言 正文
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: 18
skills:
c++: 1
java: 1
android: 1
python: 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進行獲取加載。
原文鏈接:https://blog.csdn.net/weixin_51498169/article/details/125914795
相關推薦
- 2022-01-05 npm install 報錯:npm ERR! code EPERM npm ERR! syscal
- 2022-08-19 element-plus中的el-select回顯錯誤如何解決?
- 2022-11-19 Golang?cron?定時器和定時任務的使用場景_Golang
- 2023-01-07 Python個人博客程序開發實例框架設計_python
- 2023-05-22 python中decimal模塊的用法_python
- 2022-12-14 Python開發之利用re模塊去除代碼塊注釋_python
- 2022-01-27 workerman執行busy,http請求不返回導致阻塞
- 2022-07-09 python連接clickhouse數據庫的兩種方式小結_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支