ROS1 全局参数:定义、获取与修改实战
在 ROS Master 中,存在一个参数服务器(Parameter Server),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。
参数模型
参数服务器以键值对的形式存储数据,支持多种数据类型。
创建功能包
建立一个新的功能包,命名为 learning_parameter。
cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs
执行成功后会生成 learning_parameter 目录。
参数命令行的使用 (rosparam)
rosparam 命令可以完成参数相关的大部分功能。在 ROS 中,参数文件常以 YAML 文件的格式保存。
查询参数列表
rosparam list
这会列出当前所有参数。例如启动了小乌龟节点后,会有 /turtlesim 开头的参数,这些是小乌龟的背景色参数。
获取参数值
rosparam get param_key
比如我要获取 rosversion:
rosparam get rosversion
设置参数值
rosparam set param_key param_value
保存与加载参数
保存参数到文件:
rosparam dump file_name
从文件加载参数:
rosparam load file
删除参数
rosparam delete parameter
使用程序来使用参数(C++)
下面以获取/设置小乌龟背景颜色为例,展示如何在代码中操作参数。
创建代码
在 learning_parameter/src 文件夹下创建 parameter_config.cpp 文件。
/**
* 该例程设置/读取海龟例程中的参数
*/
#include <string>
#include <ros/ros.h>
#include <std_srvs/Empty.h>
#include <unistd.h>
{
red, green, blue;
ros::(argc, argv, );
ros::NodeHandle node;
ros::param::(, red);
ros::param::(, green);
ros::param::(, blue);
(, red, green, blue);
ros::param::(, );
ros::param::(, );
ros::param::(, );
();
ros::param::(, red);
ros::param::(, green);
ros::param::(, blue);
(, red, green, blue);
ros::service::();
ros::ServiceClient clear_background = node.<std_srvs::Empty>();
std_srvs::Empty srv;
clear_background.(srv);
();
;
}


