I was having problems reading an array of doubles in a ROS launch file into a vector variable in a C++ ROS1 program node. After some digging around, I found I was doing it the wrong way; instead of using the <param> tag in the ROS launch file, I should be using the <rosparam> tag.
The example ROS launch file listing shows the correct way to enter an array, e.g. [0.01, 0.1, 0.2] with the <rosparam> tag:
?xml version="1.0" encoding="UTF-8"?> <launch> <node pkg="learning_tutorial" type="my_node" name="my_node"> <param name="my_string_param" value="hello" /> <rosparam param="my_array_param">[0.01, 0.1, 0.2]</rosparam> </node> </launch>
Then in the ROS C++ code, I could do the following to read the array:
// ...etc... using namespace ros; using namespace std; vector<double> myArrayParam; NodeHandle nh; // Read the my_array_param from the launch file into the myArrayParam variable nh.param<vector<double>> ( "my_array_param", myArrayParam, { 1, 2, 3}); // Just print out the array parameter ROS_INFO ( "My array: %f, %f, %f", myArrayParam[0], myArrayParam[1], myArrayParam[2]); // ...etc...
Hope this helps somebody.