一、创建功能包
-
$ cd ~/catkin_ws/src
要进入src文件夹才能创建功能包 -
$ catkin_create_pkg learning_parameter roscpp rospy std_srvs
创建learning_topic功能包
二、参数命令行使用
$ rosparam list
列出当前有多少个参数$ rosparam get param_key
显示某个参数值$ rosparam set param_key param_value
设置某个参数值$ rosparam dump file_name
保存参数到文件$ rosparam load file_name
从文件读取并设置参数$ rosparam delete param_key
删除参数
使用实例:
-
$ roscore
-
$ rosrun turtlesim turtlesim_node
新建窗口(代码演示过程)
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam
rosparam is a command-line tool for getting, setting, and deleting parameters from the ROS Parameter Server.
Commands:
rosparam set set parameter
rosparam get get parameter
rosparam load load parameters from file
rosparam dump dump parameters to file
rosparam delete delete parameter
rosparam list list parameter names
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam list
/rosdistro
/roslaunch/uris/host_lacyexsale_klv_wx9__36693
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
##小海龟仿真器的背景色
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /turtlesim/background_b
255
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /turtlesim/background_g
86
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /turtlesim/background_r
69
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /rosdistro
'noetic
'
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /rosversion
'1.15.11
'
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam set /turtlesim/background_b 100 ##修改rgb中b的值
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /turtlesim/background_b
100 ##修改成功
lacyexsale@lacyexsale-KLV-WX9:~$ rosservice call /clear "{}" ##请求服务,将海龟仿真器的参数重置以生效,可以看到背景颜色发生了改变
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam set /turtlesim/background_b 255
lacyexsale@lacyexsale-KLV-WX9:~$ rosservice call /clear "{}"
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam set /turtlesim/background_g 255
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam set /turtlesim/background_r 255
lacyexsale@lacyexsale-KLV-WX9:~$ rosservice call /clear "{}"
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam dump param.yaml ##保存当前参数设置到文件param.yaml到当前路径下
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam load param.yaml ##载入参数文件
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam get /turtlesim/background_b
0 ##打开param.yaml,手动修改background_b值为0后保存,再获取值时可以看到值已修改
lacyexsale@lacyexsale-KLV-WX9:~$ rosservice call /clear "{}"
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam delete /turtlesim/background_g ##删除参数background_g
lacyexsale@lacyexsale-KLV-WX9:~$ rosparam list
/rosdistro
/roslaunch/uris/host_lacyexsale_klv_wx9__36693
/rosversion
/run_id
/turtlesim/background_b ##可以看到参数background_g已经不见了
/turtlesim/background_r
lacyexsale@lacyexsale-KLV-WX9:~$ rosservice call /clear "{}"
三、编程方法配置参数
如何获取/设置参数
- 初始化ROS节点
- get函数获取参数
- set函数设置参数
-
$ cd ~/catkin_ws/src/learning_parameter/src
-
$ touch parameter_config.cpp
-
$ gedit parameter_config.cpp
输入
/***********************************************************************
Copyright 2020 GuYueHome (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;
}
四、配置代码编译规则
-
$ cd ~/catkin_ws/src/learning_parameter
-
$ gedit CMakeLists.txt
在
#############
## Install ##
#############
前面添加代码
add_executable(parameter_config src/parameter_config.cpp) ##parameter_config.cpp编译成parameter_config可执行文件
target_link_libraries(parameter_config ${catkin_LIBRARIES}) ##将可执行文件parameter_config通过catkin_LIBRARIES与ros的一些库做连接
五、编译并运行发布者
-
$ cd ~/catkin_ws
-
$ catkin_make
-
$ source devel/setup.bash
设置环境变量 -
$ roscore
启动ROS Master -
$ rosrun turtlesim turtlesim_node
启动服务端 -
$ rosrun learning_parameter parameter_config
启动服务端
终端显示
[ INFO] [1621430771.410506654]: Get Backgroud Color[0, 0, 0]
[ INFO] [1621430771.412815904]: Set Backgroud Color[255, 255, 255]
[ INFO] [1621430771.413949097]: Re-get Backgroud Color[255, 255, 255]
可以看到仿真器背景颜色已改变