如何在xml文档中使用启动文件来获取要在cpp文件中使用的参数

时间:2015-04-07 13:56:41

标签: ros

需要在ROS中的.cpp文件中设置参数。这些参数将从启动文件中获取。如何使用ros在.cpp文件中从启动文件设置这些参数

1 个答案:

答案 0 :(得分:2)

首先,我建议您关注this simple tutorial并阅读rosparamroscpp Parameter Server文档。一切都应该变得非常容易。


一个简单的启动文件示例如下:

<launch>
  <rosparam command="load" file="$(find pkg_name)/path/file_name.yaml" />
  <node pkg="pkg_name" type="node_type" name="node_name" />
</launch>

您应该在哪里设置自己的包名称和其他变量。您可以在以下链接中找到所有这些参数的含义:paramnode


您必须从 C ++源代码中检索这些参数(看看here):

/* this handle let you access all the parameters of the node (and other stuffs) */
ros::NodeHandle node_handle = new ros::NodeHandle("~");

/* for example if I need to retrieve a list of double written in the YAML file,
   I could call the getParam() method to store it into my_double_list std::vector */
std::vector<double> my_double_list;
node_handle.getParam("name_of_the_list_in_YAML_file", my_double_list);

/* print data retrieved */
std::copy(my_double_list.begin(), my_double_list.end(), std::ostream_iterator<double>(std::cout, " "));

YAML文件应该是这样的(示例中有4个元素):

name_of_the_list_in_YAML_file: [123.11, 0.1, 2013.441, 1.23015e+3]

更多详情:YAML。您还可以找到ros::NodeHandle文档here