目录
一、简介
二、参数的读和写
2.1 读
2.2 写
三、yaml文件的读写
3.1、yaml-cpp的配置
3.2、yaml-cpp的使用
四、Launch文件应用
4.1 元素
4.2 例子
rosparam命令
rosparam set set parameter 设置参数
rosparam get get parameter 获得参数值
rosparam load load parameters from file 从文件中加载参数到参数服务器
rosparam dump dump parameters to file 将参数服务器中的参数写入到文件
rosparam delete delete parameter 删除参数
rosparam list list parameter names 列出参数服务器中的参数
支持数据类型
32-bit integers
booleans
strings
doubles
iso8601 dates
lists
base64-encoded binary data
(1)ros::NodeHandle::getParam()
ros::NodeHandle nh;
std::string global_name, relative_name, default_param;
if (nh.getParam("/global_name", global_name))
{
...
}
if (nh.getParam("relative_name", relative_name))
{
...
}
// Default value versionnh.param("default_param", default_param, "default_value");
(2)ros::param::get()
std::string global_name, relative_name, default_param;
if (ros::param::get("/global_name", global_name))
{
...
}
if (ros::param::get("relative_name", relative_name))
{
...
}
// Default value versionros::param::param("default_param", default_param, "default_value");
此处的写为把参数写入参数管理器中,并不会修改参数文件,若需保存修改后参数需要修改参数文件,参考第三点
(1)ros::NodeHandle::setParam()
ros::NodeHandle nh;
nh.setParam("/global_param", 5);
nh.setParam("relative_param", "my_string");
nh.setParam("bool_param", false);
(2)ros::param::set()
ros::param::set("/global_param", 5);
ros::param::set("relative_param", "my_string");
ros::param::set("bool_param", false);
(1)安装
下载地址:https://github.com/jbeder/yaml-cpp
下载稳定版后,在本地编译安装,ros本身自带yaml-cpp,但因其版本过低,部分函数无法使用,因此需要安装最新稳定版。
cd yaml-cpp
mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=ON ..
make
sudo make install
(2)调用
在个CMakeLists.txt文件中添加以下内容,使其调用安装的新版本而不是自带旧版本
link_directories(/usr/local/lib)
include_directories(/usr/local/include/yaml-cpp)
同时在编译节点后加上yaml-cpp(http://wiki.ros.org/yaml_cpp)
target_link_libraries(${PROJECT_NAME} yaml-cpp)
#include
#include
//读取文件
std::string param_file = "../src/msgs_file/param/param.yaml";
YAML::Node yamlConfig = YAML::LoadFile(motion_file);
//读取父项和子项
YAML::Node parent_param = yamlConfig["parent_param"];
YAML::Node chile_param = parent_param["chile_param"];
//修改
chile_param["param_1"] = 0;
chile_param["param_2"] = 1;
//写
std::ofstream file;
file.open(param_file);
file.flush();
file << yamlConfig;
rosparam 命令参数
读取参数文件路径
参数名字
命名空间
是否允许替换参数
[1, 2, 3, 4]
参考
http://wiki.ros.org/roslaunch/XML/rosparam
http://wiki.ros.org/roscpp/Overview/Parameter%20Server
https://blog.csdn.net/u014610460/article/details/79508869
https://answers.ros.org/question/12321/how-to-write-and-parse-yaml-file-for-ros/