2015-04-07 2 views
0

В ROS-файле должны быть установлены параметры .cpp-файла. Эти параметры должны быть получены от запуска file.How установить эти параметры из файла запуска в файле .cpp с помощью ROSКак использовать файл запуска в XML-документе для получения параметров, которые будут использоваться в файле cpp

ответ

2

Прежде всего, я рекомендую вам следовать this simple tutorial и читать документацию rosparam и roscpp 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> 

Где вы должны установить свое собственное имя пакета и другие переменные. Вы можете найти значения всех этих параметров в следующих ссылках: param и node.


Чем вы должны получить эти параметры из вашего 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::NodeHandlehere.