参数的使用
- 参数服务结构
- 命令行的使用方式
- 运行小海龟
- 命令介绍
- 查看参数
- 获取参数值
- 设置参数
- 保存参数到文件
- 从文件导入参数
- 通过程序操作
- 创建节点
- 修改cmake
- 编译
- 运行
参数服务结构
ros中存在参数服务管理服务,管理这所有参数,所有节点剋订阅和发布这些节点
命令行的使用方式
运行小海龟
roscore
rosrun turtlesim turtlesim_node
命令介绍
命令 | 功能 |
---|---|
rosparam get | 获取参数 |
rosparam load | 从文件加载参数 |
rosparam dump | 保存参数到文件 |
rosparam delete | 删除一个参数 |
rosparam list | 列举所有参数 |
查看参数
rosparam list
输出如下,参数
/rosdistro
/roslaunch/uris/host_wxf_virtual_machine__44045
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
获取参数值
rosparam get /turtlesim/background_b
输出为背景颜色B通道的值为255
设置参数
rosparam set /turtlesim/background_b 100
重新获取参数,就是修改后的值,这时已经设置生成,但是仿真器还未生效,我们需要执行以下命令,
rosservice call /clear "{}"
这时候仿真器终端背景颜色就会生效
保存参数到文件
rosparam dump param.yaml
从文件导入参数
当对配置文件修改后,可以从配置文件导入参数
rosparam load param.yaml
通过程序操作
创建节点
cd catkin_ws/src
catkin_create_pkg learning_parameter roscpp rospy std_srvs
#include <ros/ros.h>
#include <std_srvs/Empty.h>
int main(int argc, char **argv)
{
int red;
int green;
int blue;
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 background 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("get background 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("get background 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;
}
修改cmake
catkin_ws/src/learning_parameter/CMakeLists.txt
添加如下内容
add_executable(parameter_config src/parameter_config.cpp)
target_link_libraries(parameter_config
${catkin_LIBRARIES}
)
编译
cd catkin_ws
catkin_make
运行
source devel/setup.sh
roscore
rosrun turtlesim turtlesim_node
rosrun learning_parameter parameter_config