ROS学习笔记(四)参数服务
rosparam:
列出当前所有参数:rosparam list 显示某个参数值:rosparam get param_key 设置某个参数值:rosparam set param_key param_value 保存参数到文件:rosparam dump file_name 从文件读取参数:rosparam load file_name 删除参数:rosparam delete param_key
一:创建自定义参数文件
(1)创建功能包
创建一个名为learning_parameters
的ROS功能包,用于存放C++程序和参数文件。
cd ~/catkin_ws/src
catkin_create_pkg learning_parameters roscpp rospy std_msgs message_generation
(2)创建自定义参数文件
在config
目录下创建一个名为params.yaml
的自定义参数文件,用于存储参数值。在该文件中,定义需要使用的参数及其默认值。例如:
my_param1: 0.5
my_param2: "hello"
(3)创建节点读取参数
在src
目录下创建一个名为read_params.cpp
的C++源文件,实现节点来读取参数。
#include <ros/ros.h>
int main(int argc, char** argv)
{
ros::init(argc, argv, "read_params"); // 初始化ROS节点
ros::NodeHandle nh; // 创建ROS节点句柄
// 读取参数
double my_param1;
if (!nh.getParam("my_param1", my_param1)){
// ROS_WARN("Could not get parameter my_param1, using default value 0.5");
my_param1 = 0.5;
}
std::string my_param2;
if (!nh.getParam("my_param2", my_param2)){
// ROS_WARN("Could not get parameter my_param2, using default value 'hello'");
my_param2 = "hello";
}
ROS_INFO("Read parameters: param1 = %f, param2 = %s",
my_param1, my_param2.c_str());
return 0;
}
- 在运行节点之前,使用
rosparam
命令来加载参数文件(在参数文件终端下)。
rosparam load params.yaml
- 在运行节点之前,使用
rosrun
命令来启动一个新的终端窗口,并在其中输入以下命令来设置参数。例如:
rosparam set my_param1 0.8
rosparam set my_param2 'cww'
- 编译C++程序并运行ROS节点,使用已加载的参数来执行节点。例如:
rosrun learning_parameters read_params
这将启动read_params
节点,并使用已加载的参数来执行它。该节点将打印出已加载的参数值。