在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;
}
完毕之后ctrl+shift+b进行编译。
然后ctrl+alt+t打开终端
输入roscore启动ros
然后新开一个终端
输入
source ./devel/setup.bash
rosrun plumbing_param_server demo01_param_set
验证:新开一个终端,输入rosparam list列出当前存在的所有参数服务器
比如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 /***