【ROS参数服务器增删改c++操作1】

需求:实现参数服务器参数的增删改查操作。

在C++中实现参数服务器数据的增删改查,可以通过两套API实现:.

ros::NodeHandle
ros::param

下面为具体操作演示:
在src下面的自己定义的作用包下面新建文件。
比如我的是一直存在的demo03_ws文件下的src里面,先右击src 创建新的功能包creat catkin package,将包名命名为plumbing_param_server,然后添加roscpp,rospy,std_msgs.创建完成之后。
在plumbing_param_server下面的src新建文件
命名demo01__param_set.cpp

实现:
ros : : NodeHandle
setParam ("键",值)
ros : :param
set("键",值)
修改,只需要继续调研 setparam 或set函数 ,保证键是已经存在的,那么值会覆盖。

输入以下代码:

#include "ros/ros.h"

int main(int argc, char** argv)
 {
    
    
      //初始化 ROS节点;
    ros::init(argc, argv, "set_param_c");
    // 3.创建节点句柄;
    ros::NodeHandle nh;
//参数增---------------------------------------
//方案一:nh
    nh.setParam("type", "xiaohuang");
    nh.setParam("radius", 0.15);

//方案二:ros::param
  ros::param::set("type_param", "xiaobai");
  ros::param::set("radius_param", 0.15);
    return 0;
}

编译cmakelist文件。
在这里插入图片描述
在这里插入图片描述

完毕之后ctrl+shift+b进行编译。
然后ctrl+alt+t打开终端
输入roscore启动ros
然后新开一个终端
输入

source ./devel/setup.bash
rosrun plumbing_param_server demo01_param_set 

在这里插入图片描述
验证:新开一个终端,输入rosparam list列出当前存在的所有参数服务器
在这里插入图片描述

获取当前参数的数值:rosparam get /***

比如rosparam get /type
在这里插入图片描述
参数的修改:和上面是一样的。加入下面的代码就可以实现覆盖修改。加入以下函数代码:

//参数改--------------------------------------
//方案一:nh
nh.setParam("radius", 0.15);

//方案二:ros::param
  ros::param::set("radius_param", 0.25);

整体:

#include "ros/ros.h"

int main(int argc, char** argv)
 {
    
    
      //初始化 ROS节点;
    ros::init(argc, argv, "set_param_c");
    // 3.创建节点句柄;
    ros::NodeHandle nh;
//参数增---------------------------------------
//方案一:nh
    nh.setParam("type", "xiaohuang");
    nh.setParam("radius", 0.15);

//方案二:ros::param
  ros::param::set("type_param", "xiaobai");
  ros::param::set("radius_param", 0.15);

//参数改--------------------------------------
//方案一:nh
nh.setParam("radius", 0.15);

//方案二:ros::param
  ros::param::set("radius_param", 0.25);



    return 0;
}

下面的修改会覆盖上面的内容
检查一下:ctrl+shift+b进行编译,终端中打开。
获取当前参数的数值:rosparam get /***
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_47869094/article/details/129991353