参数的使用与编程方法
参数模型
Parameter Server在ROS Master中作全局字典,每个节点都能访问它的数据,并得到反馈
参数命令行的使用
-
YAML参数文件
用如图所示变量名和变量的形式储存参数,多参数时,可一次性加载到parameter中
-
rosparam点回车可以看到所有可用的命令行
-
rosparam list 列出当前所有参数
-
得到某个参数值 rosparam get /+参数
rosparam get /turtlesim/background_r
-
修改某个参数的值
rosparam set /turtlesim/background_b 100
-
请求服务端刷新海龟仿真器颜色
rosservice call /clear "{}"
-
保存参数到YAML文件
rosparam dump +文件名
保存到当前路径
-
从当前路径的YAML文件加载参数
rosparam load param.yaml
-
删除参数
rosparam delete /turtlesim/background_r
创建功能包并编译代码
在工作空间的srv中打开终端,输入catkin_create_pkg learning_parameter roscpp rospy std_srvs
在功能包的src文件夹中touch一个parameter_config.cpp文件编写代码
/**
* 该例程设置/读取海龟例程中的参数
*/
#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;
}
- 配置编译规则
在CMakeList中加入代码
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config ${catkin_LIBRARIES})
- 编译并运行
catkin_make
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config