Я пытаюсь использовать данные из файла yaml в коде ROS (кинетический)/С++, поэтому yaml-cpp кажется мне хорошим вариантом. Мой код не дает ошибок, но работает неправильно:
Похоже, что функция YAML::LoadFile
не может найти мой файл, так как в исключение попадают следующие строки:
YAML::Node yamlnode_;
try{
yamlnode_= YAML::LoadFile("../yaml_file.yaml");
}
catch(std::exception &e){
ROS_ERROR("Failed to load yaml file");
}
В том числе yaml-cpp через
#include <yaml-cpp/yaml.h>
кажется, работает, так как функции YAML:: распознаются впоследствии.
Путь ../yaml_file.yaml
настроен правильно, что я также проверил в программе через
#include "../yaml_file.yaml"
что приводит к ошибкам синтаксического анализа (как и ожидалось), которые показывают мне, что правильный файл был найден (но, очевидно, не может быть включен).
yaml_file.yaml успешно используется в нескольких файлах .xacro.
Имейте в виду, что я новичок в ROS и yaml-cpp; Я с нетерпением жду ваших вопросов и ответов
#include "../yaml_file.yaml"
может работать, потому что препроцессор C++ рассматривает путь как относительный к текущему исходному файлу, а при вызове функции времени выполнения, такой какYAML::LoadFile("../yaml_file.yaml")
, он будет рассматриваться как относительный к текущему рабочему каталогу приложения, который, скорее всего, не совпадает с каталогом, в котором находится исходный файл. расположен. - person user7860670   schedule 12.02.2019