Note: This tutorial assumes that you have completed the previous tutorials: Understanding Topics, Understanding ServicesParams.
(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Using Parameters in roscpp

Description: This tutorial will show you the NodeHandle parameter API, allowing you to manipulate parameters from the Parameter Server.

Tutorial Level: BEGINNER

Next Tutorial: Accessing Private Names with NodeHandle

Retrieving Parameters

There are two methods to retrieve parameters with NodeHandle. In the following example code, n is an instance of NodeHandle.

getParam()

getParam() has a number of overloads which all follow the same basic form:

   1 bool getParam (const std::string& key, parameter_type& output_value) const 
  • key is a Graph Resource Name

  • output_value is the place to put the retrieved data, where parameter_type is one of bool, int, double, string, or a special XmlRpcValue type which can represent any type and also lists/maps.

Use of getParam() is fairly simple: Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Note that getParam() returns a bool, which provides the ability to check if retrieving the parameter succeeded or not: Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

param()

param() is similar to getParam(), but allows you to specify a default value in the case that the parameter could not be retrieved:

Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Sometimes the compiler requires a hint for the string type. Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Setting Parameters

Setting parameters is done through the setParam() methods: Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

setParam(), like getParam(), can take bool, int, double, string, and a special XmlRpcValue type

Deleting Parameters

Deleting parameters is done through the deleteParam() method: Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Checking for Existence

This is not usually necessary, but there is a hasParam() method that allows you to check for a parameter's existence: Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Searching for Parameters

The Parameter Server allows you to "search" for parameters, starting at your namespace and working through your parent namespaces.

For example, if the parameter /a/b exists in the parameter server, and your NodeHandle is in the /a/c namespace, searchParam() for b will yield /a/b. However, if parameter /a/c/b is added, searchParam() for b will now yield /a/c/b.

Could not fetch external code from 'https://raw.github.com/ros/ros_tutorials/groovy-devel/roscpp_tutorials/parameters/parameters.cpp': HTTP Error 503: hostname doesn't match against certificate

Next Tutorial: Accessing Private Names with NodeHandle

Wiki: roscpp_tutorials/Tutorials/Parameters (last edited 2018-05-08 07:43:27 by AndreaPonza)