新建功能包catkin_create_pkg param_server roscpp rospy std_msgs
编写三个文件如下
param.cpp:
#include "ros/ros.h"
int main(int argc,char *argv[]){
setlocale(LC_ALL,"");
ros::init(argc,argv,"param");
ros::NodeHandle n;
n.setParam("type","Bob");
n.setParam("radius",0.15);
n.setParam("radius",0.5);//cover the previous value
/*way2: ros::param::set("type","Bob");
ros::param::set("radius",0.15);
ros::param::set("radius",0.2);
*/
return 0;
}
get.cpp:
#include "ros/ros.h"
int main(int argc,char *argv[]){
setlocale(LC_ALL,"");
ros::init(argc,argv,"get");
ros::NodeHandle n;
double radius=n.param("radius",0.5); //get value according to the key
ROS_INFO("radius= %.2f",radius);
double radius2=0.0;
bool result=n.getParam("radius",radius2);//获得和对程序进行传递参数
if(result){
ROS_INFO("received radius2 is %.2f",radius2);
}
else{
ROS_INFO("radius2 doesn't exist.");
}
std::vector<std::string> names;
n.getParamNames(names);//发送请求页面中form表单里所有具有name属性的表单对象
for(auto && name : names){
ROS_INFO("Element: %s",name.c_str());
}
bool flag1=n.hasParam("radius");//如果在参数列表中查询到了参数名,返回True
bool flag2=n.hasParam("radius2");
ROS_INFO("radius exists %d",flag1);
ROS_INFO("radius2 exists %d",flag2);
std::string key;
n.searchParam("radius",key);//如果在参数列表中查询到了指定参数名,将参数的值赋值给变量,同getParamNames
ROS_INFO("searching result: %s",key.c_str());
double radius_param = ros::param::param("radius",100.5);
ROS_INFO("radius_param = %.2f",radius_param);
std::vector<std::string> names_param;
ros::param::getParamNames(names_param);
for (auto &&name : names_param){
ROS_INFO("key: %s",name.c_str());
}
return 0;
}
del.cpp:
#include "ros/ros.h"
int main(int argc, char *argv[]){
setlocale(LC_ALL,"");
ros::init(argc,argv,"del");
ros::NodeHandle n;
bool flag1=n.deleteParam("radius");
if(flag1){
ROS_INFO("Successfully deleted.");
}
else{
ROS_INFO("Failed to delete.");
}
bool flag2=ros::param::del("radius");
if(flag2){
ROS_INFO("Radius_param successfully deleted.");
}
else{
ROS_INFO("Radius_param failed to delete.");
}
return 0;
}
再编写CMakeList.txt:
add_executable(param src/param.cpp)
add_executable(get src/get.cpp)
add_executable(del src/del.cpp)
target_link_libraries(param
${catkin_LIBRARIES}
)
target_link_libraries(get
${catkin_LIBRARIES}
)
target_link_libraries(del
${catkin_LIBRARIES}
)
运行即可。
7461

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



