目录
  1. 一、参数模型
  2. 二、使用方法
  3. 1. 列出当前所有参数
  4. 2. 显示某个参数值
  5. 3. 设置某个参数值
  6. 4. 保存参数到文件
  7. 5. 从文件读取参数
  8. 6. 删除参数
  9. 三、举例
  10. 1. 创建功能包
  11. 2. 打开小海龟仿真器
  12. 3. rosparam命令行的使用
  13. 四、通过程序获取、设置参数的值
  14. 1. 编写cpp程序
  15. 2. 编译程序
  16. 3. 运行程序

一、参数模型

在ROS Master中有一个Parameter Server参数服务器,它是一个全局字典,用来保存各种配置参数,配置参数是各个节点都可以全局访问的。

二、使用方法

1. 列出当前所有参数

rosparam list

2. 显示某个参数值

rosparam get param_key

3. 设置某个参数值

rosparam set param_key param_value

4. 保存参数到文件

rosparam dump file_name

5. 从文件读取参数

rosparam load file_name

6. 删除参数

rosparam delete param_key

三、举例

1. 创建功能包

cd ~/catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs

创建功能包

2. 打开小海龟仿真器

打开一个终端,启动roscore:

roscore

再打开一个终端,运行小海龟仿真程序

rosrun turtlesim turtlesim_node

打开小海龟仿真器

3. rosparam命令行的使用

(1)查看参数列表

rosparam list

(2)得到变量的值:背景颜色RGB的值

rosparam get /turtlesim/background_r
rosparam get /turtlesim/background_g
rosparam get /turtlesim/background_b

rosparam命令行的使用

(3)修改变量的值:更改背景颜色

rosparam set /turtlesim/background_b 100

重新发送请求,刷新背景颜色

rosservice call /clear "{}"

rosparam命令行的使用 (2)

(4)保存参数到文件

rosparam dump param.yaml

参数默认保存到当前目录 rosparam命令行的使用 (3)

(5)加载参数文件

打开刚刚保存的参数文件,对其中的参数值进行修改。

rosparam load param.yaml

即可将文件里面的参数内容修改系统内的参数。 rosparam命令行的使用 (4)

(6)删除参数

rosparam delete /turtlesim/background_g

查看参数列表

rosparam list

刷新小海龟仿真器背景颜色

rosservice call /clear "{}"

rosparam命令行的使用 (5)

四、通过程序获取、设置参数的值

1. 编写cpp程序

在learning_parameter/src/目录下创建一个parameter_config.cpp的文件

其内容为:

/**
 * 该例程设置/读取海龟例程中的参数
 * REFERENCE:www.guyuehome.com
 */
#include <string>
#include <ros/ros.h>
#include <std_srvs/Empty.h>

int main(int argc, char **argv)
{
	int red, green, blue;

    // ROS节点初始化
    ros::init(argc, argv, "parameter_config");

    // 创建节点句柄
    ros::NodeHandle node;

    // 读取背景颜色参数
	ros::param::get("/turtlesim/background_r", red);
	ros::param::get("/turtlesim/background_g", green);
	ros::param::get("/turtlesim/background_b", blue);

	ROS_INFO("Get Backgroud Color[%d, %d, %d]", red, green, blue);

	// 设置背景颜色参数
	ros::param::set("/turtlesim/background_r", 255);
	ros::param::set("/turtlesim/background_g", 255);
	ros::param::set("/turtlesim/background_b", 255);

	ROS_INFO("Set Backgroud Color[255, 255, 255]");

    // 读取背景颜色参数
	ros::param::get("/turtlesim/background_r", red);
	ros::param::get("/turtlesim/background_g", green);
	ros::param::get("/turtlesim/background_b", blue);

	ROS_INFO("Re-get Backgroud Color[%d, %d, %d]", red, green, blue);

	// 调用服务,刷新背景颜色
	ros::service::waitForService("/clear");
	ros::ServiceClient clear_background = node.serviceClient<std_srvs::Empty>("/clear");
	std_srvs::Empty srv;
	clear_background.call(srv);
	
	sleep(1);

    return 0;
}

编写cpp程序

2. 编译程序

打开learning_parameter/下的CMakeList.txt文件,在其中添加编译规则。(install上方)

add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})

编译程序

进行编译

cd catkin_ws
catkin_make

3. 运行程序

运行roscore

roscore

运行小海龟仿真程序

rosrun turtlesim turtlesim_node

运行刚才编写的节点

rosrun learning_parameter parameter_config

发现小海龟的颜色被改变了,说明程序执行成功 运行程序