目录
参考:赵虚左的课程+古月的ROS机器人开发实践
一、参数管理机制
参数管理机制原理图
其中通信机制不涉及TCP/UDP通信,用的是RPC,导致低性能,故参数最好是存储静态的非二进制的简单数据。
实现目的:对参数服务器数据增删改查。
二、参数增
1.创建demo01_param_set.cpp
#include "ros/ros.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
ros::init(argc,argv,"set_param_c");
ros::NodeHandle n;
n.setParam("zhonglei","zhonglei_neirong_1");
n.setParam("banjing",0.15);
ros::param::set("zhonglei_1","zhonglei_neirong_2");
ros::param::set("banjing_1",0.18);
ROS_INFO("参数服务器参数增加成功!");
return 0;
}
setlocale(LC_ALL,"");
防止中文乱码。
ros::init(argc,argv,"set_param_c");
ros::NodeHandle n;
初始化节点,初始化句柄。
n.setParam("zhonglei","zhonglei_neirong_1");
n.setParam("banjing",0.15);
ros::param::set("zhonglei_1","zhonglei_neirong_2");
ros::param::set("banjing_1",0.18);
ROS_INFO("参数服务器参数增加成功!");
两种增加参数方式:
2.通过roscpp下的ROS句柄,放入(“键”,“值”)
ros::NodeHandle n;
n.setParam("zhonglei","zhonglei_neirong_1");
n.setParam("banjing",0.15);
3.通过roscpp下的param,放入(“键”,“值”)
ros::param::set("zhonglei_1","zhonglei_neirong_2");
ros::param::set("banjing_1",0.18);
ROS_INFO("参数服务器参数增加成功!");
控制台输出。
4.CMakeList.txt配置
add_executable(demo01_param_set src/demo01_param_set.cpp)
target_link_libraries(demo01_param_set
${catkin_LIBRARIES}
)
5.编译+rosrun运行
6.参数服务器参数查看
rosparam list
/banjing
/banjing_1
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__34955
/rosversion
/run_id
/zhonglei
/zhonglei_1
其中如下是系统自带的参数
/rosdistro
/roslaunch/uris/host_rosmelodic_virtual_machine__34955
/rosversion
/run_id
增加部分,键的查看
/banjing
/banjing_1
/zhonglei
/zhonglei_1
值的查看
rosparam get /banjing
三、参数改
1.通过覆盖进行参数改
n.setParam("banjing",0.15);
n.setParam("banjing",0.33);
ros::param::set("banjing_1",0.18);
ros::param::set("banjing_1",0.30);
键是之前存在的,利用覆盖来进行修改。键之前不存在,会增加一对键和值。
2.参数服务器参数查看
利用之前的方法
rosparam list
rosparam get /????