ros添加配置文件yaml读取参数

本文介绍了在Windows环境下进行桌面应用开发时,如何利用.yaml文件存储和读取参数。首先,通过下载并编译yaml-cpp库,然后在CMakeLists.txt中配置链接和包含路径。接着,在ROS工程中,创建.yaml配置文件,并在launch文件中加载参数。最后,通过示例代码展示了如何在C++中使用ros::param::get()函数读取.yaml文件中的参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在windows下做桌面应用开发,常用.ini文件

在做ros开发中遇到了同样的问题,一些参数需要根据需求修改,但是修改频率又不是很高,这时候可以配置一个yaml文件读取参数

如果不是ros的话需要在电脑上配置好yaml的库,ros里已经包含了yaml的库,直接跳到下面添加yaml文件

目录

下载yaml-cpp并编译

ros中添加yaml文件读取配置参数



下载yaml-cpp并编译

GitHub上下载yaml-cpp的源码GitHub - jbeder/yaml-cpp: A YAML parser and emitter in C++

git clone https://github.com/jbeder/yaml-cpp.git

然后进入目录创建build文件编译安装

mkdir build
cd build
cmake ..
make -j4
sudo make install

这时候在ros工程包中就可以包含yaml-cpp了

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

link_directories(/usr/local/lib)
include_directories(/usr/local/include/yaml-cpp)

 然后在代码中添加头文件

#include <yaml-cpp/yaml.h>这时候发现可以跳转到yaml了

ros中添加yaml文件读取配置参数

在路径下新建一个.yaml文件

例如:

config.yaml

#摄像头参数
cam:
 FRAME_WIDTH : 1920
 FRAME_HIGH : 1080
#16mm 1920*1080参数
 fc_x : 5586
 fc_y : 5586
 cc_x : 960
 cc_y : 540

新建launch文件,将参数文件配置到launch中

<?xml version="1.0"?>
<launch>
  <node pkg="test_yaml" name="test_yaml_node" type="test_yaml" output="screen"/>
  		 <rosparam file="$(find test_yaml)/launch/config.yaml"/>
</launch>

接着在代码中添加:

#include <ros/ros.h>

using namespace std;

//读取参数模板
template<typename T>
T getParam(const std::string& name,const T& defaultValue)//This name must be namespace+parameter_name
{
    T v;
    if(ros::param::get(name,v))//get parameter by name depend on ROS.
    {
        ROS_INFO_STREAM("Found parameter: "<<name<<",\tvalue: "<<v);
        return v;
    }
    else 
        ROS_WARN_STREAM("Cannot find value for parameter: "<<name<<",\tassigning default: "<<defaultValue);
    return defaultValue;//if the parameter haven't been set,it's value will return defaultValue.
}




int main(int argc, char **argv)
{
    ros::init(argc,argv,"test_tf_node");
    ros::NodeHandle nh;
     int FRAME_WIDTH=0;
     double fc_x = 0.0f;
     getParam<int>("cam/FRAME_WIDTH",0);
      getParam<double>("cam/fc_x",0.0f);
         

return 1;
}


在编译运行就能获取到yaml中的参数了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值