ROS参数的使用与编程方法
参考博客古月居21讲
在ROS master 中有一个参数服务器,名为Parameter Server, 他是一个全局字典,用来保存各个节点之间的配置参数, 运行之后每一个节点都可以访问其中的参数,只要节点向参数服务器发送查询请求,就会返回相应的参数。各个节点不一定就都位于同一个电脑中,但只要在同样的ROS环境里面都可以通过parameter server来查询全局字典的参数。
parameter server 是除了 订阅/发布,客户/服务,action客户/服务之外的第四种通信机制。
一般情况下,参数都是存放在YAML文件中。调用YAML文件的指令为rosparam。
-
创建一个功能包
进入src文件夹,打开终端,创建新功能包

-
rosparam 介绍 及shell命令行操作
输入$ 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
其中
| ITEM | EXPAIN |
|---|---|
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
$ rosparam list
可见
/rosdistro
/roslaunch/uris/host_jpy_surface_pro__44191
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r
可以通过 get 来查看值

rosdistro 为ros当前的发行版本–melodic
rosversion 为当前版本号 --1.14.7
run_id 为当前进程号 --8122c01e-e2b3-11ea-bb1d-f06e0bca26d1
运行rosparam dump param.yaml 之后,可以在当前终端所在路径下找到对应的 param.yaml文件。
rosparam load {FILE_NAME}执行的也是当前终端所在文件路径下的加载指令。
- 通过程序设置param
在功能包文件夹src下面新建cpp文件,键入代码
#include<ros/ros.h>
#include<string>
#include<std_srvs/Empty.h>
int main (int argc,char **argv){
int red,green,blue;
ros::init(argc,argv,"paramter_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("Set Background Color ");
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 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;
}
修改CMakeLists.txt

编译
设置环境变量
检查环境变量
运行调试
本文深入讲解了ROS中的参数服务器机制,包括如何通过rosparam命令行工具进行参数的获取、设置、删除等操作,以及如何在代码中直接设置参数。同时,介绍了参数服务器作为ROS环境中的一种通信机制,其在节点间传递配置参数的重要作用。


被折叠的 条评论
为什么被折叠?



