Note: This tutorial assumes that you have completed the previous tutorials: Understanding Topics, Understanding ServicesParams. |
![]() |
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
Contents
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