ROS学习之 cpp参数服务器


wiki链接 :wiki.ros.org/roscpp/Overview/Parameter%20Server

ROS的参数服务器可以存储字符串,整型,浮点型,布尔型,列表,字典,iso8601数据,64基编码数据.字典数据要有字符串键.

    roscpp的参数API支持所有这些,尽管在使用中常使用strings,integers,floats,booleans.XmlRpc::XmlRpcValue类实现了其它数据类型
    roscpp有两类参数API,直接版本在ros::param名字空间下,句柄版本在ros::NodeHandle类下.

    1.获取参数

        从参数服务器内获取一个参数值.
        a. ros::NodeHandle::getParam()方法
            通过节点句柄取得参数与节点句柄的名字空间有关.

            ros::NodeHandle nh;
            std::string global_name, relative_name, default_param;
            if (nh.getParam("/global_name", global_name))
            {
              ...
            }

            if (nh.getParam("relative_name", relative_name))
            {
            ...
            }

            // Default value version
            nh.param("default_param", default_param, "default_value");
            
        b.ros::param::get()方法
            直接版本获取参数与节点的名字空间有关.
            std::string global_name, relative_name, default_param;
            if (ros::param::get("/global_name", global_name))
            {
              ...
            }

            if (ros::param::get("relative_name", relative_name))
            {
            ...
            }

            // Default value version
            ros::param::param("default_param", default_param, "default_value");

    2.设置参数

        句柄方式
            ros::NodeHandle nh;
            nh.setParam("/global_param", 5);
            nh.setParam("relative_param", "my_string");
            nh.setParam("bool_param", false);
        直接方式
            ros::param::set("/global_param", 5);
            ros::param::set("relative_param", "my_string");
            ros::param::set("bool_param", false);

    3.检查参数是否存在

        句柄方式: ros::NodeHandle::hasParam()
        直接方式: ros::param::has()

    4.删除参数


        ros::NodeHandle::deleteParam()
        ros::param::del()

    5.寻找参数


        ros::NodeHandle::searchParam("bar",key)
        ros::param::serch("bar",key)

你可能感兴趣的:(ROS)