ROS初学:参数服务器

新建功能包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}

)

运行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值