В ROS-файле должны быть установлены параметры .cpp-файла. Эти параметры должны быть получены от запуска file.How установить эти параметры из файла запуска в файле .cpp с помощью ROSКак использовать файл запуска в XML-документе для получения параметров, которые будут использоваться в файле cpp
0
A
ответ
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::NodeHandle
here.