该Parameter Server的作用相当于全局变量之于程序,各个Node可能不一定位于同一个PC中,但是只要在同一个ros环境里,都可以通过Parameter Server来访问全局字典的参数。
rosparam相关指令
列出当前所有参数
rosparam list
显示某个参数值
rosparam get param_key
设置某个参数值
rosparam set param_key param_value
尽管目前重新设置了这个值,但是小海龟的背景并没有被立即刷新,需要发送一个request,这样系统就会检查参数,如果参数发生改变,就刷新当前参数。
rosservice call /clear "{}"
保存参数到文件
rosparam dump file_name %一般是.yaml格式
此时在主文件夹中会生成一个.yaml文件
其中包含着当前状态所有参数信息。
从文件中读取参数
rosparam load file_name
将刚刚文件中的参数做修改后读入。
删除参数
rosparam delete param_key
通过程序实现参数的配置和使用
在/src目录下创建功能包。
catkin_create_pkg learning_parameter roscpp rospy std_srvs
之后在建立的功能包下/src目录下建立cpp文件
/*
This program will set/read the parameters in turtlesim
*/
#include<ros/ros.h>
#include<string>
#include<std_srvs/Empty.h>
int main(int argc, char **argv)
{
int red, green, blue;
//initiate ros node
ros::init(argc, argv, "parameter_config");
//create node handle
ros::NodeHandle node;
//read the color parameters of background
ros::param::get("/turtlesim/background_r", red);
ros::param::get("/turtlesim/background_g", green);
ros::param::get("/turtlesim/background_b", blue);
ROS_INFO("Get Background Color[%d, %d, %d]", red, green, blue);
//set the color parameters of background
ros::param::set("/turtlesim/background_r", 255);
ros::param::set("/turtlesim/background_g", 255);
ros::param::set("/turtlesim/background_b", 255);
ROS_INFO("Set Background Color[255, 255, 255]");
//read the color parameters of background
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 the Background Color[%d, %d, %d]", red, green, blue);
//call for the service to refresh the background color
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;
}
老样子加编译链接说明
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})
运行龟龟模拟器。(愿称这只为最可爱!)
执行前:
rosrun learning_parameter parameter_config后
参考链接: http://wiki.ros.org/Parameter%20Server